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"; //password ////////////////////////// //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 "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 \" />"; } // If we're setting the LED, print out a message saying we did if (val == 2 ) //avance { s += " avance "; monservo2.write(0); //avance monservo1.write(180); //avance } if (val == 1)//this left over from the sparkfun demo, not currently used { // If we're reading pins, print out those values: s += " recule "; monservo2.write(180); //recule monservo1.write(0); //recule } if (val == 0)//this left over from the sparkfun demo, not currently used { // If we're reading pins, print out those values: s += " recule "; monservo1.write(91); //recule monservo2.write(93); //recule } if (val == 3)//this left over from the sparkfun demo, not currently used { // If we're reading pins, print out those values: s += " gauche "; monservo1.write(180); //gauche monservo2.write(180); //recule } if (val == 4)//this left over from the sparkfun demo, not currently used { // If we're reading pins, print out those values: 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 disconnected"); 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); } //See more at: 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