PROJET AUTOBLOG


Idleman

source: Idleman

⇐ retour index

Raspberry PI ~ 15 : Créer sa propre prise radio (et autres périphériques) pour 6€

mercredi 13 février 2013 à 21:23

Ce post est le quinzième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

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 :

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

2013-02-13 19.58.07

Je parle de « prototype » pour une bonne raison, bien que le montage fonctionne parfaitement, il peux être amélioré au niveau du « packaging » (boitier).

Afin de vous motiver un peu (car je vous sent mous aujourd’hui :p), wala la petite vidéo de démo du prototype (avec quelques explication sommaires pour vous mettre en jambe)

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 :

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 :p

image

L’arduino (souvent nommé ardui) est une carte électronique très similaire au raspberry PI, à savoir qu’elle peut gérer des entrées sorties GPIO et contenir un code (en C++) pour réagir en fonction de ces gpio, cela dit, il y a quelques différences importantes :

Vous l’aurez compris, l’arduino est une carte de bas niveau, très rapide, moins chère, réductible à une puce et avec plus de gpio que le rpi ce qui en fait un élément parfait pour créer tous nos périphériques radio (prise radio, sonde de température radio, capteur d’ouverture radio etc…).

Les arduino (ou plutôt a terme : les atmega 328) seront les muscles de notre domotiquemaison

En revanche l’ardui n’a pas les capacité de traitement du rpi, de plus le rpi est plus haut niveau et gère en natif l’Ethernet, la gestion d’un os etc…

le rpi sera donc le cerveau de notre domotiquequi commandera et sondera les muscles arduino.

Le fonctionnement de la prise

Nous allons refaire le tutoriel #12 : allumer/éteindre une prise à distance avec le raspberry PI,sauf que cette fois ci, la prise sera « maison ».

Concrètement vous allez appuyer sur un certain bouton de votre télécommande chacon (ou envoyer le signal depuis votre rpi)

Ce signal vas être capté par le récepteur RF relié à l’arduino, l’arduino vas vérifier que le signal parle bien de lui (à son code récepteur) qu’il provient bien de la télécommande (a le bon code émetteur) et a un état on ou off (afin de savoir ce qu’il doit faire).

L’arduino vas alors envoyer 0 ou 1 a la carte relais, celle ci vas donc « ouvrir » ou « fermer » le circuit classique de la prise et laisser passer ou non le courant.

OUI MAIS !!!

Comme les cartes arduino c’est un peu gros et que c’est un peu cher d’en mettre une dans chaque prises, on ne vas utiliser que leurs micro contrôleur : l’Atmega328, qui lui coute 3€ et fait la même chose que l’arduino.

Évidemment comme c’est une puce nue, ça vas être un peu moins rigolo a programmer qu’une carte ardunio (qu’il suffit de brancher sur le port usb du pc), on vas donc se servir de la carte arduino pour programmer les puces Atmega que l’on inclura dans chaque prises :)

Ça parait un peu fou comme ça pour les novices électroniques que nous sommes mais vous allez voir, c’est en fait très simple :)

La programmation de la puce : branchements

Avant tout, téléchargez et installez l’IDE (environnement de développement Arduino) sur le site d’arduino.

Voila le schéma permettant de programmer une puce atmega à partir d’une carte arduino

http://domotique.idleman.fr/data/priseMaison/progatmega.jpg

Notez que sur le schéma j’utilise ce qu’on appelle une « BreadBoard », c’est une plaque en plastique qui permet de tester des circuits sans avoir à souder juste en plantant des fils dans des trous, les trous sont reliés de manière horizontale entre eux, sauf pour les lignes bleu et rouges (utilisée pour l’alimentation) qui eux sont verticaux.

Je vous conseille vivement l’achat d’une breadboard, ça ne coûte rien et c’est quasi indispensable pour tester les circuits dans de bonnes conditions (je m’en veux un peu de ne pas vous en avoir parlé avant)

Une fois le circuit branché et alimenté vous pourrez lancer l’IDE arduino et programmer la puce comme si elle se trouvait sur la carte arduino.

Le code

Commencez par choper les sources du programme ici :

http://domotique.idleman.fr/data/priseMaison/priseRadio.zipPremièrement, allez dans votre repertoire arduino puis dans \libraries\ et créez un dossier nommé : EEPROMAnythingDedans vous placerez le fichier EEPROMAnything.h Nous venons d’inclure une nouvelle librairie à l’arduino IDE, celle vi vas nous permettre de gérer l’EEPROM (petite mémoire interne de l’atmega dans laquel nous allons stocker nos données) 

Ensuite, lancez l’IDE (arduino.exe) : il ne vous reste qu’a copier le programme priseRadio.txt ci dessous dans l’ide, et cliquer sur télé-verser

image

 nb: En fonction de l’atmega programmée, vous aurez peut être a changer le modèle de la carte dans l’ide, ex : j’ai une carte arduino duemilanove, mais mon atmega acheté est un uno, du coups lors du télé versement j’ai une erreur du genre “invalid sync blablabla”, donc je sélectionne uno dans le menu :

 image

Et je retente le coup :p

Une fois la puce programmée on vas pouvoir passer a notre vrai branchement de prise radio final (fiou !! ^^, vous verrez avec le temps ça parait enfantin)

Le montage finale : branchements

La je ne peux pas faire explication plus détaillée (et plus débordante) que ce schéma… :D

http://domotique.idleman.fr/data/priseMaison/radiomaison.jpg

En gros l’Atmega est toujours relié au résonateur (son horloge) et est alimenté des deux coté en 5v comme sur le montage précédent.

On à en plus branché trois composant sur l’Atmega : une led qui vas clignoter quand la prise recevra un signal, afin de ne pas griller la led, on rajoute une résistance (la résistance est a définir en fonction de la led) notez bien que led+ résistance sont optionnels et ne servent que pour avoir un visuel des signaux reçus.

On ajoute à ça une carte de réception radio 433 mhz qui vas capter les signaux radio et les envoyer à l’Atmega par le pin 9, cette carte radio est évidemment alimentée en 5v

On ajoute enfin une carte relais qui vas recevoir un ordre de l’Atmega part le pin 10 quand le signal reçu sera le bon, la carte relais vas alors fermer le circuit de droite (lampe + prise) ce qui vas allumer la lampe. Evidemment, cette carte aussi est alimenté en 5v.

Attention :Faites attention au sens de l’Atmega, vous pourrez vous repérer au petit creux rond en haut de la puce

nb: Les pattes extérieures du résonateur ne sont pas polarisées donc vous pouvez les intervertir par rapport au schéma, en revanche les pattes de la led le sont, donc si votre led ne s’allume pas, c’est peut être que vous vous êtes loupé de sens :)

L’utilisation

Le programme se comporte de la façon suivante :

Le tout premier signal au protocole home easy envoyé à la prise sera enregistré dans celle ci et deviendra le signal de référence pour ouvrir ou fermer le relais de la prise, il est donc nécessaire d’envoyer ce signal le plus rapidement possible après la mise en route du montage final, car un signal voisin pourrait vous piquer la place.

Actuellement, un seul signal peut être enregistré et vous n’avez droit qu’a un seul essai (bien que le matériel puisse en mémoriser beaucoup plus, le code doit être amélioré).

Lorsque la prise reçoit un signal correspondant a son signal de référence, la led clignote 10 fois très rapidement, et le relais change d’état

Lorsque la prise reçoit un signal non correspondant a son signal de référence mais au protocole home easy, la led clignote 1 fois lentement.

Les améliorations possibles

 Si vous avez des problèmes de portées, de gros parasites, ou de mauvaise communication, pensez a faire ces deux choses :

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.

Raspberry PI ~ 14 : Surveiller les performances du rpi depuis le web

samedi 9 février 2013 à 19:46

Ce post est le quatorzième (mazette, déjà !) d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

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 !!

image

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…

Installation

Tenté par raspcontrol ? Alors installons tout ça  !!

N’oublions par avant tout de faire une mise à jour générale des paquets

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

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

Le dossier décompressé à un nom barbare, donc on le renomme “monitoring” (ou autre, comme vous voulez)

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

Remplacez

HOST=0.0.0.0
PORT=80

Par

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

(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

image

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 !!

image

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

Puis lançons notre monitoring à travers Screen

screen -dmS Raspcontrol sh ./start.sh

Vous verrez alors que vous pouvez fermer votre console sans interrompre le programme ! Sympa non ? Sourire

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

On y ajoute la ligne suivante à la fin du fichier

@reboot cd /home/pi/monitoring && 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 Sourire.

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 :)

Bien à vous,

Idle

Le bordel de l’info #24

dimanche 3 février 2013 à 16:00

 

Salut bande de gecko asthmatiques, vous en avez d’la chance !! A l’heure où les canards défient la gravité, à l’heure ou un millier de nerd se touchent la nouille sur minecraft, bref à l’heure ou tout est proche de foutre le camp, vous êtes serein, sur un terrain vague avec un dealer d’organe, ou dans votre salon High Tech isolé du monde à vous manger une 24 em tranche du bordel de l’info !

ToyCon, convertisseur png–>ico

samedi 2 février 2013 à 16:47

Qui n’a jamais galéré pour convertir correctement une bête image .PNG en fichier .ICO et vice et versa sans avoir de rendus horribles, de problèmes de tailles etc… ?

Alors bien sûr il existe une tonne de services web, de programmes, et de gadgets en tout genre permettant de faire ça, mais c’est généralement compliqué d’en trouver un qui soit simultanément bon, simple d’utilisation, sans inscription, sans installation, à la bonne taille, sans perte de qualité etc…

Or il se trouve que j’utilise cette perle rare depuis quelques années déjà, et que je me suis récemment apercu avec horreur que je n’en avais jamais parlé ici !! Mesdames et MesGeeks, sans faillir plus longtemps je vous présente : ToyCon :

image

ToyCon se présente sous la forme d’un petit exécutable gratuit, sans chichi, sans inscriptions et sans installation faisant apparaitre, à son exécution une petite boite en carton quelque part sur votre bureau.

Tout fichier png placé dans cette boite sera automatiquement convertis en fichier ico placé au même endroit et avec le même nom que le fichier source.

Il est évidemment possible de faire l’inverse, à savoir convertir un fichier ico en image png.

Nous pouvons également préciser qu’il est possible de glisser déposer plusieurs fichiers en même temps sur la boite pour faire de la conversion de masse.

Les png transparents sont correctement géré et il est possible de choisir les différentes tailles à inclure dans le .ico (128*128, 96*96,72-72,64*64,48*48,32*32,24*24,16*16) et il supporte les couleurs 4bits, 8bits et 32bits.

image

Voila ce n’est pas un programme qui vas révolutionner le monde, il ne paye pas forcement de mine, il n’est pas tout jeune (dernière MAJ en 2010), et il ne fera rien pour la sauvegarde du thon rouge mais il m’a sauvé la vie plus d’une fois, il fait vraiment bien son boulot, il le fait de manière ludique, et il le fait sans vous prendre votre matinée avec des options débiles donc je me devais d’en toucher un mot ici Sourire.

Bien à vous mes ptits poulets,

Idle

Raspberry PI ~ 13 : Détecter l’ouverture des portes et fenêtres

jeudi 24 janvier 2013 à 19:02

Ce post est le treizième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

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)

Une petite vidéo démonstration pour nous mettre en jambe :

video-2013-01-23-21-30-27 from idleman on Vimeo.

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.

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 ! :D

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 :D

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 :

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 :

ouverture

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. Téléchargez le programme ICI
  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 ! :D