Bonjour à tous,

En voila un titre qu’il est long :p

Alors pour commence bonne année à tous ! De mon côté 2015 a fini sur le fait que je suis désormais mon propre patron en freelance du making ! Et ça marche pas trop mal ;)

Ca explique en grande partie pourquoi j’ai pas publié grand chose (même sur Twitter) avec le fait que j’ai été (et suis encore) particulièrement actif au fablab :) Et j’ai décidé d’arrêter les bonnes résolutions du genre « aller cette année promis plein d’articles », je sais que je m’y tiendrais pas …

Bref ça c’était pour la partie news, passons à la réalisation. Vous avez peut-être déjà lu mon article sur le sauvetage de ma télé, dont j’avais prévu la cause de la panne avant même de l’ouvrir, « l’avantage » d’acheter Samsung. Cette fois ça concerne un moniteur PC, qui était mon ancien Samsung que j’avais refilé à mon père. Et dès qu’il m’a annoncé les symptômes (« il s’allume une fois sur 5 » « il s’éteint tout seul » …) j’ai dit « te tracasse pas je suis sûr à 95% de ce que c’est … ». Et la j’ai la preuve que c’est la pure obsolescence programmée !

Je vous passe un peu les étapes de démontage, ça varie d’un moniteur à l’autre. La, grosso modo, j’ai démonté un panneau clipsé derrière, ensuite j’ai enlevé toutes les vis visibles, puis déclipsé le cadre entier (faut forcer un peu mais j’ai réussi à faire ça à peu près proprement). Ensuite c’est un lego : on démonte les nappes, quelques vis et on arrive aux coupables.

Et oui merci Samsung d’avoir encore une fois mis des condensateurs avec des tensions de service inadéquates ! Alors ça se voit pas très bien sur la photo mais les deux condensateurs du milieu (dont l’un est tartiné de colle) sont gonflés (ça se voit au dessus c’est pas plat) et ont « transpiré » (y’a des traces de suintements jaunes), signes qu’ils sont morts. La où c’est fort, c’est que les trois condensateurs qu’on voit sont en parallèles : les deux qui étaient en panne sont des 10V, celui qui est encore bon sur la droite un 25V. Je doute très fortement que Samsung se soit planté et ait mis un 25V qui coûte plus cher, je pense surtout qu’ils ont gratté sur les deux autres … et d’ailleurs c’est même pas une histoire de compacité car je les ai remplacé par deux de la même capacité et de l’exacte même taille mais en 25V. Bref, de la pure obsolescence programmée !

Et une fois la réparation effectuée ça remarche nickel ;)

Bonjour à tous,

Aujourd’hui je vous propose un projet que j’ai réalisé en à peine quelques heures sur une plateforme qui m’était inconnue ! Bon pas totalement vous allez le voir car intégrée à l’IDE Arduino ;)

Contexte et problématique

Le point de départ de tout ça c’est mon meilleur ami, enfin son portail d’entrée de sa copropriété pour être précis. En effet, sa copropriété ne lui a refilé qu’une seule télécommande, ce qui n’était pas forcément très dérangeant au départ mais maintenant il a un colocataire … Ca devenait compliqué …

Donc au départ quand il me présente le problème, je me dit basiquement « oh y’a 99% de chance pour que ça soit du 315 MHz, du 433 MHz ou du 968 MHz et j’aurais donc le loisir de me servir d’une copie chinoise » sauf que … j’amène mon matos d’analyse radio (si le sujet vous intéresse, chercher « RTL SDR » sur google ;) ) eeeeeetttt … Niet, j’arrive à rien analyser … Ok tu le prends comme ça ? J’ouvre l’engin, regarde la puce, en galérant un peu je tombe finalement sur la fiche de donnée et outch : c’est du 3 kHz ! Première fois que je croise ça perso … Bref j’ai écumé le net pas moyen de trouver une télécommande dans cette fréquence. Bref on l’avais plutôt dans l’os pour le coup.

Et puis quelques jours plus tard je me dis que je pourrais tout simplement attaquer le problème par un autre bord : et si je connectais la télécommande par le wifi et un relais ? Et oui, je peux simuler l’appui sur le bouton avec un relais piloté par un serveur connecté à internet. Alors c’est possible car je ne l’avais pas précisé, sa télécommande marche depuis son appartement. Et aujourd’hui, avec l’ESP8266 les prix pour se faire ce genre de montage ont drastiquement chutés !

ESP8266 et NodeMCU

Let’s talk about the ESP8266 :)

Alors pour ceux qui n’ont pas ou peu entendu parlé, l’ESP8266 est un microcontroleur ARM avec tout ce qu’il faut pour faire du wifi pour un prix dérisoire (on trouve des modules à 3$). Au départ c’était pas mal de bricolage, mais à 3$ ça a motivé beaucoup de bidouilleurs, et c’est aujourd’hui beaucoup plus facile et fiable, notamment grace à une petite carte de développement et un firmware portant tout deux le même nom de NodeMCU. Vous pouvez la trouver ici pour 7,45$.

A quoi elle ressemble :

Pin mapping :

Une petite note sur le sujet, malgré la sérigraphie D0 D1 etc … ressemblant furieusement à celle des Arduino, la numérotation est celle marquée sous la forme « GPIOx » et il faut utiliser le x dans l’IDE Arduino comme numéro de pin (donc par exemple, digitalWrite(5,HIGH) pour le GPIO5 sérigraphié « D1 »).

L’avantage c’est que c’est une « vraie » board de développement : il y a tout ce qu’il faut pour la programmer, et brancher des choses dessus (chose plus complexe avec les modules seuls).

Pour l’installer sur votre IDE Arduino (version 1.6.4 minimum) je vous invite à suivre cette procédure très simple.

Après c’est comme une Arduino : même langage et il y a de nombreux exemples pour vous montrer ce que la bête apporte.

Fonctionnement d’internet et du projet

Il me parait important avant d’expliquer certains principes fondamentaux et indispensables ici sur le fonctionnement d’internet. Tout d’abord la notion d’adresse IP et de DNS. Alors l’adresse IP vous en avez sans doute entendu parler c’est ce chiffre étrange qui ressemble à 186.14.26.54 par exemple. En fait,  4 valeurs allant de 0 à 255 (un octet quoi) séparé par des points. Ce numéro correspond à une adresse dans un réseau donné. Chez vous si vous n’avez pas de réseau bidouillé (auquel cas de toute façon vous n’avez même pas pris la peine d’attaquer la lecture de ce paragraphe) vous avez donc : une adresse IP sur internet (votre box) et une adresse par périphérique réseau (votre PC, votre tablette en wifi, votre smartphone en wifi …). Toutefois les adresses réseaux « internet » et « locale » n’ont rien à voir. C’est un petit peu comme « avenue du Général de Gaulle » : y’en a une à Paris, une à Marseille etc … Pourtant ce n’est pas la même avenue :) Et sinon comme toute adresse elle permet de transmettre des messages à un destinataire précis.

Concrètement prenons un exemple : vous allez sur un site internet. En tapant l’adresse IP du site dans votre navigateur internet, vous envoyez une requête de type GET vers cette adresse pour récupérer le site internet et l’afficher (qui est en fait un simple fichier texte codé). Cette requête fait parti du protocole HTTP. En fait internet c’est des messages qui transitent. Mais il faut un peu mettre tout le monde d’accord organiser sécuriser tout ça. La intervient le protocole TCP/IP qui permet d’ouvrir un « canal » de discussion. Après il faut savoir ce qu’on demande : arrive le protocole HTTP. C’est exactement comme deux personnes qui discutent : on a des cordes vocales pour produire différents sons, ensuite on forme des mots, puis des phrases et on rajoute la langue et la politesse par dessus « coucou moi c’est Bob » « coucou moi c’est Peter ». Internet c’est un peu pareil, et même en élargissant c’est le cas de toute les communications numériques.

Bref revenons en à notre site internet : vous aller me dire « mais moi je tape pas une adresse IP dans ma barre de navigation ??! » Et oui vous tapez http://www.google.fr ou http://www.arduino.cc. C’est la que le serveur DNS fait son apparition : quand vous taper une adresse, un appel vers un serveur DNS (vous pouvez configurer ça dans votre panneau de configuration) est réalisé pour lui demander quel est l’IP correspondant à ce site. Et hop magique vous récupérez l’adresse IP du site et entamer la discussion avec :)

« Ok et mon réseau local à moi ? » Donc maintenant vous avez compris que vous pouvez taillé le bout de gras avec tout internet juste avec votre navigateur. Donc maintenant imaginons vous êtes au boulot, vous connaissez l’adresse IP de votre maison (au  passage, aujourd’hui tous le monde est en IP fixe, c’est à dire qu’elle ne change normalement jamais, il y a quelques années ce n’était pas le cas) et que vous la tapez dans votre navigateur. Sauf que qui va répondre à l’autre bout ? Personne car vous n’avez pas de serveur. Votre message va arriver à votre box qui fait office de routeur, c’est à dire que c’est la standardiste : « bonjour vous voulez vous adressez à qui ? ». Car si vous faites le test chez vous à partir de différents PC ou autre objet connecté à votre réseau, vous verrez que vous avez la même IP sur internet. C’est normal, c’est le routeur votre point d’entrée au réseau internet. Après il y a votre réseau local ou vous avez une autre adresse IP, cette fois différente pour chaque objet connecté à votre réseau. Et la vous allez me dire « mais comment je fais alors pour m’adresser à un périphérique de mon réseau local depuis l’extérieur ? » c’est la que la notion de « port » intervient. En effet, votre routeur (« la standardiste ») reçoit une communication sur son adresse IP internet, mais reçoit en plus un numéro de port. C’est ce numéro qui va dire ensuite sur le réseau local avec qui vous voulez communiquer. Typiquement en http c’est le port 80 qui est utilisé. C’est la aussi transparent pour l’utilisateur, quand vous visitez un site internet, en fait l’adresse IP complète envoyée est de la forme : xxx.xxx.xxx.xxx:80

Mais les navigateurs prennent en charge des numéros de port différents, il suffit de le spécifier en tapant http://xxx.xxx.xxx.xxx:yy yy étant votre numéro de port. Mais la vous allez me dire « mais comment il sait que ce port est pour ce périphérique précis de mon réseau  ? » Et bien c’est la où il faut aller configurer sa box pour lui dire que les messages arrivant sur ce port la doivent être adressés à cette IP la du réseau local.

Sur la Freebox révolution voici la démarche .

IP de destination = IP de l’ESP8266

Protocole = TCP

IP Source = toute

Port de début = Port de fin = port avec lequel vous lancerez l’appel

Port de destination = port que l’on va paramétrer pour le serveur ESP8266.

En lisant ces deux dernières lignes vous avez peut-être compris que le numéro de port que vous allez taper dans votre navigateur n’est pas obligatoirement celui que l’on va spécifier sur notre serveur. On pourra donc se connecter en tapant par exemple xxx.xxx.xxx.xxx:260 alors que le serveur sera sur le port 504 pourvu que le routeur soit configuré avec un port de début 260 et un port de destination 504 pour l’IP local de l’ESP8266.

Sur les autres box ce sera guère différent dans l’esprit, attention certaines font la différence entre le firewall et le routeur, ce qui fait qu’il faut prévoir la configuration dans les deux et ne pas se retrouvé avec une redirection bloquée par le pare-feu ;)

Bon j’espère vous avoir appris plus de trucs que de vous avoir embrouillé mais il me semblait indispensable de préciser ces points afin de comprendre le code (très court en plus) qui va suivre.

Montage

Le montage est très simple : la carte, un relais, et on tire les deux fils du bouton. J’ai ajouté également un bouton manuel pour pouvoir piloter la télécommande même si tout est planté et sans avoir forcément à passer par un PC ou un smartphone pour ouvrir le portail. Pour la petite histoire, je monte le projet et pouf marche pas … Hum je regarde mon relais : arf 12V !! Donc il ne se fermait pas à 5V. J’avais pas de matos sous la main donc j’ai viré le relais et j’ai utilisé le mosfet qui pilotait le relais pour faire le contact. Voici les deux schémas en un, au crayon gris celui que j’avais imaginé, en rouge les raccordements une fois le relais dessoudé :

SCAN2

La node MCU est simplement alimenté par un chargeur USB de téléphone.

Programmation

On va donc construire un mini serveur, qui quand il recevra une requête exécutera différentes actions. On va faire en sorte de lui donner les fonctions suivantes :

  • répondre par une page un bouton « ouvrir »
  • procéder à l’ouverture en elle même
  • quand l’ordre d’ouverture est exécuté envoyer une page de confirmation

On va donc lancer son IDE Arduino et commencer par inclure les librairies qu’il faut :

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

 

Ensuite on va créer notre serveur sur un port normalement libre (grosso modo éviter les ports « classiques » des différents protocoles internet, une recherche google vous les donnera).

long port = 504;
ESP8266WebServer server(port); // serveur HTTP

 

On va ajouter une petite fonctionnalité gadget qui est le mDNS : vous vous souvenez du serveur DNS ? Ca marche sur internet, mais chez vous ? Et oui y’en a pas … Donc si vous voulez accéder à votre module sans connaitre son IP par coeur, il faut utiliser du mDNS. L’idée c’est d’envoyer un message à tout le monde le réseau et répond qui se sent concerné. On lance donc un « serveur » mDNS qui permettra de répondre à un domaine précis. Ici on va rentrer ça :

MDNSResponder mdns; // serveur mDNS

...

if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}

 

Et on pourra appeler notre module dans le navigateur, connecté sur son réseau local (ça ne marchera pas depuis l’extérieur) en tapant « esp8266.local ».

Ensuite on va définir les réponses de notre serveur :

server.on("/", handle_root);
server.on("/open", handle_open);

 

Avec ces commandes, si je tape monip:monport/open j’exécute directement la routine d’ouverture, et il me répondra avec « opening ». Si je tape monip:monport il me répondra avec une page internet que vous visualisez ici en HTML. Lorsque j’appuierais sur le bouton « Ouvrir » de la page, ça appellera la page /open et donc l’ouverture.

Evidemment il faut se raccorder au wifi, on spécifie donc ces paramètres de connexion au départ :

char* ssid = "xxxxx"; // votre SSID
char* password = "yyyyyyy"; // votre mot de passe wifi

 

Le reste du code est au final assez logique : on pilote le relais, on lance la connexion, on lance les serveurs et on debug sur le port série. Ce qui donne au final :

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

char* ssid = "xxxxx"; // votre SSID
char* password = "yyyyyyy"; // votre mot de passe wifi
MDNSResponder mdns; // serveur mDNS
long port = 504;
ESP8266WebServer server(port); // serveur HTTP

const int led = 16; // led integree au NodeMCU, attention logique inverse
const int relay = 5; // relais connecte au GPIO5

void setup(void) {

/* Configuration des entree/sortie */
pinMode(relay, OUTPUT);
pinMode(led, OUTPUT);

digitalWrite(led, 1);
digitalWrite(relay, 0);

Serial.begin(115200); // initialisation du port serie

connect(ssid, password); // connexion au reseau Wifi

Serial.println("");

/* demarrage du serveur mDNS sur esp8266.local */
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}

/* ajout des actions du serveur */
server.on("/", handle_root);
server.on("/open", handle_open);

server.begin(); // demarrage du serveur

Serial.println("HTTP server started");
}

void loop(void) {

server.handleClient(); // gestion du serveur

/* Si connecté au wifi alors la LED s'allume */
if (WiFi.status() == WL_CONNECTED) digitalWrite(led, 0);
else digitalWrite(led, 1);

}

/* Routine pour se connecter à un reseau wifi */
void connect(char *_SSID, char* _PWD) {

Serial.println("");
Serial.print("Connecting ");
Serial.print(_SSID);
Serial.print(" password = ");
Serial.print( _PWD);

WiFi.begin(_SSID, _PWD);
Serial.println("");

int h = 0;

// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");

if (h++ > 40) { // si trop long on abandonne
Serial.println();
Serial.println("Failed to connect");
return;
}

}

Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());

}

/* Action serveur sur /open */
void handle_open() {
server.send(200, "text/plain", "opening"); // repond "opening"
open(); // actionne le relais
}

void handle_root() {

/* page[] contient notre page web et renvois vers le domaine /open si on appuie sur le bouton */
char page[] = "<h1>Ouverture portail</h1><p><a href=\"open\"><button>Ouvrir</button></a></p>";

server.send(200, "text/html", page); // repond avec la page web codee en HTML

}

void open() {

digitalWrite(relay, 1);
Serial.println("Opening");
delay(1000);
digitalWrite(relay, 0);

}

 

Sur Github

Boitier

J’ai fait une jolie boîte en medium découpée à la découpeuse laser :) pour sa fabrication au total ça m’a pris …. 10 min. Comment ? Makercase.com est un site qui vous permet de générer des plans de boitier simple. J’ai rentré mes dimensions, l’épaisseur de mon matériau et le type d’assemblage et hop un fichier svg. Alors la je trouve ça assez con vu que c’est quand même le DXF qui est le fichier de base dans le domaine. On doit donc l’ouvrir sous Inkscape, tout sélectionner, faire « convertir objet en chemin » et enregistrer sous au format DXF pour avoir un fichier exploitable par la découpeuse. Mais avant un petit tour sous DraftSight pour ajouter les trous pour la fixation de la carte, le relais et le bouton, et un passage pour le câble d’alimentation. On découpe, et voila le résultat (désolé photo avec téléphone de secours) :

photo (1)

photo (2)

photo (5)

photo (4)

photo (7)

Classe hein ?

Au passage vous voyez :

  • ma « correction » pour virer le relais et utiliser le mosfet.
  • les fils sortant de la télécommande (désolé j’ai oublié de prendre une photo des deux fil soudés au bouton) elle même collé au fond du boitier avec du double-face.
  • la nodeMCU est à l’envers, pour que je puisse accéder au pins par au-dessus.
  • le bouton poussoir en façade.

Fichier DXF (faites clic droit « enregistrer sous »)

Utilisation

Il me suffit maintenant soit de taper « esp8266.local » en local, ou « votreip:port » depuis l’extérieur pour accéder à ça :

(bien évidemment sur les captures j’ai pas laissé l’IP et le port de mon ami ;) )

cc

On clique et normalement si tout va bien votre relais se ferme et il s’affiche :

cc2

Mais poussons le vice un poil plus loin …

App Android

Et ouais :) alors y’a un super outil pour les gros noob d’Android comme moi, c’est appinventor. il vous suffit de créer un compte, et vous pouvez développer des applis toute simples, avec un codage graphique à la codeblock. C’est très intuitif. En plus le débuging est simple : soit par connexion USB avec votre tel, soit par wifi en installant une application dédiée. A la fin quand votre projet est fini, vous pouvez : soit générer un QR code qui vous renverra un lien de téléchargement temporaire, soit télécharger le fichier .apk à installer en manuel (la aussi je vous renvois vers google c’est tout simple).

Voici l’appli : http://ai2.appinventor.mit.edu/#5889257248391168

Bon l’écran de base c’est un gros troll pour mon pote avec un magnifique montage que vous pouvez faire péter évidemment ;)

Il suffit d’aller dans « Paramètres », de rentrer votre IP et votre port et voila ça devrait fonctionner. Quand on appuie sur le bouton « ouvrir » ça envoi une bête requête, tant que l’app ne reçoit pas « opening » le bouton reste verrouillé ou bien il se déverrouille au bout de 5 secondes.

Une petite base donnée (« tinyDB ») permet à la fois de garder en mémoire les données pour ne pas avoir à les retaper à chaque lancement, et de passer les infos d’un screen à l’autre. En effet sur AppInventor on ne peut pas créer de variables globales, donc le seul moyen de se faire passer des infos d’un screen à l’autre c’est de passer par une base de donnée …

Au passage dans paramètre certains champs sont prévus mais inactifs : en fait à l’origine je pensais passer par du MQTT plutôt que du HTTP mais ça nécessitait trop de moyens …

Limites et conclusion

Un projet bouclé en à peine quelques heures, grâce à une série d’outils puissantz de simplicité (bon j’imagine que si vous débutez complètement ça vous prendra plutôt quelques jours, surtout si tout ne marche pas du premier coup …). Ca démontre bien toutes les mutations en cours dans le domaine et qu’on est loin du temps ou il aurait fallut 4 ingénieurs pendant un mois pour faire ça …

Alors la principale limite ici c’est que ce n’est pas du tout sécurisé, n’importe qui qui a votre adresse IP et le bon port peut piloter votre système. Ici c’est un portail collectif d’une grande résidence donc bon … Et faut arriver à dégoter la bonne IP et le bon port ! Mais bon dans l’absolu c’est assez facilement crackable pour quelqu’un qui veut vous nuire, donc n’utilisez pas ce système pour votre porte d’entrée ou de garage.

Une autre limite est que si internent est capricieux chez vous, bin vous ouvrirez plus rien …

En terme de coût on est tout simplement sous la barre des 10€ sans pousser le vice outre mesure. Avec un circuit dédié on pourrait même tomber sous les 5€ sans problème :)

A bientôt et n’hésitez pas à poster vos questions en commentaire de cet article ;)

Bonjour à tous !

Aujourd’hui je vous propose de faire un arroseur automatique avec un système de mesure un peu spéciale, puisqu’il ne coûte rien (il fait partie du circuit en lui-même !) et est normalement inusable.

Idée globale

Le projet est somme toute assez banal : faire un système permettant d’arroser une plante en toute autonomie (ou presque). On doit donc :

– mesurer l’humidité dans la terre.

– suivre le niveau d’eau dans le réservoir.

– commander une petite pompe.

– Avoir une batterie

– Le tout en consommant le moins possible.

Choix techniques

Evidemment, chez moi, qui dit basse conso dit MSP430 :) je suis donc parti sur un MSP430G2452, celui fourni avec le launchpadG2 en plus du G2553. La principale différence entre les deux c’est qu’il n’a pas de port série hardware (mais il y a un soft pour débuguer et on a pas besoin de plus ici). Mais ce qui a en plus assurer ce choix, c’est les facultés pour faire des mesures capacitives. En effet de base sur cette gamme sont intégrées des fonctions permettant de faire des boutons type « touch ». Ce type de mesure consiste tout simplement à mesurer une variation de capacité. Je vais détailler le principe dans le paragraphe suivant, en attendant voici le lien vers le topic sur le forum 43oh où est fournie une librairie pour Energia (et oui évidemment je vais coder sous cette IDE ;) ).

Librairie CapTouch

Mesure capacitive

Pour commencer il faut savoir ce qu’est un condensateur : c’est en fait en quelque sorte un mini réservoir de stockage électrique, comme une pile quoi, mais capable d’absorber et de fournir cette énergie stockée de manière très rapide. Alors il existe beaucoup de technologie de condensateur, mais beaucoup reposent sur un principe de superposition de plaques conductrices entrelacées. Il y a deux « jeux de plaques », chacune pour une borne du condensateur : une à la masse, l’autre pour le courant « condensé » (j’avoue que c’est en écrivant cette phrase que je me rend compte que je ne sais pas comment on appelle les bornes d’un condensateur !).

Plus la surface est grande, et plus l’écart entre les plaques est réduite, plus la capacité est importante. Autre facteur important (et c’est celui qui nous intéresse en fait ici) la capacité à isoler de l’isolant qui sépare les plaques. Un matériaux est caractérisé par une constante diélectrique, qui indique grosso modo sa capacité à conduire plus ou moins l’électricité. Et ici on jouer avec ça : en faisant varier l’humidité dans la terre on va changer sa constante diélectrique et donc notre mesure de capacité qui va augmenter.

Il nous faut donc deux électrodes (nos plaques du condensateur) et entre les deux, la terre du pot (ou l’eau du réservoir car on va tant qu’à faire utiliser la même technique !). Dans l’idée on veut faire ça :

Ici en fait je n’ai pas placer face à face mes électrodes, c’est pas grave ça marche aussi, et ça ressemble d’ailleurs dans le principe à un bouton touch  :

Quelques liens en vrac qui font seront peut-être plus parlant :

https://www.youtube.com/watch?v=0du-QU1Q0T4

http://www.analog.com/library/analogdialogue/archives/49-04/capacitive_sensing.html

http://www.positron-libre.com/cours/electrotechnique/notion-electricite/condensateur-capacite.php

Pourquoi ce type de mesure ?

La principale raison est que normalement c’est inusable, surtout en comparaison est des mesures résistives. En effet, la technique « classique » très simple à faire consiste à planter deux dans la terre, à ajouter une autre résistance pour former un pont et hop on alimente le tout et on regarde la tension au point milieu du pont. Plus d’infos :

http://www.electroschematics.com/6519/simple-soil-moisture-sensor-arduino-project/

Problème de cette méthode : imaginer la tronche des électrodes qui auront passé l’année en terre … Elles vont s’oxyder, la mesure dériver … Et en plus, si vous ne pilotez l’alimentation du pont, vous aller faire une électrolyse et la en quelques jours ça va commencer à dériver.

Avec une mesure capacitive, étant donné qu’il n’y a aucun contact électrique avec l’environnement, point de risque d’électrolyse ou d’attaque des métaux :) ça veut également dire qu’on peut facilement s’adapter pour mesurer n’importe quel liquide. Ça veut également dire qu’on peut par exemple mesurer un niveau d’essence sans risque d’explosion (bon je suis pas responsable de ce que vous foutrez avec ce tuto, donc je suis responsable de rien ! Si vous ne savez pas ce que vous faites jouez pas avec les liquides inflammables ;) ).

Niveau d’eau

Y’a quelques années j’avais fait un montage un peu similaire, et j’avais relevé un détails technique d’importance : vous vous êtes peut-être dit que vous pouviez vous passer du niveau d’eau du réservoir, en fait non. Sur mon premier proto, je n’en avais pas. Est arrivé le jour où il s’est vidé sans que je m’en rende compte. Et ça m’a vidé la batterie très rapidement puisque la pompe ne pompant plus rien, l’humidité ne remontait pas donc mon microcontroleur s’est acharné …

Moralité : il faut suivre le niveau d’eau.

Le circuit

arroseur eagle

 

A gauche la partie qu’on plante en terre, à droite la mesure de niveau d’eau. Alors ça se voit pas bien, mais sur la partie mesure d’eau, il y a deux zones sur la colonne de droite : un petit carré en bas qui sert de référence, et la grande pour mesurer le niveau à proprement parler. En fait je considère que l’eau arrive au moins au niveau au-dessus du petit carré. Connaissant sa hauteur, on peut ensuite en déduire un rapport capacité = f(niveau).

Les fichier CAD pour Eagle sont dispos sur mon Github. Comme je le disais l’avantage c’est que c’est directement intégré dans le circuit. On fait son circuit, on peint et vernis les électrodes (je rappelle qu’un condensateur ne conduit pas le courant, si on trempe dans l’eau comme ça ça va faire un court-circuit !). A noter que j’avais prévu des résistances pour tuner la mesure. En fait mes essais ont montré qu’il valait mieux mettre un condensateur de faible valeur (j’avais des 22pF dans mes archives et ça marche très bien). Donc sur le schéma électrique, au lieu des résistance de pull-down, je vous conseille de mettre des condensateur de quelques dizaine de pF, ça stabilise la mesure et ça fait beaucoup moins du n’importe quoi.

Une fois tout en place :

 

IMG_20150726_140000 IMG_20150726_135949 IMG_20150726_135934 IMG_20150726_140022

Le code

Le code ici est vraiment enfantin : d’une part Energia simplifie énormément les choses, et ensuite la librairie CapTouch intègre la mise en sommeil. Donc en fait on peut faire des mesures en permanence, même si on a l’impression que le microcontroleur turbine tout le temps, en fait il n’en est rien, ce n’est qu’une vision macroscopique (temporellement parlant). Si on dilatait le temps, on verrait que le microcontroleur passe la très large majorité de son temps en sommeil.

Pour l’algo il n’y a finalement pas grand chose à dire : comme il faut un certain temps à l’eau pour se diffuser dans la terre, je préfère y allait par « petite touche ». On arrose donc un peu, on attend, on mesure, si c’est pas assez on arrose encore …

J’ai optimisé un peu le code en créant une fonction utilisant un pointeur vers l’objet Captouch. Ca évite de réécrire trois fois la même routine …

Tout est dispo sur mon github.

Bon sinon il est pas vraiment optimiser du tout. J’ai pas tester mon système d’étalonnage, pas introduit de système de calibration … Comme je l’ai dit plus haut, je voulais déjà vérifier si dans le principe j’étais bon. Donc pas la peine de me lancer des cailloux parce que c’est pas top top, je le sais. Et n’empêche que ça fait le job :)

Version 2

Je ne sais pas si je la ferai mais j’ai déjà un paquet d’idées pour une V2 :) (pas la fusée hein) :

– Réduire la taille du circuit (->passage en CMS).

– Rajouter des boutons (pour la calibration ou forcer l’arrosage).

– Commande lumière artificielle.

– Mesure constantes environnementale (température, pression, ensoleillement).

– Connectivité internet (wifi surement) pour suivi/commande.

– Autonome énergétiquement (panneau solaire ?).

– Autonome en eau.

– Utilisation de l’acran Sharp qu’on trouve sur le boosterpack de TI : www.ti.com/tool/430BOOST-SHARP96

Il a la particularité de consommer très peu (quelques µA avec un rafraichissement de 1 Hz ce qui plus que suffisant dans notre cas…)

[Réalisation] Un T-shirt DIY

Publié: 8 juin 2015 dans Réalisations

Bonjour à tous !

Une fois n’est pas coutume, pas d’électronique aujourd’hui :)

Je vous propose de réaliser des t-shirts personnalisés, simplement, rapidement et avec un trés bon rendu, pour peu que vous ayez accès à une découpeuse laser.

Le matériel nécessaire :

– un t-shirt vierge (perso je vais chez décathlon)
– du papier Reynolds freezer (je détaille ce papier plus loin) environ 10€ les 12m (commandé sur ebay pour ma part)
– de la peinture textile : environ 3€ le pot chez creava.com
– une découpeuse laser
– un fer à repasser

Le principe est simple en fait : ce papier freezer est en fait un papier alimentaire à la base. Il comporte deux couches : une « sèche » et une « grasse ». En fait ça ressemble beaucoup au papier de votre boucher. La face grasse à la particularité de se coller au textile si on passe le fer à repasser dessus, et le papier se découpe à la laser. On va donc tout simplement découper un pochoir à la laser, le plaquer au textile avec le fer, et peindre comme un pochoir classique. On laisse sécher, on retire le papier, on fixe définitivement la peinture en repassant le fer dessus et ça y est !

En photo ça donne ça :

IMG_20150530_122159.jpg

Découpe laser :

IMG_20150530_123054.jpg

A améliorer : il faut un système pour bien tenir le papier. Ici j’ai mis des poids sur les côtés c’était pas suffisant.

Petit point non négligeable : tant pis si ça gâche un peu de papier, mais mieux vaut prendre de la marge sur les pochoirs car on a vite fait de mettre de la peinture à côté et ça part plus ensuite …

On glisse un carton dans le t-shirt, il aura deux rôles : aplanir et empêcher la peinture de traverser …

IMG_20150530_124600.jpg

On place son papier et on repasse :

IMG_20150530_124852.jpg

Puis pareil avec les forme intérieure :

IMG_20150530_125836.jpg

Ce point est primordial dans la conception de votre t-shirt, les petits bouts internes sans tenant sont un enfer … Privilégiez des formes d’un seul tenant.

On tamponne :

IMG_20150530_130948.jpg

A noter que j’ai utilisé un épaississant pour la peinture : il parait qu’elles ont tendance à être un peu liquide et à s’infiltrer sous le pochoir … J’ai donc fait une première couche avec, puis une seconde sans, sinon les peintures faisaient trop délavées.

Le résultat :

IMG_20150530_165724.jpg

Ça se voit peut-être pas très bien sur la photo mais le résultat est vraiment surprenant (surtout que c’est mon premier essai !).

Si vous voulez en discuter et suivre les évolutions, RDV sur le forum Labsud

A bientôt !

Bonjour à tous,

Bon décidément les temps sont durs … Un boulot monstre, dur dur de s’occuper du blog :s

Du coup je vous pond une petite news parce qu’elle est quand même intéressante cette nouvelle :p

Texas Instrument vient de sortir une nouvelle gamme de microcontrôleur : les MSP432. Grosso modo, ce sont ARM Cortex M4F avec très faible conso, comme les MSP430. Bon du coup il ne faut pas s’attendre à des furies non plus puisqu’il tourne au maxi à 48 mhz. Mais la conso peut tomber à 850 nA avec RTC, donc vraiment pas mal ! Et puis bon après on a les autres joyeusetés des ARM, à savoir tout plein de la flash, tout plein de la RAM, des ADC plus performants, pleins de port série, SPI, i2c … Bref, de quoi faire !

En plus de cette nouvelle série de puce, TI a eu le bon goût de sortir un launchpad équipé avec (qui abandonne au passage la robe rouge pour la noire), et Energia a eu le meilleur goût encore de sortir une nouvelle version supportant ce nouveau launchpad et d’introduire le multitasking, appuyer par RTOS qui est l’OS temps réel de Texas Instrument, qui permet de faire ce que ça dit c’est à dire du multitâche. Grosso modo, fini les prisse de tête quand on veut faire tourner plusieurs choses en même temps :) alors techniquement ce n’ai jamais du vrai multitasking qui nécessite plusieurs coeurs (et oui faut PC d’avant, simple cœur, vous aviez l’impression de lancer plusieurs choses en même temps mais ce n’était pas réellement le cas) mais dans l’idée on subdivise chaque action en sous-action pour les enchaîner au fur et à mesure et donner l’illusion que tout se déroule en même temps. Prenons un garagiste qui doit changer vos disque et faire la vidange, il peut dévisser le bouchon, enlever les quatre boulons d’une roue, lever la voiture, mettre le bac dessous, enlever la roue … Et au final vous récupérer votre voiture entretenue.

Dans les fait ici la nouvelle version ici intègre un exemple qui permet de faire clignoter des led à partir de 3 blink de base. Vous trouverez plus d’info ici.

Autres petites découvertes que j’ai fait au passage : TI se met au cloud avec notamment une version de Code Composer Studio en ligne. Plutôt sympa ! Il suffit de créer un compte (gratuit) pour y accéder. On note une option intéressante qui permet directement de se synchroniser avec github pour importer ses librairies.

Egalement un service pour avoir tous les exemples de codes mis à dispo par TI, ainsi qu’une application pour obtenir directement les brochages de certaines puces. Cette dernière appli je vois pas trop l’utilité pour le moment …

Enfin au niveau matériel, comme je suis pas mal wifi en ce moment, j’étais passé à côté du CC3200 en version MOD, ce qui signifie chez TI que c’est un petit module qui intègre tout ce qu’il faut. Pas de ARM à souder et autre, on soude ça comme un module GPS quoi, et c’est plié. Beaucoup moins galère que de prendre les composants un à un … Le revers c’est que c’est évidemment plus cher et qu’à la base les CC3200 ne sont pas donnés comparée à une concurrence farouche (mt7681, ESP8266 ….) : 36€ chez Mouser ! Aie … Tout dépend le besoin c’est sûr, mais passé d’un CC3200 à un esp8266 fait gagné 34€ … Certes vous risquez de galérer un peu plus, mais suivant le projet ça fait réfléchir.

 

A bientôt !

 

 

 

 

[News] Bonne année !

Publié: 20 janvier 2015 dans News
Tags:

Salut à tous !

Bonne année, meilleurs et plein de réussite dans vos projets :D

Alors j’entends déjà les mauvaises langues « le 20 janvier il serait pas trop tôt ! ». Ouais bin je vous répondrai que d’abord il parait qu’on a jusqu’à fin janvier, qu’ensuite mieux vaut tard que jamais, et qu’enfin vous êtes pas ma mère et que je fais ce que je veux :p non mais …

Alors je vais vous faire un petit topo sur tout ce qui m’occupe depuis quelques temps, et vous allez voir que les sujets et le travail ne manquent pas …

ESP8266

esp8266-module

Petite puce qui fait beaucoup parler d’elle en ce moment puisque pour 3,50$ elle vous permet d’ajouter le wifi à vos montages :)

Les tutoriaux et les montages l’exploitant commencent à fleurir sur le net donc en attendant que je vous ponde mon article vous pouvez en apprendre beaucoup, notamment sur le topic dédié sur le forum Arduino, et sur le forum dédié.

Alors le principal problème c’est que le fournisseur (Espressif, pas connu) a un peu sorti sa puce à l’arrache et le firmware de base était pas super abouti au départ. Cependant les choses avancent et la communauté commence à devenir importante, donc chaque semaine apporte son lot de nouveautés :)

MT7681

114990086 1_04

La concurrence :) par Mediatek cette fois donc c’est du gros … Et ça semble plus fiable dès le départ, et mieux documenté. Plus cher cependant ~5$. Ça emboîte dans un concept de Mediatek nommé LinkIt. Le projet est encore en phase de bêta mais ça semble fiable. Et la d’emblée le SDK et les outils sont fournis.

HLK-M30

2014111719521176449

Une version du MT7681 préparée par un autre fabricant. Prix ~5$ aussi.

LoRa

Une nouvelle norme radio développée par Semtech entre autre, visant à concurrencer Sigfox. Pour simplifier avec des petits modules à moins de 10$ on communique sur plusieurs kilomètres !

Free-shipping-1pcs-LOra-spread-spectrum-ultra-high-sensitivity-5-km-of-wireless-data-transceiver-module

Alors Sigfox c’est du hardware et un réseau. Pour l’instant LoRa (pour Long Range) c’est que du matos, mais ils visent un déploiement à grande échelle de réseaux pour l’internet des objets.

Perso j’aimerait bien mettre au point une passerelle open source cumulant un des chip wifi évoqué précédemment + une puce LoRa et créer un réseau pour l’internet des objet complètement gratuit :)

Petit sujet de travail du moment sur le sujet : coder une librairie … Et oui les modules que j’ai acheté sont basés sur le SX1276, et la lib qui existe préparée par cookinghack est basé sur le SX12772/73. Du coup j’en profite pour passer un coup de gueule à Semtech : les registres sont quasiment identiques mais pour une raison inconnue ils ont décidé de faire quelques petits changements qui n’ont aucun sens et du coup on est obligé de réécrire des pans complet de la librairie pour l’adapter … Et en plus pas des registres secondaires, non, genre les trucs clés …

GPS, GSM

Pour plusieurs projets j’ai dû jouer avec des GPS (NEO-6M surtout) et avec connexion de donnée par GSM. Alors je vais pas réécrire des tutos qu’on trouve déjà à la pelleté sur le net (quoi que tout ce qui est requête et basse conso c’est pas très détaillé, donc peut-être que je pondrai quand même quelque chose ;) ).

Mais j’espère quand même innover un peu, et arriver à faire du GPS assisté, ce qui permettrait de faire une acquisition en ~1s, pas mal hein ? Comme sur les téléphones en fait.

AppInventor

Un site sympa qui permet de développer une appli android en ligne en quelques minutes, sans être un dieu de la programmation (surtout qu’Android c’est un peu complexe quand même).

Perso en 1h, sans jamais avoir codé pour Android, j’ai pondu une app qui affichait des données envoyées depuis une Arduino connectée en wifi ! Bon après il y a quand même des limites, n’empêche que c’est quand même sympa, surtout quand on débute et qu’on veut faire des choses simples.

CC430 – ez430

Je vous avais parlé il y a quelque mois du fait que je bossais ardemment sur la prise en charge des CC430 dans Energia. Alors j’ai mis ça en stand-by pendant un moment après avoir avancé super vite parce que côté radio (côté intéressant quoi sur ces SoC) j’ai passé deux semaines et que ça marchait toujours pas ou très mal … Mais je vais m’y remettre ;)

FabLab

Gros chapitre ! J’y traîne depuis fin Août et c’est que du bonheur :) Super ambiance et super matos. Je suis comme un gosse à Toy’r Us. CNC, découpe laser, impression 3D … Et des gens vraiment sympathiques, on y a apprend beaucoup de choses. Bientôt des articles pour vous montrez quelques unes de mes créations ;)

www.labsud.org

IoTize

Quel est ce nom barbare ? C’est le nom qu’on a donné à notre projet réalisé au hackathon de Montpellier. On a décidé de le poursuivre et une demande de subvention est en cours de rédaction ;)

Pour vous donner l’idée du concept, il s’agit de donner à n’importe qui le moyen de connecter son environnement, et ce en open source, à bas coût et sans une ligne de code.

Exemples d’applications : vous voulez suivre toute l’année les variables de votre serre (température, humidité, luminosité …). Vous connectez les bons capteurs à la base communicante, rentrez vos code Wifi une carte SIM et vos données se retrouve sur un portail dédié sur internet. L’autre aspect c’est de permettre de créer des communeautés de données, par exemple pouvoir mettre en commun toutes les données de stations météo d’une région pour créer une carte régionale, comparer ses données avec celle du voisin …

Le constat c’est qu’actuellement les produits commerciaux qui existent sont pour la plupart cher, que si on décide d’en bricoler un soi même bin imaginez votre grand mère programmer une Arduino avec un DS18B20 et  un shield wifi + coder un serveur pour gérer les données … Donc l’idée c’est d’utiliser des projets open source et « simple » pour que toute les bonnes volontés puissent nous aider, et en finir avec le fait d’avoir besoin d’avoir un site dédié par objet connecté.

Energy Harvesting

Dans beaucoup des sujets que je traite actuellement, la gestion de l’énergie est une vraie problématique, c’est pourquoi un des domaines que j’étudie pas mal ces temps-ci c’est comment la récupérer. Dans le solaire j’ai eu deux problèmes : le premier était pour mon bateau. En faisant des calculs je me suis rendu compte qu’il ne fallait presque rien pour espérer n’avoir jamais à recharger sa batterie au plomb, ou très peu. Problème : les petits panneaux fournissent un faible voltage, et il faut grosso modo au moins 14 volts pour recharger la batterie au plomb. Et trouver un step-up qui soit efficace pour des courants de l’ordre du mA c’est chaud … Mais j’ai fini par (je pense) trouver mon bonheur : les TPS6104x de chez Texas Instrument. Jusqu’à 28V en sortie avec un rendement d’au moins 75% pour une tension d’entrée de 2,4V et un courant de 0,5mA ! Bref je me languis de tester … Pourquoi pas adapter ça ensuite aux voitures ? Deuxième problème dans le solaire : je bosse sur un montage qui doit récupérer un max d’un petit panneau solaire. Idéalement pour ceux qui s’y connaissent on rêverait d’une puce intégrant un step-up avec régulateur de tension/charge et un MPTT. Et bien en fait ça existe ! Chez Texas instrument encore : bq25504 (et grands frères qui intègre en plus d’autres fonctions). La réponse est en préparation chez ST. A noter qu’ils prennent en charge aussi les modules à effet peltier (thermocouple).

Sinon pour les autres sources d’énergie, deux produits qui peuvent vous donner de idées : une turbine à mettre dans un courant d’eau (rivière par exemple) et une turbine à brancher sur une canalisation (domestique, circuit arrosage, gouttière …).

Divers

Je viens de me chopper une appendicite, même si ça m’a bloqué quelques jours, j’ai 15 jours d’arrêt assigné à résidence, de quoi coder et designer un max :p

A bientôt :)

Bonjour à tous,

Un petit billet pour faire la promo du premier hackathon Montpellierain auquel je vais prendre part :)

Ca se déroulera du vendredi 14/11 au dimanche 16/11 et le thème est l’IoT (l’Internet of Things = objets connectés)

Les liens et infos utiles :

La page http://www.montpellier-agglo.com/hackathon

Le hackathon est dans les events de la http://digiworldweek.com/

Les inscriptions sont ouvertes sur  https://hackiot14.eventbrite.fr

Twitter : @HackIoT14

A bientôt ami(e)(s) DIYe(use)(r)(s) :D