Jump to content

Yaug

INpactien
  • Content Count

    41
  • Joined

  • Last visited

About Yaug

  • Rank
    Ewok
  1. Cool de voir tes projets revenir. Par contre, pour les reportages, je crois que tes liens ne mènent plus vers les reportages que tu souhaitais. Ou alors j'ai pas trop saisie ce que tu voulais montrer En tout cas félicitation Docteur !
  2. Héhéhé ! vivement ton retour. J'aurais quelques tutos sympa aussi à mettre en place, le temps de finir un gros projet au taff, et je publierais du tuto de capteur IR notamment
  3. Bonjour, pourquoi ne pas brancher sur plusieurs GPIO ? Et sinon, en général, on passe par un MCP3008 ou un MCP23017 pour multiplier les GPIOs et donc les montages connectés dessus, ce qui ne pose aucun problème particulier.
  4. 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 montageUn 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 codeLe 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 Affichage du script Les images se trouvent dans le même dossier sous la forme « image_20130617-071154.jpg ». Personnaliser le scriptPour 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 Si vous avez une question ou une amélioration
  5. 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é.
  6. merci :) C'est parce qu'il est alimenté en 5V et que potentiellement il ressort aussi du 5V, je n'ai plus la source sous la main malheureusement ...
  7. 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 : Image du capteur de face Image du capteur de dos 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 : 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. 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). 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 : Et 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 :)
  8. Pour une raison peut être bête : la fondation Raspberry Pi déconseille l'utilisation prolongée du 5V du Raspberry Pi Je ne suis pas un expert, loin de là, mais je crois avoir lu qu'une alim 5V externe sera plus stable et/ou sécurisée que celle du 5V du Raspberry Pi. Après, si tu as des détails / réponses plus fiables, n'hésite pas
  9. En fait si tu regardes ce schéma : http://blog.idleman.fr/wp-content/uploads/2012/08/image22.png Ce qu'il suggère, c'est de ne pas pomper les 5V depuis le Raspberry Pi (ce qu'il faut éviter au maximum dans un montage long terme), mais de les fournir via une alim externe 5V (tout en reliant la masse de cette alim avec celle du raspberry). C'est mieux là ?
  10. Salut. Pour la carte relai, un très bon tutoriel est disponible ici : http://blog.idleman.fr/?p=1623
  11. Salut, j'ai eut la chance de rencontrer Tomas diez, un des responsables du projet, lors de l'ouverture du FabLabLux, le premier Fab Lab au Luxembourg. Ce projet est porté par les FabLab de Barcelone. A noter qu'ils ont lancé une campagne kickstarter pour financer un premier lot : c'est ici Un projet bien sympa, que je soutiens évidemment.
  12. Mais heu ! Je suis en train de finaliser mon tuto pour lire une distance avec un capteur HC-SR04. CépoZuste ! :) Merci pour ton tutoriel ! Le miens est en python, ça permettra de varier les sources, et en plus, j'ai fait un tableau de test de fiabilité pour plusieurs distances.
  13. Ils annoncent avoir un produit en stock, t'envoies ta commande, et le jour de la réception, t'envoies un mail pour te rembourser un produit qu'ils n'avaient en fait pas en stock ... Perso ça m'a bien soulé, j'ai pris chez eux car leurs frais de port étaient moins cher, et au final, j'ai du me rabattre sur pololu avec les frais de port qu'on leur connait. Du coup.. j'ai payé 2 fois des frais de port. et apparemment, vu ce que j'ai trouvé sur plusieurs blogs, ça leur arrive très souvent de dire qu'ils ont un produit en stock et en fait... ils ne l'ont pas.
  14. Pour alpha crucis après le sale coup qu'ils m'ont fait sur ma livraison, je ne passe plus part eux. Intéressant ou non ! Surtout qu'il y a de nombreux retour similaire, quand on est pas une entreprise, ils nous snobent. Donc adios.
  15. simple à retenir, c'est toi qui a voté pour venir à l'aPIro à Metz ? :)
×
×
  • Create New...