1. Introduction

Le projet H consistait à utiliser et comprendre l’ARDUINO UNO pour bouger un servomoteur à la base des capteurs de mouvements selon la détection de ces capteurs PIR. Son application concrète a alors été prouvée en ajoutant une caméra sur le servomoteur comme caméra de surveillance. Un drapeau à la place, par exemple pouvait illustrer le concept parfaitement. Le principe était d'utiliser un servo et des capteurs de mouvement sur ARDUINO pour faire tourner une camera dans une direction précise. Cette camera en revanche devait être allumée manuellement pour prendre une photo.
Mais maintenant, ce projet P consiste à comprendre comment un Raspberry Pi peut coordiner avec cet ARDUINO UNO et ainsi commander à sa caméra de prendre une photo seulement sur détection de mouvement par les capteurs PIR de l’ARDUINO.

1.1 But

Le but est de comprendre comment la communication des INPUTS/OUTPUTS entre l’ARDUINO UNO et le Raspberry Pi se tient de manière à rendre le prototype H plus autonome.

2. Matériel et méthodes

2.1 Liste du matériel

Il faut noter que la caméra propre au Raspberry Pi est utilisée dans ce cas de figure et remplace celle du projet H. Son avantage est qu’elle peut prendre des photos de manière automatique.
L’ARDUINO ainsi que les 5 capteurs de mouvement PIR et le servomoteur du projet H seront implémentés et réutilisés dans le cadre de ce projet.

Pour la connexion avec le Raspberry Pi B+ :

  • 1X Moniteur LCD (ici un écran d’ordi)
  • 1X Clavier USB (avec Bluetooth possible aussi, il y aura juste besoin de son adapteur USB)
  • 1X Souris USB
  • 1X Câble HDMI
  • 1X Batterie externe (ou chargeur de smartphone Android)

2.1.1 Camera Raspberry Pi

Attacher la Picamera au Raspberry Pi est une manœuvre subtile mais essentielle. Le socket dédié à la caméra est couvert par une sorte de clappet. Pour introduire la bande de la caméra dedans, il faut tout d’abord pincer légèrement les 2 coins du socket. Ensuite déplacer légèrement le clappet pour laisser une ouverture. Et enfin, placer la bande à l’intérieur avant de la sécuriser contre toute friction ou mouvement en refermant le couvercle. La caméra est maintenant connectée au RPi.

socket_no_band.JPG FIGURE 2.1-Image du socket de la picamera fermé

socket2_no_band__2_.JPG FIGURE 2.2-Image du socket de la picamera ouvert

image_open_socket_proj_p__3_.JPG FIGURE 2.3-Bande introduite dans le socket

image_closed_socket__band__4_.JPG FIGURE 2.4-Bande introduite sécurisée dans le socket fermé

2.1.2 Raspberry Pi

Le système Raspberry Pi modèle B+ est utilisé dans le cadre de ce projet étant fourni par défaut par notre OCI.

2.2 Principe

Le Raspberry Pi a l’avantage ici de pouvoir contrôler une caméra capturant des photos ou vidéo de manières digitale et automatique.

Par rapport au projet H, hormis que le code soit simplifié, quelques lignes de code et un câble sont rajoutés à l’ARDUINO pour le pin SIGNAL. En effet, comme son nom l’indique, un fil est relié entre les pins digitales ARDUINO et RPi. À chaque détection de mouvement, une tension est envoyée à travers la pin digitale (ici D7) de l’ARDUINO. Cette tension passe à travers le fil pour ensuite rejoindre le RPi. Lorsque le RPi détecte cette tension (depuis pin digitale 22), il execute une série d’instructions. Un LED est d’abord allumé à titre indicatif de la réception du « signal » et par conséquent la caméra prend une photo.

Ce n’est qu’à partir d'une série de signaux envoyés qu’il y aurait une série de photos prises. L’ARDUINO de son côté aurait déjà bougé son servo pour mettre la caméra en place pour la prise d’image.

2.3 Procédure

Pour rendre le prototype encore plus autonome, il consiste de former un système Raspberry Pi-Arduino, que seulement lorsqu’un mouvement a été détecté par les capteurs de mouvement connectés à L’ARDUINO UNO, des photos seraient automatiquement prises par la caméra Raspberry Pi alors que le servomoteur lui bougera dans la direction du mouvement détecté comme programmé au projet H.

Il faut tout d'abord traiter le cas du signal c'est-à-dire de l'envoi et récéption de la tension par l'ARDUINO et le Raspberry respectivement. Dans le cas de l'Arduino, un même bloc de code se répète après chque movement du servo, la tension High est donnée à la pin digitale et après 1 seconde, est de tension LOW. Dans le cas du Raspberry, le Raspberry n'allume son camera que lorsque la tension est capté. Il execute alors le code qui est d'ouvrir la camera, prendre une photo, la stocker dans la clé USB par exemple pour ensuite fermer la camera. Si aucune tension n'a été détecté, alors il prévient l'utilisateur. Un LED avec sa résistance sont attachés au Raspberry pour indiquer s'il y a un signal qui est transmis ou pas.

2.4 Montage

2.4.1 Schéma de montage

((https://oci.gyre.ch/blog/public/1617/p/vrinda-parashar/.Projet_P_sketch_m.jpg FIGURE 2.5-Sketch FRITZING du circuit

Un simple câble est à la base de la communication entre l'ARDUINO et le Raspberry (fil rose dans le schéma ci-dessus) à travers lequel passe une tension entre les 2 machines.

2.4.2 Raspberry au prototype de base

Le Raspberry Pi et le Pi Wedge se posent ensemble par-dessus les câblages de l'ARDUINO comme suit.

desordreprojet.JPGFIGURE 2.6- Le désordre avant la conception

proto_dissec.JPG FIGURE 2.7-Prototype avant l'assemblage

proto_amended.JPG FIGURE 2.8- Prototype à l'assemblage

Par rapport à l'artefact du projet H, seuls 3 blocs ont été ajoutés servant de piliers pour porter le Raspberry Pi ainsi qu'un petit cube pour attacher la caméra au servo. Les blocs sont de dimensions 2 cm x 0,7 cm et sont fait de Styrofoam, un type de polysthyrène.

protolargeur.JPG FIGURE 2.8-Les 3 piliers du Raspberry Pi au-dessus de l'ARDUINO

cube_servo.JPG FIGURE 2.9-Cube rattaché au servo portant la caméra

3. Résultats

Le prototype se tient sur une dimension de 33 cm x 24,5 cm x 17 cm.

proto_result.JPG FIGURE 3.1-Prototype final

finalproto_profil.JPG FIGURE 3.2-Vue de profil du prototype après sa conception

3.1 Code

Les codes finaux de ce projet sont accessibles. Voici celui du Raspberry et celui de l'ARDUINO.

Le stockage des images

Il est important tout d'abord d'intégrer une variable ici "i" pour varier le nom de chaque image prise permettant de prendre des photos indéfiniment.

  i = 0
  camera.capture('/media/pi/NANO PRO/ImagePs/image%s.jpg' % i)

La valeur du i sera subsitué au lien à l'aide du % qui permet de réinvoquer une variable dans un nom fixe

 i += 1

La variable augmente de 1 après chaque manipulation soit chaque prise de photo.

La localisation des photos

Par défaut, les photos sont stockées sur le Bureau du Pi mais il est possible de les stocker dans une clé USB directement comme dans ce cas. Il faut donc spécifier dans camera.capture le lien absolue de l'endroit ou les images ou video doivent être places.

Par défaut, le stockage se fait ici:

 camera.capture('/home/pi/Desktop/image%s.jpg' % i)

Nous pouvons stocker sur la clé USB située dans le fichier media du pi:

 camera.capture('/media/pi/<nom_USB>/<fichier_optionnel>/image%s.jpg' % i)

J'ai ajouté un fichier à ma clé où toutes les photos sont rassemblées, mais c'est optionnel si l'intégralité de la clé USB n'est utilisée que pour le stockage.

 camera.capture('/media/pi/NANO PRO/ImagePs/image%s.jpg' % i)

Le nom de ma clé est NANO PRO et de mon fichier ImagePs.

4. Discussion

Le prototype fonctionne comme voulu. Le servomoteur bouge toujours du coté de l'ARDUINO lorsqu'un de ses capteurs de mouvement PIR en détecte un. Le microcontrôleur envoie ensuite une tension à travers la pin digitale désignée (ici D7) qui traverse le fil pour rejoindre l'entrée digitale du Raspberry Pi (pin 22). Le Raspberry execute le code de façon synchronisée et la caméra prend une série de photos de manière illimitée. Ces photos sont ensuite stockées chronologiquement sur la clé USB en périphérique du Raspberry.

La caméra prend une photo seulement quand le Raspberry capte une tension qui est envoyée seulement lors d'une detection d'un mouvement. De ce fait, lorsqu'on quitte la salle pour quelques temps, la caméra ne prend pas de photo mais elle reprend sa série de photos lorsque nous nous approchons du prototype. Par consequent, le concept d'automatisme est prouvé.

Un développement enviseageable du code serait de manipuler l'envoi de la tension comme signe d'avertissement. Par exemple d'implémenter au Raspberry qu'après 5 min d'absence de signal, il arrête sa caméra et envoie toutes les photos à un compte utilisateur pré-défini ou les déposer à un serveur.

En outre, il y a d'autres manières d'améliorer l'image et alternatives quant à l'utilisation de la camera. Il est possible de prendre une vidéo, d'augmenter la luminosité de la photo, sa taille ou tout simplement changer de filtre voire de caméra. En effet, j'ai choisi de prendre une camera standard car mon but était de démontrer et comprendre la communication entre les 2 machines. Un filtre infrarouge peut être enviseageable pour la nuit ou la salle sans lumière, offert par la Raspberry Pi Camera Module - Pi Noir.

5. Conclusion

La communication entre l'ARDUINO et le Raspberry se fait avec succès. Il y a d'autres manières de relier ces 2 machines, chacune d'une puissance admirable et paraissant complexe mais nous venons d'en parcourir une qui ne se tient qu'à un fil. Ces deux projets ensemble m'ont permis d'approfondir plus mes connaissances sur l'ARDUINO et le Raspberry et ainsi de démystifier leur complexité, tant au niveau de l'écriture du code que de pouvoir les relier ensemble.

Bien évidemment ce projet peut être approfondie et ne peut être amélioré en mieux d'une part en introduisant d'autres manières de stocker les photos par envoi d'un mail ou dépôt sur un serveur local accessible.

6. Annexe

Débuter ave le Raspberry Pi (site en anglais) - Connexion au système: http://www.imore.com/how-get-started-using-raspberry-pi

Utilisation de la picaméra avec python: https://www.raspberrypi.org/learning/getting-started-with-picamera/worksheet/