Aller au contenu

Raspberry Pi : fabriquons des trucs!


Messages recommandés

Bon, ce n'est pas encore le tuto, il faut que je fasse les schémas, mais voici déjà une vidéo explicative :

Les schémas et autres arrivent sous peu.

Voici le schéma que j'ai utilisé :

http://www.electronics-tutorials.ws/transistor/tran_4.html

d'autres explications ici :

http://waitwhatquestionmark.wordpress.com/tag/3-3v-to-5v-logic/

pour Rin, j'ai une résistance de 680 Ohms, et pour Rl de 1K

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 321
  • Créé
  • Dernière réponse

Bonjour à tous, comme d'habiture, le tuto est aussi disponible sur mon site

Lire un capteur ultrason HC-SR04 avec un Raspberry Pi

Aujourd'hui, pour mon grand retour après les vacances, un tutos un peu plus orienté robotique. On va utiliser un capteur ultrason HC-SR04 avec notre raspberry chéri pou enregistrer une distance.

Présentation du capteur

Voici donc notre capteur :

Comme d'habitude, je vous conseille de commencer ce tutoriel en faisant un tour du coté de la fiche technique du capteur. C'est ici.

On notera surtout les points suivants :

  • Distance de lecture de 2 à 450cm
  • Tension d'entrée : 5V
  • Angle de lecture : 15° maximum
  • Signal d'initialisation : 10uS
  • Signal de sortie : fonction de la distance :)

Voila pour les données de base de ce petit bébé.

Le matériel

  • Un raspberry Pi, évidemment
  • Un capteur ultrason HC-SR04 (données techniques ci dessus)
  • Une planche de prototypage (ou breadboard)
  • Quelques fils M/F et M/M
  • 1 résistance de 470 ohm
  • 1 résistance de 330 ohm

Ces deux dernières résistances sont particulièrement importante !

En effet, la tension délivrée en sortie par ce capteur sera de 5V. Sachant que notre petite bestiole ne supporte pas le 5V mais uniquement le 3,3V, les résistances nous permettront alors de diviser la tension de sortie pour protéger le Raspberry Pi. C'est donc important, sauf si vous avez un stock conséquent de Raspberry Pi que vous voulez utiliser comme un goret.

"Où trouver le capteur ?" allez vous me dire ... c'est facile ! C'est un capteur assez courant en robotique, donc soit vous passez par un vendeur en ligne de matériel robotique (pololu, alpha crucis, adafruit, etc ... ) ou alors passez par ebay. Personnellement, la plupart du temps, je passe par ebay, parce que les capteurs sont beaucoup moins chers sur ebay, même si les temps de livraison peuvent monter jusqu'à 4 semaines (venir de Chine par bateau, ça prend du temps ... ).

Si je suis pressé, je passe par un site US ou français (même si j'ai eut une mauvaise expérience avec alpha crucis), et je fais une commande de plusieurs éléments pour essayer de rentabiliser un peu les frais de transport.

Les branchements

Le schéma de montage est le suivant :

Ultrasonic-Module-Circuit-e1356208885394 Schéma du montage

Niveau branchement, rien de bien compliqué. Il n'y a qu'un point crucial à respecter : protéger le Raspberry Pi de la tension de sortie du capteur en utilisant les 2 résistances listées plus haut.

  • On branche le pin VCC sur le 5V sur le pin 5V du raspberry
  • Le pin trigger du capteur va sur un pin de data du raspberry pi (dans mon cas le pin 16 - GPIO 23)
  • On place une résistance de 330 ohms entre le pin echo et un pin du raspberry pi (ici le 18 - GPIO24)
  • On relit le Ground du capteur à celui du raspberry pi, en ajoutant une liaison avec le pin echo via une résistance de 470 ohms

Et voila.A part ce double système de résistances pour protéger le raspberry pi, rien de bien compliqué les amis.

Tests de fiabilité

Avant de vous donner mon code, j'ai fait des tests pour voir un peu la fiabilité du bidule. J'avais pas mal d’à-prioris, me disant que vu que c'était de l'ultrason, ce n'était pas super fiable (ce n'est pas comme si des animaux s'en servait pour se déplacer hein ... si ? ). Erreur, dans l'ensemble, c'est pas mal du tout.

IMG_2654-300x200.jpg Tests ultra scientifiques pour évaluer la fiabilité du capteur

J'ai testé son efficacité entre 2 et 140 cm. Vous trouverez ci dessous un tableau des valeurs que j'ai pu récolter (10 mesures pour chaque point de contrôle).

tests-300x132.jpg Les résultats obtenus

Voila, un bon tableau indigeste en cadeau. miam !

Comme vous pouvez le voir, on a globalement des résultats pas mal pour un capteur de cette qualité (il ne coûte pas des milles et des cents) testé dans ces superbes conditions scientifiques.

Ces tests nous apportent au moins une information intéressante : la plupart du temps, on pourra se contenter de quelques mesures, de supprimer la plus petite, la plus grande, et d'utiliser une moyenne des autres, cela afin d'éviter les rares valeurs parasites qui peuvent fausser le résultat.

Voila voila, j'espère que ces tests vous ont servis un peu.

Le code

Et oui, fini les tests, voici donc le code que j'utilise avec ce capteur. Heureusement le site RaspberryPi-Spy.co.uk nous fournit une source tout à fait valable. Il fournit notamment un tuto bien pratique. Voici le code à utiliser pour afficher une fois la distance :

#!/usr/bin/python#+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+#|R|a|s|p|b|e|r|r|y|P|i|-|S|p|y|.|c|o|.|u|k|#+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+## ultrasonic_1.py# Measure distance using an ultrasonic module## Author : Matt Hawkins# Date   : 09/01/2013# Import required Python librariesimport timeimport RPi.GPIO as GPIO# Use BCM GPIO references# instead of physical pin numbersGPIO.setmode(GPIO.BCM)# Define GPIO to use on PiGPIO_TRIGGER = 23GPIO_ECHO = 24print "Ultrasonic Measurement"# Set pins as output and inputGPIO.setup(GPIO_TRIGGER,GPIO.OUT)  # TriggerGPIO.setup(GPIO_ECHO,GPIO.IN)      # Echo# Set trigger to False (Low)GPIO.output(GPIO_TRIGGER, False)# Allow module to settletime.sleep(0.5)# Send 10us pulse to triggerGPIO.output(GPIO_TRIGGER, True)time.sleep(0.00001)GPIO.output(GPIO_TRIGGER, False)start = time.time()while GPIO.input(GPIO_ECHO)==0:  start = time.time()while GPIO.input(GPIO_ECHO)==1:  stop = time.time()# Calculate pulse lengthelapsed = stop-start# Distance pulse travelled in that time is time# multiplied by the speed of sound (cm/s)distance = elapsed * 34000# That was the distance there and back so halve the valuedistance = distance / 2print "Distance : %.1f" % distance# Reset GPIO settingsGPIO.cleanup()

Pour exécuter, il faut exécuter la commande suivante :

sudo python votrefichier.py

On a alors un affichage de ce genre :

ultrasonic.jpgEt hop, magieeeee

Annexe 1 : mettre à jour RPi.GPIO

Un petit tuyau pour certains.

J'ai grave galéré pour réussir à faire fonctionner le script sans erreur. Pourquoi ? A cause de la toute dernière ligne du script :

# Reset GPIO settingsGPIO.cleanup()

Lorsque j'executais le script, j'obtenais ceci :

pi@raspberrypi /var/www/ultrasonic $ sudo python ultrasonic_1.pyUltrasonic MeasurementDistance : 4.4Traceback (most recent call last):  File "ultrasonic_1.py", line 61, in <module>    GPIO.cleanup()AttributeError: 'module' object has no attribute 'cleanup'

Pas top hein ?

En fait, cette erreur est liée à la bibliothèque python RPi.GPIO. Car, surprise... elle n'est pas définitive la dite bibliothèque. La version installée via aptitude est la 0.3.1a-1, et elle n'est pas complète.

Solution 1 : mettez à jour votre distribution :

apt-get updateapt-get dist-upgrade

Solution 2 : bidouillez

Si comme moi vous êtes un blaireau et vous n'avez pas / ne pouvez pas mettre à jour votre distribution , alors heureusement, il existe une méthode de mise à jour.

Allez sur le site de la bibliothèque : https://pypi.python.org/pypi/RPi.GPIO et récupérez l'adresse de la dernière version. Ensuite, il faut la ramener sur le Raspberry Pi. Par exemple :

 wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.2a.tar.gz

Il faut ensuite déziper puis aller dans le dossier qui vient d'être créé :

tar zxf RPi.GPIO-0.5.2a.tar.gzcd RPi.GPIO-0.5.2a/

et là, hop, la petite commande d'installation :

sudo python setup.py install

Et voila, on a mis à jour RPi.GPIO, et surtout, on a corrigé l'erreur bloquante au dessus.

Mais rappelez vous : privilégiez la solution 1 ! c'est plus propre.

Un grand merci à Arnaud Boudou pour son retour à ce sujet.

Annexe 2 : Lisser les valeurs

Comme indiqué plus haut, il peut être utile de relever d'affiler plusieurs valeurs pour diminuer l'impact d'éventuelles erreurs de mesure. (un robot qui croit qu'il lui reste 1m avant le mur alors qu'il ne lui reste que 10 cm... ça peut poser quelques problèmes).

On va donc mesurer 5 valeurs d'affiler, supprimer la plus grande et la plus petite, puis faire la moyenne des 3 valeurs restantes. Cela devrait suffire, si ce n'est pas le cas, n'hésitez pas à faire plus de mesure si nécessaire pour obtenir un résultat le juste possible. Tout dépendra évidemment de la précision recherchée par rapport au temps de mesure demandée. Si votre capteur est fixe, pas de problèmes. Si votre capteur est embarqué sur un robot, là.. il vous faudra une mesure rapidement, donc avec moins de sous mesures.

Je suis encore en train d'améliorer le code pour cette annexe, donc revenez rapidement :)

Lien vers le commentaire
Partager sur d’autres sites

Bon, ce n'est pas encore le tuto, il faut que je fasse les schémas, mais voici déjà une vidéo explicative :

www.youtube.com/watch?v=eZFYTcVAZvU

Les schémas et autres arrivent sous peu.

Je regarderai ca ce soir à la maison (au bureau ca le fait pas trop) mais d'ores et déjà un grand merci !

Lien vers le commentaire
Partager sur d’autres sites

En effet, la tension délivrée en sortie par ce capteur sera de 5V.

Super tuto :)

Par contre la phrase que je viens de citer m'inquiète un peu, puisque mon capteur semble être très similaire dans son fonctionnement et ses caractéristiques. La tension de sortie est-elle indiquée dans un autre document (je ne l'ai pas vue dans la fiche technique) ? Est-ce un résultat d'un test qui tu as fait ? Ou bien est-ce parce que la tension d'entrée est de 5V ?

Mon capteur semble marcher tout aussi bien avec du 3.3V donc c'est avec ça que je l'alimente, ce qui limite le risque de griller Raspi, mais je vais peut-être devoir acheter quelques résistances adéquates pour avoir un montage assez semblable au tien...

Lien vers le commentaire
Partager sur d’autres sites

Salut! C'est un excellent tuto, très détaillé. D'ailleurs c'est une excellente idée d'avoir fait des mesures de précision, il faudrait que j'en fasse également avec le capteur analogique de maxbotix, pour comparer.

J'ai quelques petites remarques/questions :

time.sleep(0.00001)

C'est une nouveauté dans une MAJ, ou j'ai loupé quelquechose? la dernière fois que j'ai essayé je pouvais pas descendre en dessous de 0.01s! On obtient des timings fiables, malgré le system non temps réel du raspberry? Si c'est le cas, ça veut dire qu'on peut finalement

faire de la PWM software de façon fiable!

Pour l'alimentation du capteur, en 5V. Mon capteur prend du 5V en entrée aussi, mais en l'alimentant en 3.3V il sort des signaux logiques 3.3V. Ne serait-ce pas une solution ici? Pour ce genre de capteurs d'après ce que j'ai lu, l'inconvéniant c'est qu'on perd un peu en puissance d'émission et donc en portée. Pour le mien la porté est de 6m, donc de toutes façons si je perds un peu c'est pas trop grave, mais c'est à prendre en compte.

Pour ce qui est de la durée d'une mesure, elle semble assez courte, puisque tu travailles en µS. Avec le maxbotix, on a l'inconvéniant d'avoir une fréquence de rafraichissement plus faible, de seulement 20Hz. C'est suffisant pour un robot, ça fait une mesure toutes les 50ms. Cependant si on voulait prendre 10 mesures pour lisser les valeurs, ça ferait déja 500ms, ce qui ferait trop.

Heureusement, le maxbotix est TRES stable dans ses mesures. quand je l'ai testé, je n'ai jamais, ou presque, vu de mesure aberrante. A tel point que je n'utilise pas de lissage des valeurs (contrairement à mon capteur IR), et si je devais le faire, j'imagine que je me contenterais des 2 dernières valeurs...

En tous cas, très bon tuto, je t'ajoute également dans la liste :)

Lien vers le commentaire
Partager sur d’autres sites

Héhé merci :)

Pour le sleep, il faudra que je vérifie.

J'ai bêtement copié / collé sans relever ça.

sinon pour info, je prépare un tuto où je me sers de ce capteur pour faire un détecteur de mouvement qui prendra une photo avec la caméra du Raspberry Pi en cas de mouvement détecté.

Lien vers le commentaire
Partager sur d’autres sites

[...]

J'ai quelques petites remarques/questions :

time.sleep(0.00001)

C'est une nouveauté dans une MAJ, ou j'ai loupé quelquechose? la dernière fois que j'ai essayé je pouvais pas descendre en dessous de 0.01s! On obtient des timings fiables, malgré le system non temps réel du raspberry? Si c'est le cas, ça veut dire qu'on peut finalement

faire de la PWM software de façon fiable!

[...]

Hello

Sur un Système non temps réel, les timings ne sont absolument pas déterministe, et le sleep correspond plutot a *endors la tâche pendant X temps minimum, puis remet la dans la liste des tâches a exécuter*, et rien ne garanti qu'elle sera appelé pile au bon moment, sachant que tu as toutes celles de l'OS plus les autres en cours qui attendent leur tour aussi, donc pour du pwm c'est a éviter absolument, du moins sans un système temps réel mou au minimum, mais même dans ce cas, ça me semble donner beaucoup de travail au processeur, si un système avec pwm est vraiment nécessaire, autant utiliser un composant dédié qui gérera bien plus de choses de bien meilleure façon, tout en libérant des ressources sur le processeur.

Lien vers le commentaire
Partager sur d’autres sites

[...]

J'ai quelques petites remarques/questions :

time.sleep(0.00001)

C'est une nouveauté dans une MAJ, ou j'ai loupé quelquechose? la dernière fois que j'ai essayé je pouvais pas descendre en dessous de 0.01s! On obtient des timings fiables, malgré le system non temps réel du raspberry? Si c'est le cas, ça veut dire qu'on peut finalement

faire de la PWM software de façon fiable!

[...]

Hello

Sur un Système non temps réel, les timings ne sont absolument pas déterministe, et le sleep correspond plutot a *endors la tâche pendant X temps minimum, puis remet la dans la liste des tâches a exécuter*, et rien ne garanti qu'elle sera appelé pile au bon moment, sachant que tu as toutes celles de l'OS plus les autres en cours qui attendent leur tour aussi, donc pour du pwm c'est a éviter absolument, du moins sans un système temps réel mou au minimum, mais même dans ce cas, ça me semble donner beaucoup de travail au processeur, si un système avec pwm est vraiment nécessaire, autant utiliser un composant dédié qui gérera bien plus de choses de bien meilleure façon, tout en libérant des ressources sur le processeur.

Ne t’inquiètes pas, je connais les limitations d'un OS non temps réel :)

Toutefois, je sais que sous linux on peut avoir de façon statistiquement fiable des sleeps d'environ 10ms (bon, en fait c'est plus compliqué, puisque ce sera en fonction de la fréquence du CPU). Maintenant comme ils parviennent à avoir des sleeps courts, si on peut avoir des délais de l'ordre de la microseconde, la stabilité des délais n'est pas primordiale dans un certain ordre de mesure pour certaines tâches. Je pensais principalement à de la PWM pour gérer de l'éclairage, et l'activation de moteurs. En pratique, ça fonctionne avec des servomoteurs, et dans wiringpi, il y a un module softpwm qui fait de la pwm avec un coût de 0.5% de CPU par GPIO, donc un impact négligeable sur le CPU.

Donc je suis d'accord, on aura pas de la vraie pwm comme avec un µC, mais de là a dire que c'est à éviter, et impossible, je ne suis pas du tout d'accord. Sur l'exemple du servomoteur en PWM logicielle, dans mon cas, ça suffit à orienter un système dans une direction avec une précision de 5-10°. Il y a des soubresauts parfois, mais ça permet de faire le boulot. Maintenant c'est sur que ça n'est pas au niveau de la PWM que sort un Arduino, ou la je n'ai aucun mouvement parasite, et une précision au degré près!

Maintenant, concernant les tâches de l'OS, certes, ce n'est pas "prévisible". Mais en pratique, on peut se débrouiller pour avoir une probabilité énorme que le CPU soit libre pour faire ce qu'on veut dans un intervalle temporel de x millisecondes :)

Donc pour moi ce sera un "ça dépend"!

Ma question reposait justement sur le délai pratique atteignable avec le Pi, car la dernière fois que j'avais fait des recherches, on parlait d'un ordre de grandeur de la milliseconde, et si on arrive a descendre à l'ordre de la microseconde ça change beaucoup de choses!

Au passage, ça n'a rien à voir, mais quelqu'un arrive t'il a accéder à https://www.alpha-crucis.com/ ?

j'ai fait une commande chez eux, mais le statut n'avance pas, et je n'arrive pas à accéder au site.

Lien vers le commentaire
Partager sur d’autres sites

On dirait bien que leur site est offline, en effet...

Leur site remarche. Toutefois, 13J, et la commande n'est pas partie de chez eux...

J'ai une idée de ce qui leur est arrivé : après des recherches sur leur nom de domaine, j'ai vu qu'il a expiré le 23 mai. A mon avis quelqu'un chez eux a oublié de renouveler le .com...

Et dire que dans toute cette histoire, je me suis dit que j'attendrais pour commander les modules caméra, résultat les modules caméra ne sont plus disponibles nulle part avant 12 semaines!

Vous me direz, c'est pas forcément un mal, j'ai une thèse à finir :)

Bref, je confirme également qu'il ne sont pas hyper sérieux chez alpha-crucis, en seulement deux commandes, j'ai déjà un problème de ce genre... et pas de mail pour indiquer le problème... On verra s'ils font un geste commercial!

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir, j'aurais besoin d'un peu d'aide, car grace à vous, je me suis lancer dans ce magnifique défi qu'est ce robot.

Merci pour tout vos tutos, partages, ... On en apprends tous les jours.

Voici mon problème : https://forum.nextinpact.com/topic/166685-boucle-robot-raspberry-capteur-infrarouge-gpio/?p=2768740

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Je re poste (désolé) Merci d'avoir si bien répondu à toutes mes questions ! Cela ma plus que bien aider.

J'ai finalement réussi bien que mon robot ne tourne pas :) Si joint les photos des divers montages, chassie, moteurs, ...

Finalement j'ai un moteurs à l’arriére sur une seul roue et un axe à l'avant avec un autre moteurs démultiplier avec des engrenages. (En gros trois roues motrices :reflechis: )

robot.jpg

Le dernier est bien celui dans un tupperware :iloveyou: (J'en avais marre de faire des châssis :D )

Bien à vous, j'attends vos commentaires.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour tout le monde, je suis débutant en programmation et j'ai que quelque base en électronique mais tous ces tuto me donne envie de faire joujou avec mon Raspberry pi.

J'ai consulté pas mal de forum plus ou moins bien expliqué, je suis en ce moment sur mon premier raspberry pi et j'aimerai en faire un système de vidéo-surveillance à partir d'une webcam, j'ai programmé tout ça avec motion, le tout marche correctement en local en me connectant depuis le navigateur web http://192.168.x.xx:8081, jusqu'ici tout vas bien mais impossible de le consulter à distance (hors local donc à partir d'un autre réseau), j'entent parler partout de SSH mais pour moi c'est chinois, je vois des ouverture de port 22 et 443 etc, j'essaie le tout mais rien n'y fait. bref je suis novice mais avec l'envie d'apprendre. Donc que faire ? j'aimerai aussi pouvoir avoir accès au terminal de commande du raspberry à distance (dans un autre réseau) (en local j'utilise Putty puis vnc pour avoir accès à l'interface graphique).

Pour la suite j'ai commander pas mal de matériel pour faire de la "domotique" (étant en BTS domotique j'ai quelques notion)

Merci =)

Lien vers le commentaire
Partager sur d’autres sites

Je re poste (désolé) Merci d'avoir si bien répondu à toutes mes questions ! Cela ma plus que bien aider.

J'ai finalement réussi bien que mon robot ne tourne pas :) Si joint les photos des divers montages, chassie, moteurs, ...

Finalement j'ai un moteurs à l’arriére sur une seul roue et un axe à l'avant avec un autre moteurs démultiplier avec des engrenages. (En gros trois roues motrices :reflechis: )

robot.jpg

Le dernier est bien celui dans un tupperware :iloveyou: (J'en avais marre de faire des châssis :D )

Bien à vous, j'attends vos commentaires.

Hello!

C'est impressionnant, on dirait que tu as construit une armée de robots!

ce sont des différentes versions du même robot ou alors plusieurs robots différents?

Je n'ai pas bien compris non plus si le robot fonctionne ou pas en fin de compte?

Et j'aimerais bien que tu m'expliques le fonctionnement de ton robot à trois roues motrices :)

Bonjour tout le monde, je suis débutant en programmation et j'ai que quelque base en électronique mais tous ces tuto me donne envie de faire joujou avec mon Raspberry pi.

J'ai consulté pas mal de forum plus ou moins bien expliqué, je suis en ce moment sur mon premier raspberry pi et j'aimerai en faire un système de vidéo-surveillance à partir d'une webcam, j'ai programmé tout ça avec motion, le tout marche correctement en local en me connectant depuis le navigateur web http://192.168.x.xx:8081, jusqu'ici tout vas bien mais impossible de le consulter à distance (hors local donc à partir d'un autre réseau), j'entent parler partout de SSH mais pour moi c'est chinois, je vois des ouverture de port 22 et 443 etc, j'essaie le tout mais rien n'y fait. bref je suis novice mais avec l'envie d'apprendre. Donc que faire ? j'aimerai aussi pouvoir avoir accès au terminal de commande du raspberry à distance (dans un autre réseau) (en local j'utilise Putty puis vnc pour avoir accès à l'interface graphique).

Pour la suite j'ai commander pas mal de matériel pour faire de la "domotique" (étant en BTS domotique j'ai quelques notion)

Merci =)

Le problème à ce moment, ce n'est pas le Raspberry Pi. En fait ce que tu as fait est valale sur un réseau quelconque. Seulement, l'adresse IP de ton Pi est une adresse réseau locale, valable uniquement chez toi. Sur internet tu as une adresse IP publique, celle de ton routeur. Pour que tu puisses voir depuis l'extérieur ton flux vidéo, il faudra, dans ton routeur ou ta box choisir un port réseau, et rediriger les connections de ce port sur l'adresse IP locale de ton Pi. ainsi au lieu de faire http//ton_IP_publique, tu fera http//ton_ip_publice:8000 par exemple, et le routeur redirigera vers l'adresse IP du pi sur le port réseau choisi pour motion.

AU passage, cela s'appelle du NAT. Pour plus d'infos la dessus, je te recommande la section réseau : https://forum.nextinpact.com/forum/9-reseaux-internet-telephonie-et-services-en-ligne/

Pour le SSH, quand tu utilises putty, c'est déjà du SSH. tu tapes alors pi comme utilisateur, puis le mot de passe de l'utilisateur pi.

C'est également possible sur internet, et ça ne fonctionne pas pour le moment pour exactement les mêmes raisons que le flux vidéo : il faut faire du NAT. Cette fois ci tu redirigera probablement le port 23 (généralement utilisé pour SSH) de ton IP publique vers le port 23 du pi.

Bonne chance!

Lien vers le commentaire
Partager sur d’autres sites

Merci, j'arrive enfin à me connecter à distance (en utilisant mon IP externe) en SSH via puTTy et VNC, j'ai aussi sécurisé le ssh avec le programme "fail2ban" qui est très simple à configurer et j'y est ajouté un envoie de mail avec le programme "ssmtp" lors de 3 tentatives incorrect. j'ai également remplacer le port 22 par un autre pour le SSH (mais je pense que j'ai mal fait cette opération, il faut changer le port 22 interne ou externe par un autre supérieur à 1024?)

Parcontre j'ai ouvert le port 80 en interne et externe de la box mais je n'arrive pas à voir ma webcam (j'arrive seulement en local en allant au "http://192.168.xx.x:8081".

J'aimerai aussi sécuriser ce port car j'ai vu sur des site que ce port est important et est souvent attaqué.

Merci je commence à m'y retrouver dans tout ce merdier informatique et j'aime! :).

Lien vers le commentaire
Partager sur d’autres sites

Merci, j'arrive enfin à me connecter à distance (en utilisant mon IP externe) en SSH via puTTy et VNC, j'ai aussi sécurisé le ssh avec le programme "fail2ban" qui est très simple à configurer et j'y est ajouté un envoie de mail avec le programme "ssmtp" lors de 3 tentatives incorrect. j'ai également remplacer le port 22 par un autre pour le SSH (mais je pense que j'ai mal fait cette opération, il faut changer le port 22 interne ou externe par un autre supérieur à 1024?)

Parcontre j'ai ouvert le port 80 en interne et externe de la box mais je n'arrive pas à voir ma webcam (j'arrive seulement en local en allant au "http://192.168.xx.x:8081".

J'aimerai aussi sécuriser ce port car j'ai vu sur des site que ce port est important et est souvent attaqué.

Merci je commence à m'y retrouver dans tout ce merdier informatique et j'aime! :).

Salut!

J'ai fini de corriger mes copies, donc me voila de retour.

Pour le port 80, le problème, c'est que bien souvent, il est utilisé par la box pour son interface web. (http://192.168.1.1). Le port 80 est le port par défaut pour un serveur web.

Dans ton cas, en local tu accèdes au service de la webcam par le port 8081 (le port vient après les : dans l'url). Le plus simple donc, c'est de rediriger le port 8081 externe de ta box vers le port 8081 de ton Raspberry pi.

Au passage, point important! Si ton réseau est en DHCP, le Raspberry pi risque de changer d'adresse si il est déconnecté et reconnecté. Dans ta box, dans l'onglet DHCP, tu dois pouvoir associer une adresse IP précise au Raspberry. En général, la box permet d'associer une adresse mac (adresse hardware unique propre à la carte réseau du Raspberry) à une adresse IP. Donc tu sera toujours en DHCP, avec la box qui donne automatiquement l'adresse, mais le Raspberry pi recevra toujours la même sur ton réseau. C'est ce que je fais chez moi avec mes machines, du coup les invités dans mon réseau ont des adresses variables, mais mes machines ont toujours les mêmes adresses, que je redémarre mon routeur ou pas.

Enfin, pour ce qui est de sécuriser le port 80, tu peux simplement le fermer de l'extérieur, ce qui fait que l'on ne pourra pas accéder à l'interface d'admin de ta box depuis internet, mais uniquement depuis le réseau local. C'est d'ailleurs généralement la configuration par défaut.

Sinon, zorn, je ne t'oublie pas, j'essaie de faire les schémas de montage au plus vite!

Lien vers le commentaire
Partager sur d’autres sites

Merci sky99, je peux maintenant tout visualiser sur le web. j'ai changé le port interne/externe du SSH (initialement 22) et de la webcam (initialement 8081) pour plus de sécurité mais pour le port vnc j'ai entrée une plage de port (5900-5909) es-ce assez sécurisé ou je peux faire en sorte que mieux sécurisé?

Puis je n'ai pas compris pour fermé le port 80 de l'extérieur, car j'ai également un server (lighttpd) auquel je me connecte via le port 80.

J'ai hate de recevoir tout le matériel pour commencer la partie gestion de lumière :p.

Lien vers le commentaire
Partager sur d’autres sites

Je vois que ça ne chôme pas ici, plein de projets divers et variés, c'est cool ^^

Pour ma part j'ai mis en pause depuis quelques temps (beaucoup de projets simultanés "hors Raspi"), mais je compte m'y remettre histoire de "rassembler les morceaux" pour que Raspi soit capable de se déplacer en totale autonomie. J'ai déjà d'un côté ce qu'il faut pour scanner l'environnement, de l'autre le montage adéquat pour le faire rouler, sans oublier l'alimentation par piles rechargeables, donc sur le principe il me reste juste à faire un algo correct, à tout brancher ensemble et voilà :ouioui:

Une fois cet objectif atteint, j'ai enfin trouvé comment le rendre très utile : j'envisage l'achat d'une maison, et je me dis que ça serait cool que Raspi s'occupe de certaines choses en mon absence, voire même qu'il soit capable de jouer l'interface entre moi (ou ma copine, ou des invités) et l'ensemble de la maison. De la domotique, en somme, mais à un niveau plus avancé et plus fun. Par contre, je pense qu'il sera capable de faire ça dans 40 ou 50 ans :ane:

Bref, je vous posterai une vidéo de ses premiers pas tours de roues quand il les aura fait :D

Lien vers le commentaire
Partager sur d’autres sites

Module caméra du Raspberry Pi : présentation et installation

Bonjour à tous! Le module caméra est sorti! A l'heure ou j'écris ces lignes, il est en rupture de stock un peu partout, mais j'ai pu en recevoir un.

Voyons dans un premier temps ce que c'est, puis ensuite comment s'en servir.

Le module caméra est une petite carte additionnelle se connectant au Raspberry Pi par le biais d'une nappe souple (fournie) au port CSI du pi.

Ce module est compatible avec les deux versions (version A et B) du Raspberry Pi. Cette carte contient divers composants électroniques

qui permettent d'utiliser et de commander un capteur d'images 5Mpixels. On pourra prendre des images fixes ou animées depuis le Raspberry pi.

Les résolutions supportées sont :

  • 2592x1944 (5Mpixels) pour une image fixe, en résolution maximale
  • 1920*1080 à 30 images par secondes, résolution maximale à 30 images par secondes (1080p, full HD)
  • 1 280 × 720 jusqu'à 60 images par seconde (720p, HD ready)
  • 640 x 480 à 60 voire 90 images secondes (à vérifier)

D'autres résolutions intermédiaires et inférieures sont supportées. Il est possible qu'on puisse accéder à des modes vidéo de résolution supérieure

en ralentissant la fréquence de capture, c'est à vérifier.

Le module est assez petit, puisqu'il fait environ 24x22x9mm dans ses plus grandes dimensions, nappe non inclue. La nappe (fournie) fait environ une quinzaine de cm.

Pour ceux qui voudraient des mesures plus précises de ce capteur, notre ami Gert van Loo (le Gert de la GertBoard) à produit ce document présentant toutes les cotes et dimensions du caméra board.

Passons maintenant au vif du sujet , avec l'installation du module caméra.

Installation physique du module.

Prenez tout d'abord votre Raspberry Pi, et localisez le port CSI. Sur les modèles B, il est situé entre le port hdmi et port ethernet. Sur le modèle A, il est à la même position, sauf qu'il n'y a pas de port ethernet :).

En bref, prenez votre pi, regardez le de dessus (vous devez voir les puces, les GPIO, etc). Le port HDMI sera à droite, le/les port(s) USB en haut (avec le port ethernet sur le modèle B),

la sortie son et la sortie RCA à gauche, les GPIO en bas à gauche, et enfin le micro USB de l'alimentation en bas à droite.

Il peut y avoir ou non une protection en plastique sur le port. Le cas échéant, enlevez là.

Vous pouvez alors "ouvrir" le port, en levant délicatement la mâchoire du port. Pour ce faire, tirez doucement sur les deux cotés.

La partie foncée du port montera alors d'environ un millimètre.

Avant d'extraire votre module caméra de son sachet antistatique, la fondation Raspberry Pi conseille de se décharger de son électricité

statique, en touchant un objet relié à la terre, comme un radiateur ou un robinet.

Prenez maintenant votre module caméra, et regardez le de "derrière". La nappe est branchée dans le module caméra d'un coté, et de l'autre, vous verrez les broches métalliques de connexion.

Ces broches doivent être tournées vers le port micro USB. Il faut alors faire entrer la nappe dans le port dans ce sens, de sorte que l'autre face, comportant un plastique bleu, soit du coté du port ethernet/USB.

Enfoncez légèrement la nappe, jusqu’à ce qu'elle ne puisse plus avancer (c'est très peu profond), sans forcer.

A ce moment, il faut maintenir la nappe en place, et faire redescendre la partie noire du port CSI, qui bloquera la nappe.

Pour visualiser un peu mieux, je vous conseille cette vidéo :

Installation logicielle

A partir de maintenant, vous pouvez passer à la partie logicielle.

Pour cela, il suffit de se connecter sur votre pi en SSH ou même en local, en lançant un terminal.

IL faudra mettre à jour la distribution :

sudo apt-get updatesudo apt-get upgrade

Ce processus peut être plus ou moins long selon votre connection.

Une fois ceci fait, il faut lancer raspi-config :

sudo raspi-config

Dans la section camera, il faudra cliquer sur enable.

Une fois ceci fini, acceptez de redémarrer, et voila, le module caméra est installé.

Utilisation du module camera

Il existe de nombreuses façons d'exploiter ce module. Je vais rapidement ici vous présenter quelques commandes :

Capturer une image fixe

raspistill -o image.jpg

Cela aura pour effet de capturer une image en résolution maximale et de l'enregistrer dans image.jpg.

capturer une séquence vidéo

raspivid -o video.h264

Par défaut, la durée de la capture est de 5s.

Pour spécifier une durée, il faudra utiliser le paramètre -t, avec la durée en millisecondes :

raspivid -o video.h264 -t 10000

pour plus de détails sur les options de ces deux commandes, tapez :


raspivid | lessraspistill | less

les flèches du clavier permettent de défiler, et q de quitter.

Plus d'informations sont également présentes sur ce billet de la fondation raspberry pi.

Nous verrons plus tard comment streamer, capturer automatiquement des images/vidéos quand

un évènement se produit, etc.

En conclusion, je dirais que le module caméra est un fantastique ajout à un raspberry pi. Son coût est de 25$, et il produit des videos en haute résolution,

permettant tout un tas d'applications. Certes, vous pouvez utiliser une webcam pour capturer de la vidéo. Mais vous trouverez difficilement une webcam full HD

a 25$, de plus vous serez limités à une bien plus faible résolution photo que les 5Mpixels du camera board, et enfin, si l'USB est très pratique, il ne permet pas

des transferts aussi rapides que le module CSI, ce qui fait que votre camera devra compresser automatiquement la video, alors qu'ici on peut travailler en raw.

Et surtout, le module CSI arrive directement dans le GPU du Pi. cela permet de faire des traitements très rapidement, sans la latence induite par la webcam.

Le principal problème actuel, c'est la disponibilité réduite, les stocks sont vides et on annonce 10 à 12 semaines d'attente. J'ai pu avoir le mien sur adafruit,

qui annonçait un peu avant qu'il faudrait attendre 12 semaines. Et du jour au lendemain, ils ont eu des stocks. Par contre un seul module camera par commande!

SI vous commandez chez eux, attention aux frais de port, qui montent vite. En revanche, point positif, pour toute commande de 350$ ou plus, ils offrent

systématiquement un Raspberry Pi modèle B.

Plus tard, je complèterai ce tuto de photos/vidéos, voire des exemples.

A bientôt!

Lien vers le commentaire
Partager sur d’autres sites

En parlant de caméra, je viens de faire un tout petit tuto pour s'en servir avec un capteur ultrason pour en faire un détecteur de mouvement qui prend des photos.

Bonjour à tous,

Après avoir utilisé un capteur ultrason et la caméra du Raspberry Pi lors des derniers tutos, nous allons désormais les coupler pour créer un système de détection de mouvement qui prendra une photo de la « cible » à chaque mouvement détecté.

Le matériel et le montage
  • Un raspberry Pi
  • La caméra Raspberry Pi
  • Un capteur ultrason HC-SR04
  • Une planche de prototypage (ou breadboard)
  • Quelques fils M/F et M/M
  • 1 résistance de 470 ohm
  • 1 résistance de 330 ohm

Pour les détails sur ce capteur et son montage, je vous invite à vous rendre sur le tutoriel qui lui est dédié. C’est par ici.

Nous allons utiliser exactement le même montage, si ce n’est qu’en plus, nous allons utiliser la caméra du Raspberry Pi. Pour savoir comment l’installer, rendez vous ici.

Le code

Le code a utiliser est le suivant :

#!/usr/bin/python# Measure distance using an ultrasonic module# and take a photo using the raspberry pi camera# Author : Yaug / Manuel Esteban# Inspired by : Matt Hawkins# Date   : 04/06/2013# Import required Python librariesimport timeimport RPi.GPIO as GPIOimport datetimefrom subprocess import call# Use BCM GPIO references# instead of physical pin numbersGPIO.setmode(GPIO.BCM)# A couple of variables Define GPIO to use on Pi ---------------------GPIO_TRIGGER = 23EXIT = 0 # Infinite loopGPIO_ECHO = 24lastdistance = 0.0sensitivity = 10 #sensitivity %# Set pins as output and inputGPIO.setup(GPIO_TRIGGER,GPIO.OUT)  # TriggerGPIO.setup(GPIO_ECHO,GPIO.IN)      # Echo# Set trigger to False (Low)GPIO.output(GPIO_TRIGGER, False)# Allow module to settletime.sleep(0.5)# Send 10us pulse to triggerdef measure():  GPIO.output(GPIO_TRIGGER, True)  time.sleep(0.00001)  GPIO.output(GPIO_TRIGGER, False)  start = time.time()  while GPIO.input(GPIO_ECHO)==0:    start = time.time()  while GPIO.input(GPIO_ECHO)==1:    stop = time.time()  # Calculate pulse length  elapsed = stop-start  # Distance pulse travelled in that time is time  # multiplied by the speed of sound (cm/s)  distance = elapsed * 34300  # That was the distance there and back so halve the value  distance = distance / 2  #print "Distance : %.1f" % distance  return distancedef measure_average():  count = 1  # Reset GPIO settings GPIO.cleanup()  distance = 0  while ( count <= 3 ):    distance = distance + measure()    time.sleep(0.1)    count = count + 1  distance = distance / 3  return distancetry:  # Never ending loop -----------------  while EXIT == 0:    distance = measure_average()    if lastdistance <> 0.0:      minDiff = lastdistance * (100 - sensitivity) / 100      maxDiff = lastdistance * (100 + sensitivity) / 100      if distance < minDiff or distance > maxDiff:        print "on prend une photo"        t = datetime.datetime.now()        timeStr = t.strftime('%Y%m%d-%H%M%S')        call (["raspistill -o image_"+timeStr+".jpg -t 100"], shell=True)        time.sleep(0.2)      #print "minDiff : %.1f" % minDiff      #print "maxDiff : %.1f" % maxDiff    print "distance : %.1f" % distance    print "last distance : %.1f" % lastdistance    lastdistance = distanceexcept KeyboardInterrupt:  # Reset GPIO settings  GPIO.cleanup()

On lance ensuite le script de la manière suivante :

sudo python detector.py

Et hop le script va tourner en boucle, et prendre une photo dès qu’il détecte une variation de distance importante.

Voici le genre d’affichage qu’on obtient

ultrasonic-1024x576.jpg

Affichage du script

Les images se trouvent dans le même dossier sous la forme « image_20130617-071154.jpg ».

Personnaliser le script

Pour l’adapter à vos besoins, vous pouvez modifier le code autant que vous le souhaitez. Les variables qui peuvent vous intéresser sont les suivantes :

  • sensitivity : permet de régler la sensibilité du capteur, en pourcentage. Essayez d’abaisser ce pourcentage voir si cela n’est pas trop sensible. Plus c’est bas mieux c’est, mais vu qu’avec son capteur, on peut avoir quelques mauvaises mesures dans le lot.
  • time.sleep(0.2) : à la ligne 83. Cette ligne est importante, car sans l’avoir, la plupart des photos sont juste noire, et pour cause, du coup, le buffer n’a pas le temps de se vider dans le fichier image. Vous pouvez tester d’abaisser cette période morte pour accélérer les choses.
  • timeStr : Format de la date qui sert pour le fichier.

Pour un peu plus de propreté, vous pouvez déplacer les photos dans un autre dossier.

Autre astuce : si vous avez installé un serveur de mail, vous pouvez envoyer un email avec la photo prise à l’intérieur. Mais du coup… attention, pensez à sortir votre animal de compagnie de la pièce si vous ne voulez pas vous faire flooder de mails dans la journée icon_smile.gif

Si vous avez une question ou une amélioration

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Bravo pour ce topic plus qu'instructif. j'ai comme projet de faire une "sorte" de tablette avec le raspberry, je ne connais pas grand chose en prog (voir rien du tout) mais me rappel de mes notion electronique ainsi que loi des mailles ou des noeud^^

afin de rendre autonome le tout je voudrais votre avis sur cette batterie qui me permettrai d'alimenter:

1- le rasp en 5V

2- l'écran tactile en 12V

Merci de vos conseil et de toute les idées que vous avez fait naître.

De la part d'un jeune Padawan...(en mode Jimmy neutron)

http://www.makibadi.com/gadgets/electroniques/chargeurs-et-piles/batteries-li-ion/batterie-super-rechargeable-li-ion-12v-9800mah-sortie-usb-5v-dc-13000mah.html

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, j'ai un petit soucis pour la vidéo, j'ai une caméra , j'aimerai pouvoir la visionner grâce à mon RPI sauf que elle à une entrée RCA et le RPI a une sortie RCA donc je ne peux pas relié celui de la caméra au RPI car ça ne marchera pas, j'ai lu qu'il existait des adaptateur RCA/USB mais ne connaissant rien en connectique je me tourne vers vous.

J'ai vu ceci http://www.ebay.fr/itm/ADAPTATEUR-CONVERTISSEUR-RCA-USB-2-0-VIDEO-AUDIO-VHS-DVD-TV-PS3-WII-XBOX-360-DVR-/360674654093?pt=FR_Image_son_C%C3%A2bles_audio_adaptateurs&hash=item53f9e2778d est-il compatible avec debian? et surtout me sera t'il utile?

Lien vers le commentaire
Partager sur d’autres sites

...

Super tuto, je l'ai ajouté à l'index :)

Bonjour,

Bravo pour ce topic plus qu'instructif. j'ai comme projet de faire une "sorte" de tablette avec le raspberry, je ne connais pas grand chose en prog (voir rien du tout) mais me rappel de mes notion electronique ainsi que loi des mailles ou des noeud^^

afin de rendre autonome le tout je voudrais votre avis sur cette batterie qui me permettrai d'alimenter:

1- le rasp en 5V

2- l'écran tactile en 12V

Merci de vos conseil et de toute les idées que vous avez fait naître.

De la part d'un jeune Padawan...(en mode Jimmy neutron)

http://www.makibadi.com/gadgets/electroniques/chargeurs-et-piles/batteries-li-ion/batterie-super-rechargeable-li-ion-12v-9800mah-sortie-usb-5v-dc-13000mah.html

Salut!

C'est une possibilité, mais il faudra vérifier que les deux tensions (12v et 5v) seront disponibles en même temps.

Une autre solution, c'est une source unique de tension 12V, et un convertisseur 5V efficace :)

Bonjour, j'ai un petit soucis pour la vidéo, j'ai une caméra , j'aimerai pouvoir la visionner grâce à mon RPI sauf que elle à une entrée RCA et le RPI a une sortie RCA donc je ne peux pas relié celui de la caméra au RPI car ça ne marchera pas, j'ai lu qu'il existait des adaptateur RCA/USB mais ne connaissant rien en connectique je me tourne vers vous.

J'ai vu ceci http://www.ebay.fr/itm/ADAPTATEUR-CONVERTISSEUR-RCA-USB-2-0-VIDEO-AUDIO-VHS-DVD-TV-PS3-WII-XBOX-360-DVR-/360674654093?pt=FR_Image_son_C%C3%A2bles_audio_adaptateurs&hash=item53f9e2778d est-il compatible avec debian? et surtout me sera t'il utile?

Techniquement, il s'agit de pouvoir capturer un flux vidéo provenant du RCA par un périphérique de capture USB. Pour cela il faudra bien sur non seulement vérifier la compatibilité linux, mais également que ça a été compilé pour raspbian... Maintenant, les périphériques utilisant les standards de l'USB passent sans problème (par exemple, avec les webcam utilisant le protocole USB classique ne nécéssitent même pas de pilotes spécifiques!)

Bonne chance :)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...