Os robôs estão apoiando comportamentos, atividades e empregos humanos de diversas maneiras notáveis. Desde braços e mãos robóticos até robôs que realizam tarefas de vigilância e manutenção, esta tecnologia está avançando rapidamente para auxiliar de forma a tornar determinadas tarefas mais seguras, mais rápidas ou mais acessíveis.
Esses robôs são automáticos – o que significa que podem operar automaticamente sem qualquer intervenção humana – ou controlados remotamente, de modo que operem manualmente a partir de um local remoto. Os robôs controlados remotamente normalmente são sem fio.
Exemplos de robôs controlados remotamente incluem:
- Robôs cobra – podem entrar em túneis ou oleodutos extremamente estreitos ou pequenos, esses robôs são usados principalmente para encontrar problemas (como um vazamento em um oleoduto), mas também podem ser usados para operações de busca e salvamento.
- Robôs de combate a incêndio – são usados como extintor de incêndio que borrifa água ou CO2 no fogo. Um operador controla este robô de um local seguro e tenta extinguir o fogo para que o bombeiro não tenha que colocar sua vida em perigo.
- Meus robôs difusores – são usados para difundir bombas ou minas ativas em um campo de batalha. Um operador pode controlar seus movimentos de uma distância remota e segura, difundindo uma bomba (ou mina) sem arriscar uma vida.
O robô controlado por Bluetooth
À medida que os robôs avançam, aumenta também a capacidade de comunicar com eles. Os robôs controlados remotamente de hoje geralmente são sem fio, o que normalmente é feito usando um smartphone via comunicação Bluetooth. Isso significa que qualquer pessoa pode controlar os movimentos do robô com o toque dos dedos.
Uma indústria que se beneficiou do apoio robótico é o setor agrícola. Estes robôs podem ser controlados ou programados sem fios para automatizar tarefas lentas ou repetitivas para os agricultores, permitindo-lhes concentrar-se mais na melhoria do rendimento global da produção. Alguns dos robôs mais comuns na agricultura são usados para semear, pulverizar, colher, colher e controlar ervas daninhas.
O projeto
Para nossos propósitos, vamos construir um robô que possa ajudar no crescimento básico das plantas. Quatro condições devem ser ideais para que uma planta cresça saudável.
1. Temperatura
2. Umidade
3. Umidade do solo
4. Luz ambiente (intensidade luminosa).
Três sensores serão usados em nosso robô para monitorar essas condições.
Adicionalmente, para este projeto, o operador será:
- Capaz de manobrar o robô em um raio de 10 a 30 metros enquanto faz medições e seleciona o local ideal para o plantio.
- Capaz de atingir as medições de clima temperado, umidade, umidade do solo e luz ambiente após o plantio.
- Capaz de tomar ações corretivas para alterar qualquer uma dessas quatro condições.
Embora este robô seja construído para cuidar de plantas, é importante notar que o conceito pode ser facilmente utilizado para diferentes aplicações, alterando os sensores. Por exemplo, se equiparmos o robô com MQ2, MQ3 ou um sensor de gás semelhante, o robô poderá ser usado para detectar vazamentos de gás de qualquer GÁS como CO2, CO, GLP, etc.
Mas, por enquanto, vamos nos concentrar no desenvolvimento de um robô para cuidar de plantas.
Odiagrama de blocos do sistema
Os principais blocos de construção do sistema são três sensores para:
1. Umidade do solo: usado para medir o teor de umidade no solo e fornece saída de tensão analógica de acordo com o nível de umidade medido. Sua tensão de saída diminui à medida que o teor de umidade aumenta.
2. Sensor de temperatura e umidade DHT11: mede a temperatura e umidade atmosférica. Fornece valores digitais diretos para temperatura em Celsius e umidade em% UR. É um sensor inteligente.
3. LDR, placa de desenvolvimento Arduino UNO, módulo Bluetooth, dois motores DC e chip de driver de motor.
O módulo Bluetooth é usado para fins de comando (para mover o robô para frente, para trás, para a esquerda e para a direita) a partir de um smartphone. Ele fornece esses dados, serialmente, ao microcontrolador Arduino UNO.
A placa Arduino UNO executa as seguintes tarefas:
- Lê a tensão de saída analógica do sensor de umidade do solo e a converte em digital. Em seguida, ele calibra entre um nível de umidade de 0 a 100%.
- Lê os valores de temperatura e umidade do sensor DHT11.
- Lê a saída de tensão analógica do LDR e calibra a intensidade da luz entre 0-100%.
- Recebe diferentes comandos do módulo Bluetooth e gira os dois motores DC para mover o robô para frente, para trás, para a esquerda ou para a direita.
- Envia (transmite) essas leituras de todos os três sensores para um smartphone por meio do módulo Bluetooth.
O motorista do motor fornece tensão e corrente suficientes para ambos os motores para girá-los. Também amplifica a saída da placa Arduino e aciona os motores.
Os motores CC dirija as rodas esquerda e direita do robô e mova o robô para frente, para trás, para a esquerda e para a direita.
Agora, vamos ver como o circuito é construído a partir deste diagrama de blocos.
O diagrama do circuito
A descrição do circuito
- O módulo HC-05 opera com os 5V fornecidos pela placa Arduino. Ele se comunica com a placa Arduino com os pinos USART Tx-Rx. Isso significa que seu pino Tx está conectado ao pino Rx da placa Arduino e vice-versa.
- O sensor DHT11 também fornece alimentação de 5V da placa Arduino. Sua saída digital está conectada ao pino digital D7 da placa Arduino.
- A saída analógica do sensor de umidade do solo é conectada ao pino de entrada analógica A1 da placa Arduino. Requer tensão de polarização de 5V da placa Arduino.
- O LDR é configurado no modo pull-down com o resistor pull-down de 10 KΩ. Sua saída analógica é dada ao pino de entrada analógica A0.
- os pinos digitais D8, D9, D10 e D11 acionam os dois motores DC usando o chip L293D. Esses pinos estão conectados às entradas do L293D e os dois motores estão conectados à saída do chip.
- O pino de alimentação do motor Vss do L293D (pino número 8) recebe 12V da bateria.
- A placa Arduino também recebe entrada de 12 V da bateria em seu pino Vin. Ele obtém entrada de 12 V e fornece 5 V de saída para todos os outros componentes.
Funcionamento e operação do circuito
O funcionamento do circuito começa quando a bateria de 12V é conectada à placa Arduino UNO e ao chip L293D.
- Inicialmente, ambos os motores estão parados e o robô também está em repouso.
- Para mover o robô em qualquer direção, temos que dar comandos do smartphone através do aplicativo Android baseado em Bluetooth.
- Para isso, temos que abrir (iniciar) o aplicativo Bluetooth Android no smartphone e depois procurar o módulo Bluetooth HC05. Assim que o smartphone detectar o módulo HC05, é necessário emparelhar o módulo com o aplicativo para que ele possa enviar comandos do smartphone via Bluetooth para o módulo HC05 (nota: é necessário inserir a senha “1234” na primeira vez para emparelhar com o módulo HC05).
- Agora podemos enviar comandos ao robô para avançar, retroceder, esquerda ou direita através do smartphone através do aplicativo.
Estes comandos são usados para mover o robô (todos esses comandos são definidos no aplicativo Android):
- Quando algum dos comandos acima é enviado (enviando caracter direto ou pressionando o botão do aplicativo), ele é recebido pelo módulo HC05. O módulo fornece ainda este comando ao Arduino, em série, através dos pinos Tx-Rx.
- O Arduino recebe este comando e o compara com os comandos definidos. Se encontrar uma correspondência, ele girará os motores esquerdo e direito de acordo para mover o robô em qualquer uma das quatro direções apropriadas.
- Assim que o robô iniciar seu movimento, ele se moverá continuamente até enviarmos o comando 'S' para parar.
- Quando o robô parar, ele começará a ler os valores do sensor DHT11, umidade do solo e LDR. Ele lerá a saída de tensão analógica do sensor de umidade do solo e do LDR e a converterá em uma faixa de 0 a 100%. Também lerá os valores digitais de temperatura e umidade do sensor DHT11.
- Em seguida, ele transmite todos os quatro valores de umidade do solo, intensidade de luz, temperatura e umidade para o smartphone através do módulo Bluetooth, ele transmitirá continuamente esses quatro valores a cada dois segundos até ser interrompido.
- Ao receber o comando para começar a se mover novamente, ele irá parar de transmitir os valores.
- O operador pode levar este robô ao local desejado e medir estas quatro condições. Ele ou ela obterá as leituras em seu smartphone enquanto move o robô com o toque de um dedo.
- Deve ser fácil programar as condições ambientais de temperatura, umidade, umidade do solo e intensidade de luz na área próxima
O programa de software
O programa é escrito em linguagem C/C++ usando a ferramenta de software Arduino IDE. Também é compilado e baixado na memória interna (FLASH) do microcontrolador ATMega328 utilizando este mesmo software.
Aqui está o código do programa:
#include
#include
#incluir “DHT.h”
#define LDR_pin A0
#define solo_moisture_sensor_pin A1
#define DHTPIN2
#define DHTTYPE DHT11
Servo solo_moisture_servo;
int intensidade_da_luz, umidade_do solo;
LCD Cristal Líquido (12, 13, 8, 9, 10, 11);
DHT dht(DHTPIN, DHTTYPE);
int motor1Pin1 = 4; //pino 2 no IC L293D
int motor1Pin2 = 5; //pino 7 no IC L293D
int motor2Pin1 = 6; //pino 10 no IC L293D
int motor2Pin2 = 7; //pino 15 no IC L293D
int umidade_sensor_servo_pin = 3;
estado interno;
int stopflag = 0;
configuração nula
{
// define os pinos como saídas:
pinMode(motor1Pin1, SAÍDA);
pinMode(motor1Pin2, SAÍDA);
pinMode(motor2Pin1, SAÍDA);
pinMode(motor2Pin2, SAÍDA);
solo_moisture_servo.attach(moisture_sensor_servo_pin);
solo_moisture_servo.write(0);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.claro ;
lcd.setCursor(2, 0);
dht.begin ;
lcd.print(“Registrador de dados”);
lcd.setCursor(6, 1);
lcd.print(“Robô”);
atraso(5000);
lcd.claro ;
lcd.print(”t*CH % L % M %”);
}
loop vazio
{
int h = dht.readHumidity ;
int t = dht.readTemperature ;
intensidade_da luz = analogRead(LDR_pin);
intensidade_da_luz = mapa(intensidade_da_luz, 750, 50, 5, 100);
lcd.setCursor(9, 1);
lcd.print(intensidade_da_luz);
lcd.setCursor(1, 1);
lcd.imprimir
lcd.setCursor(5, 1);
lcd.imprimir(h);
se (stopflag == 1)
{
umidade_do solo = analogRead(soil_moisture_sensor_pin);
umidade_do solo = mapa (umidade_do solo, 1015, 100, 0, 100);
lcd.setCursor(13, 1);
lcd.print(soil_moisture);
Serial.print(“Umidade:”);
Serial.println(h);
Serial.print(“temp:”);
Serial.println
Serial.print(“luz:”);
Serial.println(light_intensity);
Serial.print(“umidade:”);
Serial.println(soil_moisture);
atraso(1000);
}
se (Serial.available > 0)
{
estado = Serial.read ;
// se o estado for '1' o motor DC irá avançar
se (estado == '1')
{
digitalWrite(motor1Pin1, ALTO);
digitalWrite(motor1Pin2, BAIXO);
digitalWrite(motor2Pin1, ALTO);
digitalWrite(motor2Pin2, BAIXO);
sinalizador de parada = 0;
solo_moisture_servo.write(0);
}
senão se (estado == '2')
{
digitalWrite(motor1Pin1, ALTO);
digitalWrite(motor1Pin2, BAIXO);
digitalWrite(motor2Pin1, BAIXO);
digitalWrite(motor2Pin2, BAIXO);
sinalizador de parada = 0;
solo_moisture_servo.write(0);
}
// se o estado for '3' o motor irá parar
senão se (estado == '3')
{
digitalWrite(motor1Pin1, BAIXO);
digitalWrite(motor1Pin2, BAIXO);
digitalWrite(motor2Pin1, BAIXO);
digitalWrite(motor2Pin2, BAIXO);
sinalizador de parada = 1;
atraso(500);
solo_moisture_servo.write(90);
atraso(500);
}
// se o estado for '4' o motor girará para a direita
senão se (estado == '4')
{
digitalWrite(motor1Pin1, BAIXO);
digitalWrite(motor1Pin2, BAIXO);
digitalWrite(motor2Pin1, ALTO);
digitalWrite(motor2Pin2, BAIXO);
sinalizador de parada = 0;
solo_moisture_servo.write(0);
}
}
}
(tagsParaTraduzir)Arduino