Programmer le robot MRPi1 en langage C

Dans ce tutorial vous allez apprendre à programmer le robot MRPi1 en langage C.

Télécharger la librairie C

  • Télécharger la librairie C sur Github :

https://github.com/macerobotics/MRPi1/tree/master/Software/C

Transférer les fichiers avec FileZilla.

  • Placez le fichier MRPi1.h dans le dossier header :
cd /home/pi/Descktop/MR_Projects/C/header
  • Placez le fichier MRPi1.c dans le dossier sources:
cd /home/pi/Descktop/MR_Projects/C/sources

Hello MRPi1

Voici un petit programme ‘main.c‘ :

#include "MRPi1.h"

int main(int argc, char* argv[])
{
  // initialisation du robot MRPi1
  init();
  printf("Hello MRPi1\n");

  // Allumer les leds du robot MRPi1
  led(1,1);
  led(2,1);
  led(3,1);
  
}
  • Placez ce fichier main.c dans le répertoire sources
  • Compilation :
>> cd /home/pi/Desktop/MR_Projects/C
>> gcc sources/*.c -I header -o Hello_MRPi1
  • Exécution :
>> ./Hello_MRPi1

Les 3 leds du robot MRPi1 doivent s’allumer.

Gestion des déplacements

Voici un exemple de programme pour gérer les déplacements du robot MRPi1.

#include "MRPi1.h"

int main(int argc, char* argv[])
{
  // Initialisation du robot MRPi1
  init(); 

  // avancer avec une vitesse de 10% sur une distance de 150 mm
  forward_mm(10, 150);

  // pause de 2 secondes
  sleep(2);

  // tourner a droite
  turnRight(30);

  // pause de 4 secondes
  sleep(4);

  // arret du robot
  stop();
  
}

Ce petit programme permet :

  • de faire avancer le robot MRPi1 pendant 2 secondes
  • de tourner à droite pendant 4 secondes
  • puis de s’arrêter.

Lien pour l’API C

Connecter MRPi1 à Internet

Dans ce tutorial vous allez apprendre à connecter le robot MRPi1 à Internet. Par défaut le robot MRPi1 est configuré en point d’accès, une configuration pour se connecter à votre réseau est donc nécessaire.

img7_tuto

Fichier interfaces

  • Ouvrir le fichier interfaces avec l’éditeur nano :
$ sudo nano /etc/network/interfaces 

img1_tuto

Modifier ce fichier pour qu’il ressemble à ceci :

  • Avec votre SSID et mot de passe de votre réseau.

img2_tuto

  • Enregistrer le fichier puis quitter :
    • ctrl + X
    • Y

Arrêt du daemon hostapd

  • Ouvrir le fichier hostapd avec l’éditeur nano :
sudo nano /etc/default/hostapd 

img3_tuto

  • Mettez en commentaire cette ligne  :

img4_tuto

La ligne devient donc :

img5_tuto

  • Enregistrer le fichier puis quitter.

Modification du fichier rc.local

  • Ouvrir le fichier hostapd avec l’éditeur nano :
sudo nano /etc/rc.local
  • Placer en commentaire les deux lignes suivantes :
ifconfig wlan0 192.168.42.1
 etc/init.d/isc-dhcp-server start

Le fichier devient donc :

img6_tuto

  • Enregistrer le fichier puis quitter.

Maintenant, vous pouvez redémarrer le système pour la prise en compte des modifications :

sudo reboot

Voilà, votre robot peut se connecter à votre box internet. Une adresse IP va lui être affecter automatiquement. Pour connaitre cette adresse pour pouvez utiliser le logiciel Advanced IP Scanner.

Programmer le microcontrôleur esp8266 avec l’IDE Arduino

Ce tutorial va vous permettre de programmer le module Wifi ESP8266 avec le célèbre logiciel Arduino. Ceci vous permettra de réaliser des robots ou objets connecté avec ce module comme contrôleur principal.

Ce tutoriel utilise :

  • Une carte Esp8266 ESP-12e
  • L’IDE Arduino version 1.6.8

ESP_photo

Carte ESP8266 -ESP-E12e

C’est quoi l’ESP8266 ?

L’ESP8266 est un microcontrôleur low-cost avec une connexion Wifi développé par le fabricant Chinois Espressif.

Voici ces caractéristiques techniques :

  • CPU : 80 Mhz – 32 bits
  • IEEE 802.11 b/g/n Wi-Fi
  • 16 GPIO
  • UART, SPI, I2C, I2S
  • 1xADC 10 bits

Par défaut, le microcontrôleur ESP8266 contient un firmware de gestion des commandes AT. Afin de programmer le microcontrôleur avec l’IDE Arduino, il est nécessaire de changer le firmware.

Étape n°1 : configuration

La première étape est la configuration de l’IDE Arduino pour la prise en compte de la carte Esp8266.

  • Ouvrir l’IDE Arduino.
  • Ensuite :
    • Fichier->Préférences

esp_1

  • Dans la boite de dialogue des préférences, au champs intitulé “URL de gestionnaire de cartes supplémentaires“, vous pouvez coller l’adresse suivante :

http://arduino.esp8266.com/stable/package_esp8266com_index.json

esp_2

  • Validez cette modification avec le bouton OK.

Étape n°2 : installation

  • Puis, dans le menu : Outils->Type de carte->Gestionnaire de cartes :

esp_3

  • Ensuite, dans le champs de recherche, recherchez “esp8266” :

esp_4

  • Installez “esp8266 by ESP8266 Community” :

esp_5Installation en cours

Étape n°3 : test

Après quelque minutes d’installation, vous pouvez sélectionner la nouvelle carte dans :

  • Outils->Type de carte

esp8266

Maintenant, vous pouvez tester un exemple de sketches conçus pour le microcontrôleur ESP8266.

esp_7

Un petit exemple pour faire clignoter une led :

esp_8

  • Vérifier & télécharger le programme après avoir sélectionner le bon port.

esp_9

Voilà, fin du tuto !

MRduino à l’Euro 2016 !

Le robot MRduino joue au football pour l’Euro 2016.

MRduino est équipé d’un bras avec deux servomoteurs SG90 :

  • Alimentation des servomoteurs avec le +BATT

FootEuro2016

Vidéo :

 

Le programme :

#include <Servo.h>
#include <mrduino.h>

Servo Servo1;
Servo Servo2;

int reception;
 
void setup()
{
    Servo1.attach(2, 1000, 2000);
    Servo2.attach(4, 1000, 2000);

    Servo1.write(90);
    Servo2.write(180);

    delay(500);

    Serial.begin(115200);
}

void loop() {


   // read IR reception sensor
  reception = irReceiver();

  // read command
  switch(reception)
  {
    case 2:
      forward(30);// Forward
    break;

    case 6:
      turnRight(30);// turn right
    break;

    case 4:
      turnLeft(30);// turn left
    break;

    case 8:
      back(30);// back
    break;

    case 5:
      stop();// stop
    break;

    case 7:
     Servo1.write(160);
     Servo2.write(90);
    break;

    case 9:
     Servo1.write(90);
     Servo2.write(180);
    break;
  }


}

 

 

Détection des chocs avec le robot MRPi1

Le robot MRPi1 est équipé d’un accéléromètre 3 axes permettant de détecter les chocs.

Voici une petite vidéo :

Ce programme lit les 3 axes de l’accéléromètre et suivant un seuil d’accélération de 0.1 g une led est allumé ou éteinte.

  • led n°1 : axe X
  • led n°2 : axe Y
  • led n°3 : axe Z

Le programme python :

from mrpi1_lib import *
import time

while 1:

  axeX = acceleroX();
  axeY = acceleroY();
  axeZ = acceleroZ();

  time.sleep(0.01)

  if(axeX > 0.1):
    led(1,1)
  else:
    led(1,0)   

  if(axeY > 0.1):
    led(2,1)
  else:
    led(2,0) 

  if(axeZ > 0.1):
    led(3,1)
  else:
    led(3,0)