Live streaming motorisé

Un version 4 est en cours de réalisation pour Raspbian-stretch et Raspberry pi 3

Matériel nécessaire

Ce qui donne une fois les servo-moteurs montés dans le pan tilt :

montage

Et le montage complet :

montage-fini

montage-fini

La méthode la plus efficace et la plus simple pour le streaming que j'ai testé est celle utilisant MJPG-Streamer, nous allons donc télécharger ce programme et le dépendances, et le construire.

Considérons que le Raspberry est à jour et le SSH activé, sinon suivez ce tuto en premier.

Programmer l'Arduino :

On le programme par le port série (port USB d’un pc). on le branche donc sur notre pc.

Commençons par télécharger l’ IDE Arduino, une fois installé lancez le, vous devriez avoir ceci :

Image non disponible

Allez dans « Outils »

Puis « Type de carte », et choisissez Arduino nano :

Image non disponible

Toujours dans « Outils » vérifiez ou choisissez le port sur lequel est branché l'Arduino:

Image non disponible

Maintenant on supprime tout ce qu'il y a dans la fenêtre de l'IDE et on y copie le code suivant:

Le programme de l'Arduino

Le Raspberry étant multitâche (micro-processeur), il ne consacre pas 100% de son temps à votre programme en python, ce qui cause certaines irrégularités dans le signal PWM transmis au servomoteur.

On utilise donc un Arduino pour contrôler les servo-moteurs ou autre, Adafruit a sortie ceci pour le Raspberry.

J'utilise un Arduino car j'en ai sous la main, et pour 2 servos c'est suffisant, sinon la carte Adafruit permet de contrôler 12 servos par I2C.

Voici le programme à téléverser dans l'Arduino :

servocam.ino :

Puis on téléverse le programme en cliquant sur la flèche :

Image non disponible

Il est simple, dés que le programme servo.py sur le Raspberry pi envoi une commande par la com série, il la lit et exécute l'action en fonction de la commande, ici , 1, 2, ... ou 5.

Quand cela est fait, on peut débrancher l'Arduino du pc et le rebranché au Raspberry pi. passons au Raspberry maintenant

*************************************************************************************************************************

Une fois le programme de l'Arduino téléversé, vous pouvez passer au step 9 pour une installation automatique, sinon on continue ...

*************************************************************************************************************************

Installation de MJPG-Streamer sur le Raspberry Pi :

Dans un premier temps on installe subversion et les dépendances pour MJPG-Streamer, pour cela on tape dans le terminal:

sudo apt-get install subversion libjpeg8-dev imagemagick libv4l-dev -y

Puis on crée le lien symbolique manquant:

sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h

Ensuite on télécharge MJPG-Streamer :

svn co https://svn.code.sf.net/p/mjpg-streamer/code/

on se rend dans le dossier :

cd code/mjpg-streamer

on construit le programme :

make mjpg_streamer input_file.so output_http.so

puis

sudo cp mjpg_streamer /usr/local/bin

et

sudo cp output_http.so input_file.so /usr/local/lib/

et enfin

sudo cp -R www /usr/local/www

Voilà pour l'installation de MJPG-Streamer.

Pour tester tout ça, dans votre terminal, vous tapez la commande suivante qui lance la prise de photo (dans le dossier tmp pour le moment):

raspistill --nopreview -w 1024 -h 760 -q 40 -o /tmp/pic.jpg -tl 100 -t 600000 -th 0:0:0

puis dans un second terminal, lancez le server MJPG-Streamer avec la commande suivante :

LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp -n pic.jpg" -o "output_http.so -w /usr/local/www"

Maintenant ouvrez dans votre navigateur cette adresse : http://192.168.XXX.XXX:8080 (remplacez par l'adresse ip de votre Raspberry pi) si vous êtes en SSH ou http://localhot:8080 si vous êtes en local.

Vous tombez sur la page d'accueil du serveur MJPG-Streamer comme ceci :

image non dismonible

Vous pouvez tester sur cette page les différentes méthodes, le dossier se trouve sur le pi dans /usr/local/www/, il y a les exemples des pages HTML.

si tout est ok, on va supprimer le dossier d'installation :

cd /home/pi

et

sudo rm -r /home/pi/code

On va également copier une page web d'exemple et la renommer en : cam.html

sudo cp /usr/local/www/stream_simple.html /usr/local/www/cam.html

Installation des outils et lidrairies pour Python et de git

On tape:

sudo apt-get install python-dev python-openssl python-pip git -y

puis

sudo pip install psutil && sudo pip install pyserial

Installation d'Apache et PHP

sudo apt-get install apache2 php5 libapache2-mod-php5 php5-mysql -y

Puis on se rend dans le dossier html:

cd /var/www/html/

On enlève la page d'accueil d'apache

sudo rm index.html

On va donner les droits au dossier web à l'utilisateur pi: (pour un site en local, sinon faut passer par des liens symboliques et sécuriser apache)

sudo chown www-data:pi /var/www/html/

Puis

sudo chmod 770 /var/www/html/

Le fonctionnement

les boutons sur la page web envoient une commande au programme servocam.py par un socket TCP (par le réseau)

Le programme servocam.py qui est lancé au démarrage du pi, écoute le port attribué au socket et exécute les instructions envoyées par la page web .

Les codes sont consultable sur mon github si vous voulez les consulter

Mise en place de la page web

on va télécharger le site web depuis github :

cd /home/pi

puis

git clone https://github.com/weedmanu/Camera-pi-LiveStream-width-control-NEW.git

Puis on copie le dossier du site web dans /var/www/html

mv /home/pi/Camera-pi-LiveStream-width-control-NEW/LiveStream -t /var/www/html/

Et on supprime le dossier :

sudo rm -r /home/pi/Camera-pi-LiveStream-width-control-NEW

On ajoute le programme servocam.py au démarrage du pi, il écoute les boutons et agit en fonction.

sudo nano /etc/rc.local

Puis ajoutez ces lignes avant exit :

python /var/www/html/LiveStream/prog/servocam.py

comme ceci :

image non disponible

Puis on redémarre le pi:

sudo reboot

Maintenant tapez cette adresse dans votre navigateur :

http://192.168.XXX.XXX/LiveStream/

Bien sur, on remplace 192.168.XXX.XXX par l'adresse ip de son Raspberry pi.

Voila ce que cela donne :

Quand le livestreaming n'est pas activé :

pageweb

Quand le livestreaming est activé :

pageweb

Quand on prend une photo :

pageweb

Installation automatique

Vous avec fait les steps 1, 2 et 3 alors on y va :

on créer le fichier install.sh :

cd /home/pi

puis

nano install.sh

on copie ( click sur le script, Ctrl a puis Ctrl c ) le script suivant et on le colle dans nano (clic droit et coller) cela prend quelques secondes quand le script est long, Ctrl X pour quitter et enregistrer.

install.sh

On le rend exécutable :

chmod +x install.sh

Et on le lance :

sudo ./install.sh

Et on patiente ....