×Fichiers du thème manquants :
themes/yeswiki/squelettes/responsive-1col.tpl.html
themes/yeswiki/styles/blue.css
Le thème par défaut est donc utilisé.

Tutoriel de l'electronique

Matériel

  • Carte micro SD et son adaptateur
  • Raspberry pi 4 B
  • Une connexion wifi ou câble ethernet

1.Installation de l'OS


2. Pilotage de la raspberry depuis un ordinateur tiers


3. Assignation d'une IP fixe

Une adresse IP est un code de quatre nombres qui se permet à un routeur de retrouver un objet connecté. Cette adresse peut changer à chaque redémarrage. D'où l'intérêt d'assigner à la Raspberry une IP fixe pour ne pas avoir à retrouver l'IP avant chaque connexion ;
  • Ouvrir une interface de commande sur la Raspberry ou via le SSH ou VNC si ils sont paramétrés ;
  • Entrer la commande suivante :
#Si la raspberry pi est connectée à votre box en ethernet 
ip route | grep eth0 

#Sinon si la pi est connectée en wifi
ip route | grep wlan0

  • Noter le retour de la commande qui doit être semblable à :
default via 192.168.0.1 dev wlan0 src 192.168.0.101 metric 303 
192.168.0.0/24 dev wlan0 proto dhcp scope link src 192.168.0.101 metric 303

  • Ouvrir le fichier dhcpcd.conf en utilisant la commande nano :
 sudo nano /etc/dhcpcd.conf 

  • Remplacer le contenu par les lignes suivantes (wlan0 si wifi et eth0 si ethernet), changer les adresse IP et le /XX par les adresses renvoyés pas la commande précédente.
interface wlan0
static ip_address=192.168.0.101/24
static routers=192.168.0.1

  • Quitter en enregistrant (ctrl+X puis Y et entr)
  • Redémarrez la raspberry :
reboot

1. Le stockage sur carte SD externe

  • Le support micro SD externe est complexe à paramétrer ;
  • On optera plutôt pour une clé USB voir un adaptateur USB carte micro SD ou même un disque dure ssd ;
  • Le branchement sur port USB est beaucoup plus simple sur raspberry, pourquoi s'embêter avec un module branché sur les GPIO ?
  • Si les stockages SD ou USB suffisent en terme de capacité de stockage, on les préférera à un disque dure qui lorsqu’il prends l'eau ne permets plus la récupération des données.

Matériel

  • Raspberry Pi 4B ;
  • Motor driver HAT Wav Share ;
  • Fil électrique et connectiques de prototypage ;
  • Batterie ou alimentation de 12v ;

1. Montage électrique de prototypage

  • Monter le motor driver HAT sur les pins GPIO de la raspberry, en disposant les dominos vers l'intérieur du raspberry ;
  • Brancher le moteur sur les dominos A (moins --> MA2; plus --> MA1) ;
  • Brancher la batterie ou l'alimentation 12V sur les deux dominos centraux (moins --> GND ; plus --> Vin) ;

2. Essai script de démo

  • Partis des drivers pythons pour Raspberry disponible sur le wiki de wave share ;
  • On placera les deux fichiers "main.py" et "PCA9685.py" dans le dossier "python" de la raspberry,
    • Pour y parvenir, on peut passer par le FTP avec Filezila sur port 22 ;
    • Ou placer les fichiers sur la carte SD de la raspberry via le lecteur de carte SD ou USB d'un PC ;
  • Lancer un premier essai dans le dossier python avec la commande :
python main.py

  • Le moteur doit tourner dans un sens durant 5s, puis tourner dans l'autre sens 5s supplémentaires ;

3. Script moteur pour le KOSMOS

  • Le code si-dessous est le main.py du constructeur, mais il est dépendant d'un script main (que l'on nommera dans notre projet kosmos-main.py) qui lui donnera les valeur de temps et de puissance à utiliser pour l'action ;
  • Dans le dossier python de la raspberry, supprimer les drivers moteurs précédemment installés et y importer le script suivant en lui donnant le nom moteur-main.py ;
#!/usr/bin/python

from PCA9685 import PCA9685
import time
import sys

Dir = [
    'forward',
    'backward',
]
pwm = PCA9685(0x40, debug=False)
pwm.setPWMFreq(50)

class MotorDriver():
    def __init__(self):
        self.PWMA = 0
        self.AIN1 = 1
        self.AIN2 = 2
        self.PWMB = 5
        self.BIN1 = 3
        self.BIN2 = 4

    def MotorRun(self, motor, index, speed):
        if speed > 100:
            return
        if(motor == 0):
            pwm.setDutycycle(self.PWMA, speed)
            if(index == Dir[0]):
                pwm.setLevel(self.AIN1, 0)
                pwm.setLevel(self.AIN2, 1)
            else:
                pwm.setLevel(self.AIN1, 1)
                pwm.setLevel(self.AIN2, 0)
 else:
            pwm.setDutycycle(self.PWMB, speed)
            if(index == Dir[0]):
                pwm.setLevel(self.BIN1, 0)
                pwm.setLevel(self.BIN2, 1)
            else:
                pwm.setLevel(self.BIN1, 1)
                pwm.setLevel(self.BIN2, 0)

    def MotorStop(self, motor):
        if (motor == 0):
            pwm.setDutycycle(self.PWMA, 0)
        else:
            pwm.setDutycycle(self.PWMB, 0)

#verifier le nombre de parametres
if len( sys.argv ) != 3 :
    print( "\tusage:  temps (s) vitesse(%)" )
    exit()

try :
        temps = int( sys.argv[1] ) #argument 1
        vitesse =  int( sys.argv[2] ) #argument 2

        Motor = MotorDriver()
        print("forward ...")
        #moteur/ sens / vitesse
        Motor.MotorRun(0, 'forward', vitesse)
        print "moteur temps :%d vitesse %d" % ( temps, vitesse)
        time.sleep(temps)
        Motor.MotorStop(0)
        print("stop")

except ValueError : 
   print( "pb arguments")
#
 


Liens connexes

  • Brancher la caméra Pi Cam HQ sur le port MIPI CSI port camera interfaces
  • Activez la caméra avec la commande "sudo raspi-config". Allez au menu 6 (Enable Camera) et répondez par Yes
  • Redémarrer la raspberry "reboot"
  • On peut tester le bon fonctionnement de la caméra en entrant la commande suivante :
raspivid -o test.h264

  • Cette commande Raspivid est une commande UNIX ce qui fait qu'elle est intégrable dans un script bash (.sh). Elle permet l’acquisition vidéo et accepte plusieurs arguments (détaillés dans la doc de Picamera), comme par exemple :
raspivid -t 5000 --raw-format yuv -r monfichier.yuv

  • Il s'agit d'une commande qui lance une acquisition vidéo pendant 5000 ms (5s) au format brut .yuv dans monfichier.yuv


  • Librairie Python, avec fonctions spécial Picam. On peut la télécharger avec la commande :
    sudo apt-get install python-picamera python3-picamera
  • En début de script inscrire les commandes suivantes :
    from piamera import PiCamera
    camera= PiCamera() 
  • On a essayés le script ch5listing6.py qui permet d’enregistrer un fichier image ;
  • Mais on préférera utiliser la fonction "wait_recording()" que "time.sleep()" car dans la première fonction, la détection d’erreur continue à tourner ce qui est plutôt pratique ;
  • Pour ne pas avoir la camera en live sur l’écran, enlever les commandes "start" et "stop_preview" ;
  • Le système ILS permets sur le STAVIRO et le MICADO de démarrer et arrêter le process ;
  • Sur la version KOSMOS, nous imaginons un coupe circuit blue robotics etanche pour alimenter ou non la Raspberry.
  • Toutefois, il faut veiller à bien finir le script avant de couper l'alimentation du Raspberry. En effet, il faut un signal au script pour que ce dernier se termine afin qu'il enregistre les données collectées ;
  • On imagine ainsi installer deux ILS sur les GPIO de la Raspberry qui permettront de démarrer le script kosmos-main.sh pour le premier, et le finir pour le second.
Le script général que l'on nommera "kosmos-main.sh" est un script bash qui commande le fonctionnement général du KOSMOS. Il fait appel à divers scripts tiers pour piloter le moteur, lancer ou couper la caméra, enregistrer les données...
Ce script pour le moment est :
#!/bin/bash


#temps entre deux rotations
temps_entre_rot=5
#temps rotation en secondes
temps_rot=3
#vitesse entre 1 et 100
vitesse_rotation=100

temps_video=$((($temps_entre_rot*6+5+$temps_rot*6)*1000))
echo temps video $temps_video

fichier_date=`date '+%Y-%m-%d_%H-%M'`
nomfichier=ma_video_$fichier_date
nomfichier=$nomfichier.yuv
echo $nomfichier

#lancemdate '+%Y-%m-%d-%T'ent camera ici mettre la commande video avec un '&' à la fin pour que le script contine le temps est en ms
raspivid -t $temps_video --raw-format yuv -r $nomfichier &


# attendre avant le premier tour
echo attendre $temps_entre_rot
sleep $temps_entre_rot

#rotation du moteur 5 fois
for i in `seq 1 5`
  do echo "tour de boucle $i"
  python ~/python/moteur_main.py $temps_rot $vitesse_rotation
  echo attendre $temps_entre_rot
  sleep $temps_entre_rot
done
#passage sur clé usb
mv ./$nomfichier   /media/pi/EMTEC\ D250/
echo enregistre sur cle usb 


Pistes d'amélioration

  • Passage sur USB : trouver une commande qui permette de passer la vidéo vers n’importe quelle clé USB
mv ./video_test2.h264   /media/pi/EMTEC\ D250/


1. Premiers essais avec un RTC PCF8563

  • On a branché le RTC sur la rangée de GPIO de la raspberry situés vers l'intérieur PIN 1'3'5'7'9 ;
  • On a lancé les commande suivante :
sudo i2cdetect -y 1
sudo nano /boot/config.txt
dtoverlay=i2c-rtc,pcf8563 

  • Mais ça merdouille. Il semblerait que ce module pose des soucis aux autres utilisateurs, aller voir d'autres modules comme : ds1307 ou pcf8523 ou ds3231

Liens connexes