From ESP8266

Partie 2 : Contrôle du robot MRduino Wireless par UDP

Un tutoriel pour contrôler le robot MRduino Wireless par UDP avec un programme python.

UDP = User Datagram Protocol

MRduino-wireless_UDP

Le contrôle du robot est réaliser par un programme en langage python.

Le programme pour le robot

Ce programme permet au robot MRduino Wireless de

Il faut modifier votre SSID et mot de passe de votre réseau Wifi :

const char* ssid = "YOUR_SSID";  
const char* pass = "YOU_PASSWORD";  

Le programme complet :

#include <ESP8266WiFi.h>
#include <WiFiUDP.h>
#include <mrduino.h>

static void read_receptionCommande(String Commande);

int status = WL_IDLE_STATUS;
const char* ssid = "YOUR_SSID";  //  your network SSID (name)
const char* pass = "YOUR_PASS";       // your network password

unsigned int localPort = 12345;  

WiFiUDP Udp;
int tries=0;

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(115200);

  // setting up Station AP
  WiFi.begin(ssid, pass);
 
  // Wait for connect to AP
  Serial.print("[Connecting]");
  Serial.print(ssid);
  
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
    tries++;
    if (tries > 30)
    {
      break;
    }
  }
  Serial.println();

  printWifiStatus();

  Serial.println("Connected to wifi");
  Serial.print("Udp server started at port ");
  Serial.println(localPort);
  Udp.begin(localPort);
}

void loop()
{
int noBytes = Udp.parsePacket();
String received_command = "";
byte packetBuffer[512]; 

  if ( noBytes )
  {

    Serial.print("received a packet");

    // We've received a packet, read the data from it
    Udp.read(packetBuffer,noBytes); // read the packet into the buffer

    for (int i=1;i<=noBytes;i++)
    {
      received_command = received_command + char(packetBuffer[i - 1]);
    } // end for
   
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    Udp.endPacket();

    // execution de la commande
    Serial.println(received_command);

  } // end if
}

void printWifiStatus() 
{
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
} 

  • Compiler et télécharger le programme dans le robot MRduino Wireless

Le programme de contrôle

  • Lien pour télécharger le programme de contrôle (dossier Zip): MrduinoControler

Remarque : programme pour Windows

  • Dézipper le dossier :

dossier

  • Lancer le programme MRduinoControler.exe

Controler

Ce programme permet de contrôler les mouvements du robot et les trois leds. Ne pas oublier de saisir l’adresse IP correct du robot.

 

 

Contrôle du robot MRduino Wireless par UDP

Un tutoriel pour contrôler le robot MRduino Wireless par UDP avec un programme python.

UDP = User Datagram Protocol

MRduino-wireless_UDP

Le contrôle du robot est réaliser par un script en langage python.

Le programme pour le robot

Ce programme permet au robot MRduino Wireless de

Il faut modifier votre SSID et mot de passe de votre réseau Wifi :

const char* ssid = "YOUR_SSID";  
const char* pass = "YOU_PASSWORD";  

Le programme complet :

#include <ESP8266WiFi.h>
#include <WiFiUDP.h>
#include <mrduino.h>


int status = WL_IDLE_STATUS;
const char* ssid = "FREEMR";  
const char* pass = "WIFINICO";       

unsigned int localPort = 12345;  
byte packetBuffer[512]; 
WiFiUDP Udp;
int tries=0;

void setup()
{

  Serial.begin(115200);

  // wifi init
  WiFi.begin(ssid, pass);
 
  Serial.print("[Connecting]");
  Serial.print(ssid);
  
  // wait connexion
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
    tries++;
    if (tries > 30)
    {
      break;
    }
  }
  Serial.println();

  printWifiStatus();

  // wifi connexion
  Serial.println("Connected to wifi");
  Serial.print("Udp server started at port ");
  Serial.println(localPort);
  Udp.begin(localPort);
}

void loop()
{
int noBytes = Udp.parsePacket();
String received_command = "";
 
  if ( noBytes )
  {
    // read UDP packet
    Udp.read(packetBuffer,noBytes);

    for (int i=1;i<=noBytes;i++)
    {
      received_command = received_command + char(packetBuffer[i - 1]);
    }
   
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    Udp.endPacket();

    // print command
    Serial.print("COMMANDE =");
    Serial.println(received_command);

  }
}

void printWifiStatus()
{

  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());


  IPAddress ip = WiFi.localIP();

  Serial.print("IP Address: ");
  Serial.println(ip);
}
  • Compiler et télécharger le programme dans le robot MRduino Wireless

 

Le script python

Voici un script python pour envoyer une commande au robot :

  • Exemple avec la commande pour allumer la led n°1 :
import socket
UDP_IP_ADDRESS = "192.168.0.20"
UDP_PORT_NO = 12345

Message = "#LED,1,1!"

clientSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

clientSock.sendto(Message, (UDP_IP_ADDRESS, UDP_PORT_NO))
  • Exemple avec la commande pour faire avancer le robot  :
import socket
UDP_IP_ADDRESS = "192.168.0.20"
UDP_PORT_NO = 12345

Message = "#MF,20!"

clientSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

clientSock.sendto(Message, (UDP_IP_ADDRESS, UDP_PORT_NO))

Creative Commons License

Programmer MRduino Wireless en Wifi

Le robot MRduino Wireless a la possibilité de transférer le programme du PC vers le robot en communication Wifi.

Le programme

Ce programme permet d’activer le téléversements OTA (Over The Air) sur l’ESP8266 du robot.

  1. Ouvrer l’Arduino IDE et insérer ce programme :

En modifiant :

  • VOTRE_SSID : le nom de votre réseau sans fil.
  • VOTRE_MOT_DE_PASSE : le mot de votre réseau sans fil.
#include <mrduino.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "VOTRE_SSID"; 
const char* password = "VOTRE_MOT_DE_PASSE"; 

void setup() 
{
   // initialisation du wifi
   WiFi.begin(ssid, password);

   // connexion wifi
   while (WiFi.waitForConnectResult() != WL_CONNECTED)
   {
     delay(1500);
     ESP.restart();
   }

  ArduinoOTA.setHostname("Robot_MRduinoW"); 
  
  // initialisation de l'Over The Air
  ArduinoOTA.begin(); 

}

void loop()
{
  ArduinoOTA.handle();
}

Après avoir vérifié ce programme Arduino, vous pouvez le téléverser vers le robot via un câble micro-USB.

img2

Transfére en Wifi

Maintenant que vous avez programmer le robot, vous pouvez fermer le logiciel Arduino IDE et le redémarrez afin d’avoir une nouvelle option de programmation.

  • Ouvrez l’onglet Tools->Port :

img1

  • Sélectionner le port : monMRduinoW

Vous pouvez débrancher le câble série de type micro-USB entre votre robot et  le PC; et téléverser à nouveau le programme. Cette fois-ci, le téléversement  fonctionne en Wifi.

Fin du tuto !

 

 

 

 

 

 

Envoyer un SMS avec la carte Esus

Envoyer un SMS avec la carte Esus en utilisant le système de notification de Free mobile.

photo_esus_smsV2

Vous avez besoin de votre identifiant Free mobile et de la clé d’identification au service :

Free_sms_V2

Ceci est disponible sur votre espace abonné de Free mobile.

Le programme

Vous devez modifier ces constantes :

  • VOTRE_SSID : le nom du réseau sans Wifi auquel votre carte Esus sera connecter.
  • VOTRE_PASS : le mot de passe de votre réseau Wifi.
  • IDENTIFIANT_FREE : votre identifiant Free mobile.
  • CLE_ID : votre clé d’identification au service.
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>

WiFiClientSecure client;
  
const char* ssid = "VOTRE_SSID";
const char* password ="VOTRE_PASS";

const char* host = "smsapi.free-mobile.fr";
const int https_Port = 443;

String url, message_SMS;

void setup()
{
  Serial.begin(9600);
  
  Serial.println();
  
  Serial.print("connexion à ");
  
  Serial.println(ssid);
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("Connexion Wifi");
  Serial.println("Adresse IP:");
  Serial.println(WiFi.localIP());

  Serial.print("connection a ");
  Serial.println(host);
  
  if (!client.connect(host, https_Port))
  {
    Serial.println("Erreur de connexion Wifi");
  }

  url = "/sendmsg?user=IDENTIFIANT_FREE&pass=CLE_ID&msg=";
  message_SMS = "Test envoi SMS par la carte Esus!";

  url = url + message_SMS;
  
  Serial.print("URL: ");
  Serial.println(url);

  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "User-Agent: BuildFailureDetectorESP8266\r\n" +
               "Connection: close\r\n\r\n");


}

void loop() 
{
  // rien
}

Fin du tuto !

Contrôle de relais avec la carte Esus

Un petit tutoriel pour le contrôle de relais 12V – 230V avec la carte Esus.

Matériels nécessaires :

  • Relais électromécaniques,
  • Une carte Esus,
  • Une batterie ou alimentation 11.8V

Le branchement

Le relais est branché sur une sortie de commande moteur de la carte Esus:

relais_V2

La carte Esus doit être alimenté avec une tension de 11.8V (tension max de la carte).

Exemple de programme n°1

Pour contrôler le relais il suffit simplement d’appeler la fonction de contrôle moteur n°1 de la carte Esus :

#include <esusBoard.h>

void setup() 
{
  // init esus board
  initEsusBoard();

  
}

void loop() 
{

  Activer_relais1();

  delay(2000);

  Desactiver_relais1();

  delay(2000);

}

void Activer_relais1(void)
{
  // sortie relais = 12V
  motors1_set(1024, DIR_FORWARD);
}

void Desactiver_relais1(void)
{
  // sortie relais = 12V
  motors1_set(0, DIR_FORWARD);
}

Contrôle de 2 relais

Le deuxième relais est branché sur la deuxième sortie de commande moteur de la carte Esus:

2relais_V2

Exemple de programme n°2

#include <esusBoard.h>

void setup() 
{
  // init esus board
  initEsusBoard();

  
}

void loop() 
{

  Activer_relais1();
  Desactiver_relais2();

  delay(2000);

  Desactiver_relais1();
  Activer_relais2();

  delay(2000);

}

void Activer_relais1(void)
{
  // sortie relais = 12V
  motors1_set(1024, DIR_FORWARD);
}

void Desactiver_relais1(void)
{
  // sortie relais = 0V
  motors1_set(0, DIR_FORWARD);
}


void Activer_relais2(void)
{
  // sortie relais = 12V
  motors2_set(1024, DIR_FORWARD);
}

void Desactiver_relais2(void)
{
  // sortie relais = 0V
  motors2_set(0, DIR_FORWARD);
}


Capteur VL53L0X avec la carte Esus

Petit programme afin d’interfacer le capteur VL53L0X avec la carte Esus. Le capteur est relié par I2C à la carte Esus.

  • SDA : pin 2
  • SCL : pin 13

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
 Serial.begin(9600);

 Wire.begin(2, 13);//SDA, SCL
 
 // initialisation du capteur
 sensor.init();
 sensor.setTimeout(500);

}

void loop() 
{
  Serial.print("Distance mm =");

  // affichage de la distance en mm
  Serial.print(sensor.readRangeSingleMillimeters());

  if (sensor.timeoutOccurred())
  { 
    Serial.print(" TIMEOUT"); 
  }

  Serial.println();
}

source : https://github.com/pololu/vl53l0x-arduino/tree/master/examples/Single

Résultat :

com_mm