Resumo:
Este Projeto visa a construção de uma aplicação de robôs na automação de coleta de aspectos ambientais. O robô suporta monitoramento remoto de desempenho e manutenção de vários fatores do ambiente em qualquer área. Os detalhes do projeto, configuração e uso do robô no sistema de aquisição de dados (DAQ) são fornecidos aqui. Os sensores fornecem dados precisos e confiáveis em tempo real, necessários para monitoramento e controle autônomo de qualquer tipo de área ou indústria. Os dados adquiridos pelo sistema proposto podem ser acessados, plotados e analisados remotamente. Isto fornece uma solução totalmente automatizada para monitoramento e controle de locais remotos.

Fig. 1: Protótipo de robô Land Rover baseado em Arduino usado para aquisição de dados de sensores
Descrição:
Pré-requisitos e equipamentos:
Você vai precisar do seguinte:
-
Uma placa Arduino ou clone do Arduino (aqui está um guia se você precisar)
-
Dois motores CC.
-
Um módulo Bluetooth 5v TTL-UART.
-
Chassi e rodas do robô que se adaptam ao tamanho do chassi e do motor.
-
Arduino IDE para a programação.
Diagrama de bloco:

Fig. 2: Diagrama de blocos do robô de aquisição de dados de sensores baseado em Arduino
Nosso objetivo neste projeto é coletar os dados do sensor e armazená-los para análises futuras. Existem muitas técnicas utilizadas para aquisição de dados, como EEPROM, cartão SD. Aqui usaremos armazenamento baseado na Internet, que é uma forma confiável e eficiente de análise de quaisquer dados de sensores.
Montagem de ferragens:
Faça as conexões do robô conforme indicado no diagrama de circuito. Faça a montagem do robô com as peças selecionadas e conecte os motores ao circuito. Optoacopladores são usados para proteger o Arduino contra riscos de alta tensão. Nota: O RX do Arduino deve estar conectado ao TX do módulo Bluetooth e o TX do Arduino deve estar conectado ao RX do módulo Bluetooth.
Trabalhando:
Neste Robô adicionamos funcionalidade de internet usando um modem GSM que fornece conexão GPRS. A seção abaixo explicará como enviar as leituras do sensor por meio de um comando HTTP para um site. Usamos o site ThingSpeak, que fornece uma API simples e gratuita para registrar dados de uma variedade de sensores.

Fig. 3: Gráfico mostrando variações de intensidade de luz detectadas por LDR no robô Arduino de aquisição de dados

Fig. 4: Gráfico mostrando as variações de umidade registradas pelo sensor DHT11 no Robô Arduino de Aquisição de Dados

Fig. 5: Gráfico mostrando as variações de temperatura registradas pelo sensor DHT11 no Robô Arduino de Aquisição de Dados
Estes são alguns exemplos de gráficos que foram gerados a partir de dados de sensores enviados do robô para o canal no site ThingSpeak:
Configuração do Thing Speak
Aqui estão as etapas necessárias para que este exemplo funcione com o site ThingSpeak:
-
Crie uma conta com ThingSpeak (Inscreva-se).
-
Crie um novo canal

Fig. 6: Captura de tela do site Thingspeak mostrando a criação de um canal para aquisição de dados
-
Copie a WRITE API KEY da guia APIKEYS do seu novo canal.
-
Configure seu novo canal (veja o Configurações do canal aba).
-
Adicione três campos ao seu canal.
-
Nomeie o canal e cada um dos campos.
-
Salve as novas configurações do canal.
-
Observação: Os nomes dos canais e campos são usados para rotular os dados nos gráficos. Esses nomes não têm efeito na API e podem ser alterados a qualquer momento.
-
Aqui estão as configurações do canal usado para este Robô:

Fig. 7: Captura de tela do site Thingspeak mostrando a adição de campos de intensidade de luz, temperatura e umidade no canal criado para exibição de dados do sensor
Biblioteca inclui
Além das bibliotecas existentes, devemos agora incluir também as bibliotecas Timerone, Soft serial e DHT no esboço usando a diretiva do compilador #include.
#include
#include
#incluir
A API ThingSpeak limita o upload de dados a no máximo uma vez a cada 15 segundos. Além disso, leva algum tempo para estabelecer a conexão GPRS antes que qualquer dado possa ser enviado. Por esse motivo, ajustamos Timer1.initialize(4000000); //define um timer de 4 segundos. E crie uma variável para 5 chamada tick_count para que as leituras sejam feitas uma vez a cada 20 segundos. (as unidades são microssegundos)
Configurar:
Além do código de configuração existente para controles robóticos, devemos fazer algumas inicializações no GSM.
GPRS.write(“AT+CGATT=1”); //Anexar um serviço GPRS
GPRS.write(“AT+CGDCONT=1,”IP”,”airtelgprs.com””); //Definir contexto PDP
GPRS.write(“AT+CSTT=”airtelgprs.com”,””,”””); //Definir ponto de acesso, ID de usuário e senha
GPRS.write(“AT+CIICR”); //Ativar conexão sem fio com GPRS demorado
GPRS.write(“AT+CIFSR”); // Obtenha o endereço IP local. Na verdade, não é necessário.
GPRS.write(“AT+CIPSTATUS”); // Obtém o status da conexão PS Deve ser 'IP STATUS'. // Isto pode ser usado como um ponto de verificação.
GPRS.write(“AT+CIPHEAD=1”); // Adicione cabeçalhos à solicitação HTTP.
GPRS.write(“AT+CDNSORIP=1”); //Indica se a solicitação de conexão usará endereço IP (0) ou nome de domínio (1)
GPRS.write(“AT+CIPSTART=”TCP”,”api.thingspeak.com”,”80″”); //Iniciar conexão TCP (modo, endereço/nome IP, porta) PS se retornar 'CONNECT OK' então você está com sorte
GPRS.write(“AT+CIPSEND”);//Informando ao módulo GSM que vamos enviar os dados
Coleção de dados:
Luz = leitura analógica (A0); //Leitura Intensidade da luz
A leitura da temperatura ou umidade leva cerca de 250 milissegundos! As leituras do sensor também podem ter até 2 segundos de idade (é um sensor muito lento)
h = dht.readHumidity ; // Ler a temperatura como Celsius (o padrão)
t = dht.readTemperature ;
Envio de dados para o Thing Speak:
itoa (Luz,LIGHT_dados,10);
itoa (h,HUMID_dados,10);
itoa (t,TEMP_dados,10); //Função para converter inteiro em string.
GPRS.write(“AT+CIPSEND”); //Informando ao módulo GSM que iremos enviar os dados
GPRS.write(“GET /update?key=XXXXXXXXXXXXXXXXXXXXXX= “); // Mude para sua API KEY.
GPRS.write(LIGHT_dados);
GPRS.write(“&campo2= “);
GPRS.write(HUMID_dados);
GPRS.write(“&campo3= “);
GPRS.write(TEMP_dados);
GPRS.write(”HTTP/1.1″); //E finalmente aqui vem a solicitação HTTP real //A seguir estão os cabeçalhos que devem ser definidos.
GPRS.write(“Host: api.thingspeak.com”);
GPRS.write(“Conexão: keep-alive”);
GPRS.write(“Aceitar: */”);
GPRS.write(“*”);
GPRS.write(“Aceitar-Idioma: en-us”);
GPRS.write(0x1A);//Informa ao módulo GSM que não enviaremos mais dados
//char ctrlZ = 0x1A;
Diagramas de circuito
| Circuito-Diagrama-Arduino-Based-Control-Circuitry-Used-Data-Acquisition-Robot | ![]() |
Vídeo do projeto
