Smartmobile
Révision datée du 18 janvier 2019 à 14:59 par Hadrien (discussion | contributions)
Résumé
Le projet consistant en la création d'un véhicule commandé via un smartphone android.
La smartmobile utilise un Wemos pour communiquer avec le smartphone par Wifi.
Matériel
- Une planche en bois
- 2 packs de 3 piles AAA
- Un module Wemos
- Controleur de moteur (https://tronixstuff.com/2014/11/25/tutorial-l298n-dual-motor-controller-modules-and-arduino/)
- Cables
- 2 Motoréducteurs avec roues ( https://fr.aliexpress.com/item/TT-Motor-Voiture-Smart-Robot-Motor-ducteur-pour-arduino-Diy-Kit-Roues-Ch-ssis-De-la/32955649869.html?spm=a2g0s.9042311.0.0.27426c37wg8JSG)
- 1 Roue folle
- Boulons
- Colle
Réalisation
- Decouper la planche de cette façon :
- Percer 2 ou 4 trous devant (au centre) pour fixer la roue.
- Coller les blocs de piles sur les cotés et les cartes au millieu (exemple si dessous)
- Coller les moteurs dessous (exemple si dessous)
- Percer un trou devant chaque moteur pour laisser passez les câbles
- Souder les fils sur les moteurs
- Pour le cablâge voir vidéo (et faire correspondre les broches avec celle de la wemos):
https://www.youtube.com/watch?v=2AL7HfiRlp4&t=242s
- Vous pouvez mettre de la colle sur la roue pour eviter qu'elle ce coince :
Code
Code pour recupèré l'IP du robot :
#include <ESP8266WiFi.h> WiFiClient client; WiFiServer server(80); const char* ssid = "Test"; const char* password = "12345678"; void setup() { Serial.begin(115200); connectWiFi(); server.begin(); } void loop() { } void connectWiFi() { Serial.println("Connecting to WIFI"); WiFi.begin(ssid, password); while ((!(WiFi.status() == WL_CONNECTED))) { delay(300); Serial.print(".."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("NodeMCU Local IP is : "); Serial.print((WiFi.localIP())); }
Code permetant de faire fonctionner le robot :
- Pour cela il faut avoir le logiciel arduino et ajouter le pilote ESP8266 pour la carte wemos.
- voici le liens de téléchargement le pilote :(https://wiki.wemos.cc/tutorials:get_started:get_started_in_arduino/).
- installer ensuite de pilote.
#include <ESP8266WiFi.h> /* define port */ WiFiClient client; WiFiServer server(80); /* WIFI settings */ const char* ssid = "Test"; const char* password = "12345678"; /* data received from application */ String data =""; /* define L298N or L293D motor control pins */ int leftMotorForward = 2; /* GPIO2(D4) -> IN3 */ int rightMotorForward = 15; /* GPIO15(D8) -> IN1 */ int leftMotorBackward = 0; /* GPIO0(D3) -> IN4 */ int rightMotorBackward = 13; /* GPIO13(D7) -> IN2 */ /* define L298N or L293D enable pins */ int rightMotorENB = 14; /* GPIO14(D5) -> Motor-A Enable */ int leftMotorENB = 12; /* GPIO12(D6) -> Motor-B Enable */ void setup() { /* initialize motor control pins as output */ pinMode(leftMotorForward, OUTPUT); pinMode(rightMotorForward, OUTPUT); pinMode(leftMotorBackward, OUTPUT); pinMode(rightMotorBackward, OUTPUT); /* initialize motor enable pins as output */ pinMode(leftMotorENB, OUTPUT); pinMode(rightMotorENB, OUTPUT); /* start server communication */ server.begin(); } void loop() { /* If the server available, run the "checkClient" function */ client = server.available(); if (!client) return; data = checkClient (); /* If the incoming data is "forward", run the "MotorForward" function */ if (data == "forward") MotorForward(); /* If the incoming data is "backward", run the "MotorBackward" function */ else if (data == "backward") MotorBackward(); /* If the incoming data is "left", run the "TurnLeft" function */ else if (data == "left") TurnLeft(); /* If the incoming data is "right", run the "TurnRight" function */ else if (data == "right") TurnRight(); /* If the incoming data is "stop", run the "MotorStop" function */ else if (data == "stop") MotorStop(); } void MotorForward(void) { digitalWrite(leftMotorENB,HIGH); digitalWrite(rightMotorENB,HIGH); digitalWrite(leftMotorForward,HIGH); digitalWrite(rightMotorForward,HIGH); digitalWrite(leftMotorBackward,LOW); digitalWrite(rightMotorBackward,LOW); } void MotorBackward(void) { digitalWrite(leftMotorENB,HIGH); digitalWrite(rightMotorENB,HIGH); digitalWrite(leftMotorBackward,HIGH); digitalWrite(rightMotorBackward,HIGH); digitalWrite(leftMotorForward,LOW); digitalWrite(rightMotorForward,LOW); } void TurnLeft(void) { digitalWrite(leftMotorENB,HIGH); digitalWrite(rightMotorENB,HIGH); digitalWrite(leftMotorForward,LOW); digitalWrite(rightMotorForward,HIGH); digitalWrite(rightMotorBackward,LOW); digitalWrite(leftMotorBackward,HIGH); } void TurnRight(void) { digitalWrite(leftMotorENB,HIGH); digitalWrite(rightMotorENB,HIGH); digitalWrite(leftMotorForward,HIGH); digitalWrite(rightMotorForward,LOW); digitalWrite(rightMotorBackward,HIGH); digitalWrite(leftMotorBackward,LOW); } void MotorStop(void) { digitalWrite(leftMotorENB,LOW); digitalWrite(rightMotorENB,LOW); digitalWrite(leftMotorForward,LOW); digitalWrite(leftMotorBackward,LOW); digitalWrite(rightMotorForward,LOW); digitalWrite(rightMotorBackward,LOW); } String checkClient (void) { while(!client.available()) delay(1); String request = client.readStringUntil('\r'); request.remove(0, 5); request.remove(request.length()-9,9); return request; }
Téléchargement
Application android : Fichier:AplliAndroidCommande.zip
Dezipper les fichiers et coller les dans votre telephone.
Voila l'interface sur votre téléphone :