Expérimentation Raspberry PI – épisode 3

Dans l’épisode précédent, nous avons joué avec la sensibilité de la caméra et obtenu quelques images concluantes. Dans cet épisode nous passons en mode vidéo.

Contrairement à ce que je pensais, la caméra NoIR couplée à notre illumination avec 8 LED de bonne puissance permet de prendre des vidéos tout à fait acceptables dans le noir. Voici le programme pour ce faire.

import time
import RPi.GPIO as GPIO
import picamera

# Globales
capture_time = 10

GPIO.setmode(GPIO.BCM)
# Preparation capteur PIR
PIR_PIN = 14
GPIO.setup(PIR_PIN, GPIO.IN)
# Preparation illumination LED
ILL_PIN = 15
GPIO.setup(ILL_PIN, GPIO.OUT)

# Fonction mouvement detecte
def capture(canal):
 global capture_time
 heure = time.strftime("%y-%m-%d %H:%M:%S")
 print heure + " capture " + str(capture_time) + "s lancee"
 fichier = "/home/pi/capture/" + heure + ".h264"
 with picamera.PiCamera() as camera:
  camera.resolution = (640, 480)
  GPIO.output(ILL_PIN, GPIO.HIGH)
  camera.start_recording(fichier) 
  camera.wait_recording(capture_time)
  camera.stop_recording()
  GPIO.output(ILL_PIN, GPIO.LOW)
  print time.strftime("%y-%m-%d %H:%M:%S") + " capture faite avec gain " + str(camera.analog_gain)

# Boucle principale
print time.strftime("%y-%m-%d %H:%M:%S") + " Demarrage"
try:
 GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback = capture, bouncetime = (capture_time * 1000 + 1000))
 while 1:
  time.sleep(300)
except KeyboardInterrupt:
 print time.strftime("%y-%m-%d %H:%M:%S") + " Interruption clavier"
finally:
 GPIO.cleanup()
 print time.strftime("%y-%m-%d %H:%M:%S") + " Sortie"

C’est encore plus simple. Sur détection de mouvement on lance une capture de 10s (capture_time). Notez que l’on utilise l’option bouncetime dans add_event_detect pour éviter un re-déclenchement pendant les 10s de capture. Au passage cela évite le problème de l’entrée et sortie généré par le capteur PIR.

Le résultat est excellent. En 640×480 on utilise toute la surface du capteur et les fichiers encodés en h264 sont légers (2 Mo).

L’exposition est correcte en quelques images et la caméra s’en sort très bien, voici une image extraite d’une visite en pleine nuit.

2015-08-05-02

Dans les problèmes restants nous avions le chargeur / batterie USB alimentant le PI. Nous étions allés jusqu’à faire un petit montage pour dissiper 125 mA dans des résistances sur une base régulière (pilotage par GPIO et transistor) afin de conserver le chargeur actif.

Finalement la batterie initiale était défectueuse, et elle a été remplacée par une Anker Astro E1 (5200 mAh, plus petite et largement suffisante), une marque plus sérieuse. Problème réglé, pas de coupure intempestive, pas de bidouille requise.

Anker Astro E1

Tous les problèmes sont corrigés, ne reste qu’à positionner le tout dans un endroit sympa pour capturer autre chose que des chats du quartier 😉