(→La réalisation) |
(→Version imprimée en 3D) |
||
Ligne 21 : | Ligne 21 : | ||
Pour imprimer partiellement : | Pour imprimer partiellement : | ||
- | * le boitier pour 4 piles AAA : http://www.thingiverse.com/antonydbzh/designs | + | * le boitier pour 4 piles AAA ([[Fichier:Petitbot-Boiteapile4AAA.stl]]) ou sur le web : http://www.thingiverse.com/antonydbzh/designs |
- | * l'élément pour faire une roue-bille : http://www.thingiverse.com/thing:1674143 | + | * l'élément pour faire une roue-bille ([[Fichier:Petitbot-roue-bille.stl]]) ou sur le web : http://www.thingiverse.com/thing:1674143 |
==Sans imprimante 3D== | ==Sans imprimante 3D== |
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
Pour imprimer partiellement :
A réaliser dans du carton rigide :
Coller les différentes pièces du petit bot.
1 - l'axe des servomoteurs aux roues (en carton, imprimées en 3D, ou autre...).
2 - Les servomoteurs sont à fixer au châssis (avec du pistolet à colle par exemple.
3 - installez un marqueur à l'avant, ou une roue-bille
/////////////// // Petit Bot // /////////////// // Un programme pedagogique des petits debrouillards ?=+ pour gerer le robot "Petit Bot" // "Petit Bot" est un robot simple, a bas cout, realisable de multiples facons. // Voir sur http://wikidebrouillard.org/index.php?title=Petit_Bot_un_robot_controlable_en_Wifi // Ce programme est inspire de : http://www.esp8266.com/viewtopic.php?f=29&t=6419#sthash.gd1tJhwU.dpuf // Sous licence CC-By-Sa // Par des gens bien #include <ESP8266WiFi.h> // on appelle la bibliotheque qui gere le WemosD1 mini ////////////////////////// // Definition du WiFi // ////////////////////////// const char WiFiAPPSK[] = "1234567890"; //C'est le mot de passe du wifi "petit bot" ///////////////////////////// // Attribution des broches // ///////////////////////////// #include <Servo.h> //on appelle la bibliotheque qui gere les servomoteurs Servo monservo1; //nom du servo qui gere la premiere roue Servo monservo2; //seconde roue WiFiServer server(80); void setup() { initHardware(); setupWiFi(); server.begin(); monservo1.attach(5); monservo2.attach(4); monservo1.write(91); //pour mettre les servomoteur à l'arret, on leur donne une valeur au milieu entre 0 et 180. monservo2.write(93); } void loop() { // Vérifie si il y a navigateur connecte WiFiClient client = server.available(); if (!client) { return; } // Lit la premiere ligne de la requete String req = client.readStringUntil('\r'); client.flush(); // affecte une valeur a "val" suivant la requete 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; // Prepare la page web de réponse. on commence par le "header" commun; (le code HTML sera ecrit dans la chaine de carcatere s). String s = "HTTP/1.1 200 OK\r\n"; s += "Content-Type: text/html\r\n\r\n"; s += "<!DOCTYPE HTML>\r\n"; s += "<html>\r\n"; s += "Le petit bot "; // on va finaliser la chaine de caracteres et envoyer les instructions if (val == 2 ) //Recule { s += " recule "; //comme les servomoteurs sont colles un dans un sens et le second dans l'autre sens, il faut leur donner a chacun des instructions inverses. monservo2.write(0); //servo 2 roule vers l'arriere. monservo1.write(180); //servo 1 roule vers l'arriere. } if (val == 1)//Avance { s += " avance "; monservo2.write(180); //vers l'avant. monservo1.write(0); //vers l'avant. } if (val == 0)//stop { s += " est a l'arret "; monservo1.write(91); //stop monservo2.write(93); //stop } if (val == 3)//tourne a gauche { s += " tourne a gauche "; //Pour faire tourner, il suffit qu'une roue tourne dans un sens et la seconde dans le sens inverse monservo1.write(180); //vers l'avant. monservo2.write(180); //vers l'arriere. } if (val == 4)//tourne a droite { s += " tourne a droite "; monservo1.write(0); //vers l'arriere. monservo2.write(0); //vers l'avant. } s += "<br>"; //aller a la ligne s += "<br>"; //aller a la ligne s += "<a href=\"/stop\"\"><button>Stop </button></a>\r\n";// creer un boutton "Stop" s += "<a href=\"/avance\"\"><button>Avance </button></a>\r\n"; s += "<a href=\"/recule\"\"><button>Recule </button></a>\r\n"; s += "<a href=\"/droite\"\"><button>Droite </button></a>\r\n"; s += "<a href=\"/gauche\"\"><button>Gauche </button></a><br />\r\n"; s += "</html>\n"; //Fin de la page Web // Envoie de la reponse au navigateur client.print(s); delay(1); Serial.println("Client disconnected"); client.flush(); } void setupWiFi() //reglage du reseau wifi emis par le WemosD1 mini { 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"; //nom du reseau char AP_NameChar[AP_NameString.length() + 1]; memset(AP_NameChar, 0, AP_NameString.length() + 1); 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 une connection serie pour monitorer le fonctionnement du code quand on reste branche a l'ordinateur }
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