Chacune des caméras est reliée par USB 2.0 à une Raspberry Pi 3b+. La Raspberry n°1 joue le rôle de routeur wi-fi de manière à connecter les 10 caméras sur un même réseau local. Un bouton est connecté en parallèle à l’ensemble des Raspberry sur les ports GPIO3 et GND. Lorsqu’on appuie sur ce bouton, 10 photos sont prises simultanément (une par Raspberry) et sont envoyées par wi-fi à la Raspberry n°10 où elles sont stockées dans un dossier temporaire. Un deuxième bouton est connecté à cette Raspberry (GPIO 5 ET GND) : lorsqu’on appuie dessus les photos du fichier temporaire sont transférées dans un dossier nouvellement créé Baby N°## qui se trouve en dossier partagé avec l’ordinateur, qui est relié à la Raspberry n°10 par câble ethernet.
Un ventilateur est branché directement sur l’une des Raspberry (choisie au hasard). Chaque Raspberry est branchée par un câble d'alimentation de 1,5m 5V 3A sur multiprise.
Chaque Raspberry fonctionne sur un système d’exploitation Raspbian préalablement installée sur une carte microSD. Des packages additionnels ont été ajoutés : fswebcam (contrôle des webcams pour déclencher la prise de photos), eog (affichage des photos sur l’interface graphique), expect (pour l’envoi des photos). Sur la Raspberry n°1 sont également installés hostapd (point d’accès wi-fi) et isc-dhcp-server (serveur dhcp). Sur la Raspberry n°10 sont installés Samba (pour le dossier partagé) et dnsmasq (attribution des adresses IP en local).
NB : En cas de problème, ne pas hésiter à brancher un écran via HDMI et un clavier et une souris par USB pour accéder à l’interface graphique.
Toutes les Raspberry ont un nom d’utilisateur “pi” qui a pour mot de passe “babyscan”.
On suit le protocole décrit sur https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software. Les caractéristiques du réseau local sont subnet 192.168.1.0, mask 255.255.255.0, range 192.168.1.2 à 192.168.1.13. Chaque Raspberry a une adresse IP fixe définie dans le fichier /etc/dhcpcd.conf.
Le réseau wi-fi a pour SSID = “Pi_AP” et mot de passe “BabyRasp”.
Les connexions ssh et l’échange des clés de sécurité sont configurées au préalable.
A l’allumage les Raspberry n°1 à n°9 exécutent le programme Python /home/pi/babyscan/transport_esclave.py (voir crontab -e dans le terminal). Ce programme tourne en boucle et attend le signal du bouton 1 branché sur le GPIO3. A l’activation du bouton, une photo est prise et est enregistrée /home/pi/babyscan/temporaire. Le programme /home/pi/babyscan/scpenvoie2.exp est alors appelé. C’est lui qui envoie, par protocole scp, les photos du dossier temporaire à celui de la Raspberry 10 (192.168.1.11). Après envoi, les photos sont supprimées sur la Raspberry d’origine.
A l’allumage la Raspberry n°10 exécute le programme Python /home/pi/babyscan/transport_VF.py (voir crontab -e dans le terminal). Ce programme tourne en boucle et attend le signal du bouton n°1 branché sur le GPIO3. A l’activation du bouton, une photo est prise et est enregistrée /home/pi/babyscan/temporaire. Il attend également l’activation du bouton n°2 sur le GPIO5 qui entraînera le transfert des photos du dossier /home/pi/babyscan/temporaire au dossier partagé /home/pi/babyscan/Photo_Bebe.
La Raspberry n°10 possède un serveur Samba qui permet le partage du dossier /home/pi/babyscan/Photo_Bebe au groupe d’utilisateurs @partage qui ne comprend que l’utilisateur “pi” qui a pour mot de passe “Babyscan”. Le partage du réseau se fait par un routeur dhcp configuré en suivant la méthode indiquée sur https://www.raspberrypi.org/learning/networking-lessons/lesson-3/plan/. Les caractéristiques du réseau local eth0 sont subnet 192.169.0.0, mask 255.255.255.0, range 192.169.0.2 à 192.169.0.20 .
Attention : le fichier /etc/network/interfaces a été modifié : les adresses IP eth0 et wlan0 y sont définies (eth0 = 192.169.0.1 et wlan0 = 192.168.1.11). Pour éviter une confrontation entre le service dhcpcd et le fichier /etc/network/interfaces, à l’allumage, le service dhcpcd est éteint (/etc/rc.local).