Controle de carro robótico por WiFi

Controle de carro robótico por WiFi

Este tutorial irá ensiná-lo a controlar um carro Robo usando qualquer dispositivo habilitado para Wifi.

Componentes necessários:

1. Módulo Wi-Fi ESP 8266
2. Arduino UNO (ou equivalente) 3. Motorista L293D 4. Chassi 5. Motorredutores 12V DC X 2 6. Rodas X 2 7. Roda giratória 8. Fios 9. Tábua de ensaio 10. PCB pequeno 11. Cabeçalhos masculinos 12. Cabeçalhos femininos

Sobre ESP8266

ESP 8266 é a última novidade na internet. É um módulo Wifi um pouco maior que uma moeda de 1 Re. Bem, não é por isso que é famoso. O que o tornou muito popular entre os entusiastas da eletrônica é seu custo inacreditavelmente baixo. Comprei por apenas US $ 5 (~ 300 Rs). Um Arduino junto com um escudo Wifi custaria 10 vezes o custo deste módulo.

Imagem mostrando módulos Wi-Fi ESP8266

Figo. 1: Imagem mostrando módulos Wi-Fi ESP8266

Pode ser interligado com qualquer microcontrolador através da comunicação USART, o que implica que necessita apenas dos pinos RX e TX. Outra pena ao chapéu foi adicionada recentemente. O desenvolvedor lançou os arquivos SDK do módulo e, portanto, até mesmo o módulo pode ser reprogramado e seus pinos GPIO podem ser usados ​​de forma independente, sem qualquer microcontrolador adicional. Mas isso está além do escopo deste tutorial. Estaríamos usando o módulo junto com o Arduino UNO.

Fazendo um adaptador Breadboard para o módulo ESP8266:

O problema com o recurso físico do módulo é que você não pode conectá-lo diretamente a uma placa de ensaio. Então decidi fazer um adaptador que será usado para conectar o módulo a uma placa de ensaio. Estas são as peças que você precisaria para fazer o adaptador:

Imagem mostrando os componentes necessários para fazer o adaptador breadboard do modem ESP8266

Figura 2: Imagem mostrando os componentes necessários para fazer o adaptador breadboard do modem ESP8266

Comece soldando o conector fêmea na PCB. Solde os pinos dos cantos primeiro para que o cabeçalho se encaixe corretamente na placa de circuito impresso. Em seguida, solde os 4 pinos restantes.

Imagem mostrando PCB do adaptador de placa de ensaio soldada para caber no cabeçalho fêmea do modem ESP8266

Fig. 3: Imagem mostrando PCB do adaptador de placa de ensaio soldada para caber no cabeçalho fêmea do modem ESP8266

Em seguida, coloque os conectores macho no lado oposto da PCB e solde-os cuidadosamente na PCB.

Imagem mostrando o cabeçalho macho colocado no adaptador da placa de ensaio do modem ESP8266

Figura 4: Imagem mostrando o cabeçalho macho colocado no adaptador da placa de ensaio do modem ESP8266

Após a soldagem, você pode remover a peça de plástico preta presa ao conector macho e começar a soldar cada pino macho ao pino fêmea correspondente. No final você teria algo assim:

Imagem mostrando o cabeçalho macho soldado no adaptador da placa de ensaio do modem ESP8266

Fig. 5: Imagem mostrando o conector macho soldado no adaptador da placa de ensaio do modem ESP8266

Depois de fazer isso, você pode encaixá-lo em uma placa de ensaio e conectar o módulo ESP 8266 a ele facilmente.

Aqui está um tutorial em vídeo detalhado mostrando o processo: (Opcional)

Imagem mostrando o adaptador de placa de ensaio do modem ESP8266 colocado em uma placa de ensaio

Figura 6: Imagem mostrando o adaptador de placa de ensaio do modem ESP8266 colocado em uma placa de ensaio

Imagem mostrando o módulo Wi-Fi ESP8266 colocado sobre a placa de ensaio

Figura 7: Imagem mostrando o módulo Wi-Fi ESP8266 colocado sobre a placa de ensaio

Comandos AT para ESP 8266:

Comando

Descrição

AT+GMR

Para saber a versão do firmware

AT+RST

Para redefinir o módulo

AT+CWMODE

Para definir o modo de operação, ou seja, como ponto de acesso ou modo de estação ou ambos.

AT+CWLAP

Para ver a lista de APs disponíveis

AT+CIPSERVER

Para definir como servidor

AT+CIPMUX

Para escolher entre conexões simples ou múltiplas

AT+CIPSEND

Para definir o número do canal, comprimento dos dados e enviar dados por WiFi

AT+CIPCLOSE

Para fechar a conexão

Servidor em ESP 8266:

Estaremos enviando uma interface web (uma página HTML) para qualquer dispositivo (digamos, um telefone celular habilitado para Wifi) conectado ao módulo Wifi. O código da página HTML seria fornecido pelo Arduino. E também, o Arduino decodificaria a solicitação do dispositivo e controlaria os motores de acordo. Como o módulo Wifi também pode funcionar como ponto de acesso, não precisamos de um roteador wireless extra para o projeto. Se você não tem ideia sobre páginas HTML, vá para meu projeto “Controlling Appliances over Wifi and Ethernet” e conheça o básico. Aqui está o algoritmo a ser seguido para configurar um servidor no ESP 8266:

Algoritmo:

– Módulo de teste usando o comando “AT” – Defina o modo de operação usando o comando “AT+CWMODE=” – Defina o número de conexões usando o comando “AT+CIPMUX=” – Defina-o como servidor usando o comando “AT+CIPSERVER=,” – Se a solicitação GET for recebida de um navegador, use o comando “AT+CIPSEND=, ” seguido dos dados HTML que você deseja enviar. – Após a conclusão feche a conexão usando o comando “AT+CIPCLOSE”.

Configuração de hardware:

Reúna todas as peças mostradas na imagem.

Imagem mostrando os componentes necessários para fazer o robô

Figura 8: Imagem mostrando os componentes necessários para fazer o robô

Fixe os motores ao chassi e depois as rodas ao eixo.

Imagem mostrando a estrutura metálica do robô conectada ao motor DC

Figura 9: Imagem mostrando a estrutura metálica do robô conectada ao motor DC

Use alguns parafusos e porcas para fixar a roda giratória

Imagem mostrando rodas conectadas aos motores DC no Robot

Figura 10: Imagem mostrando rodas conectadas aos motores DC no Robot

Imagem da roda giratória fixada na parte frontal do Robot Car

Figura 11: Imagem da roda giratória fixada na parte frontal do Robot Car

Imagem do carro robótico totalmente montado

Figura 12:

Explicação do código:

– Definir os pinos 8, 9, 10 e 11 como pinos de saída e comunicação serial com taxa de transmissão de 9600 bps. – Envie o comando “AT” para o módulo. – Defina o modo de operação como estação e ponto de acesso usando o comando “AT+CWMODE=3” – Defina o modo de conexão para múltiplas conexões enviando “AT+CIPMUX=1” – Coloque o módulo em modo Servidor e utilize a porta padrão enviando “AT+CIPSERVER=1, 80” – Entre no loop infinito e verifique se há solicitações recebidas por Wifi – Se uma solicitação foi feita, leia a solicitação e armazene o número do canal de onde a solicitação foi originada – Envie o código da página HTML para o número do canal armazenado usando os comandos “AT+CIPSEND=, ” seguido dos dados do código HTML. – Feche a conexão utilizando “AT+CIPCLOSE=” e aguarde a próxima solicitação feita pelo navegador. – Se a solicitação for recebida, leia-a e decodifique a instrução da solicitação. Tome as medidas correspondentes nos motores. (Por exemplo, se você clicar em “Avançar” na página web, o Arduino ouvirá a solicitação, mudará para a direção do robô para encaminhar)

Instruções de configuração

-Conecte tudo de acordo com o diagrama de circuito e ligue todo o sistema.

Protótipo de carro robótico simples

Fig. 13: Protótipo de carro robótico simples

– Aguarde alguns segundos para que o Wifi e o Arduino inicializem. Após cerca de 30 segundos, ative o Wifi no seu dispositivo (celular, tablet ou laptop) e você verá algumas redes disponíveis.

– Você pode se conectar à sua rede doméstica (que é “Robôs recarregados” no meu caso e é a isso que vou me conectar) ou ao próprio ponto de acesso (que é “ESP_9F0F14” No meu caso. O SSID do módulo nada mais é do que seu nome seguido dos últimos 6 caracteres de seu endereço MAC)

Protótipo de circuito de controle baseado em Arduino montado em carro robótico

Figura 14: Protótipo de circuito de controle baseado em Arduino montado em carro robótico

– Em seguida, abra seu navegador e digite o endereço IP

1. Do módulo na rede doméstica caso você esteja conectado à rede doméstica (como eu e no meu caso é 192.168.0.101 ou 192.168.0.102) Ou 2. 192.168.1.4 caso você se conecte ao ponto de acesso denominado “ESP_<últimos 6 caracteres do endereço MAC>” Daqui a pouco você deverá ver uma página como esta em seu navegador: Agora clique nos links e você verá o motor começar a se mover. Caso estejam se movendo na direção errada, verifique as conexões e troque-as se necessário.

Captura de tela de conexões Wi-Fi no telefone Android mostrando o ponto de acesso do módulo ESP

Figura 15: Captura de tela de conexões Wi-Fi no telefone Android mostrando o ponto de acesso do módulo ESP

– Você pode se conectar à sua rede doméstica (que é “Robots Reloaded” no meu caso e é a ela que vou me conectar) ou ao próprio Ponto de Acesso (que é “ESP_9F0F14” no meu caso. O SSID do módulo nada mais é do que seu nome seguido pelos últimos 6 caracteres de seu endereço MAC)

Código fonte do projeto

#define esp Serial
 #define in1 8#define in2 9#define in3 10#define in4 11#define BUFFER_SIZE 1000char buffer(BUFFER_SIZE); void send_at(String x){  esp.println(x);} void setup {  pinMode(in1, OUTPUT);pinMode(in2, OUTPUT);pinMode(in3, OUTPUT);pinMode(in4, OUTPUT);delay(2000);esp.begin(9600);esp.println("AT");delay(1000);esp.println("AT+CWMODE=3");delay(1000);esp.println("AT+CIPMUX=1");delay(1000);esp.println("AT+CIPSERVER=1,80");delay(1000);esp.println("AT+CIFSR");delay(1000);} bool read_till_eol {  static int i=0;  if(esp.available ) {    char c=esp.read ;    buffer(i++)=c;    if(i==BUFFER_SIZE)  i=0;    if(i>1 && buffer(i-2)==13 && buffer(i-1)==10) {      buffer(i)=0;      i=0;      return true;    }  }  return false;} void loop {  int ch_id, packet_len;  char *pb;    if(read_till_eol ) {    if(strncmp(buffer, "+IPD,", 5)==0) {      // request format: +IPD,ch,len:data      sscanf(buffer+5, "%d,%d", &ch_id, &packet_len);      if (packet_len > 0) {        pb = buffer+5;        while(*pb!=':') pb++;        pb++;        if (strncmp(pb, "GET / ", 6) == 0) {         serve_homepage(ch_id,0);          }          else if (strncmp(pb, "GET /?fwd", 9) == 0){               forward ;               serve_homepage(ch_id,1);            }          else if (strncmp(pb, "GET /?rev", 9) == 0){               reverse ;               serve_homepage(ch_id,2);            }          else if (strncmp(pb, "GET /?rgt", 9) == 0){               right ;               serve_homepage(ch_id,3);            }          else if (strncmp(pb, "GET /?lft", 9) == 0){               left ;               serve_homepage(ch_id,4);            }          else if (strncmp(pb, "GET /?stp", 9) == 0){               stop_bot ;               serve_homepage(ch_id,0);            }    }  }}} void serve_homepage(int ch_id, byte state){                    delay(1000);          esp.print(F("AT+CIPSEND="));          esp.print(ch_id);          esp.print(",");                    esp.println("512");          delay(500);           esp.print("HTTP/1.1 200 OKrnContent-Type:text/htmlrnrnROBOT CONTROLLER
WELCOME TO THE WEB INTERFACE OF ROBOT CONTROLLER OVER WIFI

");           esp.print("

FORWARD

LEFT    STOP    ");
          esp.print("RIGHT

REVERSE


Created by GANESH SELVARAJ for EngineersGarage.com


");          delay(5000);           esp.print(F("AT+CIPCLOSE="));          esp.println(ch_id);} void forward {  digitalWrite(in1,HIGH);  digitalWrite(in2,LOW);  digitalWrite(in3,HIGH);  digitalWrite(in4,LOW);}void reverse {  digitalWrite(in1,LOW);  digitalWrite(in2,HIGH);  digitalWrite(in3,LOW);  digitalWrite(in4,HIGH);}void right {  digitalWrite(in1,HIGH);  digitalWrite(in2,LOW);  digitalWrite(in3,LOW);  digitalWrite(in4,LOW);}void left {  digitalWrite(in1,LOW);  digitalWrite(in2,LOW);  digitalWrite(in3,HIGH);  digitalWrite(in4,LOW);}void stop_bot {  digitalWrite(in1,LOW);  digitalWrite(in2,LOW);  digitalWrite(in3,LOW);  digitalWrite(in4,LOW);}

Diagramas de circuito

Diagrama de circuito-Arduino-ESP8266-Módulo-ased-Wi-Fi-Controlled-Robotic-Car

Vídeo do projeto

Conteúdo Relacionado

Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
ESP32-CAM é um módulo de câmera compacto que combina...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Você provavelmente já passou por situações em que o...
Zurück zum Blog

Hinterlasse einen Kommentar

Bitte beachte, dass Kommentare vor der Veröffentlichung freigegeben werden müssen.