raspberry pi

3 133 vues

Publié le

a idea about raspberry pi and some project to, manipulate this micro pc, i like the presentation so that's why i make this slide on order to share this tuto, it can helps you and change your life :p

Publié dans : Ingénierie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
3 133
Sur SlideShare
0
Issues des intégrations
0
Intégrations
7
Actions
Partages
0
Téléchargements
293
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

raspberry pi

  1. 1. Mohamed Bouhamed To be human you must to be Geek Raspberry PI & Arduino, domotique, robotique, et pleins de trucs en “ique” Année 2014­2015 Geek
  2. 2. Mohamed Bouhamed To be human you must to be Geek Sommaire : • Raspberry PI ~ 01 : Présentation • Raspberry PI ~ 02 : Exploration technique • Raspberry PI ~ 03 : Brancher et installer le Raspberry PI • Raspberry PI ~ 04 : Configurer en serveur • Raspberry PI ~ 05 : Protéger notre précieux • Raspberry PI ~ 06 : Utiliser le GPIO et Interagir avec le monde réel • Raspberry PI ~ 07 : Allumer/éteindre une vraie lampe OU comment faire de la domotique low cost. • Raspberry PI ~ 08 : Jouer avec les ondes radio • Raspberry PI ~ 09 : Créer une interface vocale • Raspberry PI ~ 10 : Commander le raspberry Pi par radio • Raspberry PI ~ 11 : Relier à un écran et afficher du texte • Raspberry PI ~ 12 : Allumer des prises à distance • Raspberry PI ~ 13 : Détecter l’ouverture des portes et fenêtres • Raspberry PI ~ 14 : Surveiller les performances du rpi depuis le web • Raspberry PI ~ 15 : Créer sa propre prise radio (et autres périphériques) pour 6€ • Raspberry PI ~ 16 : Mieux comprendre les pins avec Raspin’s • Raspberry PI ~ 17 : Un mini écran pour 2 2€ • Raspberry PI ~ 18 : Construire une sonde de température radio pour 7 € • Raspberry PI ~ 19 : Optimisation, trucs & Astuces • Raspberry PI ~ 20 : Créer un tableau de bord connecté au net (ou comment augmenter le nombre de GPIO) • Raspberry PI ~ 21 : Yana, un nouveau coeur domotique • Raspberry PI ~ 22 : Créer une porte domotique (Partie 1) • Raspberry PI ~ 23 : Créer une porte domotique (Partie 2) Année 2014­2015 Geek
  3. 3. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 01 : Présentation: Vous est il déjà arrivé de désirer ardemment quelque chose sans réellement savoir quelle utilisation vous en feriez ? C’est mon gros problème avec le raspberry pi… Le raspberry pi c’est quoi? Le raspberry Pi c’est, pour faire court, un pc de la taille d’une carte de crédit, pouvant supporter une distribution linux, pour le prix de …30 euros (+-10€). Le pi dispose de nombreux port/prises/capteurs , usb, ethernet, bluetooth … Vous l’aurez compris, les applications de ce genre de matos sont nombreuses (et peu coûteuses) d’ou l’objet de ma convoitise, et celle de quelques centaine de milliers de geeks. Imaginez les applications que vous pourriez faire d’un mini serveur dédié portable à 30€ !! Domotique : installer des serveur raspberry sur chaque machine Electroménager et contrôler chaque serveur depuis sont réseaux. Itinérance : Avoir dans son porte monnaie à chaque instant un serveur de fichiers accessible par wifi, et pourquoi pas via une solution logicielle échanger ces fichiers automatiquement avec tous les raspberry environnants. Piratage : The pirate bay pense même à fixer ce genre de matos sur des ballons stratosphériques pour mettre à l’abri ses torrents de la juridiction (évidemment c’est une joke de l’admin, mais je trouve le concept presque viable si on ne tient pas compte de l’autonomie, des variations climatiques, des volatiles, de la couverture réseau…) Année 2014­2015 Geek
  4. 4. Mohamed Bouhamed To be human you must to be Geek Evidemment, “recette victime de sont succès” comme dirais McDonald, l’achat est indisponible depuis février et ça me rend ma-la-de !! Mais il y a pire… toute une communauté s’est déjà fondée sur le pi, des tas de programmes, plugins, trip and tricks existent déjà… certains ont même inventé un magnifique boîtier : J’en veux j’en veux j’en veux !!!! Année 2014­2015 Geek
  5. 5. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 02 : Exploration technique commander cette merveille à l’adresse suivante : http://downloads.element14.com/raspberryPi1.html?isRedirect=true Voyons un peu ce que contient la ptite boite, après moultes déballages : Oaaaaw une carte électronique avec plein de bitoniaux, des prises partout et … Année 2014­2015 Geek
  6. 6. Mohamed Bouhamed To be human you must to be Geek pas de câble associé arrrgghh… bon, je m’y attendais, les câbles (et la mémoire) sont à acheter à part, donc je fais un petit tour sur amazone et j’achète les éléments suivants : Je m’en tire pour 52 € afin d’acheter un câble Ethernet pour relier l’engin au net, une carte SD qui fera office de mémoire morte sur la machine, un câble hdmi/VGA(DVI, c’est plus sûr) permettant de connecter mes écrans au raspberry et un switch USB histoire de pouvoir brancher simultanément souris, clavier etc… (bien que le raspberry semble disposer de deux ports par défaut au lieu de l’unique port USB que j’attendais). Je devrais également acheter un câble micro USB (à 3€) pour me servir d’alim (attention, le câble devrat être alimenté en 5V pour fonctionner avec le raspberry), mais il me semble que j’en ai déjà un qui traîne (c’est sensiblement les même que pour nos smartphones). Bon, 30€ de raspberry + 52€ de fourniture = 82€ dans la vue, ça fait un peu cher mais je me dis que les fournitures peuvent être utilisé pour autre chose dans tous les cas (jme rassure ^^) et que je ne devrait rien acheter de plus (a part peut être boîtier stylé à 8€ si je craque). Année 2014­2015 Geek
  7. 7. Mohamed Bouhamed To be human you must to be Geek En attendant mes fournitures, faisons un peu le tour de l’engin en lui même : Une face comportant un simple port HDMI, c’est donc pour la vidéo, et c’est donc la que je brancherais mon câble HDMI/VGA fraichement commandé et je relierais l’autre bout à mon écran (jusqu’ici, ça m’a l’air simple), rien d’autre à signaler de ce côté, tournons un peu la carte… Sur cette autre face, nous avons de gauche a droite : une sortie audio stéréo Jack 3,5 mm pour l’audio (personnellement je ne compte pas utiliser le raspberry comme centre multimédia donc je m’en tape), un port jaunâtre que je ne connais pas mais qui est visiblement un port vidéo analogique, donc utile uniquement si vous souhaitez relier le raspberry à votre vielle TV cathodique (useless) et une série de broches GPIO… Gnié? Gépéyo quoi? Les broches GPIO sont des ports d’entrée/sortie très utilisés dans le monde des microcontrôleurs, ils vous serviront ici uniquement si vous êtes un peu calé en électronique et que vous souhaitez raccorder le raspberry pi par exemple a une lumière ou a un interrupteur (peut être très intéressant si vous voulez faire de la domotique à pas cher dans votre maison). Année 2014­2015 Geek
  8. 8. Mohamed Bouhamed To be human you must to be Geek Voir une petite vidéo ici : http://www.raspberrypi.org/archives/1417 Si vous n’avez rien compris à cette histoire de broches, ce n’est pas bien grave vous pourrez quand même profiter de votre raspberry en toute impunité, passons donc à la suite. De gauche à droite : un port Ethernet, c’est donc la que je brancherais le câble Ethernet que j’ai commandé afin de procurer le net au raspberry PI, l’autre bout du câble sera bien entendu branché à ma Freebox. Et enfin… deux magnifique port USB, ou je vais m’empresser de brancher mon switch USB histoire d’avoir 4 ports espacés au lieu de 2 (ben oui clavier+souris+clé wifi+ disque USB éventuel =4 ). La face restante comporte un port micro Usb qui servira à alimenter le raspberry (via le câble micro USB que je n’ai d’ailleurs pas acheté parce que je dois en avoir une vingtaine). Enfin dernière petite chose : Sous la carte se trouve un petit compartiment pour placer la fameuse carte SD que nous avons commandé (8 Go minimum recommandés). Je pense n’avoir rien oublié à part peux être le connecteur CSI (qui semble être utilisé dans le milieu de la vidéo) et le connecteur DSI (qui visiblement permet de brancher un touch screen si besoin est). Dans un prochain post et d’ici à ce que je reçoive mes fournitures amazones, nous verront comment brancher et installer la distribution linux adéquate (Raspbian “wheezy” , conçue spécifiquement pour raspberry ou la distribution Arch Linux ARM qui fonctionne aussi) sur la carte SD. Année 2014­2015 Geek
  9. 9. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 03 : Brancher et installer le Raspberry PI 3 Os possibles à installer Nous allons commencer par installer sur la carte SD (16 go pour moi, 8 go minimum conseillés) le système d’exploitation qui n’est autre qu’une distribution linux. En gros trois distributions possibles : Debian squeeze, ARM Arch linux ou Raspian Visiblement Debian squeeze est le plus simple a prendre en main, malheureusement c’est également le moins optimisé pour le raspberry, donc beaucoup de pertes de perfs, on peux rayer celui la . Ca nous laisse deux Os auxquels je ne connais rien, donc a choisir, autant prendre celui qui a été “spécialement” conçu pour le raspberry j’ai nommé raspian. Je télécharge donc raspian “wheezy” ici : http://www.raspberrypi.org/downloads Pour l’installer sur la carte SD, j’utilise le programme utilitaire Win32DiskImager disponible ici : http://www.softpedia.com/get/CD-DVD-Tools/Data-CD-DVD-Burning/Win32-Disk-Imager.shtml J’exécute Win32DiskImager qui me demande le chemin vers l’image de raspian (.img) ainsi que le lecteur sur lequel je veut l’installer (donc ma carte sd précédemment entrée dans le port SD de mon portable) Un clic sur “write” puis sur “yes” (car un message bien flippant me disant que je pourrais perdre ou corrompre mes données de carte SD est apparus (je m’inquiète pas trop parce que quand même, il faut bien avouer que ladite carte est vierge)). Au bout de quelques secondes (qui vont vous sembler une éternité si vous êtes aussi fébriles que moi) l’os est déployé sur la carte. 1 carte SSD à plugger J’enlève donc la carte SD de mon pc pour la brancher directement sur la prise prévue a cet effet située sous le raspberry. Année 2014­2015 Geek
  10. 10. Mohamed Bouhamed To be human you must to be Geek Je peux maintenant passer au branchement de mes câbles pour alimenter la bête :p !! 5 câbles à brancher Dans le sens des aiguilles d’une montre (et en partant du câble le plus haut) nous devons brancher : • Le câbles HDMI (dont l’autre bout sera relié a votre écran par du DVI ou de l’HDMI en fonction du câble et de l’écran que vous avez sous la main) • Le câble micro USB, qui vous servira a alimenter votre raspberry PI (l’autre bout sera donc relié a un port usb de pc ou encore a une prise USB comme celle dont vous disposez pour vos smartphones) • Le câble USB simple, qui sera relié a votre switch USB (vous permettant de multiplier vos ports USB, avec mon switch, je passe de deux a 7 ports, ça fait plaisir :p) • Le câble Ethernet, qui sera relié a votre box ADSL et vous permettra par conséquent d’avoir le net. Année 2014­2015 Geek
  11. 11. Mohamed Bouhamed To be human you must to be Geek Une fois le bousin branché et alimenté, une inquiétante lumière rouge s’allume sur le raspberry puis une jaune, puis deux vertes, et la magie opère… …ou pas :p !! En effet chez moi aucun signal vidéo n’est émis. Après quelques recherches, cela viendrait de l’os qui se serait mal installé sur la carte, j’ai donc réinstallé raspian et ça fonctionne. …Et j’ai eu la chance d’obtenir une console de ce type sur mon écran : Année 2014­2015 Geek
  12. 12. Mohamed Bouhamed To be human you must to be Geek 1 identifiant en qwerty à taper Login : pi Mot de passe : rqspberry (car votre clavier est en anglais a ce moment précis) ça y est, vous êtes logué sur votre magnifique serveur et pouvez m’envoyer quelques petites commentaires narquois pour me rendre jaloux ^^ Nb: Sur les dernières versions, raspian nous mâche le travail en nous auto-loggant et en nous proposant plein de petites options avec un joli écran de configuration bleu de la mort. Je vous conseille d’aller directement mettre le clavier en azerty (clavier francais) via l’option du tableau configure_keyboard Set keyboard layout. Sélectionnez alors Generic 105-key (intl) PC puis Other puis French puis French puis The default for the keyboard layout puis No compose key puis No (oui je sais c’est vachement long pour un si ptit truc). Votre clavier est donc maintenant normalement en français, n’hésitez pas a rebooter si la modif n’a pas été prise en compte tout de suite. Notez que sur ce panneau bleu de configuration (accessible a tous moment depuis la ligne de commande “sudo raspi­config”) vous avez de nombreuses configurations importantes à faire comme le réglage de la langue du systeme (option change_locale Set locale) le fuseau horaire (option change_timezone Set timezone) etc… Une config qui est importante également c’est le redimensionnement de la partition système, en effet le système prend par défaut la quasi totalité de votre carte SD (ne me demandez pas pourquoi) qu’il n’utilise pas, en redimensionnant cette partition vous regagnez la place injustement pillée par le système. Année 2014­2015 Geek
  13. 13. Mohamed Bouhamed To be human you must to be Geek Le panneau de config à aussi pensé à ça et vous propose une option expand_rootfs Expand root partition to fill SD card, (mettez finish ok etc… ) votre système vas alors redémarrer avec bien plus de place à votre disposition. Pas très à l’aise avec la ligne de commande? Quittez l’ecran de config pour arriver sur la console, et tapez startx (ou stqrtx si vous n’avez pas encore changé la config clavier) pour lancer l’interface graphique. C’est quand même vachement plus sympa non ? Dans le prochain tuto, nous verrons comment installer les packages nécessaires pour transformer le raspberry en serveur web. Année 2014­2015 Geek
  14. 14. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 04 : Configurer en serveur Maintenant que nous avons installé le système d’exploitation Raspian sur notre Raspberry PI (Raspian n’étant autre qu’une distribution linux spécialement conçue pour le Raspberry PI) et que nous nous sommes logué (sisi, rappelez vous des identifiants par défauts –> login : pi , mot de passe rqspberry) nous allons pouvoir commencer les choses sérieuses !! En premier pensez à changer votre mot de passe administrateur : sudo passwd su 1 sudo passwd su Puis faire un ptit update de vos paquets : sudo apt-get update 12 sudo apt-get update sudo apt-get upgrade Une fois ceci terminé, nous allons installer d’une traite apache (un serveur HTTP permettant de publier du contenu Html sur le web), PHP (langage serveur permettant le traitement dynamique d’informations) et MySQL (une base de donnée). Certains seraient tenté d’installer directement le paquet lamp-server qui englobe tous ces paquets, grossière erreur, le Raspberry ne l’entendrait pas de cette oreille, il vous faut donc installer les paquets séparément (mais en une seule ligne) sudo apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql 1 sudo apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql Après quelques petites questions d’usage, votre serveur web est en place, pour le tester rien de plus Année 2014­2015 Geek
  15. 15. Mohamed Bouhamed To be human you must to be Geek simple, tapez la commande : ifconfig 1 ifconfig et repérez l’adresse IP réseau de votre Raspberry pi (très certainement une adresse commençant par 192.168.*.*) Tapez cette adresse depuis un autre ordinateur banché sur le même réseaux local et TADDAA!! It works ! nb : si vous n’avez pas d’autres pc sur le réseau, passez en mode graphique sur votre Raspberry PI. startx 1 startx Puis ouvrez le navigateur installé par défaut et tapez l’adresse suivante : http://127.0.0.1 1 http://127.0.0.1 Notez qu’a partir de maintenant, toutes les pages situées dans le dossier /var/www de votre Raspberry PI seront accessibles via l’adresse réseau tapée (uniquement depuis votre réseau) ou via l’adresse WAN (votre adresse extérieure) une fois que vous aurez débloqué le port 80 sur votre box/routeur pour l’adresse réseau du Raspberry. Pour plus d’information sur apache, MySQL et PHP je vous invite a lire la doc d’ubuntu : http://doc.ubuntu-fr.org/lamp nous ne traiterons pas plus en détail de cette partie étant donné qu’il ne s’agit pas de quelque chose de spécifique au Raspberry PI (libre a vous de m’envoyer vos questions par mail ou par commentaires pour ceux qui ne connaissent pas). Je vous conseille également l’installation du célèbre paquet phpMyAdmin, script php permettant de gérer facilement votre base de données MySQL depuis l’adresse http://votre.ip/phpmyadmin : Année 2014­2015 Geek
  16. 16. Mohamed Bouhamed To be human you must to be Geek sudo apt-get install phpmyadmin 1 sudo apt-get install phpmyadmin (Le login par défaut est root et le mot de passe est celui que vous avec renseigné lorsque vous avez installé MySQL) Note: L’installation de phpmyadmin ne crée pas le lien symbolique permettant d’accéder à phpmyadmin, il faut alors le créer manuellement : sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin Dans le prochain mini tuto sur le Raspberry PI, nous parlerons boitier pour les riches, et boitiers pour les pauvres (amen) puis dans le suivant nous explorerons (si dieu le veux) la dimension domotique de cet engin a travers la découverte des ports GPIO (enfin si d’ici la je gère un peu plus en électronique, n’oubliez pas que je découvre avec vous ) Année 2014­2015 Geek
  17. 17. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 05 : Protéger notre précieux Maintenant que nous disposons d’un raspberry PI en mode serveur fonctionnel, il serait d bon gout de penser à sa pérennité sur le long terme ! En effet un vilain coup de pied, un chat incontinent ou une chérie un peu gaffeuse (spéciale dédicace) est si vite arrivé et notre nouveau gadget (notre précieux) est encore fragile dans son état actuel. C’est pourquoi je dédie cette petite étape de tuto à la présentation des boitiers que vous pouvez acheter ou fabriquer pour l’engin. La communauté raspberry PI étant ce qu’elle est, des boitier spécialement conçu pour le rasp ont vus le jour, et je dois reconnaitre qu’ils font propre : Le plus coloré : Pibow Pibow est un ensemble de couches colorées a assembler sois même, vendu entre 15£ et 20£ selon l’endroit ou vous habitez (frais de ports variables), pour les ptit frenchies, ce sera 17.95£ Le gros avantage selon moi, c’est le couvercle transparent qui laisse une bonne visibilité sur le circuit imprimé à tout moment, le jeux de couleurs peut être disgracieux ou carrément avantageux selon vos penchants sexuels (blague, pas taper !! ). nb : Le boitier prévoit également des extensions pour les modules de caméra etc… et semble vouloir s’adapter aux futures évolution du rasp, bon point ! Le site de commande : http://www.pibow.com/ Le plus “pro” : Standard case for raspberry PI Année 2014­2015 Geek
  18. 18. Mohamed Bouhamed To be human you must to be Geek Ce boitier vous offrira pour la modique somme de 25.51€ quelque chose de tout à fait propre et légèrement plus sobre que le précédent . Il est également disponible en semi opaque mais pas de quoi casser trois pattes à un canard. L’avantage de ce boitier étant qu’il est assez simple a monter (deux parties a emboiter l’une dans l’autres) les manches du bricolages s’orienterons donc plus sur cette solution. Le site de commande :http://www.shapeways.com/model/565087/raspberry-pi-standard-case.html Le plus “design” : Raspberry design case Ce boitier semble être du même constructeur et offre un côté un peu plus “design” et réfléchis que son prédécesseur pour 32.75€. Les avantages que j’y vois au premier coup d’oeil, c’est qu’ils ont prévus pas mal d’aérations ainsi qu’un relais optique pour chacune des LED du raspberry PI. La version existe aussi en noir et en semi opaque. Je pense qu’il s’agit du boitier le plus adapté au raspberry, c’est en conséquence le plus cher. Le plus ”populaire” : ModMyPI Année 2014­2015 Geek
  19. 19. Mohamed Bouhamed To be human you must to be Geek ModMyPI est une entrée de gamme qui a pour avantage de vous fournir un boitier “solide” (vous comprendrez avec le prochain boitier) pour une somme relativement réduite de 7.99£ A noter que si il est un peu moins design que les autres, il existe également en blanc, rouge, vert, bleu, gris, bicolor etc etc… Toutes les déclinaisons ici : https://www.modmypi.com/shop/raspberry-pi-cases Le plus ‘”low cost” : Punnet Punnet à ceci d’avantageux qu’il s’agit en fait d’un origami a plier sois même selon le patron suivant : http://squareitround.co.uk/Resources/Punnet_net_Mk1.pdf . Il ne vous coutera rien a l’exception d’une feuille cartonnée (perso je vais tenter de prendre un truc plastifié également). L’avantage est tout trouvé, c’est du gratuit et pour un prototype de test de rasp, ça me conviendras très bien , d’autant que nous aurons peut être a investir encore 30 € dans une carte d’extensions pour ceux qui me suivront dans la partie domotique donc autant faire des économies de bout de ficelles. C’est tout pour aujourd’hui, évidemment nous n’avons fait qu’un tour d’horizon, il existe évidemment d’autres boîtiers, mais je vous laisse un peu chercher histoire de vous faire vos propres avis sur la question (et puis j’ai la flemme de tous les répertorier ici). Nb : Avec le raspberry PI, tout est permis, faites fonctionner votre imagination, certains n’ont pas attendus pour construire leurs propre boitiers de Rasp et je dois reconnaitre que ça dégomme tout ! Dans le prochain tuto, nous nous initierons à la maitrise des PIN GPIO (les petites broches sur un Année 2014­2015 Geek
  20. 20. Mohamed Bouhamed To be human you must to be Geek coin de la cartes) afin d’aborder la partie domotique, il faudra être indulgent, je découvre en même temps que vous, et l’électronique n’est pas du tout mon fort (d’ailleurs si certains de vous s’y connaissent un peu, qu’ils n’hésitent pas à me contacter). Année 2014­2015 Geek
  21. 21. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 06 : Utiliser le GPIO et Interagir avec le monde réel Chez lecteurs (lectrices) nous arrivons à la partie la plus intéressante, selon moi, de l’utilisation du raspberry PI. Il s’agit de l’utilisation des ports GPIO (les 26 broches situées en haut a droite de votre raspberry). Cela ne vous évoque rien ? Et bien dites vous qu’il s’agit simplement d’une porte permettant a vos programme d’interagir avec le monde réel… Je ne l’ai jamais caché, mon objectif concernant le raspberry est de pouvoir l’utiliser comme un outil de domotique à bas prix. Je souhaite donc utiliser ce dernier pour gérer dans un premier temps, mon système d’éclairage, et dans un second temps, d’autres appareils et systèmes électriques de mon appart. Comme je suis une pipe en électronique, j’ai commencé petit en construisant une “maquette” (le terme est pompeux vu la gueule de la maquette) de mon appart (aucune ressemblance avec le réel d’ailleurs) en me fixant pour défis de le piloter depuis une interface web. J’ai réussi, et pour vous filer l’eau a la bouche (ou vous faire carrément bailler selon vos intérêts) Année 2014­2015 Geek
  22. 22. Mohamed Bouhamed To be human you must to be Geek Pour ceux qui ne veulent pas de la vidéo, petit récap en images : J’ai développé une interface web PHP appelée depuis mon raspberry PI qui a cette tronche : Et une “maquette” papier de mon appart avec trois diodes électroluminescentes (LED) : Année 2014­2015 Geek
  23. 23. Mohamed Bouhamed To be human you must to be Geek Je peux activer/désactiver une LED de la maquette en appuyant sur la zone d’état de chaque lignes : Année 2014­2015 Geek
  24. 24. Mohamed Bouhamed To be human you must to be Geek Je peux également appuyer sur le bouton “Joyeux noël” qui m’allumera chaque diodes pendant une seconde à tour de rôle. Notez bien que pour suivre ce tutoriel, vous devez auparavant avoir fait le tutoriel : Raspberry PI ~ 04 : Configurer en serveur ou avoir installé le serveur web apache par vos propres moyens sur le rapsberry pi Comment j’ai fait : 1. Partie électronique… Je me suis intéressé aux ports GPIO du raspberry PI, ce sont de petites broches (au nombre de 26) qui peuvent se comporter en entrée comme en sortie (recevoir une information ou en envoyer une) ces broches que nous appellerons PIN, ont deux états possibles : 0 (off) ou 1 (on). Année 2014­2015 Geek
  25. 25. Mohamed Bouhamed To be human you must to be Geek Dans la suite de ce tutoriel, nous nommerons chaque PIN par leur numéro d’ordre de haut en bas et de gauche à droite (en prenant pour repère que la carte SD représente le haut du raspberry PI) Ce serait une erreur de penser que chaque port GPIO est utilisable, car nombre d’entre eux sont réservés à d’autres tâches que de servir d’entrée sorties pour nous pauvres mortels. EN réalité, seuls 8 ports sur les 26 sont vraiment disponibles, ce qui nous laisse la possibilité de contrôler 8 matériels de notre appart diffèrent maximums, a moins d’acheter une carte d’extension des ports. Voila le schéma explicatif de chacun des PIN (source, le wiki de raspberry): Année 2014­2015 Geek
  26. 26. Mohamed Bouhamed To be human you must to be Geek Ça parait peut être compliqué comme ça pour les néophytes de l’électronique comme moi, mais ça ne l’est pas, voila les choses essentielles a retenir : • Les numéros sur le schéma ne correspondent pas du tout aux positions “physiques” des pins (c’est vrai, pourquoi se simplifier la vie après tout?) donc considérez que je vous donnerais toujours les numéro physique et ne tenez pas compte des numéro inscrit sur le schéma • Les pin 1 (en jaune) et 2 (en rouge) sont réservés a fournir du courant, le pin 1 fournis du 3,3 volts, le pin 2 du 5 volts • Le pin 6 (en noir) est la masse (donc 0 volts), on s’en servira pour fermer notre circuit • Les pins 7,11,12,13,15,16,18 et 22 (en vert) sont les ports que nous pouvons utiliser pour nos magouilles • Les autres pins sont réservés pour des trucs qui nous dépassent, si il y a un électronicien dans la salle, je l’invite a nous fournir une petite explication Année 2014­2015 Geek
  27. 27. Mohamed Bouhamed To be human you must to be Geek Donc globalement pour allumer une diode nous utiliseront ? … Le pin de masse (pin 6 en noir) et un des pin entrée sorties (au choix 7,11,12,13,15,16,18,22 en verts). Nous allons monter notre circuit électronique de manière simplissime comme ça : On vas utiliser la broche 11 (position physique) et la mettre a 0 ou 1 (via notre programme php), lorsqu’elle sera sur 1, le courant passera dans une petite résistance de 270 Ohms (pour protéger la Led et éviter qu’elle claque) puis directement dans notre led qui s’éclairera. Enfin le circuit sera fermé a l’aide de la broche 6 qui sert de masse. ça c’est l’idéal, 2 différences sur mon circuit réel: 1. Je n’ai pas de résistance, j’ai donc fait sans, ce qui rend la LED vulnérable si elle est allumée trop longtemps (j’entends déjà les électroniciens de l’assistance grogner au fond de la salle XD) 2. Je n’ai pas branché une, mais 3 led (pour rendre ma maquette un peu plus vivante), pour se faire, rien de plus simple, j’utilise deux ports de plus et je relie tout a la masse : Année 2014­2015 Geek
  28. 28. Mohamed Bouhamed To be human you must to be Geek Pour monter votre circuit, de simples fils suffisent, cependant je vous conseille très vivement d’acheter ou de dégoter quelque part des connecteurs adaptés aux broches afin d’éviter les faux contacts avec le pin, un câble d’imprimante démonté comme le mien ferait l’affaire aussi : Année 2014­2015 Geek
  29. 29. Mohamed Bouhamed To be human you must to be Geek pour relier l’autre bout de mes fils aux diodes, j’ai utilisé une table de connexion que j’avais acheté pour faire un peut d’électronique amateur, évidemment vous n’avez pas a investir vous aussi la dedans, c’est juste plus pratique que d’entortiller voir souder les fils autour des pattes de chaque led. Comment j’ai fait : 2. Partie programmation Une fois le montage électronique effectué, vous allez devoir signaler au raspberry PI d’ouvrir ou fermer les PIN (7 11 et 12 dans mon exemple) pour allumer/éteindre les LED que vous souhaitez. Pour nous faciliter la vie, nous allons installer une petite librairie toute bête qui nous permettra de faire ce genre de commandes dans la console du raspberry PI : gpio write 11 1 1 gpio write 11 1 qui signifiera : met l’état de la pin 11 à 1 Une fois cette librairie installée, nous utiliserons mon petit script gratuitement mis a votre disposition afin de donner une interface web plus conviviale a ces lignes de commandes. La librairie se nomme wiring PI, pour l’installer depuis la ligne de commande de votre raspberry, suivez les instructions du lien. Si tout se passe bien et que votre circuit électronique est correctement monté, lorsque vous taperez : gpio mode 0 out 1 gpio mode 0 out Cette ligne définira le PIN 11 comme une sortie gpio write 0 1 1 gpio write 0 1 La diode connectée a la PIN 11 devrait s’allumer, tapez alors Année 2014­2015 Geek
  30. 30. Mohamed Bouhamed To be human you must to be Geek gpio write 0 0 1 gpio write 0 0 Pour l’éteindre Et la si vous suivez vous êtes en train de vous dire : “Attends un peu, il a mis “0” et pas “11” comme numéro de pin ?!!” C’est juste, seulement rappelez vous que les électroniciens “adorent” les numéro de PIN “logiques” qui ne correspondent pas aux numéro “physiques”, notre pin qui se situe physiquement a la 11 eme position est représenté dans l’ordinateur comme le numéro 0 “Han mais comment savoir qui correspond à quoi maintenant?” A l’aide d’une super table de correspondance fournie par notre amis créateur de wiringPi : Les numéros centraux sont les positions physiques des PIN, les numéro de la colonne “wiringPI Pin” sont les correspondances que vous devrez appeler dans vos lignes de commandes, le reste ne vous en souciez pas ça risque de bien vous embrouiller. ainsi pour parler du pin 15 j’utiliserais le chiffre 3, pour le pin 12 le chiffre 1, pour le 11 le 0 etc… Année 2014­2015 Geek
  31. 31. Mohamed Bouhamed To be human you must to be Geek “Ca vas être vraiment chiant à gérer tout ça” C’est la que ma petite interface PHP vous facilite la vie, j’y ai intégré la table des correspondances, vous n’aurez donc à vous soucier que des positions physiques des PIN. Mon script est disponible a l’adresse :http://idleman.fr/ressources/PHP/pihome.zip Téléchargez le et décompressez le dans le dossier /var/www de votre raspberry PI Puis accédez a l’adresse internet de votre raspberry PI (en tapant 127.0.0.1 dans un navigateur si vous êtes depuis le raspberry PI ou en tapant l’adresse IP réseaux du raspberry PI si vous êtes sur un autre PC du réseau). Si vous voulez ajouter/supprimer/modifier le nombre de LED, les ports utilisés etc… vous avez juste a modifier le fichier configuration.php aux lignes suivantes Ajoutez le libellé de la led et son numéro physique de PIN associé. C’est tout pour aujourd’hui, cette partie du rasp n’est pas facile à appréhender pour les gens qui ne viennent pas du monde informatique ou du monde électronique, n’hésitez donc pas a poser vos questions ici si vous avez le moindre soucis . Dans un prochain tuto, nous tenterons d’agrandir l’expérience et de contrôler non pas des LED mais de véritables lampes d’appartement en utilisant le même principe (mais un tout petit peu plus d’électronique) Edit : Si vous avez installé lightppd au lieud ‘apache, ça ne fonctionnera que si vous faites la manip suivante (partagée par Zescientist ): Hello, Suite à l’installation de Lighttpd (en suivant le tuto 19), je me retrouve avec ce tuto ici qui ne fonctionne plus. Après plusieurs heures de recherches, le problème vient du fait que Lighttpd exécute la commande system() uniquement pour les applications placées dans /usr/bin, or, en suivant ce tuto, la commande gpio est lancée à partir de /usr/local/bin… La solution a été de déplacer « l’application » gpio dans le bon dossier, ce qui n’est pas propre du tout mais je n’ai pas trouvé comment changer le dossier dans la config du serveur. Année 2014­2015 Geek
  32. 32. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 07 : Allumer/éteindre une vraie lampe OU comment faire de la domotique low cost. Mais peu importe, l’application est exactement la même, on se passera de lampe pour cet exercice (c’est la faute a ma chérie qui n’a pas voulu me laisser sa lampe de chevet “lapin crétin” comme sujet d’expérience, l’hérétique !!) Comme promis nous allons voir aujourd’hui comment utiliser le raspberry PI et plus précisément les ports GPIO (broches) de la carte pour contrôler un élément électrique de votre habitation, cet élément peut être n’importe quoi : une lampe/lumière, un réveil, un frigo, une tv, bref tout ce qui vous passe par la tête . EDIT : Désolé la vidéo est perdu ^^, vous pouvez mater les vidéos des tutos suivants pour avoir un exemple de ce qu’on vas faire, de mon coté je referais la vidéo quand j’aurais une tite minute à moi Prêt a tenter le coup? C’est vraiment pas compliqué, il suffit de s’accrocher un tout petit peu Voici les éléments requis pour cette expérience : - Un ordinateur, branché sur votre réseau - Un raspberry PI (~30€), à commander ici : http://fr.farnell.com/raspberry-pi Année 2014­2015 Geek
  33. 33. Mohamed Bouhamed To be human you must to be Geek - Une carte 8 relais 5V 10A (20,49€), à commander ici : http://hackspark.fr/fr/8-channel-5v-relay-module- 5v-250vac-10a.html. nb: Si la carte n’est plus disponible en stock, n’importe quelle carte relais de 5v avec une charge maximale assez haute (disons 10A) fera l’affaire. Une carte deux relais (au lieu de est disponible pour moins cher sur le même site si vous voulez faire des tests sur 2 lampes uniquement, vous pouvez aussi acheter une relais 1 seul canal pour 1.27€ ici, histoire de tester sans vous ruiner :), le montage est le même. Bref n’hésitez pas ç regarder régulièrement sur ebay dans les achats immédiats catégorie monde entier, il y a souvent d’excellent prix et livraison gratuite. - Un réveil (ou une lampe, ou ce que vous voulez) auquel vous ne tenez pas (ou vas couper du fil) Dans cet exercice nous ne contrôlerons qu’un seul appareil, mais notez bien qu’avec ces cartes vous pouvez en contrôler 8 simultanément, si vous avez suivis les précédents tutos sur les broches GPIO et que vous lisez attentivement celui ci, ça ne vous posera aucun problème de relier correctement les Année 2014­2015 Geek
  34. 34. Mohamed Bouhamed To be human you must to be Geek fils. Dans notre précédent tuto Raspberry PI ~ 06 : Utiliser le GPIO et Interagir avec le monde réel nous avons allumé et éteint des diodes à l’aide d’une interface web, nous allons maintenant passer à la vitesse supérieure en remplaçant les LED par un réveil. Concrètement, le réveil est alimenté en 220V (branché a une prise de courant normale) et le raspberry peux fournir du … 5V maximum, il parait évident qu’il nous faut un “médiateur” entre les deux afin que le raspberry puisse contrôler le réveil. Ce médiateur s’appelle une “carte relais”, c’est tout simplement une carte qui vas servir d’interrupteur électronique pour le réveil, interrupteur commandé par le raspberry. Un petit schéma s’impose : Tout part du PC, on se connecte depuis le PC au site web qu’on a créé sur le raspberry PI (cf les tutos précédents) et on clique sur le bouton d’activation (crois rouge) du PIN 7 physique (qui correspond en fait au port GPIO 4 logique) de l’interface web. Année 2014­2015 Geek
  35. 35. Mohamed Bouhamed To be human you must to be Geek Ceci envoie un signal au raspberry qui met le port GPIO 4 à 1 (jusqu’a présent, il était a zéro). La carte relais est branchée de manière a ouvrir le circuit du réveil quand l’état du GPIO 4 est a zéro (donc le réveil est éteint) et a le fermer quand l’état est a 1 (donc le réveille s’allume). Année 2014­2015 Geek
  36. 36. Mohamed Bouhamed To be human you must to be Geek La carte relais est donc un interrupteur commandé par le port GPIO4, mais comme cet interrupteur est électronique, il a besoin d’être alimenté, c’est pourquoi en plus du port GPIO4, deux fils (5v et masse) sont reliés a la carte pour alimenter celle ci en 5V. Pour être plus précis au niveau du raccordement, voila un autre schéma de ma composition : Année 2014­2015 Geek
  37. 37. Mohamed Bouhamed To be human you must to be Geek Notez bien que la carte relais supporte une puissance de 10A,soyez donc précautionneux en fonction de ce que vous y branchez, vous avez des risques de griller votre carte relais. Enfin très important : Si vous alimentez la carte relais avec votre rapsberry pi, en fonction de votre carte relais vous risquez a terme de griller les ports du rpi qui ne sont pas fait pour ça, aussi pour les tests ça passera mais pour une utilisation prolongée, utilisez une alimentation externe (même montage sauf que vous reliez le + et l – de la carte a l’alim externe et le – de la carte relais au rpi (pour fermer le circuit de commande) N’hésitez pas à poser vos questions dans les commentaires et a faire vos remarques, surtout ceux qui tâtent en électronique car j’imagine que j’ai dis et fait dans ces tuto pas mal d’hérésie et que même si ça marche ça peut grandement être amélioré. Dans les prochaines tutoriaux nous trouverons un moyen de packager tout ce beau monde dans une multiprise électrique (une multiprise connectée en quelque sorte) et nous verrons comment commander “vocalement” le système afin de remplacer l’interface web qui n’est pas très utile dans uen application domotique. Année 2014­2015 Geek
  38. 38. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 08 : Jouer avec les ondes radio Je vous avertis tout de suite, ce tuto est encore trop jeune pour aboutir sur une application concrète, il sera donc édité en deux parties. Le but de ce tuto en deux partie est simple : faire de la domotique pas cher avec le raspberry PI et par ondes radio. Les ondes radio ont de nombreux avantages et quelques inconvénients, nous verrons lesquels (mais je suis sûr que vous devinez bandes de ptit coquins). Cette première partie expliquera comment émettre et recevoir des ondes hertziennes avec le raspberry PI (en passant par une brève piqure de rappel de notions du collège que je pensais pourtant avoir soigneusement refoulées). Deux minutes de théorie ultra vulgarisée : Une onde radio c’est une onde électromagnétique qui, comme son nom l’indique, ondule….(si vous êtes déjà perdu, souriez et hochez la tête on y verra que du feu). Plus l’onde ondule vite, plus sa fréquence est dite “haute” et réciproquement. (j’entends au loin mon prof de physique s’étrangler de honte devant ma vulgarisation hérétique du phénomène). En gros une onde ressemble à ça : Année 2014­2015 Geek
  39. 39. Mohamed Bouhamed To be human you must to be Geek Si on augmente sa fréquence ça donne un truc comme ça : Si on la baisse : Année 2014­2015 Geek
  40. 40. Mohamed Bouhamed To be human you must to be Geek (Merci a FramboisePI qui m’a fournis les graphique plus jolis que mes vieux gribouillis !) …bref zavez compris le principe, ça ne vous servira a rien dans cette première partie, en revanche ça sera utile plus tard Pour la petite précision, une fréquence à pour unité le hertz et se mesure grâce à la formule f = 1/T car c’est le temps que que met l’onde à faire une tite ondulation (nommée période si je ne m’abuse, sur la troisième photo l’onde n’a fait qu’une période en 1s on peux donc pensez que c’est une onde d’un hertz mais la je vous dis peut être une grosse connerie donc amis élétr(oni)ciens n’hésitez pas a me clasher dans les commentaires ) Plus la fréquence est haute, plus on peu passer d’information rapidement, mais plus l’onde est courte (ne me demandez pas pourquoi) Trêve de théorie chiante ! Passons à l’action ! Nous, nous allons utiliser une fréquence de 433,92 Mhz, ça n’est pas complètement innocent : 1. 433,92 Mhz c’est une sorte de standard utilisé par de nombreux portails, stores, ouvertures centralisées, prises télécommandées etc… (vous commencez a voir l’intérêt du truc?) 2. 433,92 Mhz c’est suffisamment haut comme fréquence pour envoyer quelques infos rapidement, et suffisamment bas pour que ça atteigne une trentaine de mètres de portée (voir plus avec antennes). 3. 433,92 Mhz est compatible avec les récepteurs domotique low cost Chacon dont nous parlerons plus tard 4. 433,92 Mhz C’est la radio qu’écoute tout les jours chuck norris dans son bain avec son Année 2014­2015 Geek
  41. 41. Mohamed Bouhamed To be human you must to be Geek canard qui fait pouic pouic (ok, il lui faut une bonne ouïe mais on parle de chuck !!) Le matos !! Hé oui, il nous faudra encore investir dans cette étape, mais rassurez vous ça reste abordable ! Nous allons simplement acheter un kit émetteur/récepteur 433,92 Mhz J’ai acheté le mien sur conrad pour 15,95€ mais déjà a l’époque c’était de l’arnaque, et aujourd’hui ils l’ont encore augmenté, donc je vous conseille plutot ce modèle sur ebay à …1,5€ qui est exactement le même (à une patte près, dont nous ne nous servirons pas) Les schémas ci dessous sont pour le conrad, c’est quasiment similaire avec celui d’ebay mais la position des pattes n’est pas la même, donc fiez vous aux inscriptions “gnd”, “data” et “vcc” pour faire les branchements corrects (ou alors acceptez de vous faire enfler de 13.5€ ^^) Il faut faudra bien sûr vous munir de vôtre fidèle raspberry PI en complément et ça sera tout pour cette première partie de tuto. Les branchements C’est tellement enfantin que j’irais presque vous laisser lire la doc, mais comme je déteste lire les docs, je vais vous épargner ça… Nous allons brancher le récepteur sur une PIN GPIO du raspberry et l’émetteur sur une autre pin. Comme je suis un goret j’utilise encore une fois le jus du raspberry (wha le super jeux de mots qui tue !) pour alimenter l’émetteur et le récepteur mais je vous conseille vivement d’utiliser une alim 5v externe si vous voulez utiliser ce montage sur la durée… Pourquoi? Et bien surtout pour une histoire de portée qui dépends du jus envoyé dans les cartes radio, plus vous alimenterez les cartes (en respectant le voltage max sur la fiche technique quand même, hein bande de gaufres :p) pour vous aurez de portée. Du coup comme le rpi alimente comme un naze (c’est l’une des grosse faiblesse de ce magnifique engin) il est possible que vous ayiez une portée minime (parfois quelques centimètres la ou vous devriez avoir 100 m, ça rigole pas) du coup pensez alim externe, mangez alim externe, vivez alim externe. Commençons par notre émetteur, petit bout de métal trop mimi qui tient sur le pouce : Année 2014­2015 Geek
  42. 42. Mohamed Bouhamed To be human you must to be Geek Comme vous le voyez : trois fils a souder : le fil 5V (fil qui fait bzz bzz) en rouge à relier a la borne 5V du raspberry (borne 2), la masse en noir à relier a la borne de masse du raspberry (borne 6) et enfin la borne d’état logique (0 ou 1) à relier a un PIN GPIO valide (nous choisirons le 7, c’est une valeur sûre :p) ça donne ce montage la : Toujours en forme ? Bien ! Passons au récepteur !!! Année 2014­2015 Geek
  43. 43. Mohamed Bouhamed To be human you must to be Geek De gauche a droite : le fil jaune = borne logique (0 ou 1) a relier au pin 13 du raspberry, le fil rouge = la phase, à relier a la borne 5V du raspberry, et le fil noir = la masse à relier à la masse du raspberry (c’est presque monotone tellement ya pas de challenge T_T) Vous avez compris, on vas le brancher exactement pareil que l’émetteur ( fil 5V et masse) mais sur une pin GPIO différente pour la borne logique : Notez bien que j’ai pris le(la) pin 13 parce que je suis un grand superstitieux mais libre à vous de choisir une autre des 8 bornes dispo si vous le souhaitez. Votre montage est maintenant terminé, plusieurs façon de le tester : 1. Relier une diode entre la masse et la borne logique du récepteur, cette diode clignotera à chaque fois que vous recevrez un signal Année 2014­2015 Geek
  44. 44. Mohamed Bouhamed To be human you must to be Geek 2. Relier une diode entre la masse et la borne logique de l’émetteur, cette diode clignotera à chaque fois que vous enverrez un signal 3. Créer un programme (php par exemple) avec une boucle qui pendant 10 secondes vas flooder le “gpio read 2” (2 correspondant a la borne physique 13) afin d’obtenir le(s) signal(aux) capté(s) Notez bien que si vous n’habitez pas la tchétchénie, il est possible que votre récepteur reçoive plein de signaux en continu alors que vous n’émettez pas, en effet de très nombreux appareil utilisant cette fréquence il est possible que vous receviez des émissions en 433,92 mhz de votre voisin ou même de votre téléphone fixe sans fil (ou que sais je encore ^^). Notez bien ² : La méthode de test la plus probante est encore de placer des led aux endroits que je vous ai indiqué, vous pourrez alors vous amuser a tester si vos clés de garages, vos interrupteurs de stores et autres diverses télécommandes font s’affoler la diode du récepteur quand vous les actionnez : si c’est le cas : vos machines sont en 433 mhz et nous pourrons bientôt les piloter depuis le Raspberry (enfin, si j’arrive a me dépatouiller avec la suite du tuto évidemment ;p) personnellement, la porte du garage de ma résidence ainsi que la voiture de ma copine sont sur du 433,92 (hurk hurk hurk j’en connais un qui vas enfin prendre le contrôle de ce taudis). Notez (encore) que certain réseaux radio sont sécurisé avec des signaux changeants, surtout sur les voitures récentes, cas dans lequel nous ne pourront pas piloter l’engin. Encore une dernière recommandation : ne soyez pas aussi con que moi, n’essayez pas d’isoler votre récepteur des signaux extérieurs en l’entourant de papier alu XD, je sais pas pourquoi dans ma tête le papier alu c’était pas conducteur de chaleur donc ça conduisait pas le courant non plus, résultat : j’ai niqué un port USB et mon RPI à fait la gueule un certain temps. Si vous avez des problèmes de portées, de gros parasites, ou de mauvaise communication, pensez a faire ces deux choses : • Prendre une alim externe pour les cartes radio et les l’alimenter au maximum de ce qu’elles sont capables de faire (cf la clause “voltage max” de fiche technique, souvent c’est entre 5 et 12V) • Souder un fil conducteur de 16.45 cm a l’émetteur et au récepteur pour servir d’antennes. Avec ces deux points, vous pouvez passer de quelques centimètres à plusieurs centaines de mètres de portée, la différence est vraiment flagrante. Merci a Yann PONSAR pour ses précieux tuyaux sur le sujet Dans le prochain tuto nous verrons pourquoi et comment générer un signal 32 bit capable d’allumer et d’éteindre tous les récepteur de la gamme chacon (sorte de relais récepteurs radio a bas prix qui s’adaptent a votre appart/maison sans avoir a couper ou casser quoique ce soit) Année 2014­2015 Geek
  45. 45. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 09 : Créer une interface vocale En effet si vous avez bien suivis mon article “Raspberry PI ~ 07 : Allumer/éteindre une vraie lampe OU comment faire de la domotique low cost.” vous devez pouvez allumer et éteindre une lampe grâce à votre interface web. Oui mais !! On à pas toujours une interface web sous la main pour commander le raspberry PI… alors que diriez vous de tout diriger par la voix ? Ce qu’on cherche à faire : Moi : “Yuri, allume la lampe du salon” Raspberry PI (oui je l’ai appelé Yuri ;p) : “jawohl mein kapitän !!” (oui je lui donne un accent allemand alors qu’il a un nom russe :p) *Lampe du salon s’allume* Moi : “Yuri quelle heure est il ?” Yuri : “Il est 18h41” Ma chérie : “Idle, arrête de jouer avec ce machin con de geek inutile, ton WAF baisse a vue d’oeil” Moi : “Yuri Insulte la“ Yuri : “L’insulte aléatoire est : espèce de cheveux sans racine” Bon okay on pourrait se passer d’aller aussi loin mais on vas le faire quand même, le but étant d’apprendre à simuler et a personnaliser une personnalité qui comprends vos ordres, effectue une action (contrôler une lampe, envoyer une requête, faire une recherche sur le web, dire un truc inutile etc…) et qui vous réponds en prime. Tenez une petite vidéo horriblement mal filmée à base de canard albinos et de drogue dure pour vous prouver que je n’affabule pas : https://vimeo.com/52886695 Bref nous allons simuler une IA type Jarvis dans le film “Iron Man” ou Sarah dans la génialissime série “Eureka”, je dis bien simuler puisqu’au final, il n’y aura aucune intelligence derrière, juste une “bête machine à réagir” (mais c’est déjà pas mal pour cette fois :p). Année 2014­2015 Geek
  46. 46. Mohamed Bouhamed To be human you must to be Geek Ce qu’il vous faut : 1. Un pc avec windows 7 ou vista minimum 2. Un micro (celui de votre portable conviendra très bien) 3. Votre raspberry PI configuré selon le tutoriel “Raspberry PI ~ 07 : Allumer/éteindre une vraie lampe OU comment faire de la domotique low cost.” Le principe : Votre PC vas utiliser(via notre petit programme) la librairie Speech To Text de Microsoft qui permet de faire de la reconnaissance vocale (le pc vous écoute), si la commande vocale est reconnue, il vas envoyer une requête web (http) à votre raspberry PI Votre raspberry PI vas recevoir la requête et effectuer l’action : ouvrir/fermer un port gpio (donc allumer/éteindre une lampe ou tout autre objet électrique raccordé), ou encore récupérer l’heure serveur et vous la retourner, aller chercher les films qui passent au ciné en ce moment etc… et retourner un texte de réponse a la librairie Text To speech de Windows qui fait de la synthèse vocale (le pc vous parle). Bref rien de sorcier en somme, certains déplorerons l’utilisation d’une librairie microsoft: c’est vrai que c’est bof, mais cette librairie a plusieurs avantages : • elle fonctionne bien • elle est installé par défaut sur tous les windows vista/seven et + (donc accessible à beaucoup de gens) • elle ne nécessite pas internet • elle fait la synthèse ET la reconnaissance vocale • elle est configurable avec de simples fichiers XML • il est possible d’avoir plusieurs voix et plusieurs langues gratuitement Et croyez moi pour trouver l’équivalent sous linux il faut se lever tôt (des lib comme sphinx et autres je ne veux plus en entendre parler, quand je dis lampe elle comprend canard albinos, c’est drôle les 10 premières minutes…) Okay mais il vas falloir développer un truc ne C# pour adapter tout ça non? C’est la que le génie de l’un de nos prédécesseur geeks entre en jeu : quelqu’un y a déjà pensé et a développé un petit programme au poil, S.A.R.A.H : pas d’installation, fonctionne avec micro simple ou avec kinect (meilleur reconnaissance), mots clés configurable avec de simple fichier xml etc… Le soucis c’est que le mec utilise un serveur nodejs, et qu’il ne manoeuvre aucun rpi avec, donc j’ai modifié et surtout beaucoup allégé S.A.R.A.H pour créer Y.U.R.I qui fonctionne avec apache, et qui est un peu plus léger. nb : Je tiens a préciser que le code source est intégralement de sarah, seuls quelques binaires (nodejs standalone, phantom etc..) ont été enlevés et quelques xml modifiés Année 2014­2015 Geek
  47. 47. Mohamed Bouhamed To be human you must to be Geek Assez discutaillé : au boulot !! Installation de Y.U.R.I sur le PC • Téléchargez Y.U.R.I : idleman.fr/ressources/PHP/interface%20vocale/YURI.rar • Décompressez le .zip • Ouvrez le dossier ./macroscontenant les XML de configuration et éditez le fichier rpi.xml • Modifiez l’adresse http://mon.rpi.fr/yuri.php par votre adresse de serveur rpi+/yuri.php ( ex : http://192.168.0.47/yuri.php ) Nb : Vérifiez que votre pc Windows et votre raspberry PI sont bien sur le même réseau et que vous pouvez bien accéder aux pages web de votre raspberry PI depuis le navigateur web de votre pc Windows Installation de Y.U.R.I sur le raspberry PI • Téléchargez le script yuri.php : idleman.fr/ressources/PHP/interface%20vocale/yuri-web.rar • Décompresser et placez le script dans le répertoire web de votre raspberry PI (/var/www par défaut) • Vérifiez que le port GPIO 7 est bien branché a votre carte relais comme définis dans le tutoriel 7 de ce blog. Test du programme • Sur votre PC, Cliquez sur l’exécutable micro.exe à la racine du dossier pour lancer Y.U.R.I • Prononcez “Yuri, allume la lampe du salon”, YURI vas bien envoyer une requête vers votre page de Rapsberry PI qui vas allumer votre lampe Et voila !! Enjoy !! Pour ajouter des action vous même, il vous suffira de créer un nouveau fichier xml avec la requête et les ordres associés, et de créer l’action qui correspond dans yuri.php, vous pourrez ainsi pousser les choses très loin, le concepteur de S.A.R.A.H a créé plusieurs requêtes d’exemples pour récupérer la météo, gérer un google agenda, trouver les films sur allociné etc… Année 2014­2015 Geek
  48. 48. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 10 : Commander le raspberry Pi par radio Nous avions brièvement abordé l’émission/transmission radio via le raspberry pi lors de notre tutoriel n°8. Je vous avais promis une application concrète et plus poussée, nous allons donc aujourd’hui donner des ordres au raspberry PI via une télécommande radio achetée dans le commerce. Commander le raspberry Pi par radio from idleman on Vimeo. Tenté par l’idée de reproduire ça chez vous ? Bien ! Mettons nous au travail !! <!> NB : Vous devez avoir suivis les tutoriaux 04, 06,07 et 08 minimum avant d’aller plus loin. Le Matériel : Si vous avez bien suivi le tuto 8, la pluparts de ces éléments sont déjà en votre possession 1. Un raspberry PI en état de marche 2. un kit émetteur/récepteur 433,92 Mhz j’ai acheté le mien à 15,95€ sur conrad mais je me suis fait avoir je vous conseille ce modèle a 1.5€ sur ebay qui fonctionne pareille et qui à 200m de portée NB :Vous pouvez n’acheter que le récepteur pour ce tuto, mais nous auront besoin de l’émetteur dans le tutos suivant donc autant grouper. 3. Un kit télécommande + 3 prises D – IO by chacon modèle 54795 vendu 29,95€, encore une fois, nous n’utiliseront dans le tuto que la télécommande, mais dans le prochaine nous nous occuperons des prises donc autant grouper. <!> Prenez bien le même modèle que moi, car il semblerais que le protocole radio varie légèrement d’un modèle a un autre 1. Vous voila équipé bande de veinards !! Installation : Branchez le récepteur au raspberry PI en suivant les instructions du tuto N°8, ceci permettra au raspberry de capter les ondes radios sur la fréquence 433 mhz Si vous avez suivis le tuto N°7, vous pouvez également brancher votre carte relais sur l’une des bornes du raspberry PI afin d’allumer/éteindre une lampe/un réveil comme dans la vidéo, sinon, vous vous contenterez de la partie envois de mail et affichage des codes de la télécommande. C’est tout pour les branchements , maintenant voyons le code ! Assurez vous que la librairie wiringPi (qui permet de gérer facilement l’état 0 ou 1 des ports GPIO Année 2014­2015 Geek
  49. 49. Mohamed Bouhamed To be human you must to be Geek du raspberry PI) est bien installé sur votre raspberry PI. Téléchargez mon petit programme de réception en C + PHP nommé originalement radioReception idleman.fr/ressources/PHP/chaconPI/radioReception.zip Décompressez le tout dans le répertoire /var/www de votre raspberry PI • LICENCE et README :Les infos sur la licence et autres du code. • radioReception :l’exécutable C qui vas parser les infos sur port gpio de réception et les envoyer au fichier PHP • radioReception.css :la source du programme C, vous pouvez le supprimer si vous ne comptez pas modifier le code. • radioReception.php : Le fichier PHP qui vas être exécuté par le programme C, recevoir les infos du signal, et effectuer une action en conséquence. Utilisation : positionnez vous dans le répertoire du programme, cd /var/www/radioReception définissez que le programme peut être exécuté avec un chmod (je sais, on peux faire moins permissif) sudo chmod 777 radioReception puis lancez le programme C avec la commande suivante : ./radioReception /var/www/radioReception/radioReception.php 7 /var/www/radioReception/radioReception.php : Chemin vers le fichier PHP qui traitera les informations reçues (identifiant de la télécommande, numéro du bouton, état on/off etc..) 7 : Numéro WiringPi du PIN Gpio auquel est branché le récepteur 433 mhz Vous pouvez maintenant appuyer sur les boutons de la télécommandes et constater les actions effectuées par le PHP. Année 2014­2015 Geek
  50. 50. Mohamed Bouhamed To be human you must to be Geek chaque action exécute le fichier PHP initialement entré en paramètre et lui fournis les informations suivantes : • $sender: l’identifiant de la télécommande • $group: Si c’est une commande de groupe (1) ou non (0), avec cette télécommande, cette valeur sera toujours à 0. • $state: si le bouton est on (1) ou off (0) • $interruptor : l’identifiant de la rangée de bouton de la télécommande A vous de modifier le PHP et de développer les actions qui vous semblent intéressantes, je n’ai laissé que l’exemple d’ouverture/fermeture du port gpio 3 (15 em port physique) dans les sources. Si vous avez des problèmes de portées, de gros parasites, ou de mauvaise communication, pensez a faire ces deux choses : • Prendre une alim externe pour les cartes radio et les l’alimenter au maximum de ce qu’elles sont capables de faire (cf la clause “voltage max” de fiche technique, souvent c’est entre 5 et 12V) • Souder un fil conducteur de 17.3 cm a l’émetteur et au récepteur pour servir d’antennes. Avec ces deux points, vous pouvez passer de quelques centimètres à plusieurs centaines de mètres de portée, la différence est vraiment flagrante. Année 2014­2015 Geek
  51. 51. Mohamed Bouhamed To be human you must to be Geek C’est tout pour ce tuto !! Si vous ne voulez pas comprendre ce que vous faites, vous pouvez vous arrêter ici ^^, sinon je vous invite a entrer avec moi dans les subtilités du protocole radio utilisé en lisant les paragraphes ci dessous. Dans le prochain tuto nous tenterons le processus inverse, à savoir émettre avec le raspberry PI pour allumer/éteindre les prises chacon (et on pourra jeter cette vilaine télécommande XD) Comprendre plus en profondeur : C’est une chose d’appliquer bêtement un tuto, c’en est une autre de comprendre entièrement ses tenants et ses aboutissants, pour les curieux qui voudraient comprendre plus en détail comment nous récupérons et nous traitons le signal radio, voila quelques explications… Zallez voir, c’est pas ultra compliqué quand on a toutes les infos bout à bout (ce que j’ai passé 2 mois a réunir) mais il faut s’accrocher un minimum Concrètement qu’envoie la télécommande chacon ? Cette télécommande envoie un signal radio sur la fréquence 433.92 mhz, ce signal respecte (plus ou moins) le protocole radio domotique home easy (très mal documenté au passage). Le protocole home easy transmet les informations sous la forme d’un signal de 32 bits, un bit étant un 1 ou un 0 (ça tombe bien, les ports GPIO peuvent lire les 1 et le 0 ) il y a donc un signal de 32 : 0 ou 1 par exemple : 00011000101001010010100100010110 Vous noterez l’utilisation de zoulies ptites couleurs , ce n’est pas pour rien : Les 26 premiers bits (en bleu) correspondent à l’identifiant de la télécommande Le 27em bit (en violet) correspond au numéro de groupe (information que nous n’utiliseront pas) Le 28em bit (en rouge), correspond à l’état (ON ou OFF) envoyé, 0=off, 1=on Les bits 29 à 32 (en vert) correspondent au numéro du bouton de la télécommande appuyé La télécommande vas donc envoyer le signal en fonction du bouton appuyé, de la télécommande et de l’état ON ou OFF de ce bouton. 1. Okay mais on a un seul pin branché au récepteur non ? comment on vas capter tout ces 0 et ces 1 d’un coup ? C’est une bonne question !! En fait toutes les infos vont être envoyé par le récepteur sur le même pin (dans notre exemple, le pin 7) mais avec des délais entre chaque 0 ou 1 afin de bien les distinguer les uns des autres ! Mais alors le signal vas être long à capter non ? Pas du tout ! En effet les délais dont je vous parlais sont de l’ordre de la micro seconde ! Donc un signal dans son intégralité a peu de chance de dépasser la milli-seconde ce qui est totalement ridicule pour la perception humaine :). Année 2014­2015 Geek
  52. 52. Mohamed Bouhamed To be human you must to be Geek Bon, et t’as mis 2 mois pour comprendre ça ? En réalité, nous ne sommes pas au bout de nos peines, c’est un peu plus compliqué que ca , admettons que la télécommande nous envoie le code : 00011000101001010010100100010110 Nous recevrions en réalité quelque chose comme ça : 01010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101 que nous traduirions en ça : 0101011010010101100110010110011001011001100101100101011001101001 et enfin en ça : 00011000101001010010100100010110 (on fait moins le malin la pas vrai ? ) Hum, j’y comprends plus rien la… tu nous a bien enflé avec ton histoire de 32 bits ! C’est juste , mais il fallait simplifier pour ne pas vous perdre dès le début ^^, en réalité le signal est bien de 32 bits, mais il est “traduit” deux fois avant émission et réception pour les raisons que nous allons voir ci dessous. La première traduction, est liée a ce qu’on appelle le “codage de manchester” derrière ce nom étrange se cache un principe tout simple : on vas convertir les 0 en 01 et les 1 en 10. Donc le code de la télécommande 00011000101001010010100100010110 vas se transformer (avant d’être émis) en ce signal de 64 (car 32*2) bits : 0101011010010101100110010110011001011001100101100101011001101001 Mais pourquoi se compliquent t’ils la vie avec leurs codage de machin chose? Dans notre contexte, le code de manchester est utilisé pour diverses raisons mais essentiellement pour éviter les parasites, et croyez moi, des parasite radio, nous en sommes blindés ! Bref je ne vais pas m’étaler sur le principe, les infos sont sur wikipedia mais en gros si une paire de bit est égale a 11 ou 00 le programme comprendras qu’il s’agit d’un parasite (car en prenant les bits par paire depuis el début du signal, on ne peux avoir que des 10 ou des 01 si le signal n’est pas un parasite). Ok donc on à juste une petite conversion à faire, c’est pas méchant, mais c’est quoi la deuxième traduction alors ? Et bien la seconde traduction, c’est tout simplement la transformation en “onde”, c’est ce dont nous parlions tout à l’heure avec les délais, par exemple pour que la télécommande émette “1” il lui faut Année 2014­2015 Geek
  53. 53. Mohamed Bouhamed To be human you must to be Geek envoyer une impulsion (impulsion qui n’est autre qu’un passage de 0 à 1 ) avec un certain délais entre le 0 et le 1 (pour signifie qu’on envoie un 1 et pas un zero. Donc envoyer un 1 reviendrais a envoyer ce genre de signal : C’est le délais en micro seconde ou le signal est bas qui définit si un 1 ou un 0 a été envoyé. Attention nous disons ici qu’un 1 a été envoyé, mais comme nous respectons le codage de Manchester nous devons envoyer “10” : Comme vous pouvez le voir sur le schéma pas du tout précis, le premier “front bas” (qui représente le 1) est plus court que le second (qui représente le 0), leurs somme fait “10” qui, en codage Manchester signifie “1” Je suppose que vous êtes sur les rotules, mais soyez fiers de vous, il n’y a plus rien à comprendre par la suite (vous pouvez imaginer maintenant pourquoi j’ai mis un peu de temps à décrypter le protocole de cette fichue télécommande sans la moindre doc et sans connaitre les lois de la radio transmission). Voila un petit graphique pour résumer le chemin d’un signal : Et voila un petit script tout droit sortis de mes petites papattes pour vous aider a visualiser un signal : http://domotique.idleman.fr/radiograph.htm Notez une dernière chose importante ! Le protocol home easy, contient encore une petite subtilité : les verrous. Les verrous sont des bits émis par la télécommande avant et après le signal afin d’annoncer au Année 2014­2015 Geek
  54. 54. Mohamed Bouhamed To be human you must to be Geek récepteur que le signal commence et se termine (ce qui permet également de distinguer un signal d’un parasite). Ces verrous sont au nombre de 3 : deux avant le signal, un a la fin. Les pulsations de ces verrous sont très long (pour les distinguer des pulsations de bits d’informations) de l’ordre d’une centaine de micro secondes. Bon, j’ai bien tout compris, mais tu as oublié de nous donner quelque chose d’important : les délais de chaque pulsation (0, 1 et verrous) !!? C’est bien !! Vous suivez !! Et vous avez raison je ne vous les ai pas donnés pour la raison suivante : je ne les connais pas ! Ha ha ha ha !! En fait c’est la que le manque de doc se fait ressentir sur le protocole home easy : 1. Aucune doc n’est complète 2. Les docs se contredisent entre elles pour les délais 3. La marque Dio by chacon semble altérer légèrement les délais d’un modèle à un autre (pour brouiller les pistes?) Bref on ne peux qu’estimer les valeurs de chaque délais, c’est la raison pour laquelle vous noterez que mon programme ne capte pas à tout les coups, les délais étant encore mal calibrés, libre a vous de tester les délais et de me faire vos retours si vous parvenez a être plus précis, voila mes délais actuels : Verrou 1 : Entre 2700 et 2800 micro secondes Verrou 2 : ? 0 : Entre 180 et 420 micro secondes 1 : Entre 1280 et 1480 micro secondes Verrou 3 : ? Vous noterez aussi que dans mon code, je n’ai pas tenu compte des verrous 2 et 3, qui ne sont pas indispensables dans ce cas précis (même si ce serait mieux de les demander), en revanche quand nous émettrons depuis le raspberry PI, il nous faudra être plus rigoureux. Année 2014­2015 Geek
  55. 55. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 11 : Relier à un écran et afficher du texte Aujourd’hui nous allons apprendre à faire ça : Mais non pas la boite bande de péquenauds incultes (wink wink nudge nudge), mais ce magnifique écran LCD, à l’origine utilisé sur les vieux téléphones nokia (ben oui on est pas des nouilles molles). Le but de ce tuto sera donc de brancher un petit écran LCD rétro éclairé (a 2,50€ sur ebay cela dit) et d’y afficher un texte choisis. Je suis partis du principe que je voulais, lorsque je branche mon raspberry au labo ou autre part, récupérer l’adresse ip qui lui est automatiquement attribué par le réseau sur lequel je me connecte, et l’afficher sur l’écran afin que je puisse me connecter au rpi en ssh sans avoir a demander a l’admin du réseau cette fameuse ip. Année 2014­2015 Geek
  56. 56. Mohamed Bouhamed To be human you must to be Geek (oui je sais la ça n’est pas une IP réseau mais j’ai perdu l’autre photo alors on vas s’en contenter ) Ce sera donc notre fil rouge , je vous rassure tout de suite, l’intro est longue, mais le tuto lui est très court, je m’en voudrait de vous tuer une seconde fois après le tuto sur la réception radio . Le matériel 1. Un raspberry Pi (holala quelle surprise ! ) 2. Un écran LCD nokia 5110 à 10€ sur sparkfun, 4,89 € sur ebay, voir même à 2,50€ si vous cherchez encore sur ebay et peut être moins cher ailleurs 3. Quelques fils qui trainent, un peu d’étain, et un fer à souder Les branchements Notez que l’écran possède deux rangée de 8 Trous à l’opposée l’une de l’autre, vous pouvez utiliser l’une ou l’autre des rangées ça ne fais aucune différence, nous utiliserons celle avec les inscriptions de chaque pin afin d’être sûr de ne pas faire d’erreurs. Année 2014­2015 Geek
  57. 57. Mohamed Bouhamed To be human you must to be Geek Les 4 trous sur les coins sont uniquement la a titre de fixation, ils ne sont reliés à rien Voila le branchement en image, fiez vous aux couleurs pour le fils qui sont un peu cachés : ATTENTION : sur mon écran l’alimentation principale est en 5V, cependant il semble que plusieurs sous modèle de la même référence n”acceptent que du 3v en entrée, aussi ne reliez comme ci dessous qu’après avoir regardé la fiche technique de votre écran. Si votre écran n’accepte que du 3V, reliez le fil rouge coté rpi au pin 1 et non au pin 2. Le programme Année 2014­2015 Geek
  58. 58. Mohamed Bouhamed To be human you must to be Geek Pour installer le programme , ouvrez la console SSH de votre rpi, et tapez les commandes suivantes : Téléchargement du programme nb: la source est dans le zip pour ceux qui voudraient comprendre plus en détail le fonctionnement du script :). sudo wget http://idleman.fr/ressources/PHP/piScreen/lcd.zip 1 sudo wget http://idleman.fr/ressources/PHP/piScreen/lcd.zip Décompression sudo unzip lcd.zip 1 sudo unzip lcd.zip Déplacement sudo mv lcd /etc/lcd 1 sudo mv lcd /etc/lcd Le programme est installé Utilisation En ligne de commande /etc/lcd/screen -p "Hello world" 1 /etc/lcd/screen -p "Hello world" Options • -hcommande d’aide • -iaffiche l’ip LAN de la machine courante à l’écran • -naffiche le nom de la machine courante (hostname) à l’écran Année 2014­2015 Geek
  59. 59. Mohamed Bouhamed To be human you must to be Geek • -p[text] affiche le texte spécifié à l’écran • -p [text] [0-10] affiche le texte spécifié à l’écran et définis le contraste de l’écran Obtenir son IP sur l’écran lorsqu’on se connecte a un réseau Comme vous avez u le voir dans les options, la commande /etc/lcd/screen -i 1 /etc/lcd/screen -i Il nous suffit donc de lancer un CRON (une tâche planifiée) qui vas lancer cette commande toutes les x minutes (moi j’ai mis toutes les 1 minutes, mais bon c’est mieux d’augmenter un peu histoire de ne pas flooder non plus). Ouvrez votre crontab crontab -e 1 crontab -e Ajoutez la ligne * * * * * /etc/lcd/screen -i 1 * * * * * /etc/lcd/screen -i Enregistrez, fermez et hop ! Tuto terminé A voir aussi La même chose, avec un écran couleur et tactile de 36€ pour ceux qui ont les moyens Encore la même chose, avec un écran moins cher (mais du coup de moindre capacité) a base de librairie python, très bien expliqué par notre amis Zem Année 2014­2015 Geek
  60. 60. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 12 : Allumer des prises à distance Avant que la fin du monde (un peu tardive), ou une trop grosse cuite du nouvel an ne nous sépare, je tenais à vous offrir ce petit tuto sur le “télécommandage” (ça se dit ça?) de prises électriques depuis le raspberry PI. Nous allons donc reproduire notre tuto 7 “éteindre/allumer une lampe avec le raspberry PI” mais cette fois ci, sans utiliser de fils. Démonstration Quelques screenshots de l’application web évoquée dans la vidéo : Accueil des périphériques, par pièces Espace de configuration sans utilisation de base de données Année 2014­2015 Geek
  61. 61. Mohamed Bouhamed To be human you must to be Geek Interface adaptables tablettes/smartphone Points forts / Points faibles (de l’utilisation des ondes radio) Ce montage est similaire au montage filaire que nous avons déjà vu, mais il a pour différences les points suivants. Année 2014­2015 Geek
  62. 62. Mohamed Bouhamed To be human you must to be Geek FORCES : • Intégrable à votre appartement/maison sans avoir à démonter les murs ou à abîmer quoique ce soit • Ne prend qu’un seul PIN GPIO sur le rpi au lieu d’un par relais, il est donc possible de gérer une quantité infinie de périphérique (enfin 2^30 soit 1073741824 périphériques en fait :p) en n’utilisant qu’un seul pin • Le circuit de commande est dynamique, vous pouvez ajouter, déplacer, supprimer vos périphérique sans aucune modification à faire en terme d’électrique/électronique • Il est plus simple de permuter la commande classique (interrupteur simple) et la commande via le Raspberry PI afin d’utiliser simultanément les deux, ainsi si vôtre rpi grille, vous pourrez encore vous servir de votre système électrique de manière classique • Niveau esthétique, c’est plus discret qu’une 30 aine de fils qui se baladent • Le système est “portable” d’une habitation à une autre :), vous pouvez donc déménager facilement sans démonter les murs • Le système peut traverser la plupart des murs/obstacles/matières il vous est donc possible de gérer des périphériques dans des endroits peu accessibles FAIBLESSES : • La portée de l’émetteur que l’on a acheté est d’environ 30M (edit: si vous prenez celle d’ebay et une bonne alimentaiotn externe et que vous fixez un fil d’antenne, vous pouvez atteindre 200m de portée), peut être plus avec une bonne antenne, il vous faudra donc peut être plusieurs émetteur ou une bonne antenne ou encore un émetteur de meilleure qualité si vous avez une grande maison • Le système radio est au système filaire ce que le wifi est aux câbles Ethernet, donc moins sécurisé, bien que le signal soit sur 32 bits (auquel j’enlève les 2 bits d’état et de groupe) ce qui fait 1 073 741 824 combinaisons possibles par périphérique, dans le doute, faites mois plaisir : ne raccordez quand même pas des trucs qui craignent genre votre robinet à gaz • Avec ce montage, vous êtes sujet aux parasites radio, si il y en a beaucoup dans votre environnement, le signal peut être parfois mal capté (même si il est envoyé 5 fois et qu’on utilise le codage de Manchester ce qui réduit fortement le risque) Le matériel requis Si vous avez suivis le précédent tuto sur la radio, vous devriez déjà tout avoir : • Un raspberry PI modèle A ou B ~30€ • Un set de 3 prises chacon + télécommande (~30€, vous pouvez acheter une prise seule mais ça coûte super cher (~20€ la prise), autant grouper) • Un émetteur RF 433Mhz (j’ai acheté le mien 15€ mais je me suis fait arnaquer, vous pouvez en trouver à beaucoup moins cher, par exemple à 3€ ici ou sur ebay à 1.3€) Année 2014­2015 Geek
  63. 63. Mohamed Bouhamed To be human you must to be Geek Ce qui nous fait un coût domotique entre 30€ et 65€ par la, en fonction du nombre de machines que vous voulez commander et des prix que vous trouvez sur le net. Notez que par la suite si vous souhaitez équiper d’autres pièces vous n’aurez pas à racheter de Raspberry PI ni d’émetteur (à moins d’habiter un palace auquel cas le prix ne vous posera pas problème) du coup vous paierez entre 15€ et 30€ pour équiper une pièce supplémentaire (en fonction du nombre de prises, des réductions, des frais de ports etc…). Le montage Le montage rpi + émetteur 433 mhz a déjà été expliqué dans notre premier tuto sur RPI+radio, mais comme je suis un chic type et que j’adore faire des gribouillis, je répète le schéma ici : nb : Une antenne de 17.3 cm serait la taille optimale (merci à Ju pour la précision) Le code Le code de l’interface web+programme C qui émet les signaux radio est téléchargeable ici : http://idleman.fr/ressources/PHP/hcc/hcc.zip Année 2014­2015 Geek
  64. 64. Mohamed Bouhamed To be human you must to be Geek 1. Dé-zippez le code dans un répertoire var/www/hcc 2. Faites un sudo chown -R www-data:www-data /var/www/hcc sur tous le dossier hcc (changez /var/www/hcc si votre chemin est différent, important sinon rien ne fonctionnera) 3. Faites sudo chown root:www-data /var/www/hcc/radioEmission puis un sudo chmod 4777 radioEmission sur l’exécutable nommé radioEmission (important sinon l’interface web ne fonctionnera pas) 4. Le script est installé !! L’utilisation Vous pouvez envoyer un signal de deux façon différentes : En ligne de commande linux : /var/www/hcc/radioEmission 0 12325261 1 on 0 = le numéro WiringPi du PIN du Raspberry relié a la carte émetteur 433mhz (ici zéro, qui correspond au pin physique 11 du rpi) 12325261 = Un code de télécommande que nous attribuons arbitrairement au raspberry PI, ca permet aux prises de n’obéir qu’a ce code et donc qu’a votre raspberry. 1 = code du récepteur (choisis arbitrairement, c’est ce qui permettra au récepteur de savoir si c’est à lui qu’on donne l’ordre ou a un autre) on = état de la prise souhaité on ou off nb : Le ./ est obligatoire devant quand vous exécutez le programme depuis le répertoire courant, si vous ne le faite pas vous risquez de tomber sur un “commande not found” Depuis l’interface web : qui en réalité se contente d’exécuter la commande précédente (pourquoi faire compliqué) lorsque vous cliquez sur un item. Pour vous connecter, les logins et mot de passe par défaut sont : login : admin mdp : admin Ces identifiants peuvent être changé en éditant le fichier constant.php situé dans le répertoire hcc Notez bien que vous ne pourrez rien piloter tant que les prises n’auront pas fait l’apprentissage du signal que vous envoyez (expliqué un peu plus ci dessous). Année 2014­2015 Geek
  65. 65. Mohamed Bouhamed To be human you must to be Geek La liaison émetteur/récepteur Les prises électriques Chacon ont un module d’apprentissage de signaux intégré, ce qui veux dire que lorsque vous les brancherez, elles “écouteront” pendant 5 secondes les signaux envoyés et reconnaîtrons ces signaux pas la suite. Il vous faut donc pour chaque prise, la brancher et émettre le signal avec le Raspberry PI (via l’interface web disponible sur http://wotre.raspberry.pi/hcc ou par ligne de commande) avant 5 secondes pour qu’elle soit par la suite liée au signal. Vous reconnaîtrez des clic clac successifs vous avertissant que la télécommande a bien reçu votre signal et l’a mémorisé. En résumé Il y a donc trois façons de piloter l’installation : pilotage classique : je passe par les interrupteurs Chacon (télécommande ou télécommande sous forme d’interrupteur) pour allumer/éteindre mes lampes pilotage par interface web : j’allume/éteint mes lampes via une interface web sur navigateur internet de tablettes/pc/smartphone pilotage par reconnaissance vocale :Lorsque je prononce une phrase définie, mon pc envoie directement une requête au Raspberry PI qui allume ou éteint les lampes Pour ce dernier, je me suis contenté de mélanger mon tuto sur la reconnaissance vocale (raspberry pi 09). Je vous invite à faire la même chose, le résultat est plutôt propre. Pour configurer yuri selon votre interface : 1. Créez vos périphériques sur l’interface 2. Allez dans configuration, puis onglet divers 3. Cliquez sur télécharger le xml 4. Le XML est à placer dans le répertoire macros de votre YURI le mot clé de reconnaissance vocale, sera le nom que vous avez donné au périphérique Si vous avez des problèmes de portées, de gros parasites, ou de mauvaise communication, pensez a faire ces deux choses : • Prendre une alim externe pour les cartes radio et les l’alimenter au maximum de ce qu’elles sont capables de faire (cf la clause “voltage max” de fiche technique, souvent c’est entre 5 et 12V) • Souder un fil conducteur de 17.3 cm a l’émetteur et au récepteur pour servir d’antennes. Avec ces deux points, vous pouvez passer de quelques centimètres à plusieurs centaines de mètres de portée, la différence est vraiment flagrante. Année 2014­2015 Geek
  66. 66. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 13 : Détecter l’ouverture des portes et fenêtres En attendant que je parvienne à trouver la motivation pour monter la vidéo sur la sonde température radio (j’ai la vidéo, mais mon monteur est en plein partiels et je n’ai aucune notion d’adobe première ^^), je vous lance ce ptit tuto à vous mettre sous la dent. Aujourd’hui nous allons voir comment détecter l’ouverture d’une porte, d’une fenêtre, ou de quoi que ce soit qui s’ouvre ou qui se ferme, avec le raspberry PI et un petit composant à environ 3€. L’état de la porte (ouverte/fermée) sera visible depuis une interface web, ou depuis notre interface de reconnaissance/synthèse vocale YURI (implantée dans les précédents tutoriaux sur le raspberry PI) Le principe : Un mini aimant est fixé sur le bord de la partie mobile votre porte (que nous appellerons le battant), et un petit capteur sera fixé sur la partie fixe de la porte (que nous appellerons tenant), ce capteur est nommé “capteur à effet de hall”. C’est quoi ce composant cheulou au nom barbare ? Un capteur à effet de hall est simplement un composant qui vas renvoyer 1 ou 0 si il est, ou non, à proximité d’un champs magnétique (par exemple émis par un aimant) D’une certaine manière, c’est un bête interrupteur, à ceci près qu’il ne réagit pas à une pression mais à une “magnétisation” proche. Mais alors, pas besoin d’un composant, pourquoi ne pas utiliser juste deux fils qui se touchent ? Et bien surtout à cause du frottement, l’avantage du capteur a effet de hall est qu’il n’y a aucun contact “physique” puisque celui ci est magnétique donc : 1. Pas de risque que le montage bloque la porte 2. Pas de risque que l’usure du frottement abime le circuit 3. Moins casse gueule et moche qu’un bête système de fils 4. Sur la partie mobile, pas besoin de fils, d’alimentation, ou du moindre circuit : un aimant est en moyenne actif 400 ans, ne nécessite aucune alimentation,ne coute rien, et peut être minuscule. Vous l’aurez compris, ce capteur à effet de hall sera branché au raspberry PI et lui enverra du 0 (l’aimant est lointain donc la porte est ouverte) ou sur 1 (l’aimant est proche donc la porte est fermée), le rapsberry Pi mettra à jour sa base de données (ici un simple fichier texte) qui sera alors consulté par l’interface web et par YURI. Année 2014­2015 Geek
  67. 67. Mohamed Bouhamed To be human you must to be Geek Ce que je ne vous dis pas Oai je sais, c’est con puisqu’au final je vous le dis, mais respectez mon style littéraire bande de gaufres ! J’ai dis plus haut que le capteur renvoyait une valeur digitale (0 ou un 1) et fonctionnait un peu comme un interrupteur, je vous ai mentis En réalité le capteur seul est plus une “résistance” qui vas varier en fonction de la proximité du champs magnétique et renvoyer une valeur analogique (0.2,1.4 etc…), et c’est un problème pour nous qui avons besoin d’un 0 ou d’un 1. C’est la raison pour laquelle nous avons commandé un capteur avec un petit circuit associé, ce circuit comportes quelques autres composants qui vont traiter la valeur analogique et, a partir d’un certain seuil, définir qu’elle envoie un 0 ou un 1 (ex : si la résistance est entre 0 et 2,5 on envoie 0, sinon on envoie 1) . Et la ou cette petite carte est top, c’est que vous avez la possibilité de régler ce seuil !! En effet un ptit potentiomètre qui se présente sous la forme d’une vis (donc réglable avec un tournevis plat) permet de faire varier ce seuil, ainsi nous pourrons agir sur la sensibilité de notre détection de porte en fonction de la porte et de la puissance de l’aimant choisis. Je vous conseille bien évidemment de commander les aimants conseillés ci dessous qui sont minuscules et surpuissants, mais sur la théorie n’importe quel aimant avec un peu de portée fait l’affaire :). Le matériel : • Votre fidèle raspberry PI • 1 Capteur à effet de hall~3€ (mais il y a moyens de trouver moins cher je pense) edit: le lien semble mort, vous pouvez prendre celui la, qui est sensiblement identique ou encore ce modèle non ajustable à 1,7€ (fdpin) : http://dx.com/p/hall-magnetic-sensor-module-for-arduino- dc-5v-135033 • 1 Aimant Rare earth surpuissant ~1€ les 5 Le montage : Une grand mère unijambiste pourrait faire ce montage dans le noir mais je vais quand même vous le spécifier histoire que les lecteurs les moins sobres puissent nous suivre : Année 2014­2015 Geek
  68. 68. Mohamed Bouhamed To be human you must to be Geek nb : J’ai choisis de relier les données sur le pin physique 11 du raspberry, qui correspond au numéro “0” avec la librairie wiring PI. Le code : On vas avoir : Un programme en C qui vas vérifier toutes les x secondes l’état du pin “0” (qui sera donc à 0 ou 1 en fonction de si la porte est ouverte ou fermée) et envoyer l’état a une page php. Une page php qui vas enregistrer la valeur dans une base de données (ici un fichier texte) Enfin une page html basique qui vas faire un appel ajax au fichier texte de la base de donnée toutes les x secondes et afficher “porte fermée” ou “porte ouverte” en fonction du contenu du fichier texte. Notez que dans le fichier PHP nous avons aussi prévu quelques lignes pour yuri (yuri requête sur la page php, qui vas vérifier l’état du fichier et retourner à yuri la phrase a dire en conséquence “porte fermée” ou “porte ouverte”). 1. idleman.fr/ressources/PHP/capteurOuverture.zip Année 2014­2015 Geek
  69. 69. Mohamed Bouhamed To be human you must to be Geek 2. Décompressez son contenu dans /var/www/capteurOuverture 3. Réglez les permissions des fichiers (sudo chmod -R 777 /var/www/capteurOuvertureou moins bourrin avec un 775 ou un chown www-data) 4. Si vous voulez utiliser YURI, copiez le xml ouverture.xml du zip dans votre répertoire macros de yuri, et éditez le en remplaçant “votre.raspberry.pi” par l’adresse réseau de votre raspberry PI L’utilisation Lancez le programme en C avec les paramètres : 1. Adresse de la page php 2. Numéro wiring Pi du pin auquel vous avez relié le capteur ex : ./capteurOuverture /var/www/capteurOuverture/capteurOuverture.php 0 Lancez l’adresse http://votre.raspberry.pi/capteurOuverture (en remplaçant évidemment “votre.raspberry.pi” par l’adresse réseau de votre raspberry PI) Ouvrez/fermez votre porte et visualisez le résultat sur l’interface web Interrogez yuri en ouvrant/fermant votre porte C’est tout pour aujourd’hui bisous mes poulets, moi je part fêter mon quart de siècle ! Année 2014­2015 Geek
  70. 70. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 14 : Surveiller les performances du rpi depuis le web C’est bien beau de traficoter tout un tas de truc avec notre raspberry PI ! Mais celui ci étant une frêle petite bébête, il peut être intéressant de le contrôler un peu question performances. Et ça tombe bien, il existe une interface web mimi comme tout justement faite pour ça !! RaspControl vous permettra de monitorer de nombreuses infos sur l’état de santé de votre raspberry pi,n’importe quand et n’importe ou. Ce petit logiciel en PHP est “standalone” c’est à dire qu’il peux tourner sans que vous ayez au préalable installé un serveur web. Avec raspcontrol, vous pourrez consulter des informations mais aussi effectuer quelques actions comme redémarrer le système, redémarrer /stopper/démarrer apache, consulter vos fichiers de logs, mettre à jour les paquets, mettre à jour le firmware, relancer ssh etc..etc… Année 2014­2015 Geek
  71. 71. Mohamed Bouhamed To be human you must to be Geek Installation Tenté par raspcontrol ? Alors installons tout ça !! EDIT : Comme l’équipe de dev de ce programme s’amuse à changer son archi tout les 4 matins, il est possible que ce qui suit ne corresponde plus à la réalité, je vous conseille donc de vous reporter au tuto d’instal officiel pour plus de sûreté :) N’oublions par avant tout de faire une mise à jour générale des paquets sudo apt-get update sudo apt-get upgrade 12 sudo apt-get update sudo apt-get upgrade On installe ensuite le paquet php5-cli qui permet simplement de faire du php en ligne de commande sudo apt-get install php5-cli 1 sudo apt-get install php5-cli On se place dans un répertoire quelconque, on télécharge l’archive de raspcontrol et on la décompresse cd /home/pi/ wget https://github.com/Bioshox/Raspcontrol/zipball/master unzip master 123 cd /home/pi/ wget https://github .com/Biosho x/Raspcontro l/zipball/mas ter unzip master Année 2014­2015 Geek
  72. 72. Mohamed Bouhamed To be human you must to be Geek Le dossier décompressé à un nom barbare, donc on le renomme “monitoring” (ou autre, comme vous voulez) mv Bioshox-Raspcontrol-694435b/ monitoring 1 mv Bioshox-Raspcontrol-694435b/ monitoring Théoriquement, on peux lancer le programme à ce stade, le problème c’es qu’il vas se lancer sur le port 80, qui est déjà utilisé par notre serveur web (apache, lighthttpd ou nginx…) donc on chance le port en éditant le fichier d’exécution du programme : cd monitoring nano start.sh cd monitoring nano start.sh Remplacez 12 HOST=0.0.0.0 PORT=80 HOST=0.0.0.0 PORT=80 Par 12 HOST=0.0.0.0 PORT=8080 12 HOST=0.0.0.0 PORT=8080 (ou un autre port en fonction de ce qui est déjà pris chez vous) et enregistrez (ctrl+x, Y puis entrée) Vous pouvez ensuite lancer le programme avec la commande : sh ./start.sh 1 sh ./start.sh Année 2014­2015 Geek
  73. 73. Mohamed Bouhamed To be human you must to be Geek (vous devez être situé dans le répertoire “monitoring”, si ce n’est pas le cas, il faut taper le chemin complet vers start.sh) Vous pouvez alors accéder via un navigateur a votre panel de contrôle à l’adresse : http://votre.adresse.raspberry.pi :8080 (remplacez “votre adresse raspberry pi” par l’adresse réseau de votre rpi) A la première connexion, raspcontrol vous demande de créer un compte, entrez donc un identifiant et un mot de passe Cliquez sur “create account”, vous retombez alors sur un écran similaire qui vous demande de vous identifier, remettez les même identifiants puis “login”, ça y est, vous êtes sur le monitoring !! Année 2014­2015 Geek
  74. 74. Mohamed Bouhamed To be human you must to be Geek L’installation/utilisation est terminée, cependant si vous ne voulez pas être embêté très prochaine, il vous faudra faire une petite manip !! En effet vous remarquerez que si vous fermez votre terminal, le star.sh s’arrête et vous ne pouvez plus accéder à votre monitoring (zut !). Pour résoudre ce problème, il existe plusieurs manières de faire (non vous n’allez pas laisser votre console ouverte 24/24h 7/7j bande de gougnafiers ^^) la plus simple reste encore d’utiliser Screen. Screen est un petit utilitaire qui permet d’ouvrir une console en “tâche de fond”, ainsi vous pouvez y lancer des programmes sans avoir a garder votre terminal ouvert. Installons d’abord Screen sudo apt-get install screen 1 sudo apt-get install screen Année 2014­2015 Geek
  75. 75. Mohamed Bouhamed To be human you must to be Geek Puis lançons notre monitoring à travers Screen screen -dmS Raspcontrol sh ./start.sh 1 screen -dmS Raspcontrol sh ./start.sh Vous verrez alors que vous pouvez fermer votre console sans interrompre le programme ! Sympa non ? Mais un dernier problème se pose !! ( hé hé hé ) Que se passera t’il quand votre raspberry PI vas redémarrer ? Plus de screen en tâche de fond, donc plus de monitoring, obligé de relancer la commande ci dessus (fuck !!) On vas donc créer une petite tâche planifiée qui vas se lancer automatiquement au reboot du rapsberry et qui vas exécuter notre commande screen. On ouvre notre gestionnaire de tâche planifiée crontab -e 1 crontab -e On y ajoute la ligne suivante à la fin du fichier @reboot cd /home/pi/monitoring &amp;&amp; screen -dmS monitoring sh ./start.sh 1 @reboot cd /home/pi/monitoring &amp;&amp; screen -dmS monitoring sh ./start.sh On sauvegarde (ctrl+X, Y, puis entrée) et c’est bon !! Notez bien que le combo screen + cron au démarrage est très puissant et vous permet de lancer tout un tas de programmes automatiquement et en tâche de fond au démarrage de votre raspberry pi (par exemple la commande startx pour afficher un bureau visuel ou autres…) Si vous voulez accéder a votre interface de monitoring depuis autre part que votre réseau, pensez a débloquer le port 8080 de votre box . Année 2014­2015 Geek
  76. 76. Mohamed Bouhamed To be human you must to be Geek Notez bien que cette application est codée avec les pieds, mais qu’elle à le mérite d’exister, de fonctionner relativement bien et qu’elle pose les bases de la récupération d’infos importantes pour monitorer le rasp . Année 2014­2015 Geek
  77. 77. Mohamed Bouhamed To be human you must to be Geek Raspberry PI ~ 15 : Créer sa propre prise radio (et autres périphériques) pour 6€ Mercredi, 13 février 2013 Ce post est le quinzième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! Suite à nos précédents tutos sur le Raspberry PI et la domotique contrôlée par radio (et notamment le tuto 12), certains d’entre vous m’ont demandé si il n’était pas possible de se passer de prises Chacon, d’autres m’ont demandé si des multiprises existaient sur le même principe, quant à moi je souhaitais de débarrasser de Chacon pour diverses raisons : • Je voudrais, sur le long terme, personnaliser le protocole radio (inclure une notion d’état de la prise, en retour de consommation d’énergie etc..) • J’aimerais construire de A à Z mon système domotique dans une optique pédagogique (100% DIY) • J’aimerais ajouter quelques gadgets dans ma prise (pourquoi pas un capteur de température ou de consommation de courant ? :D) C’est pourquoi nous allons aujourd’hui construire notre propre prototype de prise radio (pouvant facilement être transformée en multiprise) commandée par le Raspberry PI Année 2014­2015 Geek
  78. 78. Mohamed Bouhamed To be human you must to be Geek Je parle de “prototype” pour une bonne raison, bien que le montage fonctionne parfaitement, il peux être amélioré au niveau du “packaging” (boitier). Notez bien que vous devez au moins avoir lu le tuto 12 pour comprendre celui ci Vous êtes chaud patate pour commencer ? Voyons voir un peu le matos à se procurer Le matériel Pour aller plus loin, il vous faudra les curieuses bêbêtes suivantes : • Votre télécommande chacon OU votre rpi configuré comme dans le tuto 12 • 1 carte arduino duemilanove(c’est la moins chère 15€) • 1 Micro contrôleur ATmega 328-pu avec bootloader inclus(2.55€) (nb:le bootloader inclus est important, si vous achetez une puce vierge par mégarde, il faudra la flasher vous même) • 1 Résonateur ZTT 16.00mx(1.11€ les 5) • 1 Résistance 1.27Ω (brun rouge violet gris rouge) (enfin c’est ce que j’ai pris mais il semblerais qu’une 10k convienne mieux. • 1 Récepteur RF 433,92 mhz(1.28€ avec l’émetteur dont on ne se servira pas ici) • 1 Carte relais 5V 1 canal(1.26€) • 1 LED quelconque et sa résistance associée (j’ai pris une led au hasard + résistance 8.21MΩ (gris rouge brun doré) ces composants sont optionnels et servent juste de repères visuel lors du fonctionnement Notez bien que vous n’aurez à Acheter la carte arduino qu’une fois, elle nous servira de programmateur pour construire toute nos futures prises, de même, les résonateurs sont par lots de 5 et nous n’en avons besoin que d’un par prises. Vous en aurez donc environ pour 6€ par prises radio par la suite, notez que je ne compte pas l’alim (un vieux chargeur de portable récupéré fera l’affaire) ni le boitier (bah oui la vas falloir se dépatouiller avec un Tupperware qui traine XD), nous ne faisons pas vraiment ça pour le prix mais il faut souligner qu’on y gagne quand même par rapport au commerce (d’autant qu’il est possible de faire des multiprises avec ce montage et donc de réduire encore le cout par prises, on peux aussi remplacer/supprimer certains composants en bricolant (suppression du résonateur,remplacement de l’atmega par une Attiny etc..) mais je vais pas tout vous faire non plus :p). Attends attends…C’est quoi ton Arduino la ? Dans ce tuto nous introduirons les carte de programmation “Arduino” et leurs micro contrôleur Atmega qui nous permettrons de créer tous nos périphériques à bas cout sans avoir à acheter un raspberry à chaque fois ^^. Petite explication rapide sur l’arduino donc Année 2014­2015 Geek

×