Manual

do

Maker

.

com

HC12: Do computador para o Arduino

HC12: Do computador para o Arduino

No artigo anterior sobre o HC12 mostrei como fazer a comunicação básica entre 2 Arduino Leonardo. Agora vamos fazer uma brincadeira diferente, enviando comandos do computador para o Arduino sem utilizar comunicação serial, apenas o rádio conectado ao computador (seja desktop ou notebook) através de um adaptador FTDI.

Como o Arduino não estará conectado ao computador após subir o sketch, precisamos de algum feedback para saber se realmente o comando foi recebido. Vamos utilizar o LED built-in que está no pino 13.

Criando um programa para Comunicação serial

Acompanhou os primeiros tutoriais de Qt? Tem alguns vídeos em nosso canal no Youtube, além dos artigos relacionados. Mas não se preocupe muito, caso tenha o Qt instalado. Se não tiver, preocupe-se um pouco e instale-o. Ele é gratuito e a IDE de desenvolvimento é magnifica; você pode escrever tudo em C++ puro ou utilizar os recursos oferecidos pelo framework, com a liberdade que nenhum outro framework lhe dará.

Para agilizar ainda mais esse tutorial, vá ao nosso repositório no github e clone o projeto desse link. Se ainda não utilizou a biblioteca QtSerialPort, então deverá instalá-la à parte. Sorry, mas meus tutoriais são sempre executados em Linux, portanto, ou você instala o Linux nativamente, ou em uma VM, ou então procure no Google como instalar o QtSerialPort em outro sistema. No Linux, basta executar:

sudo apt-get install libqt5serialport5-dev

Abrindo o projeto recém clonado, Já é possível rodá-lo simplesmente utilizando a combinação Ctrl+R.

Esse programinha foi criado em poucos minutos e caso queira saber como foi feita, você pode iniciar desse vídeo. Para facilitar ainda mais, façamos o seguinte, apenas adicionaremos um botão para ligar e desligar o LED built-in do Arduino.

Já temos um projeto pronto para uso, no qual adicionaremos um botão e um slot para o botão, não tem mistério.

Basicamente o que fiz foi adicionar o slot changeLED, contendo o seguinte código:

void MainWindow::changeLED()
{
    this->serialPort->write("*\n");
}

O protótipo do método fica no header sempre. Basta descer até a seção public slots e adicionar:

void changeLED();

E a conexão com o novo botão, no construtor da classe, onde já tem um connect :

connect(ui->pushButtonLED,SIGNAL(clicked(bool)),this,SLOT(changeLED()));

Ao clicar no botão, ele enviará um asterisco via serial para o rádio, conectado por FTDI ao computador. O rádio transmitirá esse valor e o Arduino se encarregará de mudar o status do LED a cada Serial.available(), sem maiores tratamentos. Eis um blink.

Programando o Arduino

Aproveitei o Arduino Leonardo que já estava pronto para uso devido ao artigo anterior, mas fique à vontade para usar qualquer coisa que deseja, uma vez que tudo o que precisa fazer com esse rádio é uma comunicação serial em 9600 bauds.

O código é basicamente isso:

bool stat = false;
void setup(){
    Serial.begin(9600);
    Serial1.begin(9600);
    pinMode(13,OUTPUT);
}

void loop(){
    if (Serial1.available()){
      stat = !stat;
      digitalWrite(13,stat);
      Serial.println(".");
    }
    delay(100);
}

Desse jeito mantemos o blink graças ao comando Serial.print(), mas se quiser apenas acender ou apagar, basta tirar essa linha e assim será necessário clicar novamente no programa de comunicação serial feito em Qt para mudar o estado do pino.

Fiz um vídeo de alguns segundos apenas para mostrar o funcionamento.

Com essa prova de conceito, já fica claro que mandar comandos do computador para o Arduino  através de rádio é uma tarefa simples, utilizando um HC12 para tal.

Pretendo escrever mais um ou dois tutoriais relacionados, espero que acompanhe e até a próxima!

 

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.  

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.