Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 193

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 197

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338
[ Wikidébrouillard ] Petit Bot un robot controlable en Wifi

Petit Bot un robot controlable en Wifi

De Wikidebrouillard.

(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"; //password
+
const char WiFiAPPSK[] = "1234567890"; //mot de passe
//////////////////////////
//////////////////////////
Ligne 106 : Ligne 105 :
-
   // Prépare la page web de réponse. Débute par le "header" commun :
+
   // 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 :
   }
   }
-
   // If we're setting the LED, print out a message saying we did
+
   // 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)//this left over from the sparkfun demo, not currently used
+
   if (val == 1)//recule
-
   { // If we're reading pins, print out those values:
+
   {  
     s += " recule ";
     s += " recule ";
     monservo2.write(180);  //recule
     monservo2.write(180);  //recule
     monservo1.write(0);  //recule
     monservo1.write(0);  //recule
   }
   }
-
   if (val == 0)//this left over from the sparkfun demo, not currently used
+
   if (val == 0)
-
   { // If we're reading pins, print out those values:
+
   {  
     s += " recule ";
     s += " recule ";
     monservo1.write(91);  //recule
     monservo1.write(91);  //recule
     monservo2.write(93);  //recule
     monservo2.write(93);  //recule
   }
   }
-
   if (val == 3)//this left over from the sparkfun demo, not currently used
+
   if (val == 3)
-
   { // If we're reading pins, print out those values:
+
   {  
     s += " gauche ";
     s += " gauche ";
     monservo1.write(180);  //gauche
     monservo1.write(180);  //gauche
     monservo2.write(180);  //recule
     monservo2.write(180);  //recule
   }
   }
-
   if (val == 4)//this left over from the sparkfun demo, not currently used
+
   if (val == 4)
-
   { // If we're reading pins, print out those values:
+
   {  
     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 disconnected");
+
   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
-
} //See more at: http://www.esp8266.com/viewtopic.php?f=29&t=6419#sthash.gd1tJhwU.dpuf
+
} //Ce programme est inspiré de celui-ci : http://www.esp8266.com/viewtopic.php?f=29&t=6419#sthash.gd1tJhwU.dpuf
</pre>
</pre>

Version du 1 décembre 2016 à 13:13

Article incomplet en cours de rédaction
Modèle:Vidéo


Sommaire

Présentation de la réalisation

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.

Matériel

Version imprimée en 3D

A imprimer avec une imprimante 3D

Sans imprimante 3D

A réaliser dans du carton rigide :

  • un châssis de 12cm par 7,5cm.
  • réaliser en mode débrouille, un support pour 4 piles de 1,5V

La réalisation

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

Schéma de cablage

Le code

////////////////
//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

Liens avec d'autres réalisation

Expériences sur Wikidébrouillard

Voir la Catégorie

Applications : liens avec le quotidien

le wifi peut être utilisé pour diverses applications, ici, contrôler un robot.

Lieux propices à sa réalisation

Fablab, dans l'atelier de bidouille électronique le plus proche ?

Catégories

Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraits
AR
TE

Petit Bot un robot controlable en Wifi

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique