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 - Qi ativado

Componentes e suprimentos

Kit de protótipo de transmissor IDT Qi 5W
× 1
Kit de protótipo do receptor IDT Qi 5W
× 1
Arduino MKR1000
× 1
• Chassi do carro robô 2WD para Arduino
× 1
L293DNE
× 1
CN6009 - Módulo conversor de potência de aumento de escala
× 1
Bateria Li-Po 3,7 V
× 1
1N4007 - Alta tensão, diodo nominal de alta corrente
× 8
LED (genérico)
× 1
Resistor 221 ohm
× 1
Tie Wraps
× 5
Breadboard (genérico)
(Opcional)
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)
Pistola de cola quente (genérica)
Chave de fenda
Voltímetro

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


O que você construirá neste projeto?

Este é um projeto que mostrará passo a passo como criar um carro RC controlado por Wi-Fi que recarregará automaticamente sem fio enquanto estiver estacionado.

Como funciona?

O cérebro do projeto é o Arduino MKR1000 e ele está conectado por Wi-Fi ao seu dispositivo móvel. A placa Arduino é alimentada por uma bateria Li-Po de 3,7 V. Para o controle do motor, um driver de motor L293DNE é usado. No entanto, ele precisa de pelo menos 4,5 V para operar. Aumentaremos a tensão de 3,7 V para 5 V com um Módulo Conversor de Potência Step-up boost (converte a tensão baixa para mais alta) e, desta forma, o driver do motor será alimentado com 5V.

Para carregar a bateria, a placa Arduino MKR1000 possui um sistema de carregamento automático para baterias Li-Po. Quando uma fonte externa (5 V DC) de energia é conectada, a bateria conectada à placa está sendo carregada. Portanto, o IDT P9025AC-R-EVK - Qi 5W O receptor será conectado à placa Arduino como uma fonte externa (5 Vcc). Quando o estacionamento estaciona na estação de carregamento (que é o IDT P9038-R-EVK - Qi 5W Transmissor), a bateria será carregada.

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

Como construir?





Peça de Hardware


Soldar os fios nos pólos do motor e na placa do receptor IDT (Pin OUT com fio vermelho e pino GND com fio preto). Para esta etapa, você precisará de um ferro de solda e 6 fios.

Fazendo o circuito eletrônico. Você pode usar uma placa de ensaio para criar seu circuito ou então soldar todas as conexões.

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

Ajustando o CN6009. Módulo conversor de potência para 5V. O valor de saída do Toadjust CN6009 usa uma chave de fenda. Certifique-se de verificar a tensão de saída (conectando um voltímetro aos pinos OUT + e OUT-).

Conectando o receptor IDT wireless power Qi 5W. Pegue um pedaço de plástico (por exemplo, cartão de plástico) para fazer uma base para o receptor de energia sem fio na parte inferior do carro. Em seguida, cole a peça de plástico, bem como o receptor, na parte inferior do carro com silicone. Finalmente, conecte o fio vermelho do receptor IDT ao pino VIN do arduino e o fio preto ao pino GND.

Tornando o veículo estável. Prenda com laço envolve a bateria e a placa de pão no veículo.





Parte do software - Conexão Wi-Fi


Para esta parte apenas copie o código. No arquivo de código, preencha o SSID e a senha de sua rede (linhas 12, 13 no arquivo de código). Você precisa seguir as instruções de comentário. O código está definido para funcionar com redes WPA / WPA2. Se você deseja se conectar a um WEP ou a uma rede aberta, siga as instruções nos comentários do código (linhas 34-37).

Como usá-lo?





Etapa 1:Conectando-se ao Arduino MKR1000


Controlar o veículo requer conexão wi-fi. Você pode conseguir isso de duas maneiras. O primeiro é habilitar o Hotspot Wi-Fi em seu dispositivo móvel e conectar a placa ao Hotspot. O segundo é conectar seu dispositivo móvel e a placa Arduino ao mesmo roteador Wi-Fi. Certifique-se de preencher as configurações de SSID e senha do roteador no arquivo de código que será carregado para a placa Arduino.

Nota:É preferível utilizar o primeiro método (Wi-Fi Hotspot) porque desta forma poderá controlar o seu veículo sem a necessidade de um router.





Etapa 2:obtendo o endereço IP do Arduino MKR1000


Se a placa Arduino estiver conectada ao ponto de acesso do seu dispositivo móvel, acesse as configurações do ponto de acesso Wi-Fi e você verá o endereço IP da sua placa (por exemplo, 192.168.1.1).

Se a placa Arduino estiver conectada a um roteador Wi-Fi, você precisa verificar isso nas configurações do roteador.

O LED no carro indica conexão bem-sucedida com a rede especificada e ativação do servidor.





Etapa 3:Acessando o servidor da Web do Arduino MKR1000


Vá para o seu navegador e na caixa URL digite o endereço IP do seu Arduino.





Etapa 4:conectar a base de carregamento


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





Etapa 5:Divirta-se!


O tempo de carga!!

Passeio de teste:

Arquivos Gerber do PCBWeb

Código

  • Arduino_IDT_Wi-Fi_Car.ino
Arduino_IDT_Wi-Fi_Car.ino Arduino
Substitua example e password nas linhas 12-13 com seu ssid e senha respectivamente.
 #include  #include  const int motor1Control =2; // Motorconst direito int motor2Control =3; // Motorconst int motor1Input1 =4; const int motor1Input2 =5; const int motor2Input1 =8; const int motor2Input2 =9; const int wi-fiLed =10; // Para indicar conexão Wi-Fi bem-sucedida, ssid [] ="exemplo"; // Preencha sua rede SSID (nome) char pass [] ="senha"; // Preencha sua senha de redeint keyIndex =0; // Preencha o número do índice da sua chave de rede (opcional - necessário apenas para WEP) int status =WL_IDLE_STATUS; String readString; WiFiServer server (80); // Defina a porta do serverString speedMode ="fast"; void setup () {pinMode (motor1Control, OUTPUT); pinMode (motor2Control, OUTPUT); pinMode (motor1Input1, OUTPUT); pinMode (motor1Input2, OUTPUT); pinMode (motor2Input1, OUTPUT); pinMode (motor2Input2, OUTPUT); pinMode (wi-fiLed, SAÍDA); // Tentativa de se conectar à rede Wifi:while (status! =WL_CONNECTED) {// Conectar à rede WPA / WPA2. Altere esta linha se estiver usando rede aberta ou WEP:// Para rede WEP, substitua por:status =WiFi.begin (ssid, keyIndex, pass); // Para rede aberta, substitua por:status =WiFi.begin (ssid); status =WiFi.begin (SSID, aprovação); // aguarde 10 segundos pela conexão:delay (10000); } // Inicie o servidor web server.begin (); // Indica que o servidor está executando digitalWrite (wifiLed, HIGH);} void loop () {// Ouvir clientes de entrada WiFiClient client =server.available (); if (client) {// uma solicitação http termina com uma linha em branco boolean currentLineIsBlank =true; while (client.connected ()) {if (client.available ()) {char c =client.read (); // Se você chegou ao final da linha (recebeu um caractere de nova linha //) e a linha está em branco, a solicitação http terminou, // então você pode enviar uma resposta se (readString.length () <100 ) {// armazena caracteres na string readString + =c; } if (c =='\ n') {// enviar um cabeçalho de resposta http padrão 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 (""); client.println (""); // Botão para mover Forwards client.println (" FORWARDS 
"); client.println ("
"); // Botão para virar à esquerda client.println (" ESQUERDA "); // Botão para parar o carro client.println (" STOP " ); // Botão para virar à direita client.println (" RIGHT "); client.println ("
"); // Botão para mover para trás client.println (" BACKWARDS "); client.println ("
"); client.println ("
"); // Botão para retroceder client.println ("

MODOS DE VELOCIDADE

"); client.println (" RÁPIDO "); client.println (" SLOW "); client.println (" "); client.println (" "); break;} // Decida qual botão foi clicado (se houver) // Botão Modo rápido if (readString.indexOf ("? fast ")> 0) {speedMode ="fast"; // Limpe o readString para poder obter o próximo comando readString ="";} // Botão Modo lento if (readString.indexOf ("? Slow")> 0) {speedMode ="slow"; // Limpe o readString para poder obter o próximo comando readString ="";} // Modo rápido if (speedMode =="fast") {if (readString.indexOf ("? moveForwards")> 0 ) {moveForwards (); // Limpe o readString para poder obter o próximo comando readString ="";} if (readString.indexOf ("? moveBackwards")> 0) {moveBackwards (); // Limpe o readString para ser capaz de obter o próximo comando readString ="";}} else if (speedMode =="slow") {// Modo lento if (readString.indexOf ("? moveForwards")> 0) {moveForwardsSlow (); // Limpe o readString para poder obter o próximo comando r eadString =""; } if (readString.indexOf ("? moveBackwards")> 0) {moveBackwardsSlow (); // Limpe o readString para poder obter o próximo comando readString =""; }} if (readString.indexOf ("? turnLeft")> 0) {turnLeft (); // Limpe o readString para poder obter o próximo comando readString =""; } if (readString.indexOf ("? turnRight")> 0) {turnRight (); // Limpe o readString para poder obter o próximo comando readString =""; } if (readString.indexOf ("? stopMoving")> 0) {stopMoving (); // Limpe o readString para poder obter o próximo comando readString =""; }}} // Dê ao navegador da web tempo para receber o atraso de dados (1); // Feche a conexão:client.stop (); }} // Comandos para mover para frentevoid moveForwards () {digitalWrite (motor1Control, HIGH); digitalWrite (motor2Control, HIGH); digitalWrite (motor1Input1, LOW); digitalWrite (motor1Input2, HIGH); digitalWrite (motor2Input1, LOW); digitalWrite (motor2Input2, HIGH);} // Comandos para mover para trásvoid moveBackwards () {digitalWrite (motor1Control, HIGH); digitalWrite (motor2Control, HIGH); digitalWrite (motor1Input1, HIGH); digitalWrite (motor1Input2, LOW); digitalWrite (motor2Input1, HIGH); digitalWrite (motor2Input2, LOW);} // Comandos para virar para a direita evite turnRight () {// Tensão mais baixa é fornecida para virar mais devagar - melhor controle analogWrite (motor1Control, 0); analogWrite (motor2Control, 200); digitalWrite (motor1Input1, HIGH); digitalWrite (motor1Input2, LOW); digitalWrite (motor2Input1, LOW); digitalWrite (motor2Input2, HIGH);} // Comandos para girar para a esquerdavoid turnLeft () {// A tensão mais baixa é fornecida para girar mais devagar - melhor controle analogWrite (motor1Control, 200); analogWrite (motor2Control, 0); digitalWrite (motor1Input1, LOW); digitalWrite (motor1Input2, HIGH); digitalWrite (motor2Input1, HIGH); digitalWrite (motor2Input2, LOW);} // Comandos para parar o carvoid stopMoving () {digitalWrite (motor1Control, LOW); digitalWrite (motor2Control, LOW); digitalWrite (motor1Input1, LOW); digitalWrite (motor1Input2, LOW); digitalWrite (motor2Input1, LOW); digitalWrite (motor2Input2, LOW);} // Comandos para movimento de avanço em baixa velocidade evita moverForwardsSlow () {analogWrite (motor1Control, 200); analogWrite (motor2Control, 200); digitalWrite (motor1Input1, LOW); digitalWrite (motor1Input2, HIGH); digitalWrite (motor2Input1, LOW); digitalWrite (motor2Input2, HIGH);} // Comandos para mover para trás em baixa velocidade evita moverBackwardsSlow () {analogWrite (motor1Control, 200); analogWrite (motor2Control, 200); digitalWrite (motor1Input1, HIGH); digitalWrite (motor1Input2, LOW); digitalWrite (motor2Input1, HIGH); digitalWrite (motor2Input2, LOW);}

Peças personalizadas e gabinetes

Arduino% 20IDT% 20Wireless% 20charging% 20wifi% 20car.cad

Esquemas


Processo de manufatura

  1. Construtor C#
  2. Classe aninhada C#
  3. Sobrecarga do construtor C#
  4. A crescente ameaça da IoT habilitada para Wi-Fi
  5. Peças de motor de carro feitas de precisão
  6. Entendendo o sistema de macacos automotivos
  7. Como consertar um vazamento de gás no meu carro?
  8. A atualização do carro afeta a garantia?
  9. Como consertar a maçaneta da porta do seu carro
  10. Como reparar a ferrugem no seu carro?