terça-feira, 6 de setembro de 2016

TypeError: 'str' does not support the buffer interface

Quando comecei a reescrever os códigos de controle de um robô em Python 3, já esperava uma série de erros devido as diferenças entre as versões 2.x e 3.x.

Ao enviar um comando de movimento via socket, recebi o erro:
"TypeError: 'str' does not support the buffer interface"
Após uma breve pesquisa, encontrei a seguinte resposta [1]:
In python 3, bytes strings and unicode strings are now two different types. Since sockets are not aware of string encodings, they are using raw bytes strings, that have a slightly different interface from unicode strings.

So, now, whenever you have a unicode string that you need to use as a byte string, you need to encode() it. And when you have a byte string, you need to decode it to use it as a regular (python 2.x) string.

Unicode strings are quotes enclosed strings. Bytes strings are b"" enclosed strings
Assim, para corrigir o problema, foi necessário converter string em byte, deixando o lado cliente:
roboSocket.send(b"a")
E o lado server (robô):
recebe == (b"a")
Desta forma o comando foi executado perfeitamente.

Links

[1]. Stackoverflow - http://stackoverflow.com/a/11781741

sexta-feira, 12 de agosto de 2016

Teste de controle do braço robótico com Arduino, Leap Motion e Python

Sem entrar em detalhes, o vídeo abaixo mostra os testes iniciais de controle do braço robótico utilizando Arduino, Leap Motion e Python.


quinta-feira, 7 de julho de 2016

Slackware 14.2 - nano review

Fig. 1 - Slackware.
Enfim, após um longo tempo, foi lançado no dia 01/07/16 a versão 14.2 do Slackware.

Houve atualizações do kernel, softwares e suporte a UEFI (não lembro se havia nas versões anteriores).

Dentre as opções de interface gráfica o KDE continua como a principal.

Um ponto que chamou minha atenção foi a melhora na velocidade de boot em comparação com as versões 14.0 e 14.1.

O laptop utilizado para testes foi:

- Dell Vostro 1320;
- Processador Centrino 2.2 GHz;
- 4 GB de memória;
- Nvidia Geforce 9300M GS.

Todos os recursos/dispositivos do computador como wifi, touchpad, botões multimidia e etc foram reconhecidos sem a necessidade de patchs ou drivers extras.

Maiores informações podem ser obtidas na página oficial do Slackware.

Links

[1]. Slackware - http://www.slackware.com/
[2]. UEFI - https://pt.wikipedia.org/wiki/EFI

segunda-feira, 30 de maio de 2016

One Dollar Board



Fig. 1 - One Dollar Board.

Trata-se de uma placa eletrônica educacional, uma introdução à Internet das coisas (IoT) e robótica, desenvolvida por brasileiros, que custa apenas US $ 1. 

Projetado para ser parte da lista básica de material escolar das crianças, o One Dollar Board tem a finalidade de fazer as crianças sairem da escola já sabendo programação, bem como os conteúdos básicos do currículo convencional.

É compatível com a IDE do Arduino e vem com um manual de instruções impresso na própria placa (on-board). 

Para ajudar a equipe do projeto e obter maiores informações, acesse à página oficial.

Funcionalidades:

- Alimentação: 5V;
- CPU: Microcontrolador ATtiny85 de 8-bit;
- Memória: Flash de 8 kBytes (expansível até 256 kBytes);
- GPIO: 6;
- Espaços de montagem: 4 e compatíveis com Arduino Uno ou similiar;
- Espaços para expansões: WiFi ESP8266, Memória 24C256, Ponte H L293, etc;
- Interface USB: Sim;
- Leds indicadores: 2;
- Botão reset: Sim;
- Open hardware: Sim;
- Guia rápido: Em inglês na placa e impresso em outros idiomas.

* Informações retiradas da página oficial.

Links

terça-feira, 26 de abril de 2016

SPDTool - Leitor e editor de memórias SPD

"O SPDTool foi projetado para ajudar os usuários a modificar o conteúdo da memória EEPROM SPD em módulos de memória. Isto permite um melhor desempenho e compatibilidade, [1]".

Principais características:

- Ler o conteúdo da SPD de um arquivo ou módulo de memória;
- Salvar o conteúdo da SPD em arquivo ou módulo de memória;
- Verificar o conteúdo do módulo de memória;
- Gerar SPD Checksum;
- Editor Hex;
- Analisador SPD que permite a troca de propriedades;
- Suporte EPP;
 
Chipsets suportados: todos NVIDIA, Intel (exceto 5000X) e AMD. 
 
Infelizmente só é compatível com versões do Windows (à partir do Win2000) de 32 bits e 64 bits.
 
Versão 0.63 disponível para download na sessão "Downloads" ou nos links [1] e [2].

Links
 

terça-feira, 22 de março de 2016

Técnicas de projeto e montagem de PCI

"Qual é o melhor layout para uma placa de circuito impresso? O que isto influência no funcionamento do circuito? Quais são os cuidados que devemos ter no desenvolvimento de uma PCI? Veja nesta matéria como a PCI se comporta como um componente (ou melhor, vários deles) em um circuito, e de que forma isso afeta diretamente seu funcionamento, [1]".

A revista Eletrônica Total publicou em outubro de 2012 um artigo interessante chamado "Técnicas de Projeto e Montagem de Placas de Circuito Impresso: Entenda de que modo a PCI funciona como um componente de circuito eletrônico". 

Confira a íntegra do artigo clicando aqui.

Links

[1]. Artigo Eletrônica Total - http://www.sabereletronica.com.br/artigos/2902-tcnicas-de-projeto-e-montagem-de-placas-de-circuito-impresso-entenda-de-que-modo-a-pci-funciona-como-um-componente-de-circuito-eletrnico

sexta-feira, 11 de março de 2016

Inserir usuários no grupo sudoers - Debian 8 Jessie

"O comando sudo do sistema operacional Unix permite a usuários comuns obter privilégios de outro usuário, em geral o super usuário, para executar tarefas específicas dentro do sistema de maneira segura e controlável pelo administrador. O nome é uma forma abreviada de se referir a substitute user do (fazer substituindo usuário) ou super user do (fazer como super usuário)" [1].

Indo direto ao ponto...

Abra um terminal e siga com os comandos:
$ su
$ senha de root
# apt-get update
# apt-get upgrade
# apt-get install sudo
Adicione o usuário ao grupo sudoers:
# usermod -a -G sudo usuario
# shutdown -r now
Para utilizar o sudo:
$ sudo usuario_cadastrado
senha do usuario:
Links

[1]. Sudo Wikipedia - https://pt.wikipedia.org/wiki/Sudo

quinta-feira, 10 de março de 2016

Atualizar o firmware do ESP8266

O ESP8266, Figura 1, é um SoC (System-on-a-chip) de baixo custo com Wi-Fi, memória flash, antena e GPIO (General Purpose Input/Output), capaz de implementar o protocolo TCP/IP completamente. Foi desenvolvido em 2014 pela empresa chinesa Espressif Systems [1].

Fig. 1 - ESP8266-ESP1.

Varias versões de firmware foram lançadas, alterando o baud rate para 9600, 57600 ou 115200. Normalmente está é causa de problemas na comunicação.

Neste post iremos utilizar a ferramenta esptool para gravar o firmware v.0.9.2, pois ele trabalha com baud rate 9600. Para tal será necessário um conversor USB/Serial com suporte a 3.3V (FTDI). 

Conectando o módulo ESP8266 no conversor USB/Serial (FTDI)

A Figura 2 mostra o pinagem do módulo.

Fig. 2 - Pinagem.
 
Já a Figura 3 o esquema de ligação do módulo no FTDI.

Fig. 3 - Esquema de ligação.

A tabela abaixo complementa as informações de ligação:

ESP8266 -----> FTDI

Vcc 3.3V -----> Não conectar no FTDI - usar fonte externa.
GND ----------> GND + GND da fonte externa
TX ------------> RX
RX ------------> TX
CH_PD -------> 3.3V que alimenta o FTDI
GPIO 0 -------> GND

O GPIO 0 conectado ao GND ativa a função flashing do ESP8266.

Download do firmware e esptool 

O Esptool é um utilitário Python para se comunicar com o gerenciador de inicialização ROM no Espressif ESP8266. Pretende ser uma plataforma simples e independente, de código aberto e substituto do XCOM [2].

Atualize o sistema.
$ sudo apt-get update
$ sudo apt-get dist-upgrade
Esptool tem como dependência a biblioteca pySerial.

Para  instalar:
$ pip install pyserial

ou

$ sudo apt-get install python-serial
Agora faça o download da ferramenta esptool.
$ cd /opt
$ git clone https://github.com/themadinventor/esptool.git
$ cd esptool
Faça o download do Firmware v0.9.2.2 AT na pasta do esptool e descompacte o arquivo.

Após realizar todas as ligações do módulo, conecte o FTDI na USB do PC.

Abra um terminal/shell e digite:
$ python esptool.py -p /dev/ttyUSB0 write_flash 0x000000 "v0.9.2.2 AT Firmware.bin"
O processo leva alguns segundos.

Quando a gravação terminar, desconecte o FTDI da USB, desligue o módulo ESP e desconecte a GPIO 0 do GND para sair do modo flashing.

É hora de testar.

Teste

Conecte novamente o FTDI na USB e ligue a alimentação do ESP.

Abra a IDE do Arduino, clique em "ferramentas" e depois selecione a porta correta.

Clique em "Serial Monitor", ajuste para Baud rate 9600 e selecione "Both NL & CR".

Digite (sem aspas "") "AT" e terá como resposta "OK";
Digite "AT+RST" para resetar o módulo;
Digite "AT+GMR" para ver a versão do firmware;
Digite "AT+CWLAP" para ver todas as redes que o módulo detectou.

Uma lista com vários comandos pode ser obtida clicando aqui. 

Um pouco mais...

O procedimento acima funciona com os firmwares:

v0.9.5.2 AT Firmware;
nodemcu_20150213;
AT22SDK100-2015-03-20-boot1.2.

Para gravar o firmware boot1.1, faça download do arquivo na pasta do esptool e descompacte-o.

Utilize o comando:
esp8266_at$ python esptool.py -p /dev/ttyUSB0 write_flash 0x00000 ../esp8266_at/bin/boot_v1.1.bin 0x01000 ../esp8266_at/bin/v0.20/user1.bin 0x7C000 ../esp8266_at/bin/esp_init_data_default.bin 0x7E000 ../esp8266_at/bin/blank.bin
Para projetos com o Arduino recomendo a biblioteca ESPsoftwareserial.

Links

[1]. ESP8266 - https://en.wikipedia.org/wiki/ESP8266 
[2]. ESPtool - https://github.com/themadinventor/esptool 
[3]. ESPsoftwareserial library - https://github.com/plerup/espsoftwareserial 
[4]. NodeMCU ESP8266 Firmwarehttps://github.com/nodemcu/nodemcu-firmware

terça-feira, 8 de março de 2016

Homebrew e Neogamma R9 no Nintendo Wii

Para instalar os canais Homebrew e Neogamma você precisa ter o Nintendo Wii destravado. A destrava não será tratada aqui, mas posso adiantar que há duas formas. Uma via software e outra via hardware.

Admitindo que seu console já esteja liberado, vamos às considerações iniciais:

- Leia a página “Termos de uso e licença do blog” antes de prosseguir!

- Todo o procedimento é por sua conta e risco!

- Não conectar o Wii na internet.

- Necessário um PC conectado à internet. 

- Necessário um cartão SD (ou microSD com adaptador) de 2GB formatado em FAT32. Ele permanecerá no console ao término do processo.

- Necessário saber a versão do firmware e o MAC Address do console.

1. Firmware e MAC Address

Para descobrir a versão do firmware:

- Ligue o console;

- No canto inferior esquerdo, com o Wii remote, vá ao ícone Wii e aparte "A" para abrir o menu de opções;

- Aperte "A" em Wii Settings;

- A versão será mostrada no canto superior direito. No meu caso Versão 4.3U.

Para encontrar o MAC Address:

- Ainda em Wii Settings, aperte o botão “+” do Wii remote ou com o botão “A” clique na seta avançar (lado direito);

- Aperte "A" no item “Internet” para ver o MAC.

Anote a versão e o MAC, pois serão utilizados no próximo passo!

2. Homebrew

Acesse o site LetterBomb [1], Figura 1.

Fig. 1 - Site LetterBomb - Homebrew.

No campo “System Menu Version” clique na versão do seu firmware.

Em “MAC Address”, insira o MAC que obteve anteriormente.

Marque a opção “Bundle the HackMii Installer for me!”.

Digite os números que aparecem no “Captcha”.

Clique em “Cut the blue wire” para iniciar o download.

Ao término, descompacte o arquivo e grave todo o conteúdo que estiver dentro da pasta LetterBomb na raiz do cartão SD (formatado em FAT32).

2.1 Instalação do Homebrew

Com o Wii desligado, insira o cartão (parte frontal do console) e ligue. Se tudo estiver correto, no canto inferior esquerdo, ao lado do menu Wii, o desenho do SD ficará azul.

Clique no ícone “Carta” que está canto inferior direito.

Aperte o botão “-“ do Wii remote ou o botão “A” na seta da esquerda até aparecer o símbolo do LetterBomb, Figura 2. Com o botão “A”, selecione-o para iniciar a instalação.

Fig. 2 - Homebrew.

 Será realizada uma verificação no cartão SD, Figura 3.

Fig. 3 - Verificação.

A próxima tela é uma mensagem, Figura 4. Aguarde a opção “Press 1 to continue” aparecer e pressione o botão "1". Isso pode demorar um pouco!

Fig. 4 - Iniciando a instalação do Homebrew.

Na tela "HackMii Installer", selecione a opção “continue”.

Use o direcional do Wii remote para passar pelas opções e o botão "A" para executar o comando.

A seguir, selecione as opções na seguinte ordem:

- "Install The Homebrew Channel", "Yes, continue", aguarde a instalação e "continue";

- Selecione o "BootMii...", "Install BootMii as IOS", "Yes, continue", ao término "Yes, continue" e por fim "continue";

- "Return to the main menu" e "exit".

Aparecerá a tela do canal Homebrew. Aperte o botão "home" do Wii remote e selecione "Exit to System Menu" para voltar a tela inicial do Wii.

Neste ponto o canal Homebrew está instalado.

Desligue o console, retire e cartão SD e volte para o PC! :-)

3. Neogamma R9

Apague os arquivos que estão no cartão SD.

Faça download do arquivo wad_neogamma_r9, disponível em "Downloads" ou em [2].

Descompacte o arquivo e grave os diretórios "wad" e "apps" na raiz do cartão SD.

Volte para o Wii! :-)

3.1 Instalação do Neogamma R9

Insira o cartão no console e ligue.

Novamente, se tudo estiver correto o cartão SD no canto inferior esquerdo ficará azul.

Acesse o canal "Homebrew" recém instalado e clique "Start" (depende do idioma do console).

Clique em "WAD-Manager" e depois em "Load".

Na tela "Disclaimer", aperte o botão "A" do Wii remote para continuar.

A próxima tela "Elige dispositivo", deixe em "Tarjeta SD" e pressione "A".

Na sequência, selecione a pasta "wad" e pressione "A".

Instale todos os arquivos um de cada vez:

- IOS247[37]-d2x-v7.wad
- IOS248[57]-d2x-v7.wad
- IOS249[56]-d2x-v7.wad
- IOS250[38]-d2x-v7.wad
- NeoGamma R9 beta 56 - NEOG.wad

Saia do instalador para voltar a tela do Homebrew.

Aperte o botão "home" do Wii remote e selecione "Exit to System Menu" para voltar a tela inicial do Wii.

Neste ponto o canal Neogamma está instalado e pronto para uso.

Links:

[1]. LetterBomb - http://please.hackmii.com/