sábado, 26 de outubro de 2013

WR Bridge & SIM900 Interface Java

English version click here

Olá!

A um bom tempo sem postar, essa semana recebi alguns pedidos para suporte em projetos TCC, por isso fiquei um pouco sem tempo de atualizar o Blog, aproveito para dizer a todos que tiverem interesse em assessoria para projetos que envolva microcontroladores e periféricos fiquem a vontade em entrar em contado para orçamento.

Outra novidade, em breve vamos ter a loja online "MicroEmbarcado" oferecendo todos produtos do blog, alem disso fechei uma parceria exclusiva com  Elecfreaks para fornecer os produtos aqui no Brasil. Em breve mais novidades.

Sobre o post de hoje, todos nos temos problemas com aquele PDF de comandos AT, fazendo uma busca na internet encontrei um API em Java muito interessante para controlar seu modem SIM900 através de comandos. Para fazer o link das interfaces primeiro temos que gravar um codigo basico de controle para comandos AT, esse código já foi demonstrado e explicado em posts anteriores.




  • #include <SoftwareSerial.h> //inicia biblioteca serial via software
  • SoftwareSerial mySerial(3,2); // atribui os pinos 2 e 3 como tx rx respectivamente
  • void setup()
  • {
  • mySerial.begin(19200); // taxa de comm. com SIM900
  • Serial.begin(19200); // taxa de comm. com Arduino-PC
  • }
  • void loop()
  • {
  • if (mySerial.available()) // serial do SIM900 disponivel?
  • Serial.write(mySerial.read()); // escrevo o que recebi do Arduino-PC no SIM900
  • if (Serial.available()) // porta serial do Arduino-PC disponivel?
  • mySerial.write(Serial.read()); // escrevo o que recebi do SIM900 no  Arduino-PC
  • }


  • Atenção ao comando SoftwareSerial(3,2), estou usando o WS Bridge, porem para esse código funcionar em qualquer modulo SIM900 modifique as portas e baud rate especifico do seu modulo, do contrario não vai funcionar.

    Comunicação SIM900 <=> Arduino OK. Então vamos prosseguir, entre no site http://m2msupport.net/m2msupport/module-tester/
    Vai abrir uma aplicação em java(aceite caso seu browser pergunte se é para executar).

    Clique em "Find Ports", ele vai localizar a porta serial em que seu Arduino esta conectado:


    Logo em seguida, clique em "Connect", ele vai comunicar com seu modem SIM900, vai encontrar suas características assim como mostra log de comandos:



    Ótimo! estou conectado ao API Java, e agora?
    Dentro do API java temos varias abas, com diferentes especificações, cada aba abre opções, todos opções nesse API são simples comandos AT, porem estão em formato mais fácil e rápido de ser enviado, não temos que escrever os comandos manualmente, apenas clicamos no que desejamos, exemplo mandar uma SMS, e o API toma conta do resto comunicando com seu modem e mostrando na janela o log dos eventos ocorridos.


    Parâmetros do seu modem:




    Enviando SMS:

                                       

    Fazendo ligação:



    HTTP POST/GET:


    Operadoras disponíveis:


    Bom é isso ai pessoal! até a próxima.

    domingo, 13 de outubro de 2013

    WR Bridge - Enviando SMS de temperatura

    English version.

    Bom pessoal, como eu disse no review dessa placa, vamos começar uma serie de posts, falando mais sobre Arduino+GSM e alguns outros fatores.

    Nesse primeiro projeto aplicado vamos fazer a leitura de um sensor de temperatura LM35, e enviar esses dados de tempos em tempos a um numero especifico de celular.

    A primeira parte é a montagem, o sensor LM35 varia 10mV a cana grau na sua saída. O WS Bridge tem disponível em sua placa entradas analógicas, onde G= GND, V=VCC e S=entrada. Então para fazer essa conexão com o LM35 com sua face para frente temos VCC - OUT - GND como na imagem a seguir:


    Assim é feita as conexões no WS Bridge:


    Conexões feitas:


    Agora vamos para programações, temos que fazer o seguinte, configurar a comunicação serial Arduino-GSM, para isso vamos usar a biblioteca softwareserial. Logo depois temos que iniciar o modem e configurar a leitura como modo texto, para isso enviamos o comando AT+CMGF=1.

    Com modem configurado vamos ao laço loop, fazemos a leitura da temperatura, e convertemos essa valor float para uma String, logo depois concatenamos na String a frase que queremos enviar ex: 
    Temperatura atual: X.
    Dessa forma podemos enviar apenas a String que já tem todos dados completos, se não ficou facil de entender aqui vai o programa para WS Bridge.

    Lembrando que temos que colocar o numero de celular onde esta indicado no código:

    1. #include <SoftwareSerial.h>
    2. SoftwareSerial mySerial(3,2);
    3. float temperatura;
    4. String data;
    5. void setup()
    6. {
    7. mySerial.begin(19200);
    8. mySerial.println("\r");
    9. delay(1000);
    10. mySerial.println("AT+CMGF=1\r");
    11. delay(1000);
    12. }
    13. void loop()
    14. {
    15.   if (mySerial.available())
    16.     {
    17.       temperatura = (5.0 * analogRead(A0) * 100.0) / 1024;
    18.       int tempC1 = temperatura;
    19.       int tempC2 = (temperatura - tempC1) * 100;
    20.       char msg[24];
    21.       sprintf(msg, "%i.%i", tempC1,tempC2);
    22.      
    23.       data+="Temperatura atual: ";
    24.       data+=(msg);
    25.       mySerial.println("AT+CMGS=\"+NUMERO CELULAR\"\r");
    26.       delay(1000);
    27.       mySerial.println(data);
    28.       delay(1000);
    29.       mySerial.println((char)26);
    30.       data="";
    31.     }
    32.     delay(60000);
    33. }

    Dessa forma de 1 em 1 minuto vamos receber no celular a temperatura atual lida pelo Arduino usando sensor LM35:



    É isso ai pessoal, qualquer duvida so deixar nos comentários, logo mais teremos outro projeto aplicado para essa placa!!

    Review WR Bridge Arduino+GSM

    Introdução:


    Neste review vamos tratar da placa WR Bridge, o porque de ser chamada Bridge, as funcionalidades e pontos fortes, dentre outros fatores. Além disso vamos começar uma serie de posts com essa placa, fazendo diversos testes e utilizando todo seu potencial, que pode ter certeza é muito grande.

    Bridge? O que é isso? 

    Essa placa é para programação em alto nível, é muito indicada para projetos finais, mas serve perfeitamente para prototipagem. A placa carrega não só o microcontrolador, mas sim diversos periféricos, prontos para fazer interfaces, sem a necessidade de ficar conectando diversos shields, sem problemas de incompatibilidade. Sim, essa placa apesar de já ter diversos periféricos te deixa preso se for adicionar mais algum componente, visto que todas suas portas digitais estão ocupadas, e estão disponíveis para o usuário apenas as portas analógicas do microcontrolador.

    Vista completa do WS Bridge:







    Componentes:


    • Arduino Atmega328
    • SIM900 GSM/GPRS
    • Xbee Soket
    • nRF24L01
    • Cartão SD
    • Entrada FTDI

    Tudo isso esta na placa, pronto para ser utilizado. Microcontrolador, GSM, Xbee, RF e cartão SD. Basta programar que já esta tudo conectado.
    Não possui porta USB, mas acompanha um conversor com chip FTDI e pode ser programado diretamente do IDE do Arduino, basta selecionar Arduino UNO, programar e gravar, essa é a conexão feita na placa:


    Nessa imagem podemos visualizar como conectamos o FTDI, lembrando que essa placa pode ser programada via Bluetooth também usando o conector Xbee.


    Imagem focando o microcontrolador Atmel Atmega328AU, este é o mesmo microcontrolador presente no Arduino UNO:


    A placa acompanha acabamento espetacular, um dos melhores acabamentos que já vi, banhada a ouro. Nessa imagem podemos ver alguns periféricos, como os 2 Relés que já estão conectados ao arduino:



    Em foco conector Xbee/FDTI e slot para cartão SD, o que proporciona milhares de aplicações:


    Nessa imagem visualizamos o conector ICSP para gravadores externas, e conector para nRF24L01:


    Onde fica o que?


    Características:

    • Controle no estilo Arduino
    • Onboard GSM/GPRS
    • Onboard XBEE socket
    • Suporte para Micro SD
    • Modulo Relé
    • Botão de Reset de facil acesso
    • Banhada a ouro
    • As entradas IO D6,D7, são usadas para o SIM900 GSM/GPRS PWRKEY e NESTKEY
    • Cartão SD usa IO CS: D4, MOSI: D11, SCK: D13, MISO: D12
    • As portas para controlar os Relés são S0:D5 S1:D10
    • Tensão de funcionamento: 7 VDC - 23VDC

    Pinos/Hardware:


    Dessa forma podemos visualizar onde fica o que, e quais pinos estão interligados no arduino e outros perifericos:



    Lista completa da pinagem:




    Pacote:


    O produto é enviado em uma caixa, tudo muito bem embalado para evitar sofrer impactos durante o percurso. Tudo chegou rápido e nos conformes:

    Caixa que acompanha o KIT:


    Por dentro da caixa:


    É um KIT completo, não há necessidade de comprar outros equipamentos para funcionar, tudo incluso.



    Conclusão:

    No mercado existem hoje em dia diversas marcas produzindo placas para arduino e shields. Mas sem duvida alguma, nesse longo tempo de trabalho nunca vi uma placa com qualidade igual a essa. Acabamento, solda, componentes e conectores. Tudo do melhor. É um investimento caro, mas que agrega tantos periféricos que vale a pena. Para quem gosta não deve faltar.

    Links:

    Compre no Elecfreaks!

    Documentos:

    Vamos começar uma serie especial dessa placa, escrevendo vários programas de teste passo a passo, o primeiro é um leitor de temperatura com SMS

    domingo, 6 de outubro de 2013

    Review Pan & Tilt

    Fala pessoal,

    Uma pequena atualizado no blog com um review sobre o Pan & Tilt. Esse kit foi comprado no DX, demorou cerca de 25 dias para chegar a partir da compra. O preço desse modulo é bom, junto das peças metálicas acompanha os 2 mini servos que chegam a puxar 1,5kl, o que é ideal para o peso das partes metálicas.

    Pode ser usado para diferentes projetos, seguir um objeto, controlar a posição e tudo mais... Esse eu vou usar junto com um painel solar, no projeto "Seguidor Solar" que será postado no futuro.

    Essas são algumas imagens do modulo montado, que diga-se de passagem, é difícil de montar, chato. Se for seguir o manual que acompanha vai acabar montando errado.

    Partes metálicas e componentes:


    As partes metálicas são de ótima qualidade, super leves e resistentes, com bom encaixe. Me surpreendeu o quanto essas peças são leves. Já os parafusos.... de péssima qualidade, perdi 3 parafusos porque eles simplesmente partiram no meio, não pude utilizar estes e tive que usar alguns outros que tinha de outros módulos. O ruim é que não acompanha parafusos extras..

    Modulo montado com servos:


    A montagem foi difícil, mas deu certo, as partes ficaram muito bem encaixadas, faz movimentos suaves e fortes, estes servos são ideias para essa aplicação, são leves e de torque 1,5kl, velocidade angular de 0.1s/60 tensão de funcionamento 4,8V~6V

    Tamanho das partes:


    Esse aqui é o código de exemplo, estou usando um Key pad para tirar valores analógicos e controlar a posição:

    1. #include "Servo.h"
    2. const byte PIN_ANALOG_X = 0;
    3. const byte PIN_ANALOG_Y = 1;
    4. Servo pan;
    5. Servo tilt;
    6. long currentX=0;
    7. long currentY=0;
    8. void setup() {
    9. Serial.begin(9600);
    10. pan.attach(8);
    11. tilt.attach(9);
    12. }
    13. void loop() {
    14. currentX = map((long)analogRead(PIN_ANALOG_X)010230180);
    15. currentY = map((long)analogRead(PIN_ANALOG_Y)010230180);
    16. Serial.print("X: ");
    17. Serial.print(currentX);
    18. Serial.print(", ");
    19. Serial.print("Y: ");
    20. Serial.print(currentY);
    21. Serial.println();
    22. pan.write(currentX);
    23. tilt.write(currentY);
    24. }



    E aqui vai um vídeo do funcionamento :