×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é.
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
Etape 1 : Installation de l'OS et pilotage depuis un ordinateur tiers
Matériel
- Carte micro SD et son adaptateur
- Raspberry pi 4 B
- Une connexion wifi ou câble ethernet
1.Installation de l'OS
- Installer Rapbian sur une raspberry depuis un PC, linux, IOS ou Windows
- Connecter la Raspberry au réseau wifi ou ethernet local
2. Pilotage de la raspberry depuis un ordinateur tiers
3. Assignation d'une IP fixe
- Le tuto qui suit est librement inspiré du tutoriel de raspi.fr
- 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
Etape 2 : Paramétrer le module de stockage des données
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.
Etape 3 : Pilotage du moteur
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
Etape 4 : Paramétrer et intégrer la picam
- 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" ;
Etape 5 : Le circuit ILS pour démarrer le système par le passage d'un aimant
- 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.
Etape 6 : Script général
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 :
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/
Etape 7 : Paramétrer l'horloge RTC
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