(→Le code) |
|||
Ligne 38 : | Ligne 38 : | ||
==Le code== | ==Le code== | ||
- | <pre> | + | <pre>//////////////// |
- | //////////////// | + | |
//Le Petit Bot// | //Le Petit Bot// | ||
//////////////// | //////////////// | ||
Ligne 51 : | Ligne 50 : | ||
//Définition du Wifi// | //Définition du Wifi// | ||
////////////////////// | ////////////////////// | ||
- | const char WiFiAPPSK[] = "1234567890"; // | + | const char WiFiAPPSK[] = "1234567890"; //mot de passe |
////////////////////////// | ////////////////////////// | ||
Ligne 106 : | Ligne 105 : | ||
- | // Prépare la page web de réponse. Débute par le | + | // Prépare la page web de réponse. Débute par le l’en-tête (header) commun : |
String s = "HTTP/1.1 200 OK\r\n"; | String s = "HTTP/1.1 200 OK\r\n"; | ||
s += "Content-Type: text/html\r\n\r\n"; | s += "Content-Type: text/html\r\n\r\n"; | ||
Ligne 115 : | Ligne 114 : | ||
} | } | ||
- | // | + | // Si on a reçu l’instruction, il faut la l’appliquer au robot |
if (val == 2 ) //avance | if (val == 2 ) //avance | ||
{ | { | ||
Ligne 122 : | Ligne 121 : | ||
monservo1.write(180); //avance | monservo1.write(180); //avance | ||
} | } | ||
- | if (val == 1)// | + | if (val == 1)//recule |
- | { | + | { |
s += " recule "; | s += " recule "; | ||
monservo2.write(180); //recule | monservo2.write(180); //recule | ||
monservo1.write(0); //recule | monservo1.write(0); //recule | ||
} | } | ||
- | if (val == 0) | + | if (val == 0) |
- | { | + | { |
s += " recule "; | s += " recule "; | ||
monservo1.write(91); //recule | monservo1.write(91); //recule | ||
monservo2.write(93); //recule | monservo2.write(93); //recule | ||
} | } | ||
- | if (val == 3) | + | if (val == 3) |
- | { | + | { |
s += " gauche "; | s += " gauche "; | ||
monservo1.write(180); //gauche | monservo1.write(180); //gauche | ||
monservo2.write(180); //recule | monservo2.write(180); //recule | ||
} | } | ||
- | if (val == 4) | + | if (val == 4) |
- | { | + | { |
s += " droite "; | s += " droite "; | ||
monservo1.write(0); //droite | monservo1.write(0); //droite | ||
Ligne 153 : | Ligne 152 : | ||
client.print(s); | client.print(s); | ||
delay(1); | delay(1); | ||
- | Serial.println("Client | + | Serial.println("Client deconnectay »); |
client.flush(); | client.flush(); | ||
Ligne 179 : | Ligne 178 : | ||
void initHardware() | void initHardware() | ||
{ | { | ||
- | Serial.begin(115200); | + | Serial.begin(115200);//ouvre le moniteur série |
- | } // | + | } //Ce programme est inspiré de celui-ci : http://www.esp8266.com/viewtopic.php?f=29&t=6419#sthash.gd1tJhwU.dpuf |
</pre> | </pre> | ||
Sommaire |
Tutoriel pour construire et un petit robot contrôlable en Wifi.
Il sera contrôlable depuis un ordinateur mais aussi tablette ou smartphone, quelque soit l'appareil.
A imprimer avec une imprimante 3D
A réaliser dans du carton rigide :
Coller les différentes pièces du petit bot.
1 - l'axe des servo-moteurs aux roues
2 - Les servos à fixer au châssis
3 - installez un marqueur à l'avant
//////////////// //Le Petit Bot// //////////////// /* un programme conçu par Julien Rat sous licence CC-By-Sa. Ce programme sert à piloter le "Petit Bot". C'est un robot pédagogique, très peu cher, utilisé par les petits débrouillards*/ #include <ESP8266WiFi.h> ////////////////////// //Définition du Wifi// ////////////////////// const char WiFiAPPSK[] = "1234567890"; //mot de passe ////////////////////////// //Définition des broches// ////////////////////////// #include <Servo.h> Servo monservo1; Servo monservo2; WiFiServer server(80); void setup() { initHardware(); setupWiFi(); server.begin(); monservo1.attach(5); monservo2.attach(4); monservo1.write(91); monservo2.write(93); } void loop() { // Regarder si un client s'est connecté WiFiClient client = server.available(); if (!client) { return; } // Lire la première ligne de la requête String req = client.readStringUntil('\r'); client.flush(); // Tester la requête pour identifier la consigne int val = -1; if (req.indexOf("/stop") != -1) val = 0; else if (req.indexOf("/avance") != -1) val = 1; else if (req.indexOf("/recule") != -1) val = 2; else if (req.indexOf("/gauche") != -1) val = 3; else if (req.indexOf("/droite") != -1) val = 4; // Prépare la page web de réponse. Débute par le l’en-tête (header) commun : String s = "HTTP/1.1 200 OK\r\n"; s += "Content-Type: text/html\r\n\r\n"; s += "<!DOCTYPE HTML>\r\n<html>\r\n"; if (req.indexOf("/commande") != -1 ) { s += "<input type=\"button\" onclick=\"location.href='192.168.4.1/led/1';\" value=\" OFF \" />"; s += "<input type=\"button\" onclick=\"location.href='192.168.4.1/led/0';\" value=\" ON \" />"; } // Si on a reçu l’instruction, il faut la l’appliquer au robot if (val == 2 ) //avance { s += " avance "; monservo2.write(0); //avance monservo1.write(180); //avance } if (val == 1)//recule { s += " recule "; monservo2.write(180); //recule monservo1.write(0); //recule } if (val == 0) { s += " recule "; monservo1.write(91); //recule monservo2.write(93); //recule } if (val == 3) { s += " gauche "; monservo1.write(180); //gauche monservo2.write(180); //recule } if (val == 4) { s += " droite "; monservo1.write(0); //droite monservo2.write(0); //recule } s += "</html>\n"; // Envoie la réponse au client client.print(s); delay(1); Serial.println("Client deconnectay »); client.flush(); } void setupWiFi() { WiFi.mode(WIFI_AP); uint8_t mac[WL_MAC_ADDR_LENGTH]; WiFi.softAPmacAddress(mac); String macID = String(mac[WL_MAC_ADDR_LENGTH - 2], HEX) + String(mac[WL_MAC_ADDR_LENGTH - 1], HEX); macID.toUpperCase(); String AP_NameString = "PetitBot"; char AP_NameChar[AP_NameString.length() + 1]; memset(AP_NameChar, 0, AP_NameString.length() + 1);//zero out AP_NameChar for (int i = 0; i < AP_NameString.length(); i++) AP_NameChar[i] = AP_NameString.charAt(i); WiFi.softAP(AP_NameChar, WiFiAPPSK, 7); } void initHardware() { Serial.begin(115200);//ouvre le moniteur série } //Ce programme est inspiré de celui-ci : http://www.esp8266.com/viewtopic.php?f=29&t=6419#sthash.gd1tJhwU.dpuf
Voir la Catégorie
le wifi peut être utilisé pour diverses applications, ici, contrôler un robot.
Fablab, dans l'atelier de bidouille électronique le plus proche ?
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique