Shopping List Machine : Python, Code-barres EAN13, SQLite et imprimante thermique

A l’ère du « drive », l’intérêt de cette Shopping List Machine peut laisser dubitatif mais une chose est sûre : au travers de la réalisation de ce projet, vous en apprendrez beaucoup sur des notions variées. Les concepts impliqués sont denses et ne pourront être que survolés mais l’essentiel nécessaire pour se lancer est ici synthétisé.

La machine Shopping List composée d’un Raspberry, d’un scanner sans fil, d’une enceinte et d’une imprimante thermique

Mais avant d’entrer dans les détails techniques, formulons les exigences de la Shopping List Machine…

Continuer la lecture de « Shopping List Machine : Python, Code-barres EAN13, SQLite et imprimante thermique »

Caméra de vidéosurveillance avec motion

Motion
Un système de vidéosurveillance avec motion

On a vu comment ajouter la vision au Raspberry Pi dans l’article dédié au module Pi caméra. On dispose donc d’un périphérique de capture d’images/vidéos qu’on peut utiliser à l’aide de commandes éventuellement insérées dans un script shell ou Python : c’est chouette. Mais il y a encore plus chouette : créer un système de vidéosurveillance avec motion.

Les usages sont multiples et je ne vais pas philosopher là-dessus, je suis certain que vous saurez trouver l’utilité de ce système. En tout cas, à la fin de ce tutoriel, vous serez en mesure :

  • de visualiser en temps réel le streaming vidéo de votre Raspberry Pi depuis votre smartphone ;
  • déclencher l’enregistrement vidéo et/ou être alerté par mail sur détection de mouvements.

Motion est l’outil qui va permettre de diffuser le flux vidéo en streaming, de capturer des images et des vidéos provenant d’une ou plusieurs caméras.

Installation de motion

Commençez tout d’abord par mettre à jour Raspbian avec la commande :

Maintenant, installons motion et les paquets nécessaires :

Pour demander au noyau le chargement d’un module (le drivers broadcom (bcm) vidéo for linux (v4l)) , taper la commande :

Vous devriez normalement disposer du matériel /dev/video0. Pour que le module bcm2835-v4l2 soit automatiquement chargé au démarrage par le noyau, ajoutons le au fichier /etc/modules :

Oui, c’est une commande élégante pour ajouter bcm2835-v4l2 en fin de fichier /etc/modules.

Configuration de motion

Tout d’abord, pour que motion puisse s’éxécuter en tant que processus d’arrière plan, éditez le fichier /etc/default/motion et modifiez la ligne suivante à yes :

Ce paramètre modifié, motion pourra être lancé et l’essentiel de la configuration est à réaliser dans le fichier /etc/motion/motion.conf. Editez le fichier de configuration :

Dans ce fichier, on pourra apporter les modifications suivantes

Les principales modifications portent sur les paramètres suivants :

  • Décommenter la ligne logfile /tmp/motion.log pour enregistrer les logs ;
  • Effectuer une rotation de l’image selon les besoin (0, 90, 180 et 270), ici : rotate 180 ;
  • Ajuster la largeur/hauteur en pixels de l’image : width 1280 et height 720 ;
  • Le port d’écoute du serveur web offrant le flux viédo : stream_port 8081 ;
  • Ne pas restreindre l’accès au streaming à la machine locale uniquement :  stream_localhost off ;
  • Activer l’authentification Digest : stream_auth_method 2 ;
  • Configurer les credentials (login/password) : stream_authentication username:password ;
  • Afficher un texte en bas à gauche : text_left P3TCH CAMERA %t.

Pour lancer motion, taper la commande :

Désormais, un point rouge s’allume sur le module caméra… ça tourne ! Il est possible de se connecter à l’URL : http://192.168.1.123:8081. Après authentification, on visualise le flux vidéo en tant réel.

Si vous souhaitez désativer la LED rouge qui s’allume au démarrage de motion, c’est dans le fichier /boot/config.txt que ça se passe avec le paramètre : disable_camera_led=1.

Vous pourrez découvrir que le fichier de configuration permet un paramétrage assez fin de la caméra camera les zones de détection, la luminosité, les paramètres des enregistrements,… le site officiel Motion est exhaustif sur les options du fichier de configuration.

Remarque : A ce stade, cela fonctionne mais vous devriez rencontrer une erreur au premier mouvement détecté par la caméra. En observant les logs renseignés dans le fichier /tmp/motion.log, on s’apercoit qu’il s’agit d’un problème de permission lors de l’accès au répertoire /var/lib/motion (voir extrait ci-dessous).

Pour résoudre ce problème, il faut rajouter les droits adéquats à l’utilisateur sous lequel tourne motion. Pour cela, tapez la commande :

C’est donc l’utilisateur pi qui est utilisé. La commande suivante nous renseigne sur les permissions du répertoire en question :

Ajoutez à « other » le droit en écriture avec la commande :

Désormais, motion ne s’interrompera plus suite à la détection de mouvements puisqu’il pourra écrire dans le répertoire adéquat les vidéos d’enregistrements.

 

 

Chuck Norris Machine : script Python et GPIOs

Les concepts matériels étant présentés dans l’article 1/2, il est temps d’aborder le côté logiciel du projet. La lecture préliminaire du premier article est recommandée pour comprendre plus facilement le développement du script Python qui sera détaillé ici pour utiliser les GPIOs du Raspberry Pi.

L’utilitaire fortune au cœur du système

Avant d’entrer dans les détails du code, commençons par aborder la commande fortune sur laquelle s’appuie le script Python. La commande fortune affiche un message choisi au hasard parmi une source de citations. Il peut s’agir de proverbes, citations de célébrités , de blagues ayant attrait à l’informatique ou la programmation. On peut évidemment créer sa propre source. Continuer la lecture de « Chuck Norris Machine : script Python et GPIOs »

Chuck Norris Machine : LCD HD44780 et thermal printer

Guidé par le magazine « Linux Inside – Raspberry pour les débutants » dans la découverte de ce nano ordinateur, l’un des tutoriels proposait l’utilisation d’un écran LCD pour afficher les informations météo de sa ville…  Ce tutoriel me paraissant accessible, je me suis donc orienté sur l’utilisation de l’écran LCD HD44780 1602 (16 caractères x 2 lignes) pour la première expérimentation des GPIOs de mon Raspberry Pi.

L’art. 1/2 s’intéresse aux aspects « bas niveau » du reverse engineering de la Chuck Norris Joke Machine. Ici sont détaillées toutes les notions nécessaires avant d’aborder, dans le second article, le code python qui pilotera la machine.

Bon, la météo c’est chouette mais pas passionnant et on se lasse assez vite du contenu affiché. En revanche, une bonne blague Chuck Norris, c’est nettement plus drôle (si tant est que les blagues Chuck Norris vous fassent marrer) et davantage adapté pour promouvoir son projet une fois finalisé qu’une température/hygrométrie. Parallèlement, j’ai découvert l’utilitaire « fortune » disponible sur les systèmes de type Unix et l’idée était lancée… nom de code : « Chucky Project ».

(Rétro)Spécification des exigences

La devise : Laugh and go ! Pour ce projet, il est question d’afficher, une blague Chuck Norris choisie aléatoirement parmi un gisement de Chuck Norris Fact. Selon la qualité de la blague, l’utilisateur peut (ou non) en demander l’impression. Continuer la lecture de « Chuck Norris Machine : LCD HD44780 et thermal printer »