Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Carro RC Wi-Fi com Carregamento Qi: Construa um Kit de Carro Controle Remoto Sem Fio

Componentes e Materiais

Componente Quantidade
Kit Protótipo Transmissor Qi 5W IDT 1
Kit Protótipo Receptor Qi 5W IDT 1
Arduino MKR1000 1
Chassi Robot Car 2WD para Arduino 1
Driver de Motor L293DNE 1
Módulo Conversor Step-up CN6009 1
Bateria Li-Po 3,7V 1
Diodo 1N4007 Alta Tensão/Corrente 8
LED (genérico) 1
Resistor 221 Ω 1
Tie Wraps (abraçadeiras) 5
Protoboard (genérica) - Opcional 1

Ferramentas e Máquinas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

O que você vai construir?

Este projeto mostra passo a passo como criar um carro RC controlado por Wi-Fi que recarrega automaticamente sem fio enquanto está estacionado.

Como Funciona?

O cérebro do projeto é o Arduino MKR1000, conectado via Wi-Fi ao seu dispositivo móvel. A placa é alimentada por bateria Li-Po 3,7V. Para controle dos motores, usa-se o driver L293DNE, que precisa de pelo menos 4,5V. Elevamos a tensão de 3,7V para 5V com o módulo Step-up CN6009 (converte tensão baixa para alta), alimentando o driver com 5V.

Para carregar a bateria, o Arduino MKR1000 possui sistema automático de carga para baterias Li-Po. Quando fonte externa (5V DC) é conectada, a bateria conectada à placa carrega. O Receptor Qi 5W IDT P9025AC-R-EVK será conectado ao Arduino como fonte externa (5V DC). Quando o carro estaciona sobre a base de carregamento (o Transmissor Qi 5W IDT P9038-R-EVK), a bateria carrega.

O sistema de controle tem dois modos de velocidade: Rápido e Lento.

Como Construir?

Parte de Hardware

Solde fios nos polos dos motores e na placa do Receptor IDT (pino OUT com fio vermelho, pino GND com fio preto). Necessário ferro de solda e 6 fios.

Carro RC Wi-Fi com Carregamento Qi: Construa um Kit de Carro Controle Remoto Sem Fio

Montagem do circuito eletrônico. Pode usar protoboard ou soldar todas as conexões.

Carro RC Wi-Fi com Carregamento Qi: Construa um Kit de Carro Controle Remoto Sem Fio

CUIDADO: Use bateria Li-Po 3,7V com pelo menos 700mAh! Caso contrário, a bateria pode superaquecer e explodir!

Ajuste do CN6009 para 5V. Use chave de fenda para ajustar a saída. Verifique a tensão de saída conectando voltímetro aos pinos OUT+ e OUT-.

Carro RC Wi-Fi com Carregamento Qi: Construa um Kit de Carro Controle Remoto Sem Fio

Conexão do receptor de energia sem fio Qi 5W IDT. Use pedaço de plástico (ex: cartão) como base para o receptor no fundo do carro. Cole com silicone a base plástica e o receptor no fundo do carro. Conecte fio vermelho do receptor ao pino VIN do Arduino e preto ao GND.

Carro RC Wi-Fi com Carregamento Qi: Construa um Kit de Carro Controle Remoto Sem Fio

Estabilização do veículo. Prenda com tie wraps a bateria e a protoboard ao veículo.

Carro RC Wi-Fi com Carregamento Qi: Construa um Kit de Carro Controle Remoto Sem Fio

Parte de Software – Conexão Wi-Fi

Copie o código. No arquivo de código, preencha seu SSID e senha da rede (linhas 12, 13). O código está configurado para redes WPA/WPA2. Para WEP ou rede aberta, siga instruções nos comentários (linhas 34-37).

Carro RC Wi-Fi com Carregamento Qi: Construa um Kit de Carro Controle Remoto Sem Fio

Como Usar?

Passo 1: Conectando ao Arduino MKR1000

Controlar o veículo requer conexão Wi-Fi. Duas formas: (1) Ative Hotspot Wi-Fi no celular e conecte a placa ao Hotspot. (2) Conecte celular e Arduino ao mesmo roteador Wi-Fi. Preencha SSID e senha do roteador no código.

Nota: Melhor usar o primeiro método (Hotspot) pois controla o veículo sem precisar de roteador.

Passo 2: Obtendo o Endereço IP do Arduino MKR1000

Se conectado ao hotspot do celular, vá em configurações do Hotspot e verá o IP da placa (ex: 192.168.1.1). Se conectado a roteador, verifique nas configurações do roteador. O LED no carro indica conexão bem-sucedida e ativação do servidor.

Passo 3: Acessando o Webserver do Arduino MKR1000

No navegador, digite o endereço IP do Arduino na barra de URL.

Passo 4: Conectando a Base de Carregamento

Conecte o Transmissor Qi 5W IDT P9038-R-EVK a uma tomada usando adaptador 5V DC.

Passo 5: Divirta-se!

Hora de Carregar! Test Drive.

Código

Arduino_IDT_Wi-Fi_Car.ino

#include <SPI.h>
#include <WiFi101.h>

const int motor1Control = 2; // Motor direito
const int motor2Control = 3; // Motor esquerdo
const int motor1Input1 = 4;
const int motor1Input2 = 5;
const int motor2Input1 = 8;
const int motor2Input2 = 9;
const int wifiLed = 10; // Indica conexão Wi-Fi bem-sucedida

char ssid[] = "example"; // Preencha seu SSID
char pass[] = "password"; // Preencha sua senha
int keyIndex = 0; // Índice da chave de rede (opcional - só para WEP)
int status = WL_IDLE_STATUS;
String readString;
WiFiServer server(80);
String speedMode = "fast";

void setup() {
  pinMode(motor1Control, OUTPUT);
  pinMode(motor2Control, OUTPUT);
  pinMode(motor1Input1, OUTPUT);
  pinMode(motor1Input2, OUTPUT);
  pinMode(motor2Input1, OUTPUT);
  pinMode(motor2Input2, OUTPUT);
  pinMode(wifiLed, OUTPUT);
  
  while (status != WL_CONNECTED) {
    // Conectar à rede WPA/WPA2. Mudar esta linha se usar rede aberta ou WEP:
    // Para WEP: status = WiFi.begin(ssid, keyIndex, pass);
    // Para rede aberta: status = WiFi.begin(ssid);
    status = WiFi.begin(ssid, pass);
    delay(10000);
  }
  
  server.begin();
  digitalWrite(wifiLed, HIGH);
}

void loop() {
  WiFiClient client = server.available();
  if (client) {
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (readString.length() < 100) readString += c;
        if (c == '\n') {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("");
          client.println("");
          client.println("");
          client.println("");
          client.println("FORWARDS
"); client.println("LEFT"); client.println("STOP"); client.println("RIGHT
"); client.println("BACKWARDS

"); client.println("

SPEED MODES

"); client.println("FAST"); client.println("SLOW"); client.println(""); break; } if (readString.indexOf("?fast") > 0) { speedMode = "fast"; readString = ""; } if (readString.indexOf("?slow") > 0) { speedMode = "slow"; readString = ""; } if (speedMode == "fast") { if (readString.indexOf("?moveForwards") > 0) { moveForwards(); readString = ""; } if (readString.indexOf("?moveBackwards") > 0) { moveBackwards(); readString = ""; } } else if (speedMode == "slow") { if (readString.indexOf("?moveForwards") > 0) { moveForwardsSlow(); readString = ""; } if (readString.indexOf("?moveBackwards") > 0) { moveBackwardsSlow(); readString = ""; } } if (readString.indexOf("?turnLeft") > 0) { turnLeft(); readString = ""; } if (readString.indexOf("?turnRight") > 0) { turnRight(); readString = ""; } if (readString.indexOf("?stopMoving") > 0) { stopMoving(); readString = ""; } } } delay(1); client.stop(); } } void moveForwards() { digitalWrite(motor1Control, HIGH); digitalWrite(motor2Control, HIGH); digitalWrite(motor1Input1, LOW); digitalWrite(motor1Input2, HIGH); digitalWrite(motor2Input1, LOW); digitalWrite(motor2Input2, HIGH); } void moveBackwards() { digitalWrite(motor1Control, HIGH); digitalWrite(motor2Control, HIGH); digitalWrite(motor1Input1, HIGH); digitalWrite(motor1Input2, LOW); digitalWrite(motor2Input1, HIGH); digitalWrite(motor2Input2, LOW); } void turnRight() { analogWrite(motor1Control, 0); analogWrite(motor2Control, 200); digitalWrite(motor1Input1, HIGH); digitalWrite(motor1Input2, LOW); digitalWrite(motor2Input1, LOW); digitalWrite(motor2Input2, HIGH); } void turnLeft() { analogWrite(motor1Control, 200); analogWrite(motor2Control, 0); digitalWrite(motor1Input1, LOW); digitalWrite(motor1Input2, HIGH); digitalWrite(motor2Input1, HIGH); digitalWrite(motor2Input2, LOW); } void stopMoving() { digitalWrite(motor1Control, LOW); digitalWrite(motor2Control, LOW); digitalWrite(motor1Input1, LOW); digitalWrite(motor1Input2, LOW); digitalWrite(motor2Input1, LOW); digitalWrite(motor2Input2, LOW); } void moveForwardsSlow() { analogWrite(motor1Control, 200); analogWrite(motor2Control, 200); digitalWrite(motor1Input1, LOW); digitalWrite(motor1Input2, HIGH); digitalWrite(motor2Input1, LOW); digitalWrite(motor2Input2, HIGH); } void moveBackwardsSlow() { analogWrite(motor1Control, 200); analogWrite(motor2Control, 200); digitalWrite(motor1Input1, HIGH); digitalWrite(motor1Input2, LOW); digitalWrite(motor2Input1, HIGH); digitalWrite(motor2Input2, LOW); }

Peças Personalizadas e Gabinetes

Arquivo CAD: Arduino%20IDT%20Wireless%20charging%20wifi%20car.cad

Esquemáticos

Esquemático do circuito disponível na seção de esquemáticos do projeto original.

Processo de manufatura

  1. Construtores em C#: Tipos, Exemplos e Padrões Avançados
  2. Entendendo Classes Aninhadas em C#: Definição, Uso e Herança
  3. Dominando Sobrecarga de Construtores em C#
  4. Por Que Dispositivos IoT Habilitados para Wi‑Fi Representam uma Ameaça de Segurança Crescente
  5. Fabricação Premium de Peças de Motor de Precisão com Tornos e Fresadoras CNC
  6. Dominando o Macaco Hidráulico: Tipos, Usos e Dicas de Segurança
  7. Como Consertar Vazamento de Combustível no Carro: Guia Rápido e Seguro
  8. Modificações no Carro e Garantia: O Que Você Precisa Saber
  9. Guia Passo a Passo para Reparar a Maçaneta da Porta do Carro
  10. Guia Rápido para Reparar Ferrugem no Carro: Proteja Seu Veículo