STAR TREK TOY (CHIME)

Faz um tempo que estou de olho neste brinquedo com efeitos de som da série start trek TOS, mas como sempre o valor de frete e impostos torna este tipo de compra uma dor de cabeça.













Então resolvi fazer um brinquedo similar e aproveitar a diversão de forma completa, melhorando e customizando o mesmo. Usei uma arduino uno conectada a um módulo de Sd, um sensor pir e led rgb. O principal é a biblioteca Arduino library for asynchronous playback of PCM/WAV files direct from SD card ( https://github.com/TMRh20/TMRpcm) que faz o trabalho de executar os sons com intereção dos sensores e botões. Seguem dois vídeos :





PADAVAN FIRMWARE NO ROTEADOR ASUS RT-AC51U




Se você caiu na bobagem de comprar este roteador e esta desapontado com a instabilidade do software da ASUS (que é uma bomba) te sugiro utilizar o firmware alternativo PADAVAN:

https://bitbucket.org/padavan/rt-n56u

No meu caso pelo menos salvou um equipamento que eu já estava colocando na bacia das almas (mercado livre).

Com este firmware e um modem HUAWEI E173 eu consegui fazer um sistema com dual wan que funciona.

Melhor ainda que estou usando um chip da TIM no plano TIM BETA LAB que te dá 10 gb de franquia mensal.

Agora.... não para por ai, além de ter recursos muito bons, você ainda pode acessar o SSH do roteador e dar comandos AT para o modem... enviar e recuperar SMS por exemplo.

Segue um tutorialzinho:

1. ACESSE O ROTEADOR POR SSH
2. DE O SEGUINTE COMANDO PARA ACESSAR O MODEM

microcom -s 115200 /dev/ttyUSB2

Obs: mude a porta se necessário o meu pegou de USB0 a USB2.

3. SE O SEU MODEM APRESENTAR AS MENSAGENS DE DSFLOWRPT DE O COMANDO A SEGUIR PARA INTERROMPER ESTAS MENSAGENS E PODER TRABALHAR EM PAZ:

AT^CURC=0 

obs - mude para 1 para religar

4. depois é só usar o modem normalmente com os comandos AT padrão mesmo:

LER SMS

AT+CMGF=1
OK
AT+CMGL="ALL"
+CMGL: 1,"REC UNREAD","+31628870634",,"11/01/09,10:26:26+04"
This is text message 1
+CMGL: 2,"REC UNREAD","+31628870634",,"11/01/09,10:26:49+04"
This is text message 2
OK
AT+CMGD=1
OK
AT+CMGD=2
OK


ENVIAR SMS

Sending SMS
Using AT commands you can easily send an SMS message from your device. (Note that SMS may incur additional charges.)
Starting from your screen session connection to the modem:

Send AT
Switch into text SMS mode (easier than the other mode) by sending AT+CMGF=1
Prepare the message by sending AT+CMGW="+<phone number>" The phone number includes the country code so to send an SMS to the US number 773-555-1234 you would send the command AT+CMGW="+17735551234". If it worked, you should get a > prompt.
Type in your message at the prompt and hit Ctrl+Z to end the message.
After you hit Ctrl+Z you should get a message back in the format +CMGW: X where X is a number. This number is needed in the next step.
Send AT+CMSS=X where X was the number from the previous step.
If all goes well you should get a +CMSS response followed by an OK. Your SMS should have sent!

É isso ai!

ARDUINO + 5 X 7 DOT MATRIX DISPLAY




Como uma coisa que parece simples pode ser tão complicada.... neste post vou registrar minha experiência para conectar um display de pontos (dot / led matrix) ao arduino.

Na maior parte dos sites ( assim como no arduino.cc) ou a conexão é direta nas portas digitais ou usando o chip MAX 7219/7221 que já tem até uma biblioteca na IDE do Arduino. O problema é que não achei matriz de leds de 8x8 em lugar nehum... logo resolvi usar os de 5x7 mesmo que são fáceis de achar e baratos, os shift registers 74HC595 que eu já tinha então resolvi trabalhar com eles

A matriz que está no vídeo é bem grande e vermelha ( 11 cm x 17,5 cm com pontos de 1 cm) e divertida de trabalhar porque o efeito é mais interessante mas o preço é alto, R$ 20,00. Nomalmente as´pequenas não custam mais que R$ 2,00.

Segue a lista de produtos para montar esta experiência:
1 x Matrix de pontos 5 x7 ( ou outra com até 8 linhas x 8 colunas)
5 x BC548 NPN transistors
2 x 74HC595 ( um para as linhas e outro para as colunas)
1 x arduino
Fios para conexão
Resistores para proteger os leds ( na minha não usei porque minha matriz é 5v como o arduino) pois a voltagem do arduino é alta para a maioria das matrizes
1 x breadboard

Para esta montagem eu usei o  exemplo de um dos melhores sites instrutivos sobre o arduino:

http://tronixstuff.wordpress.com/2010/06/06/getting-started-with-arduino-%e2%80%93-chapter-nine/

A matriz de pontos que usei é esta BM-40657ND (datasheet):

Segue esquema de montagem:

Como você vai ver nos exemplos por ai, as matrizes de 8x8 tem conexões bem simples, um pino para cada linha ou coluna, isto torna o trabalho mais fácil. Em uma matriz de 5 x7 existem pinos duplicados e a sequência dos pinos é bem chata de entender. Na parte inferior da esquerda para a direita estão os pinos 1 a 7 e na parte superior da direita para a esquerda estão os pinos 8 a 14.

Note ainda que cada led ou diodo tem um polo negativo e um positivo, na ilustração acima cada seta com uma barra no topo  representa um led, ( este é o símbolo eletrônico do diodo) a ponta da seta com a barra é a parte negativa ou terra e a base da seta a parte positiva. Veja que os negativos são todos conectados nas colunas e os positivos nas linhas. Por isso trata-se de uma matriz com colunas catodo (negativo) comum.

Na ilustração acima você pode ver que a terceira linha de baixo para cima é ativada pelo pino 1, a segunda linha de baixo para cima é ativada pelo pino 7... e assim por diante. Note que existem dois pinos que não estão representados na ilustração, os pinos 5 e 12 sao relativos a quarta linha de baixo para cima e os pinos 4 e 11 são relativos a terceira coluna. Confuso não é? Em minha montagem descobri que não é necessário conectar todos os pinos... escolha um para a linha (5 ou 12) e um para a coluna (4 ou 11) e pronto.... funciona assim mesmo.


Basicamente o esquema funciona da seguinte forma:

1. Os shift registers 74HC595 recebem os dados da arduino em forma decimal usando o comando ShiftOut e transformam em bytes, no caso da matriz com 5 x7 eu envio no máximo 31 para as linhas (00011111) e no máximo 127 para as colunas (01111111) isso ligaria todos os pontos da matriz:

digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 31); // para as linhas: catodos : negativo/terra
shiftOut(datapin,clockpin, MSBFIRST, 127); // para as colunas: anodos : positivo
digitalWrite(latchpin, HIGH);

3. O shift register 1 está conectado nas linhas (positivo/anodo) e o 2 nas colunas (negativo/catodo), quando o shift register 1 é ativado ele permite a passagem de corrente para os pinos positivos da matriz.
2. Os shit register não podem dar saída para o terra eles simplesmente ligam ou desligam as portas com 5v, é ai que entram os transistores, quando o transistor recebe uma voltagem no pino base ele conecta o pino coletor ao emissor. Como o pino coletor está conectado na matriz e o emissor no terra ( e o base nos pinos do shift register)  , quando o shif register 2 é ativado ele conecta as colunas ao terra.

4. Desta forma se fecha o circuito e qualquer que seja a combinação de leds obtida com a combinação das portas dos shift registers ativados ... se acende.

Leve em consideração que o shift register 1 controla as linhas que terão corrente e o 2 as colunas que serão conectadas ao terra e isto não permite que você desenhe caracteres ou números... o máximo que você consegue são pontos ou conjuntos de pontos como linhas ou quadrados ... para desenhar os caracteres é necessário fazer uma varredura rápida das colunas e linhas uma por vez, de forma que nosso olho não perceba quando se apagam ou acendem, isto se chama de persistência de visão.

Quando os caracteres estão em movimento isso é bem claro... quando se trata de um número ou letra parado é mais difícil de entender mas o princípio é o mesmo. Esta "jogada" de acender e apagar os leds em colunas individuais em squencia rápida é feita no momento da programação e não tem nada a ver com a montagem física. O comando shiftOut é alimentado com os parâmetros necessários por meio de loops, eu demorei um bocado para entender, tomara que você seja mais rápido(a).

Neste link você encontra uma tabela que usei como exemplo para calcular o desenho das letras e números.

Segue o código para a animação do vídeo nesta página:

--------------------------------------------------------------------------------------------------------

/*
Claudio Miklos 25/07/2010 baseado em : http://tronixstuff.com/tutorials > Chapter 9
*/

int latchpin = 8; // connect to pin 12 on the '595
int clockpin = 7; // connect to pin 11 on the '595
int datapin = 10; // connect to pin 14 on the '595
int seq[] = {0,0,0,0,0, // VAZIO
127,73,73,73,65,        // E
0,0,126,1,1,1,126,      // U
0,0,60,66,33,66,60,     // CORACAO
0,0,63,68,68,68,63,     // A
0,0,127,72,76,74,49,    // R
0,0,127,65,65,65,62,    // D
0,0,126,1,1,1,126,      // U
0,0,65,127,65,          // I
0,0,127,16,8,4,127,     // N
0,0,62,65,65,65,62,     // O
0,0,0,33,127,1,         // 1
0,0,0,33,67,69,73,49,   // 2
0,0,34,65,73,73,54,     // 3
0,0,64,32,16,8,4,2,1,   // ONDA DESCE
2,4,8,16,32,64,0,0,     // ONDA SOBE
127,62,28,8,            // SETA DIREITA
0,0,0,0,0};             // VAZIO

void setup()
{
   Serial.begin(9600);
   pinMode(latchpin, OUTPUT);
   pinMode(clockpin, OUTPUT);
   pinMode(datapin, OUTPUT);
}

void movealienfromleft(int duration)

{
   int colbin=0;
   for (int xx=0; xx<=113; xx++)
   {
      for (int dd=0; ddfor (int q=0; q<5; q++)
         {
           colbin=(xx*1)+q;
           columndisplay(seq[colbin], q,0);
         }
      }
   }
}

void columndisplay(int coldata, int column, int holdtime)

{
   int matrixcolumn[5] = {
     1,2,4,8,16};
   digitalWrite(latchpin, LOW);
   shiftOut(datapin, clockpin, MSBFIRST, matrixcolumn[column]);
   shiftOut(datapin, clockpin, MSBFIRST, coldata);
   digitalWrite(latchpin, HIGH);
   delay(holdtime);
}

void loop()
{
   movealienfromleft(30);
}


-------------------------------------------------------------------------------------------------------------------

Pesquisa:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1266267785
http://dotmatrixdesign.tumblr.com/
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267391793/7
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1203747843/22
http://forum.sparkfun.com/viewtopic.php?t=3811amp;sid=48fda56bd551ee455954a7c2ea44320e
http://www.bryanchung.net/?p=177
http://www.instructables.com/id/The-74HC164-Shift-Register-and-your-Arduino/step8/Project-3pt-2-2-Wire-4x4-led-matrix-display/

Documentação:

http://www.paralight.us/uploads/pdf/A-5570SR.pdf
http://www.paralight.us/products/details.php?g=cGNfaWQlM0QyMyUyNnBfaWQlM0Q4Mg==

Montagem:

http://tronixstuff.wordpress.com/2010/07/09/review-maxim-max7219-led-display-driver-ic/
http://www.digisoft.com.pk/Projects/5-x-7-dotmatrix-led-display
http://tronixstuff.wordpress.com/2010/06/06/getting-started-with-arduino-%e2%80%93-chapter-nine/

Material:

http://datasheets.ru/datasheets/572326/data-BM-40657ND.html
http://www.datasheetcatalog.org/datasheet/fairchild/BC548.pdf

1K ohm, 1/4 watt resistor
marrom, preto, vermelho, dourado.
560 ohm, 1/4 watt resistor
verde, azul, marrom, dourado.
470 ohm, 1/4 watt resistor
amarelo, violeta, marrom, dourado
BC548 NPN transistors
74HC595

http://forum.sparkfun.com/viewtopic.php?t=14212&start=15
http://www.thebox.myzen.co.uk/Tutorial/Power_Examples.html
http://www.sparkfun.com/commerce/product_info.php?products_id=733
http://www.sparkfun.com/commerce/product_info.php?products_id=312
http://members.ziggo.nl/electro1/avr/dotmatrix.htm
http://www.bitartist.org/2009/02/led-flower-vase-supplementary-note.html
http://kennethfinnegan.blogspot.com/2010/02/dot-matrix-arduino-clock.html
http://www.bitartist.org/2008/06/gif2led-released-and-with-my-led-egg.html
http://www.jacobpierce.com/blog/2009/10/11/arduino-hello-world-with-384-leds/
http://kalshagar.wikispaces.com/Arduino+and+a+Dot+Matrix
http://blog.bsoares.com.br/tag/arduino
http://www.arduino.cc/playground/Main/DirectDriveLEDMatrix
http://www.instructables.com/id/LED-Dot-Matrix-Display/
http://www.best-microcontroller-projects.com/led-dot-matrix-display.html
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1271447565
http://www.arduino.cc/playground/Main/MAX72XXHardware#WiringLedMatrix
http://forums.parallax.com/forums/default.aspx?f=25&m=453532

relogio:
http://www.maxim-ic.com/datasheet/index.mvp/id/4984
termometro:
http://www.nozebac.net/index.php?page=thermometer#expand2

Internet of Things

LUX com arduino GPRS shield e sensor LDR.

/*
Graph: Feed 38642, Datastream lux
*/

Laboratórios, Lojas e Produtos

Blogs, Comunidades e Revistas