quinta-feira, 23 de novembro de 2017

Obtendo informações dos módulos de memória RAM no Linux

Dica rápida para obter informações dos módulos de memória RAM instaladas em sistemas Linux.

Abra o terminal e digite:
$ sudo dmidecode --type 17|less
A saída será:
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.

Handle 0x0024, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x0023
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: No Module Installed
        Form Factor: DIMM
        Set: None
        Locator: A0
        Bank Locator: Bank0/1
        Type: Unknown
        Type Detail: None
        Speed: 1600 MHz
        Manufacturer: None
        Serial Number: None
        Asset Tag: None
        Part Number: None

Handle 0x0027, DMI type 17, 27 bytes
Memory Device
        Array Handle: 0x0023
        Error Information Handle: Not Provided
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8192 MB
        Form Factor: DIMM
        Set: None
        Locator: A3
        Bank Locator: Bank6/7
        Type: Unknown
        Type Detail: None
        Speed: 1600 MHz
        Manufacturer: None
        Serial Number: None
        Asset Tag: None
        Part Number: None

(END)


segunda-feira, 15 de maio de 2017

GIMP Plugin Registry: Normal map - Debian Jessie

Para um exercício de texturização em modelos 3D, o professor utilizou um software chamado CrazyBump para gerar o normal map. Entretanto, este software é pago (há uma versão limitada grátis) e só roda em Windows.

Como criar o normal map em uma imagem obtida na internet no Linux?

Pois bem, pesquisei e encontrei algumas alternativas livres, mas o que mais chamou a atenção foi o plugin normal map para o GIMP.

Ele pode ser obtido em GIMP Plugin Registry [1], ou através dos comandos:
$ sudo apt-get update
$ sudo apt-get install gimp-plugin-registry
Na qual será instalado uma coletânea interessante de plugins.

Para começar a utilizar seus novos recursos basta reiniciar o GIMP.

Link

[1]. GIMP Plugin Registry - http://registry.gimp.org/glossary/a

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