Category: Raspberry Pi

MRPiZ – odometry

 

 

 

import sys
from mrpiZ_lib import *
import time

time.sleep(5)

controlEnable()
forward_mm(10,220)
turnLeft_degree(10,90)
forward_mm(10,170)
turnLeft_degree(10,90)
forward_mm(10,170)
turnRight_degree(10,90)

forward_mm(10,290)
turnRight_degree(10,90)

forward_mm(10,375)

turnRight_degree(10,90)
forward_mm(10,450)

Dance de robots MRPiZ

 

La gestion des robots en parallèle est gérer par fabric (www.fabfile.org). Un outil SSH permettant d’envoyer plusieurs commandes SSH en parallèle. Chaques robots MRPiZ est identifié par une adresse IP unique:

  • IP du robot n°1: 192.168.1.41
  • IP du robot n°2: 192.168.1.37
  • IP du robot n°3: 192.168.1.47

Le script de contrôle des robots :

#!/usr/bin/env python
import fabric
from fabric.api import run, env, task
from fabric.api import *
import time


env.hosts = ['192.168.1.41', '192.168.1.37', '192.168.1.47']

env.user = 'pi'
env.password = 'raspberry'

@parallel
def hello():
 run('python /home/pi/MRPiZ/Dance.py')

Le script python pour les robots :

#!/usr/bin/env python

import sys
from mrpiZ_lib import *
import time

controlEnable()
while 1:
 forward_mm(13,120)
 back_mm(11,100)
 forward_mm(11,100)
 turnRight_degree(25,360)
 time.sleep(1)
 turnRight_degree(15,90)
 turnLeft_degree(15,180)
 turnRight_degree(15,90)
 back_mm(12,90)

MRPiZ en Java

Dans ce tutorial vous allez apprendre à programmer le robot MRPiZ en langage Java.

Remarque : le robot MRPiZ doit etre connecté à internet.

Installation

  • Mise à jour et installation de java :
sudo apt-get update && sudo apt-get install oracle-java7-jdk
  • Installation de la librairie Pi4J pour l’accès hardware de la Raspberry Pi:
curl -s get.pi4j.com | sudo bash

Librairie

La librairie java est disponible sur le Github : ici

Exemple

Voici un exemple de programme (Exemple1.java):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.io.IOException;
import java.util.Date;
import java.util.concurrent.TimeUnit;

public class Exemple1 {

/****************/
public static void main(String args[]) throws InterruptedException, IOException
{
float tension_batterie;
float distance_sensor1;
float distance_sensor2;

MRPiZ robot = new MRPiZ();

// Lecture de la tension de la batterie
tension_batterie = robot.proxSensor(1);
System.out.println("Batterie = " + tension_batterie);

// avancer le robot pendant 1 seconde
robot.forward(30);

TimeUnit.SECONDS.sleep(2);

// reculer le robot pendant 1 seconde
robot.back(30);

TimeUnit.SECONDS.sleep(2);

// tourner à droite
robot.turnRight(30);

TimeUnit.SECONDS.sleep(1);

// arret du robot
robot.stop();

// Lecture du capteur de proximitè n°1 et n°2
distance_sensor1 = robot.proxSensor(1);
distance_sensor2 = robot.proxSensor(2);

// afficher les valeurs
System.out.println("Sensor 1 = " + distance_sensor1);
System.out.println("Sensor 2 = " + distance_sensor2);

}
}
  • Compilation du programme :
javac -classpath .:classes:/opt/pi4j/lib/'*' -d . Exemple1.java
  • Exécution du programme :
sudo java -classpath .:classes:/opt/pi4j/lib/'*' Exemple1

Configuration Wifi de la carte Pi Zero W

Article pour la configuration de la communication Wifi de la carte Pi Zero W en ligne de commande.

Version Raspian : April 2017 (Raspian Jessie Lite)

  • Ouvrir avec le terminal le fichier wpa_supplicant.conf :
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
  • Modifier ce fichier comme ci-dessous :
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=GB

network={
    ssid="YOUR_SSID"
    psk="YOUR_PASSWORD"
    key_mgmt=WPA-PSK
}
  • Enregistrer et redémarrer votre carte Raspberry Pi:
sudo reboot

MRPi1 robot navigation “cleaning algorithm”

Le programme :

from mrpi1_lib import *
import time

obs_limit = 600


# main program
state = 1

while 1:
 x1 = proxSensor(3)
 x2 = proxSensor(4)

 if(( x1 > obs_limit)and( x2 > obs_limit)and(state == 1)):
   x1 = 0
   x2 = 0
   stop()
   time.sleep(1)
   state = 2
   controlEnable()
   turnRight_degree(10,90)
   forward_mm(10, 100)
   turnRight_degree(10,90)
 if(( x1 > obs_limit)and( x2 > obs_limit)and(state == 2)):
   x1 = 0
   x2 = 0
   stop()
   time.sleep(1)
   state = 2
   controlEnable()
   turnLeft_degree(10,90)
   forward_mm(10, 100)
   turnLeft_degree(10,90)
   state = 1
 else:
  forward(20)

Allumer une led à une heure exacte avec Raspberry Pi 3

Un petit tutoriel pour allumer une led à une heure exacte avec une carte Raspberry Pi.

  • led sur GPIO18

Le programme en langage Python3 :

#!/usr/bin/python3
from datetime import datetime
import time
import RPi.GPIO as GPIO

# configuration GPIO 18 
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT) 
GPIO.output(18, GPIO.LOW)

# saisir alarme
heure_alarme = input("Saisir heure :")
heure_alarme = int(heure_alarme) # conversion en nombre
minute_alarme = input("Saisir minute :")
minute_alarme = int(minute_alarme)

while True:
  date_heure = datetime.now() # heure du système
  if((date_heure.hour == heure_alarme) and (date_heure.minute == minute_alarme)):
    GPIO.output(18, GPIO.HIGH)
    print("LED ALLUMER")
    exit()