Projet ENIB2017 - Ptit Bot Laser : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Programmation)
(Programmation)
Ligne 239 : Ligne 239 :
 
On rédige un script qui va envoyer les requête à notre place.
 
On rédige un script qui va envoyer les requête à notre place.
  
On peut par exemple utiliser [http://letsmakerobots.com/node/ai2.appinventor.mit.edu/?galleryId=5535939351019520 APPINVENTOR]
+
On peut par exemple utiliser [http://letsmakerobots.com/node/ai2.appinventor.mit.edu/?galleryId=5535939351019520 AppInventor]
  
[[Image:http://letsmakerobots.com/files/userpics/u26146/petit_bot_appinventor.png]]
+
[[http://letsmakerobots.com/files/userpics/u26146/petit_bot_appinventor.png Image]]
  
Ou [http://snap4arduino.org/ snap4arduino]
+
Ou [http://snap4arduino.org/ Snap4Arduino]
  
[[Image:http://letsmakerobots.com/files/userpics/u26146/petit_bot_english_snap.png]]
+
[[http://letsmakerobots.com/files/userpics/u26146/petit_bot_english_snap.png Image]]
  
 
== Comment ça marche ? ==
 
== Comment ça marche ? ==

Version du 10 janvier 2017 à 14:27

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 !

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
  • Canette métallique
  • 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

Découper la canette comme indiqué image

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

Flash de la carte

Charger dans la carte le code suivant (ou une version modifiée) à l'aide du logiciel d'arduino en ayant modifié les préférences

#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 = "PtitBotLaser";

  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

Programmation

Commencer par se connecter au signal WiFi "PtitBotLaser" avec mot de passe "o4ollivi"

Il y a deux façons de contrôler le robot :

  1. De manière directe

Envoyer des requêtes HTML au bot à l'aide d'un navigateur.

http://192.168.4.1/avance
http://192.168.4.1/recule
http://192.168.4.1/gauche
http://192.168.4.1/droite
http://192.168.4.1/stop
  1. De manière ordonnée

On rédige un script qui va envoyer les requête à notre place.

On peut par exemple utiliser AppInventor

[Image]

Ou Snap4Arduino

[Image]

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.

Sources et ressources utiles