Os robôs são projetados para facilitar e automatizar o trabalho dos humanos. Eles são úteis para serem implantados em locais de difícil acesso. Neste tutorial, é projetado um rover de monitoramento de umidade e temperatura baseado na aplicação robótica da IoT. A umidade e a temperatura são os ambientes físicos mais comuns que precisam ser monitorados. O robô de quatro rodas projetado neste projeto pode ser operado em um alcance de 30 metros e suportar temperaturas de até 150 graus Celsius.
O robô pode ser controlado através de um telefone celular que terá um aplicativo personalizado instalado. O celular se conectará ao robô via Bluetooth. Para conectividade Bluetooth, o circuito eletrônico que controla o robô possui o módulo Bluetooth HC-05 conectado a ele. Para controlar o robô, será necessário qualquer smartphone Android para emparelhar com o módulo Bluetooth HC-05 e iniciar o aplicativo personalizado projetado para este projeto. O aplicativo pode ser baixado deste tutorial.
O circuito eletrônico também possui módulo Wi-Fi ESP8266 conectado a ele. O módulo Wi-Fi é usado para conectar-se a qualquer hotspot de Internet disponível e transferir dados de temperatura e umidade para um servidor remoto. Uma plataforma IoT é utilizada para receber e registrar dados. A mesma plataforma é usada para monitorar dados em tempo real. Para registrar informações de temperatura e umidade, a umidade DHT-11 e o sensor de temperatura são usados no circuito.

Figura 1: Protótipo do robô ThingSpeak IoT baseado em Arduino para monitoramento de temperatura e umidade
O circuito de controle do robô é construído em torno do Arduino Pro Mini. A placa Arduino é a preferida porque é a placa controladora mais popular e tem grande suporte da comunidade. O Pro Mini é utilizado no circuito devido aos seus ricos recursos embalados em um tamanho compacto. Além disso, é útil instalar uma placa controladora tão pequena em qualquer corpo robótico. O robô é acionado por motores DC engrenados que são controlados através do IC do driver do motor L293D. O esboço do Arduino executado no circuito de controle é escrito e compilado no Arduino IDE, enquanto o aplicativo personalizado usado para enviar comandos de controle é construído usando o MIT App Inventor 2. A plataforma IoT usada para monitorar os dados do sensor é o ThingSpeak.
Componentes necessários –

Fig. 2: Lista de componentes necessários para o robô ThingSpeak IoT baseado em Arduino usado para monitoramento de temperatura e umidade
Diagrama de bloco –

Fig. 3: Diagrama de blocos do robô ThingSpeak IoT baseado em Arduino para monitoramento de temperatura e umidade
Conexões de Circuito
O circuito de controle do robô é construído em torno do Arduino Pro Mini.

Fig. 4: Imagem do circuito ThingSpeak IoT baseado em Arduino conectado ao corpo do robô
O circuito é construído integrando as seguintes seções –
Fonte de energia – No circuito, Arduino Pro Mini, módulo Bluetooth e módulo Wi-Fi precisam de 5V DC regulado para sua operação, enquanto o IC do driver do motor precisa de 12V DC. Uma bateria NIMH de 12V é usada como fonte primária de energia. A alimentação da bateria é regulada para 5V e 12V usando CIs 7805 e 7812. O pino 1 de ambos os CIs reguladores de tensão está conectado ao ânodo da bateria e o pino 2 de ambos os CIs está conectado ao terra. As respectivas saídas de tensão são extraídas do pino 3 dos respectivos CIs reguladores de tensão. Um LED junto com um resistor pull-up de 10K Ω também é conectado entre o terra comum e o pino de saída para obter uma dica visual da continuidade da alimentação. Apesar de usar bateria de 12 V, o 7812 é usado para fornecer uma alimentação regulada e estável ao IC do driver do motor.
Arduino ProMini – Arduino Pro Mini é uma placa microcontroladora baseada em Atmega 168. Possui 14 pinos GPIO, 6 entradas analógicas, 6 pinos PWM, 2 interrupções externas e UART, SPI e I2C integrados. A placa tem apenas 1,3 polegada por 0,7 polegada de tamanho, seis vezes menor que o Arduino UNO. Com esses recursos embalados em tamanho pequeno, esta placa é ideal para qualquer projeto robótico. Neste projeto, 4 pinos de entrada e saída do Pro Mini são utilizados para interface com o IC do driver do motor e o módulo Bluetooth faz interface com os pinos RX e TX disponíveis para comunicação serial via UART. Um dos pinos é utilizado para fazer a interface do sensor DHT-11 e dois pinos GPIO são usados para fazer a interface do módulo Wi-Fi ESP8266.
Módulo Bluetooth HC-05 – O módulo Bluetooth HC-05 é um módulo de protocolo de porta serial. Opera na banda ISM 2,4 GHz com V2.0+EDR (data de dados aprimorada). Pode funcionar nos modos Master e Slave. O módulo Bluetooth possui seis pinos – Enable, VCC, Ground, Transmit Data (TxD), Receive Data (RxD) e State. Os pinos Enable e State não são utilizados e, portanto, não estão conectados ao circuito. Os pinos VCC e Terra são conectados ao VCC e Terra comuns. Os pinos TxD e RxD do módulo são conectados aos pinos RX e TX do Arduino Pro Mini respectivamente. Essas conexões estão resumidas na tabela abaixo –

Fig. 5: Tabela listando a configuração dos pinos do módulo Wi-Fi ESP8266 ESP-12
Módulo Wi-Fi ESP8266 – O módulo Wi-Fi ESP8266 é usado para conectar-se a qualquer hotspot de Internet disponível e transferir dados do sensor para a plataforma ThingSpeak via Wi-Fi. O Módulo Wi-Fi ESP8266 é um SOC independente com pilha de protocolo TCP/IP integrada que pode fornecer a qualquer microcontrolador acesso a uma rede Wi-Fi. O ESP8266 é capaz de hospedar um aplicativo ou descarregar todas as funções de rede Wi-Fi de outro processador de aplicativo.
Cada módulo ESP8266 vem pré-programado com um firmware de conjunto de comandos AT. Portanto, pode-se simplesmente conectá-lo a um dispositivo Arduino. Aqui ele carrega os dados de monitoramento para a nuvem. O módulo está disponível em dois modelos – ESP-01 e ESP-12. O ESP-12 possui 16 pinos disponíveis para interface, enquanto o ESP-01 possui apenas 8 pinos disponíveis para uso. O ESP-12 possui a seguinte configuração de pinos –

Fig. 6: Tabela listando a configuração dos pinos do módulo Wi-Fi ESP8266 ESP-12
O modelo ESP-12 é utilizado no projeto. Os pinos Reset e VCC do módulo são conectados ao 5V DC enquanto o pino Ground está conectado ao aterramento comum. Os pinos Tx e Rx do módulo estão conectados aos pinos 11 e 10 do Arduino Pro Mini. Os pinos 11 e 10 do Arduino são configurados para receptor e transmissor serial por meio da função serial do software.
Sensor de temperatura e umidade DHT-11 – O sensor DHT -11 lê a temperatura e umidade ambiente e retransmite os dados para o microcontrolador como dados digitais. O pino de dados do sensor de temperatura e umidade DHT11 está conectado ao pino 12 do Arduino Pro Mini. O VCC e o aterramento estão conectados ao VCC e ao aterramento comuns.
IC do driver do motor CC L293D – O L293D é um circuito integrado (IC) de driver de motor com ponte H dupla. Os drivers do motor atuam como amplificadores de corrente, pois recebem um sinal de controle de baixa corrente e fornecem um sinal de corrente mais alta. Este sinal de corrente mais alto é usado para acionar os motores. Possui 16 pinos com a seguinte configuração de pinos:

Fig. 7: Tabela listando a configuração dos pinos do IC do driver do motor L293D
Existem dois motores DC usados para fazer o carro robótico. Os motores DC fazem interface entre os pinos 3 e 6 e os pinos 14 e 11 do IC do driver do motor.
O IC L293D controla os motores DC de acordo com as seguintes tabelas verdade:

Fig. 8: Tabela verdade do IC do driver do motor L293D

Fig. 9: Captura de tela da interface do usuário da plataforma ThingSpeak
Os pinos 4, 5, 13 e 12 do L293D são aterrados enquanto os pinos 1, 16 e 9 estão conectados a 5 Vcc e o pino 8 está conectado a 12 Vcc. Os pinos 15, 2, 7 e 10 do IC do driver do motor estão conectados aos pinos 8, 2, 3 e 7 da placa Arduino. O motor DC conectado à roda direita está conectado aos pinos 11 e 14, enquanto o motor conectado à roda esquerda está conectado aos pinos 3 e 6 do IC do driver do motor.
Motores DC com engrenagens – Neste robô, motores DC com engrenagens de 12 V são acoplados às rodas. Os motores DC com engrenagens estão disponíveis com uma ampla faixa de RPM e Torque, o que permite que um robô se mova com base no sinal de controle que recebe do IC do driver do motor.
Como funciona o circuito –
Após a montagem do robô, ele pode ser utilizado anexando bateria no circuito. À medida que o robô é ligado, ele começa a buscar dados do sensor de temperatura e umidade DHT-11 e procura qualquer ponto de acesso de Internet disponível para se conectar à plataforma ThingSpeak. ThingSpeak é um serviço de plataforma analítica IoT que permite agregar, visualizar e analisar fluxos de dados ao vivo na nuvem. ThingSpeak fornece visualizações instantâneas de dados postados pelos dispositivos IoT no servidor ThingSpeak. Com a capacidade de executar código MATLAB no ThingSpeak, é possível realizar análise e processamento on-line dos dados à medida que eles chegam.
O DHT11 detecta vapor de água medindo a resistência elétrica entre dois eletrodos. O componente sensor de umidade é um substrato que retém a umidade com eletrodos aplicados na superfície. Quando o vapor de água é absorvido pelo substrato, os íons são liberados pelo substrato, o que aumenta a condutividade entre os eletrodos. A mudança na resistência entre os dois eletrodos é proporcional à umidade relativa.
Uma umidade relativa mais alta diminui a resistência entre os eletrodos, enquanto uma umidade relativa mais baixa aumenta a resistência entre os eletrodos. O DHT11 mede a temperatura com um sensor de temperatura NTC montado na superfície (termistor) embutido na unidade. A umidade e a temperatura medidas pelo sensor são monitoradas e registradas através da plataforma ThingSpeak IoT através do módulo Wi-Fi que está conectado ao controlador que fornece a comunicação serial para transferência dos dados. Os dados registrados ficam visíveis na UI da plataforma.

Fig. 10: Captura de tela da interface do usuário da plataforma ThingSpeak
O robô pode ser movido passando comandos de um aplicativo Android personalizado instalado em qualquer smartphone. O aplicativo Android personalizado foi projetado usando o MIT App Inventor 2. Confira o guia de programação para saber como o aplicativo foi projetado usando o MIT App Inventor. O aplicativo personalizado possui botões para mover o robô para frente, para trás, para a esquerda, para a direita e para pará-lo. O usuário basta tocar nos botões de direção para transferir os comandos. Os comandos são passados pelo aplicativo para o módulo Bluetooth conectado ao circuito de controle na forma de sequências de caracteres únicos. As seguintes strings são passadas para transferir os comandos de controle –

Fig. 11: Tabela listando comandos de string usados pelo IoT Robot
Essas strings de comando são interpretadas no esboço do Arduino para controlar os motores DC. O robô pode ser movido para frente, para trás, para a esquerda ou para a direita implementando a seguinte lógica de entrada nos pinos do driver do motor –

Fig. 12: Tabela lógica do IC do driver do motor L293D para robô IoT
Ao receber os comandos de string, o esboço do Arduino apenas altera a saída digital nos pinos de entrada do IC do driver do motor para controlar o movimento do robô.

Fig. 13: Imagem mostrando o robô ThingSpeak IoT baseado em Arduino
Guia de programação –
O aplicativo personalizado usado para controlar o movimento do robô é construído usando o MIT App Inventor. Existem também muitos aplicativos Bluetooth para Android disponíveis na Play Store que podem ser usados. Se algum aplicativo disponível na Play Store for usado, o esboço do Arduino precisará ser modificado ou alterado de acordo. O MIT App Inventor 2 é usado para construir o aplicativo.

Fig. 14: Captura de tela do aplicativo personalizado projetado usando o MIT App Inventor
O aplicativo MIT Inventor é uma plataforma fácil para criar um aplicativo Android. A plataforma usa blocos lógicos para criar um aplicativo. Um guia para usar o MIT app inventor 2 é fornecido no site oficial da plataforma. Existem também muitos tutoriais no YouTube disponíveis para referência. O aplicativo de controle do robô criado neste projeto possui as seguintes lógicas que são formadas com ajuda de blocos –

Fig. 15: Captura de tela dos blocos lógicos do aplicativo personalizado projetado usando o MIT App Inventor

Fig. 16: Captura de tela dos blocos lógicos do aplicativo personalizado projetado usando o MIT App Inventor
Ainda mais recursos podem ser adicionados ao aplicativo incluindo blocos lógicos adicionais.
No circuito de controle do robô, o esboço do Arduino rodando no Pro Mini controla o mecanismo do robô. O esboço do Arduino começa com a importação dos arquivos de cabeçalho. Os seguintes arquivos de cabeçalho estão incluídos no código do sensor DHT-11 e na funcionalidade serial do software –
#include
#incluir
As seguintes diretivas #define são usadas para determinar os pinos do Arduino que devem ser conectados ao IC do driver do motor.
#define LM1 2
#define LM23
#define RM17
#define RM2 8
O bloco de código a seguir define os protótipos de função que são usados para determinar as tarefas do motor.
dados de caracteres = 0;
void avançar ;
void retroceder ;
void virar à esquerda ;
void virar à direita ;
void robostop ;
O bloco de código a seguir define a chave API fornecida pelo ThingSpeak ao criar o canal onde os dados devem ser gravados. Esta chave de API deve ser substituída pela chave de API atribuída a uma pela plataforma ThingSpeak.
String apiKey = “9W6L82SPOZKQ1A1W”;
O código a seguir define os pinos seriais do software usados para comunicação Wi-Fi.
SoftwareSerial ser(11,10); //RX,TX
O seguinte bloco de código é a função setup onde é usada para determinar se os pinos conectados são usados como entrada ou saída e habilitar a comunicação serial. Aqui Serial.begin(9600) é usado para estabelecer uma comunicação serial entre o bluetooth e o arduino e Serial.begin(115200) é usado para uma comunicação serial entre o Wi-Fi e o arduino. Ressalta-se que a nova versão do módulo Wi-Fi poderá funcionar com taxa de transmissão de 9600.
configuração nula
{
Serial.begin(9600);
pinMode(LM1, SAÍDA);
pinMode(LM2, SAÍDA);
pinMode(RM1, SAÍDA);
pinMode(RM2, SAÍDA);
ser.begin(115200);
Para aprender sobre os comandos AT, consulte ESP8266 – Referência de comandos AT.
O Arduino Sketch completo para o Rover de monitoramento de umidade e temperatura baseado em IoT pode ser encontrado na guia do código-fonte.
Observação: Encontre o arquivo do aplicativo controlado por Bluetooth abaixo.
Código-fonte do projeto
###
//Program to #include#include // include dht sensor library dht DHT; float t=0; float h=0; #define LM1 2 #define LM2 3 #define RM1 7 #define RM2 8 #define DHT11_PIN 12 char data = 0; void moveforward ; void movebackward ; void turnleft ; void turnright ; void robostop ; // replace with your channel's thingspeak API key String apiKey = "9W6L82SPOZKQ1A1W"; // connect 10 to TX of Serial USB // connect 11 to RX of serial USB SoftwareSerial ser(11,10); // RX, TX // this runs once void setup { // enable debug serial // Serial.begin(115200); Serial.begin(9600); pinMode(LM1, OUTPUT); pinMode(LM2, OUTPUT); pinMode(RM1, OUTPUT); pinMode(RM2, OUTPUT); // enable software serial ser.begin(115200); // reset ESP8266 WiFi connection AT+CIPMUX=1 AT+CWJAP ser.println("AT"); delay(1000); ser.println("AT+GMR"); delay(1000); ser.println("AT+CWMODE=3"); delay(1000); ser.println("AT+RST"); delay(5000); ser.println("AT+CIPMUX=1"); delay(1000); String cmd="AT+CWJAP="Gokul","22031994""; ser.println(cmd); delay(1000); ser.println("AT+CIFSR"); delay(1000); } // the loop void loop { if(Serial.available >0) { data = Serial.read ; Serial.print(data); Serial.print("n"); if(data == 'F') { Serial.println("Forward"); moveforward ; } else if(data == 'B') { Serial.println("Backward"); movebackward ; } else if(data == 'L') { Serial.println("Left"); turnleft ; } else if(data == 'R') { Serial.println("Right"); turnright ; } else if(data == 'S') { Serial.println("Stop"); robostop ; } } delay(1000); int chk = DHT.read11(DHT11_PIN); Serial.print("Temperature = "); t = DHT.temperature; Serial.println Serial.print("Humidity = "); h = DHT.humidity; Serial.println(h); esp_8266 ; } void esp_8266 { // TCP connection AT+CIPSTART=4,"TCP","184.106.153.149",80 String cmd = "AT+CIPSTART=4,"TCP",""; cmd += "184.106.153.149"; // api.thingspeak.com cmd += "",80"; ser.println(cmd); Serial.println(cmd); if(ser.find("Error")) { Serial.println("AT+CIPSTART error"); return; } // prepare GET string GET String getStr = "GET /update?api_key="; getStr += apiKey; getStr +="&field1="; getStr +=String(h); getStr +="&field2="; getStr +=String getStr += "rnrn"; // send data length cmd = "AT+CIPSEND=4,"; cmd += String(getStr.length ); ser.println(cmd); Serial.println(cmd); delay(1000); ser.print(getStr); Serial.println(getStr); delay(10000); } void moveforward { digitalWrite(LM1, HIGH); digitalWrite(LM2, LOW); digitalWrite(RM1, HIGH); digitalWrite(RM2, LOW); } void movebackward { digitalWrite(LM1, LOW); digitalWrite(LM2, HIGH); digitalWrite(RM1, LOW); digitalWrite(RM2, HIGH); } void turnleft { digitalWrite(LM1, HIGH); digitalWrite(LM2, LOW); digitalWrite(RM1, LOW); digitalWrite(RM2, LOW); } void turnright { digitalWrite(LM1, LOW); digitalWrite(LM2, LOW); digitalWrite(RM1, HIGH); digitalWrite(RM2, LOW); } void robostop { digitalWrite(LM1, LOW); digitalWrite(LM2, LOW); digitalWrite(RM1, LOW); digitalWrite(RM2, LOW); } ###
Diagramas de circuito
Diagrama de Circuito-Arduino-ThingSpeak-IoT-Robot-Temperatura-Umidade-Monitoramento | ![]() |
Ficha Técnica do Projeto
