Arduino – Controlando dispositivos de iluminação com protocolo DMX

Para controle de equipamentos profissionais de iluminação, geralmente usados em shows e casas noturnas, o protocolo de comunicação DMX, é simples e eficaz.

Com uma base de tempo (clock) de 250k bauds, note que uma porta serial comum opera geralmente em até 115,2k bauds (115200 bauds), com isso o frame de até 512 bytes, pode ser transferido em um intervalo curto o suficiente, para que o tempo de atualização do efeito luminoso, não seja muito perceptível visualmente.

Para facilitar ainda mais que tal poder utilizar um cabo longo sem que as interferências tenham muito efeito negativo na comunicação?

Conseguir isso é uma tarefa, praticamente simples, uma vez que um C.I. SN75176 ou compatível, faz a adaptação da lógica TTL para a utilizada na linha da rede RS485. Esta nada mais é do que um sinal com complemento, se o sinal estiver em estado lógico alto, outra saída vai estar em estado lógico baixo.

Devido a corrente ser mais alta na linha RS485, do que geralmente temos na TTL, e ainda por que o C.I. tem comparadores internos para recepção do sinal, com de faixa estreita de tensão, podemos adicionar até 32 nós (dispositivos) na rede RS485.

Só uma observação, para este tipo de rede, geralmente utiliza-se um resistor de 120 Ohms para terminador, ou seja, como a rede fica comprida assim como uma extensão, coloca-se um resistor no início e na outra extremidade, para melhorar a impedância da linha. Bons circuitos, contam ainda com supressores de tensão, para evitar súbitos picos de tensão na linha que queimariam os chips.

Obviamente, como todos nós estarão em paralelo, caso um, ou mais deles esteja consumindo mais corrente que o normal da linha RS485, toda comunicação vai ser comprometida, e até deixar de ocorrer.

Sabendo dessas características básicas, fica mais simples implementar um controle com DMX, por exemplo de um Movie, (Um tipo de canhão de luz, que tem motores para movimentar a cabeça de iluminação, PAN + TILT).

Para isso pode ser utilizado um Arduino, como a sua programação é feita em linguagem C, em Inglês, não vou traduzir para o Português, segue o link para a biblioteca, ela é muito simples de ser utilizada:

 

https://code.google.com/p/tinkerit/wiki/DmxSimple

 

O seu exemplo, é o mais simples possível:

    #include <DmxSimple.h>

void setup() {

DmxSimple.usePin(3); // Pino de saída do sinal DMX para ir ao SN75176

DmxSimple.maxChannel(4); // Máximo de canais para enviar (de 1 a 512)
}

void loop() {
DmxSimple.write(1, 127); /* Envia o valor 127 (pode ser de 0 a 255, byte) para o canal 1, tem que estar dentro da faixa do máximo escolhido*/
delay(10); // Aguarda 10ms
}
}

Veja que basta apenas declarar a biblioteca, definir o pino de saída, e a quantidade de canais (de 1 a 512) a serem atualizados, enviados no frame (bloco de bytes).

A opção de máximo de canais, permite reduzir o comprimento do frame DMX, poupando tempo, já que se apenas alguns canais (dos 512) estão sendo usados (atualizados), não tem porque enviar tudo novamente. Com isso pode ser enviado um novo frame com intervalo menor do que se fosse enviar os 512 bytes.

Para ficar mais interativo poderia adicionar potenciômetros nas entradas analógicas do Arduino, desta forma seria possível fazer o controle como uma mesa DMX.

Nada mais simples!

 

 

 

 

 

Maiores informações do hardware/software para DMX com Arduino podem ser encontradas aqui.

Para o caso de querer “reinventar a roda”, poderá encontrar mais informações sobre o protocolo DMX, publicado pela fabricante de componentes eletrônicos Microchip, neste arquivo.

Tem mais neste site.

E neste outro tem um exemplo com os potenciômetros.

Boa sorte.

Arduino – Como gravar/regravar o bootloader (Com UNO no MEGA)

Para os que não sabem o que é bootloader, trata-se de um pequeno programa que permite que a programação do microcontrolador (ATmega2560 ou outro) através de uma porta que tenha mais facilidade de uso, como no caso do Arduino é a serial, adaptada para a porta USB.

A necessidade de gravação ou regravação do bootloader, pode ocorrer quando o microcontrolador ainda estiver “virgem”, ou seja ainda não tem um programa em sua memória, ou então se o programa residente corrompeu-se.

Na realidade o ATmega já tem gravado uma rotina (antes mesmo de gravar o bootloader) que permite a programação via porta SPI, no entanto esta programação pode ser alterada, se for corrompida, o microcontrolador só vai poder ser regravado com um gravador que usa várias vias de acesso e para um gravador ISP (SPI) vai ficar aparentemente morto, sem resposta alguma, eu já vi até pessoas jogarem o microcontrolador no lixo por causa disso.

Um modo de fazer acontecer o bloqueio do bootloader é ativar o WDT (contador de auto reset) e deixar ele com um tempo de contagem muito pequeno, com isso não vai dar tempo de zerar a contagem do WDT e o uC (microcontrolador) vai ficar reiniciando sem parar, e com isso não dá nem para fazer um novo “Upload” de outro programa na sua memória.

Isso pode acontecer com qualquer uC com WDT, como os da família PIC.

Para saber se é necessário gravar o firmware no Arduino, basta tentar fazer um programa e fazer o “Upload”, se der algum erro em relação ao reconhecimento do Arduino, então vai ter que regravar o bootloader. Claro que a versão da placa tem que estar corretamente selecionada na IDE (interface) do Arduino, assim como a porta serial (COM).

Devido a facilidade da IDE de gravar o bootloader, que pode usar até um Arduino para gravar outro, todo processo é feito sem muita complicação.

Observando a imagem acima, nota-se um cabo que está fazendo a ligação entre as duas placas, note também que um UNO está gravando um MEGA, e pode ser feito entre outros ou inverso.

Para isso é preciso conectar a porta ISP de um Arduino no outro, porém o Arduino que vai ser gravado, tem que receber um pulso de RESET, então é apenas este fio (via) que não é conectada pino a pino.

Veja ainda na imagem acima, a tabela de conexão de uma placa para outra.

Para facilitar a localização dos pinos segue abaixo as imagens das placas.

Para o Arduino MEGA, note a descrição dos pinos do conector ISP, ao lado esquerdo.

Já para o UNO, a descrição do conector está na parte inferior da imagem.

 

Para facilitar ainda mais o entendimento, abaixo está uma imagem de dois UNO conectados com fios de uma via, note que o UNO que está sendo usado como gravador é o que tem o cabo USB conectado, e o UNO que vai ser gravado está com o fio verde conectado no RESET. Os outros fios estão ligados pino a pino.

 

Estando já conectado os fios e com a IDE já podendo gravar o Arduino normalmente (o UNO que vai ser usado como gravador), então deve abrir o programa Arduino ISP e fazer o “Upload” para a placa com o cabo USB. Para este caso, tem que selecionar a versão da placa para UNO.

 

passo2

Carregue o programa Arduino ISP, que está na lista dos exemplos

 

passo3

Não esqueça de selecionar a porta serial correta para comunicar-se com o Arduino (Gravador)

 

passo4

Clique em Upload.

Depois de fazer o “Upload” do Arduino ISP, deve selecionar o gravador como Arduino ISP.

passo5

Então selecione a versão de placa que vai ser gravada o bootloader, no caso, este post foi feito inicialmente baseado no UNO como gravador e com o MEGA para ser gravado.

passo6

Vai ficar mostrando na parte inferior da IDE a versão da placa que vai ser gravada, pode ser um pouco confuso, mas é assim mesmo.

Agora basta clicar em Burn Bootloader

passo7

 

Caso aconteça erro ao tentar fazer o Burn Bootloader, como aconteceu comigo, pode tentar fazer a gravação de um programa diretamente no uC (microcontrolador) da placa que está sendo gravada.

Para isso selecione um programa, eu fiz com o Digital > Button, gravei e com isso fiz com que o reinício (RESET automático fosse reprogramado, permitindo gravar depois o Bootloader.

Pois se gravar diretamente o programa pode apagar o Bootloader, assim para voltar a ter acesso pela IDE do Arduino no modo simples, precisa gravar o Bootloader novamente.

extra1

 

extra2

Então é isso, se for fazer de placa para placa. Mas também dá para fazer sem a placa, eu por exemplo comprei um uC ATmega328 já com o Bootloader, fora da placa, é bem mais barato que a placa inteira, claro, e para fazer funcionar basta apenas um cristal com os capacitores e um resistor no pino de RESET.

Para conectar na USB eu usei um cabo de USB para serial e um chip MAX232.

Foi assim que eu consegui regravar o Arduino Mega 2560, e voltar a fazer o tão esperado “Upload”.

Mas caso isso não dê certo então revise as conexões, se tudo estiver correto, só resta tentar com um gravador “paralelo” não quero dizer de porta paralela de computador, mas sim que a conexão entre o uC e o gravador se faz com várias vias.

Uma vez eu encontrei um esquema de gravador “caseiro” que tinha este tipo de conexão “paralela” com o uC feito com um ATmega16.

Boa sorte!

 

Raspberry Pi – Raspbian – Ativando o a saída de áudio [2014-06-20-wheezy-raspbian]

Depois de atualizar o S.O. para 2014-06-20-wheezy-raspbian acabei ficando sem o som.

A placa é do modelo B, mas acredito que deve ser assim para a modelo A e para a modelo B+.

Então acabei encontrando um tutorial que vou deixar já traduzido:

 

Como ativar o som HDMI e Analógico no Raspberry Pi (Raspbian-Wheezy)

sudo -i
—————————————————
Opcional: atualização – início
—————————————————
Instalar o atualizador de firmware:
apt-get install ca-certificates git-core binutils
cp rpi-update /usr/local/bin/rpi-update
chmod +x /usr/local/bin/rpi-update
Update Firmware
sudo rpi-update
—————————————————
Opcional: atualização – fim
—————————————————
Descomentar “hdmi_drive=2″ no arquivo config.txt
nano /boot/config.txt

Instalar ALSA, MPlayer e PulseAudio

apt-get install mplayer mplayer-gui alsa-base alsa-utils pulseaudio mpg123

Add audio module to kernel

modprobe snd_bcm2835
echo 'snd_bcm2835' >> /etc/modules
Configurar ALSA driver para n Analog=1 HDMI=2 (Auto=0 Não é recomendado)
amixer cset numid=3 n
Criar/substituir o arquivo asound.conf com:
   pcm.!default {
   type hw
   card 0
   }

   ctl.!default {
   type hw
   card 0
   }

Comando para abrir/criar o arquivo:
nano /etc/asound.conf
Reiniciar o Raspberry Pi
reboot

Testar áudio sem ALSA

cd /opt/vc/src/hello_pi/
 ./rebuild.sh
 cd hello_audio

Testar saída analógica

 ./hello_audio.bin

Testar saída HDMI

./hello_audio.bin 1
Testar áudio com ALSA
Testar saída analógica
amixer cset numid=3 1
speaker-test -t sine -f 600
Test saída HDMI
amixer cset numid=3 2
speaker-test -t sine -f 600
Baixar o arquivo de teste em mp3 Hello.mp3:
wget http://semilleroadt.upbbga.edu.co/Raspberry-Pi/Hello.mp3
Tocar o arquivo MP3:
mpg123 Hello.mp3
Caso ainda não funcione:
Eu tive problemas com o mplayer, mas o mpg123 funcionava

Então encontrei outras dicas:

No lugar de <username> tem que por o nome do login, como por exemplo: pi

sudo adduser <username> audio
sudo apt-get remove pulseaudio
sudo /etc/init.d/alsa-utils restart

 

Boa sorte!

Informação sobre Modem ADSL / Roteador WiFi 2.4GHz W-M1120 [RT63363E]

Estava pensando em colocar um firmware da OpenWRT em um roteador Wi-Fi, um W-M1120, mas ainda não é suportado.

2014-08-19 17.53.57

Para abrir é simples e não requer força como algumas caixas de outros roteadores, basta remover os quatro parafusos e começar pela parte do “pé”.

2014-08-19 17.54.492014-08-19 17.55.05O chipset dele é o RT63363E da Ralink, a placa tem local para conector USB, mas está ausente também alguns componentes auxiliares da conexão USB.

O firmware original deste modem, dá para acessar as configurações avançadas, deve colocar na senha os 4 últimos algarismos do MAC, que está na etiqueta externa e na interna, colada na placa. Usuário admin.

O IP de fábrica é o 192.168.1.1 com serviço de DHCP já ativo.

Com o firmware original, oferece Firewall, e roteamento de portas, além de poder atualizar automaticamente o IP do site NO-IP. Assim, quando o IP (dinâmico) fornecido pela operadora de internet for trocado, o modem vai atualizar isso lá no site NO-IP, e desta forma dá para colocar um site de testes para ser acessado pela internet, mesmo que o modem tenha que ser reiniciado e/ou o IP de internet se altere.

O Firewall inicialmente, depois de um reset de fábrica, está configurado para permitir acesso da rede local para a internet (saída) e bloquear as requisições externas (entrada) para a rede local. Protegendo a rede local de acessos indevidos pela internet.

O roteamento permite diversas configurações de rota de portas e IP.

Por exemplo, dá para configurar uma rota de conexão externa (internet) da porta 80 (sites) para uma porta de um endereço da rede interna (Ethernet) na porta 8000, e ainda escolher o IP da máquina, desta forma os outros computadores não ficam expostos.

Além disso tudo, este roteador tem duas antenas, mas na verdade é um sistemas duplo, pois podem ser configurados separadamente.

Esta placa aquece bastante os chips, principalmente o regulador, que fica na parte da frente, face onde ficam os leds indicadores, e o RT63363E também aquece bem, em um outro aparelho deste eu adicionei dissipadores para os chips:

RT63363E – Controlador SoC

W9425G6JH-5 – 3V 256Mb DDR SDRAM Memoria

25Q128FVFG – 3V 128M-BIT. SERIAL FLASH Memoria com DUAL/QUAD SPI

RT5392L – Wi-Fi controlador

RT63087N – ADSL controlador

1117 – regulador

2014-08-19 17.51.18

2014-08-19 17.52.14

Deixo sempre o roteador com os dissipadores ligado 24h e não trava!

Só queria poder acessar a porta serial dele para fazer automação com PIC ou Arduino, com o software ser2net instalado no sistema OpenWRT, mas como eu disse mais acima, até o momento não tem muita coisa pela net sobre este sistema.

Se alguém souber de um firmware para este roteador, me avise por favor!

Para debug, obtive os dados abaixo ao conectar um cabo serial TTL (3v3) na porta serial do roteador:

RT63365 at Tue Dec 11 16:52:56 CST 2012 version 1.1 free bootbase

Memory size 32MB

flash base: b0000000
Found SPI Flash 16MiB Winbond W25Q128 at 0xb0000000

Search PHY addr and found PHY addr=0
Press any key in 3 secs to enter boot command mode.
……………………………………………………
Invalid Power GPIO, just return and don’t turn on Power LED
Decompress to 80020000 free_mem_ptr=80600000 free_mem_ptr_end=80780000
Uncompressing [LZMA] … done.
Version: 6.0.18.1.54
Platform: DareGlobal TA04G/T005G (RT633X) 2-Port ADSL/FTTH
Compilation Time: 08-Aug-13 15:28:38
Tag: Ntag-6_0_18_1_54
Compilation Flags: DIST=RGLOADER_DGTX0XG
User Information: bat@cartman /home/bat/bat/rgloader_dgtx0xg_6_0_18_1/rg
Press ESC to enter BOOT MENU mode.
Can’t load valid rg_conf – using defaults
MAPS:
RGLoader 6.0.18.1.54
Booting an active image in 0.50 seconds

Uncompressing Linux…
malloc: 00003E6C
returned: 814D5020
……………………………………………………………………………………….
Done
CramFS in ‘OpenRG’ mtd device. Image offset:001D0000
Running from : (0x81000008) CramFS will be at: 0x00371000
Booting the kernel
dcache writeback, cachesize 00008000 linesize 00000020
icache invalidate, cachesize 00010000 linesize 00000020
Linux version 2.6.21.5 #1 Thu Aug 8 17:29:13 IDT 2013
rofs_addr: 00371000 (80371000), len: 330000, flash_start_addr: 00000000 (80000000) flash_len: 0
CramFS in Flash
rofs_start_addr: 00000000 len: 0
Config7: 0x80080500
Ralink RT63365 SOC prom init
CPU revision is: 00019555
Determined physical RAM map:
memory: 02000000 @ 00000000 (usable)
Initrd not found or empty – disabling initrd
Built 1 zonelists. Total pages: 8128
Kernel command line: cramfs=2 cramfs_offset=00371000 mtdparts=OpenRG:0x330000@0x00371000(mainfs) console=ttyS0,115200 es=1
1 MIPSR2 register sets available
Primary instruction cache 64kB, physically tagged, 4-way, linesize 32 bytes.
Primary data cache 32kB, 4-way, linesize 32 bytes.
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
Cache parity protection disabled
PID hash table entries: 128 (order: 7, 512 bytes)
CPU frequency 498.00 MHz
Using 250.000 MHz high precision timer.
Linux version 2.6.21.5 #1 Thu Aug 8 17:29:13 IDT 2013
rofs_addr: 00371000 (80371000), len: 330000, flash_start_addr: 00000000 (80000000) flash_len: 0
CramFS in Flash
rofs_start_addr: 00000000 len: 0
Config7: 0x80080500
Ralink RT63365 SOC prom init
CPU revision is: 00019555
Determined physical RAM map:
memory: 02000000 @ 00000000 (usable)
Initrd not found or empty – disabling initrd
Built 1 zonelists. Total pages: 8128
Kernel command line: cramfs=2 cramfs_offset=00371000 mtdparts=OpenRG:0x330000@0x00371000(mainfs) console=ttyS0,115200 es=1
1 MIPSR2 register sets available
Primary instruction cache 64kB, physically tagged, 4-way, linesize 32 bytes.
Primary data cache 32kB, 4-way, linesize 32 bytes.
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
Cache parity protection disabled
PID hash table entries: 128 (order: 7, 512 bytes)
CPU frequency 498.00 MHz
Using 250.000 MHz high precision timer.
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 28520k/32768k available (1839k kernel code, 4248k reserved, 268k data, 136k init, 0k highmem)

Mount-cache hash table entries: 512
NET: Registered protocol family 16
RT63365_pcie_init
registering PCI controller with io_map_base unset
PCI: Bridge: 0000:00:00.0
IO window: disabled.
MEM window: 20000000-200fffff
PREFETCH window: disabled.
NET: Registered protocol family 8
NET: Registered protocol family 20
NET: Registered protocol family 2
Time: MIPS clocksource has been installed.
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
Registered CRAMFS in MTD notifier
TC3162 hardware watchdog module loaded.
/proc/fs/cramfs_block_uncompressed created
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
slram: not enough parameters.
u32 classifier
OLD policer on
NET: Registered protocol family 1
NET: Registered protocol family 10
NET: Registered protocol family 17
NET: Registered protocol family 21
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
tc3162: flash device 0x01000000 at 0x10000000
tc3162: Found SPIFLASH 16MiB Winbond W25Q128
Creating 1 MTD partitions on “tc3162″:
0x00000000-0x01000000 : “OpenRG”
ttyS0 at I/O 0xbfbf0003 (irq = 1) is a TC3162
1 cmdlinepart partitions found on MTD device OpenRG
Creating 1 MTD partitions on “OpenRG”:
0x00371000-0x006a1000 : “mainfs”
mtd: partition “mainfs” doesn’t start on an erase block boundary — force read-only
Freeing unused kernel memory: 136k freed
Found device mainfs on mtdblock1

Version: 6.0.18.1.54
Platform: DareGlobal TA04G-TF1 (RT633X) 2-Port ADSL
Compilation Time: 08-Aug-13 14:24:44
Tag: Ntag-6_0_18_1_54
Compilation Flags:

LIC=/home/bat/bat/tfn_mini_bhs_dgta04g_6_0_18_1/20130808_1316/conf/jpkg_mipseb_trendchip_.lic DIST=TFN_MINI_BHS_DGTA04G
User Information: bat@cartman /home/bat/bat/tfn_mini_bhs_dgta04g_6_0_18_1/dist

insmod: add-symbol-file build/debug/be_pppoa_mod.o 0xc0003000 -s .data 0xc0003c80 -s .bss 0xc0003e00

insmod: add-symbol-file build/debug/one_module.o 0xc00a2000 -s .main_flow 0xc00eca50 -s .data 0xc00fd220 -s .bss 0xc00fefa0
Loading license 0ab6f99a9bff7193a03f70a8819fb93efc636ae5d85c68f470530831f6bb45777dded0a.
loading license key:
loading license key:

insmod: add-symbol-file build/debug/igmp_proxy_mod.o 0xc000d000 -s .data 0xc0010480 -s .bss 0xc0010640

insmod: add-symbol-file build/debug/kleds_mod.o 0xc0005000 -s .data 0xc00059e0 -s .bss 0xc0005b80

insmod: add-symbol-file build/debug/tccicmd_mod.o 0xc0029000 -s .data 0xc0034350 -s .bss 0xc0034a60

insmod: add-symbol-file build/debug/femac_mod.o 0xc0012000 -s .data 0xc001fe20 -s .bss 0xc0020260
femac.c:v1.00-NAPI 29.Mar.2011
The MAC address in flash is null!

eth0: FE MAC Ethernet address: 00:00:AA:BB:CC:FF
Press ESC to enter BOOT MENU mode.
MAPS:
00400000-0077b000 r-xp 00000000 1f:01 213376     /m
insmod: add-symbol-file build/debug/log_chardev.o 0xc0007000 -s .data 0xc0007740 -s .bss 0xc00078e0
nt/cramfs/bin/openrg
0078a000-00815000 rw-p 0037a000 1f:01 213376     /mnt/cramfs
insmod: add-symbol-file build/debug/tcp_mss.o 0xc0009000 -s .data 0xc00095c0 -s .bss 0xc0009760
/bin/openrg
00815000-00968000 rwxp 00815000 00:00 0          [heap]
2aaa8000-2aaad000 r-xp 00000000 1f:01 2366452
insmod: add-symbol-file build/debug/rg_usfs.o 0xc0000000 -s .data 0xc0000df0 -s .bss 0xc0000f80
/mnt/cramfs/lib/ld-uClibc-0.9.29.so
2aaad000-2aaae000 rw-p 2aaad000 00:00 0
2aaaf000-2aab0000 rw-p 2aaaf000 00:00 0
2a
insmod: add-symbol-file build/debug/rg_ipv4.o 0xc0022000 -s .data 0xc00221e0 -s .bss 0xc0022380
abc000-2aabd000 IPV4 device driver registered
rw-p 00004000 1f:01 2366452    /mnt/cramfs/lib/ld-uClibc-0.
insmod: add-symbol-file build/debug/btn.o 0xc000b000 -s .data 0xc000b520 -s .bss 0xc000b6c0
9.29.so
2aabd000-2aad2000 r-xp 00000000 1f:01 2968440    /mnt/cramfs/lib/libopenrg.so
2aad2000-2aae2000 —p 2aad2
insmod: add-symbol-file build/debug/qos_ingress.o 0xc0027000 -s .data 0xc0027a90 -s .bss 0xc0027c20
000 00:00 0
2aae2000-2aae3000 rw-p 00015000 1f:01 2968440    /mnt/cramfs/lib/libopenrg.so
2aae3000-2ab2d000
insmod: add-symbol-file build/debug/module_sel_mod.o 0xc003a000 -s .data 0xc003a300 -s .bss 0xc003a460
r-xp 00000000 1f:01 2762256    /mnt/cramfs/lib/libjutil.so
2ab2d000-2ab3c000 —p 2ab2d000 00:00 0
2ab3c000-2ab43000 rw-p 00049000 1f:01 2762256    /mnt/cramfs/lib/libjutil.so
2ab43000-2ab4a000 rw-p 2ab43000 00:00 0
2ab4a000-2ab56000 r-xp 00000000 1f:01 3311836    /mnt/cramfs/lib/libz.so
2ab56000-2ab65000 —p 2ab56000 00:00 0
2ab65000-2ab67000 rw-p 0000b000 ib/libexpat.so
2add6000-2ade6000 —p 2add6000 00:00 0
2ade6000-2ade8000 rw-p 0001d000 1f:01 2716556    /mnt/cramfs/lib/libexpat.so
2ade8000-2ae2c000 r-xp 00000000 1f:01 3213700    /mnt/cramfs/lib/libuClibc-0.9.29.so
2ae2c000-2ae3b000 —p 2ae2c000 00:00 0
2ae3b000-2ae3d000 rw-p 00043000 1f:01 3213700    /mnt/cramfs/lib/libuClibc-0.9.29.so
2ae3d000-2ae41000 rw-p 2ae3d000 00:00 0
7f980000-7f995000 rwxp 7f980000 00:00 0          [stack]

insmod: add-symbol-file build/debug/rt5392.o 0xc021e000 -s .data 0xc02bc7c0 -s .bss 0xc02c1ee0
PCI: Enabling device 0000:01:00.0 (0000 -> 0002)

insmod: add-symbol-file build/debug/tc3162l2sar_mod.o 0xc0069000 -s .data 0xc0075940 -s .bss 0xc0075fe0
TSARM: TC3162 ATM SAR driver 1.5 init
register autopvc cmd to sys
TSARM: TC3162 ATM SAR driver 1.5 done

insmod: add-symbol-file build/debug/tc3162_dmt_mod.o 0xc03e1000 -s .data 0xc0485d20 -s .bss 0xc048a0c0
ADSL DMT initialization starting
Begin AdslTaskInit…..
End AdslTaskInit
Begin to  request IRQ 20
DMT:Succeed to request IRQ 20
Initializing ADSL F/W 3.20.22.5 ……
Reset dmt
Check DMT version =b2 ……..
Initializing ADSL F/W …….. done
ADSL HW version: b2, HCLK 166
Freeing CRAMFS/MODFS: 960k freed
ANNEXA
OlrON
SRAON
Multimode
up right away
eth0: starting interface.
TC2105MJ, <6>device eth0 entered promiscuous mode
Username: Sent request failed. Network is unreachable
Sent request failed. Network is unreachable
tc3262_get_mac_info:421: could not find MAC:xx:xx:xx:xx:xx in the address table
tc3262_get_mac_info:421: could not find MAC:xx:xx:xx:xx:xx in the address table
tc3262_get_mac_info:421: could not find MAC:xx:xx:xx:xx:xx in the address table

——————————-

Eu pesquisei e encontrei o modem AR-7182WnA da Edimax

Que tem também o RT63363E:

•RT63363+RT5390HL+RT63087
•2 MB NOR Flash
•8 MB SDRAM

——————————–

Outro que aparentemente tem o mesmo chipset RT63363E é o TD-W8151N V3 da TPLINK, inclusive para este tem o firmware original para download.

 

Obrigado e boa sorte!

 

 

 

 

Servo motor + sensor de rotação / giro / velocidade / posição – Sensor efeito Hall

 

Como os servo motores de baixo custo tem potenciometros para controle de posição, fica difícil obter um controle preciso para o caso de adaptar o servo motor para giro livre.

 

Uma alternativa é a monitoração do campo magnético gerado no rotor, embora seja sutil, dependendo da posição que o sensor for instalado pode resultar em um “feedback” muito adequado.

 

 

No mercado existem circuitos integrados dedicados a atuar como sensor de rotação, como a imagem abaixo:

 

Outros motores DC, podem ainda já serem obtidos com o sensor acoplado ao eixo:

 

Para obter a velocidade basta medir o tempo entre cada pulso do sensor, ou ainda, fazer uma contagem em um determinado tempo.

Já para a posição, como o sensor seria um tipo de encoder relativo, que não informa a posição real, existe a necessidade de um segundo sensor para monitorar o ponto inicial, ou “home”.

 

Para baixar ainda mais o custo de uma aplicação de teste ou protótipo, poderá encontrar os sensores de efeito hall, em driver’s de computador, como os leitores/gravadores de CD/DVD, e drivers de disquetes. Nestes driver’s são utilizados motores de passo, entretanto, caso ocorra algum travamento do giro do disco ou disquete, a única forma segura de saber é através da monitoração da rotação.

Diversos tipos de sensores serão encontrados, com diferentes tipos de invólucros e formas de ligação, mas a dica para tornar a identificação do circuito mais clara é observar o chip controlador.

 

Em um drive de CD, o LG GCE-8525B tem um motor para o giro do disco, e nele tem 3 sensores de efeito hall, a alimentação dos sensores está conectada em paralelo, e suas saídas, duas para cada sensor está sendo enviada ao controlador que é um M63028:

Desta forma, observando o datasheet do controlador, fica bem mais simples a implementação e uso dos sensores, que embora sejam considerados sucata, são sensores de alta tecnologia e um pouco caros.

Observe ainda que estes sensores do circuito acima são do tipo de 4 terminais, e duas saídas simétricas, assim não podem ser conectados diretamente, mas sim a um amplificador operacional:

 

Mas caso a utilização de um A.O. seja inviável a melhor alternativa é a utilização de sensor de 3 pinos:

Note que todo circuito de comparação, com amplificador operacional e amplificador de potencia (driver) já encontram-se no chip.

 

Existem também encoder’s que podem ser acoplados diretamente no eixo, ou em alguma engrenagem / polia, do tipo óptico, porém existe a necessidade de maior cuidado, pois caso sejam expostos a algum contaminante como graxa, óleo, ou ainda uma luz intensa, a leitura poderá falhar.

Devido a estes problemas, ou requisitos para os encoder’s do tipo óptico, o tipo magnético está sendo o mais utilizado, também devido ao custo do sensor que vem baixando e tornando-se mais viável em aplicações onde cada centavo pode fazer a diferença na acirrada competição do mercado.

 

Como existem diversos modelos de servo motor fica difícil apresentar apenas um modo de instalar o sensor de efeito hall ou “effect hall sensor”, mas como o tipo de motor é do tipo DC, acredito que a dica é válida para todos.

 

Boa sorte!

Adaptação para antiga impressora matricial Prologica P720XT para uso no PC com driver genérico somente texto

Se você tem uma antiga impressora deste modelo a P720XT, saiba que ela pode funcionar com um computador comum e atual.

Este modelo de impressora é muito robusto, testei uma e a velocidade de movimentação da cabeça de impressão é de assustar!

Seu peso deve ser talvez em torno de uns 35kg, tem motores de passo gigantes se comparado com as atuais impressoras matriciais, mas ela aceita formulário contínuo grande e de até 1+4 cópias carbonadas.

Mas chega de papo, o caso é que esta impressora pode fazer uma ótima impressão e para conectar ela no computador basta um cabo de porta paralela com DB-25 e um conector IDC de 34 vias, este par de conectores geralmente é encontrado nas CPUs comuns atuais que tenham saída de porta paralela.

Encontrei o manual dela, vou descrever as principais informações.

Observe a imagem abaixo para saber a correspondencia entre os pinos da porta paralela do PC atual (testei com um PC x86 e Windows XP) o driver a ser usado no computador é o genérico somente texto.

ADAPTER CABLE PRINTER PROLOGICA P720TX TO PC FOR PRINT WITH TEXT ONLY DRIVER

Mais algumas fotos da impressora, quem me cedeu as fotos pediu para informar que está sendo vendida (maio / 2014) para acessar o anuncio clique sobre a legenda da foto, observe que não tenho nenhuma participação na venda ou qualquer relação com o vendedor.

O possuidor de um exemplar desta poderá notar umas micro-chaves, localizadas no interior no canto do lado esquerdo próximo da parte da frente, elas são para ativar algumas funções que também podem ser configuradas via comando por software.

As funções das micro chaves basicamente são:

Chave – Descrição

[Quando ligada (ON)]:

1- Ativa qualidade de impressão próxima de Carta (NLQ)

2- Ativa modo comprimido de caracteres, até 220 caracteres por linha, não atua em conjunto com a chave 1

3- Ativa caracteres em itálicos, não atua em conjunto com a chave 1

4- Ativa salto automático do picote da folha (formulário contínuo)

5- Ativa mudança automática de linha com comando retorno de carro CR (ASCII13)

6- Distancia de espaçamento de linhas em 1/8 de polegada

[Quando desligada (OFF)]:

6- Distancia de espaçamento de linhas em 1/6 de polegada

 

Teste de diagnóstico com a impressão da tabela de caracteres:

Pressiona e segura as teclas do painel: RESET+RETORNA, solta-se primeiro o RESET e depois o RETORNA. Para fazer a impressora parar de imprimir pressiona-se RESET.

 

Caracteres de controle, assim como na maioria das impressoras matricial, ela possui funções que são ativadas via software, comandos ASCII enviados pelo computador:

ASCII(Hex), “SIMBOLO”, descrição

0x07, “BEL”, aciona o alarme;

0x08, “BS”, BACKSPACE retorna a cabeça de impressão em um caractere

0x0A, “LF”, LINE FEED avança uma linha

0x0C, “FF”, FORM FEED avança folha (topo)

0x0D, “CR”, retorno de carro, imprime o conteúdo do buffer e avança linha

0x0E, “SO”, SHIFT OUT ativa o modo expandido em uma linha

0x0F, “SI”, SHIFT IN ativa o modo comprimido

0x12, “DC2″, desativa o modo comprimido

0x14, “DC4″, desativa o modo expandido, ativado com “SO” (0x0E)

0x1B, “ESC”, ESCAPE prepara a impressora para receber caracteres de controle

 

Os caracteres a seguir são precedidos do caractere ESC (0x1B), por isso estão com “ESC+”

ESC+0x2D, “-“, modo sublinhado, [ESC+”-“+N], [N>0, ativa], [N=0, desativa]

ESC+0x30, “0”, entrelinha (espaçamento) 1/8″

ESC+0x31, “1”, entrelinha (espaçamento) 7/72″

ESC+0x32, “2”, retorna para entrelinha (espaçamento) 1/6″

ESC+0x33, “3”, entrelinha (espaçamento) N/216″, [ESC+”3″+N], [1<=N<=255]

ESC+0x34, “4”, ativa caracteres em itálicos

ESC+0x35, “5”, desativa caracteres em itálicos

ESC+0x41, “A”, entrelinha (espaçamento) N/72″, [ESC+”A”+N], [1<=N<=255]

ESC+0x43, “C”, numero de linhas por folha, padrão: 66, [ESC+”C”+N], [1<=N<=255]

ESC+0x43, “C”, comprimento da pagina em polegadas, [ESC+”C”+0+N], [1<=N<=255]

ESC+0x45, “E”, ativa caracteres em negrito

ESC+0x46, “F”, desativa caracteres em negrito

ESC+0x47, “G”, ativa caracteres em negrito

ESC+0x48, “H”, desativa caracteres em negrito

ESC+0x4A, “J”, entrelinha (espaçamento) N/216″, [ESC+”J”+N], [1<=N<=255]

ESC+0x4B,”K”, ativa modo gráfico densidade simples. 60 pontos por polegada. [ESC+”K”+N1+N2],[N1 e N2, determinam o comprimento da linha gráfica pela relação: [N1+(256 x N2)] numero de pontos, [1<=N1<=255], [1<=N2<=255]

ESC+0x4C,”L”, ativa modo gráfico densidade dupla. 120 pontos por polegada. [ESC+”L”+N1+N2],[N1 e N2, determinam o comprimento da linha gráfica pela relação: [N1+(256 x N2)] numero de pontos, [1<=N1<=255], [1<=N2<=255]

ESC+0x59,”Y”, ativa modo gráfico densidade dupla de alta velocidade. 120 pontos por polegada. [ESC+”Y”+N1+N2],[N1 e N2, determinam o comprimento da linha gráfica pela relação: [N1+(256 x N2)] numero de pontos, [1<=N1<=255], [1<=N2<=255]

ESC+0x5A,”Z”, ativa modo gráfico densidade quádrupla. 240 pontos por polegada. [ESC+”Z”+N1+N2],[N1 e N2, determinam o comprimento da linha gráfica pela relação: [N1+(256 x N2)] numero de pontos, [1<=N1<=255], [1<=N2<=255]

ESC+0x78, “x”, ativa NLQ, [ESC+”x”+N], [N=1, ativa NLQ], [N=0, desativa NLQ]

———————————————————-

Características gerais:

Velocidade de impressão: 250 CPS

Velocidade NLQ: 55 CPS

Impressão bidirecional, imprime com o carro indo e voltando, com percurso otimizado.

Densidade gráfica: Simples = 60, Dupla = 120, Quádrupla = 240, pontos por polegada.

Alimentação tipo trator, velocidade contínua: 6″/seg.

Numero de cópias: 1+4 (até 4 copias carbonadas)

Dimensões (milímetros): Altura = 195, Largura = 680, Profundidade = 340.

 

Rede elétrica de alimentação:

Frequencia: 60Hz

Tensão: 115V +10%/-15%

Tensão: 220V +10%/-15%

Observação: Abra a tampa traseira e verifique a posição da chave de seleção de tensão (110/220)

Potencia: 200VA

 

Boa sorte!

Obrigado pela sua visita! – Thanks for your visit!

Observei uma extensa lista de Países nas estatísticas de visualização, agradeço pela sua visita, o que ganho com este blog é somente a expectativa destes números aumentarem!

estatistic 2014 11

Obrigado!

e

Boa sorte!

Kit sensor estacionamento Ultrasom – Controlando separadamente o painel

O kit sensor de estacionamento ultrasonico como o da figura abaixo, é composto por dois módulos principais, sendo uma caixa de conexão de cabos e o outro o painel.

kit sensor estacionamento

Como pode ser observado estes módulos podem ser aplicados separadamente em aplicações didáticas, academicas e outros, pois tem um cabo que separa o painel da caixa de conexão.

Para experimentos com Arduino ou outro microcontrolador como PIC, é necessário apenas saber que a caixa de conexão de cabos tem um microcontrolador que converte os pulsos de ultrasom para metros.

E neste caso o valor de saída está entre 0,3m e 1,8m, abaixo de 0,3m a caixa envia como sendo zero metros (0m) para o painel, e acima de 1,8m a caixa envia o valor correspondente a 1,9m porém o painel entra em modo de Standy by, mostrando somente um ponto decimal aceso.

A conexão com o painel se dá por meio de um cabo de 3 vias, sendo que a caixa de conexão possui um regulador de tensão que abaixa de 12V para 5V que é usado na caixa e também é enviado para alimentar o painel, o sinal DATA é composto por um frame de pulsos sem qualquer tipo de encriptação ou sistema de checagem de erros como checksum.

Abaixo está a sequencia de cada byte deduzida por meio do sinal que é enviado para o painel, este sinal é enviado independentemente de o painel estar conectado, sendo possível utilizar a caixa de conexão e os sensores sem a necessidade do painel, e esta ainda conta com uma conexão para um buzzer local, mas o conector não foi instalado na placa, se colocar um LED com um resistor para 5V (pode ser um de 1k) poderá ve-lo piscar.

desc-frame

O painel pode ser usado também para outras aplicações, e no entanto tem as limitações de exibição, como por exemplo se enviar um valor acima de 18 (que é referente a 1,8m) o painel entra em modo de espera.

Observe a sequencia do frame FN, note que tem um START, seguido de 3 bytes e um terminador, atente-se ao fato de que o estado de repouso da linha DATA é de estado lógico alto (5V).

A caixa de conexão envia constantemente um frame, por isso a representação de FN+1, FN+2…FN+N, isso vai ser feito enquanto o módulo for alimentado.

Os tempos podem ser observados também na imagem acima, e o intervalo entre cada frame é de 224ms como indicado.

A única consideração a fazer é que a conexão DATA entre os microcontroladores é feita por dois resistores de 1k, sendo um no painel e o outro na caixa. Confesso que fiquei um pouco decepcionado pois geralmente é adicionado alguns supressores de ruído e estática neste tipo de linha, como no padrão OneWire. Mas funciona assim mesmo e como a ideia inicial é de instalar em um veículo geralmente com um chassi metálico, o que já ajuda muito na proteção do circuito eletronico.

A seguir uma tabela com os principais estados do painel, sendo que os intermediários são conseguidos quando os bytes são enviados em valores diferentes.

tabela bits A primeira coluna refere-se ao estado do painel,

R=FULL é quando o lado direito está com as barras da direita acessas,

L=FULL é quando o lado esquerdo está com as barras da esquerda acesas,

N=00 é o valor 0.0 sendo mostrado no painel, no caso 0,0m,

EMPTY é quando o painel está com o mínimo de barras acesas, de acordo com o lado correspondente.

STANDYBY é o estado de espera, quando o painel recebe o valor 19 nos bytes, não testei se entra neste estado se somente um byte estiver com 19 ou valor maior.

Acredito que seja isso, e já dá para fazer um bom trabalho com este pequeno painel, geralmente o custo de montagem de um painel deste tipo com componentes separados vai ficar bem acima do custo do kit, este foi comprado por cerca de 35,00 sem incluir o frete.

Ideia inicial é a de usar o painel em uma aplicação e a caixa de conexão com os sensores para outra, por isso cheguei nestes dados de como usa-los separadamente.

Então, se for seguir o exemplo dado, tenha certeza de que é o módulo do mesmo tipo, observe pela posição e distancia dos conectores da caixa de conexão, eu notei que tem muitos kits parecidos, e não posso dizer que dentro sejam iguais, caso seu kit não seja do mesmo, procure observar os dados que são enviados para o painel, o gravador PICkit2 tem essa função.

Boa sorte!

Microcontrolador de Módulo Ultrasom para medição de distancia – HC-SR04 e kit de ré

Para aqueles que gostam de abrir os equipamentos eletronicos e não se conformam em apenas olhar, mas saber como funciona e como poder utilizar da melhor forma possível a tecnologia que está ao alcance da mão, evitando um grande numero conexões entre diversos tipos de módulos, em busca de algo integrado e sem desperdícios:

A figura acima mostra um kit de sensor de distancia para monitoramento de ré de veículos, e hoje estão sendo vendidos aos “baldes”, entrei em um site de vendas online e notei o contador de vendas do anuncio marcando mais de 1700 unidades vendidas, afinal quem quer ter dor de cabeça com uma batida ou um simples arranhão, se o kit custa em torno de 35,00.

O interessante sobre este módulo do kit de ré é que tem dois microcontroladores, um na caixa de conexão dos sensores e outro no painel, sendo o painel conectado à esta caixa por meio de um fio de apenas 3 vias, alimentação e dados.

Observando as características do display de segmentos fiquei interessado em alterar o funcionamento do microcontrolador e notei que ele tem a mesma quantidade de pinos que o microcontrolador do módulo HC-SR04, muito utilizado em aplicações didáticas com Arduino e PIC.

Uma possível novidade é de que provavelmente o microcontrolador utilizado neste módulo e no do kit de ré, seja um EM78P153S ou compatível, não se tem confirmação pois o chip está raspado, tanto no HC-SR04 quanto no kit de ré, mas de acordo com a ligação dos pinos, que são 14, tudo indica isso. O referido uC é o chip do centro, logo abaixo do cristal, e também é o único raspado.

O que intriga mais é saber que este tipo de microcontrolador é do tipo OTP ROM, ou seja, só pode ser programado apenas uma única vez, o que o incapacita para adição de novas atualizações e customizações.

Observe na figura abaixo o detalhe nos pinos 5 e 6, são conectados ao cristal, e também ao pino 4 e 11, alimentação.

 

E cada vez mais novos aparelhos estão sendo fabricados com este tipo de microcontrolador que torna-se bem mais barato, pois não tem tecnologia de regravação, porém, como já mencionado, não suporta atualizações do firmware.

Portanto se estiver com alguns desses módulos para reparo, seria pouco viável em caso de necessidade de substituição do microcontrolador.

Já para um novo projeto de aparelho que tem a possibilidade de estar sendo atualizado constantemente o melhor seria a aplicação de um uC com memória Flash, além do mais se o cliente pode receber atualizações ele vai ter mais fidelidade com o desenvolvedor que está sempre lhe oferecendo uma oportunidade de estar sempre em dia com a tecnologia, e principalmente no caso de correções de falhas.

Editado: Um esquema sugere que o C.I. do módulo HC-SR04 é um STC11, porém não encontrei ainda um STC de 14 pinos:

Observe o MAX232 como driver de potencia para o emissor de Ultrasom, bem bacana já que a aplicação para comunicação serial para o qual o chip foi desenvolvido tem um tempo de chaveamento bem menor.

Boa sorte!

 

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.