Projet ENIB2017 - Ptit Bot Laser
Cette page est une fiche écrite dans le cadre de l'Inter Semestre ENIB 2017
Le contenu de cette fiche est en cours de rédaction, elle va s'étoffer pendant tout le mois de janvier !
Sommaire
P'tit Bot version découpeuse laser
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.
Auteurs
Ont participé à la rédaction de cette fiche :
Outils et matériaux
Outils
- Pistocolle
- Colle à bois
- Marqueurs
- Découpeuse laser
Liste du matériel
- 2 servo Moteur
- 1 Wemos + Accessoires
- 1 interrupteur
- 4 piles AA 1,5V
- Bois, MDF et carton
- Conducteur à définir
- Fil électrique 'à spécifier la quantité
- Fichier 2D à créer pour la découpeuse laser
Plans : les déposer
Compétences
- Bricolage, découpeuse laser (& inkscape)
Budget
Achat sur des site de commande en Chine : 10~20€
Réaliser le projet
Construisons notre robot étape par étape.
Préparation
Modifier si besoin les plans sur inkscape
Découper les pièces selon les plans fourni à la découpeuse laser
Assemblage
Assembler le châssis, fixer le conducteur et les paroi au pistolet à colle image
Visser les servo moteurs au châssis comme indiqué image
Brancher les servo moteurs à la carte, comme indiqué image
Programme
Charger dans la carte le code suivant (ou une version modifiée)
#include <ESP8266WiFi.h>
//////////////////////
// WiFi Definitions //
//////////////////////
const char WiFiAPPSK[] = "o4ollivi"; //password
WiFiServer server(80);
#include <Servo.h>
///////////////////////
// Servo Definitions //
///////////////////////
Servo servo1;
Servo servo2;
/////////////////////
// Pin Definitions //
/////////////////////
//none
void setup()
{
initHardware();
setupWiFi();
server.begin();
servo1.attach(5); //pin 5
servo2.attach(4); //pin 4
servo1.write(91);
servo2.write(93);
}
void loop()
{
// Check if a client has connected
WiFiClient client = server.available();
if (!client) return;
// Read the first line of the request
String req = client.readStringUntil('\r');
// Clean the buffer
client.flush();
// Match the request
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 the web page response. Start with the common header:
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
////////////
//STOP
///////
if (val == 0)//this left over from the sparkfun demo, not currently used
{ // If we're reading pins, print out those values:
s += " stop "; //" recule " ?!
servo1.write(91); servo2.write(93);
}
////////////
//RECULE
///////
if (val == 1)//this left over from the sparkfun demo, not currently used
{ // If we're reading pins, print out those values:
s += " recule ";
servo1.write(0); servo2.write(180);
}
////////////
//AVANCE
///////
if (val == 2 )
{
s += " avance ";
servo1.write(180); servo2.write(0);
}
////////////
//GAUCHE
///////
if (val == 3)//this left over from the sparkfun demo, not currently used
{ // If we're reading pins, print out those values:
s += " gauche ";
servo1.write(180); servo2.write(180);
}
////////////
//DROITE
///////
if (val == 4)//this left over from the sparkfun demo, not currently used
{ // If we're reading pins, print out those values:
s += " droite ";
servo1.write(0); servo2.write(0);
}
s += "</html>\n";
// Send the response to the 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);
}
//Modified version by Hizzy-sama
//See more at: http://www.esp8266.com/viewtopic.php?f=29&t=6419#sthash.gd1tJhwU.dpuf
Comment ça marche ?
Observations
Texte + images/photos
Explications
Etre capable de vulgariser au maximum ces connaissances de façon simple et ludique, afin de les transmettre à un plus grand nombre.
Texte + images/photos
Plus d'explications
Entrer dans des explications techniques et scientifiques plus complexes, mais toujours de manière ludique.
Texte + images/photos
Et dans la vie de tous les jours ?
Ce petit robot est simple à créer et montre la facilité qu'on a de comprendre et réaliser les jouets d'aujourd'hui
Vous aimerez aussi
Liens vers des projets ou des expériences complémentaires pour mieux comprendre son fonctionnement.