Sonde Oregon Arduino - mesure de niveau

 

Description

Un Arduino peut émuler une sonde Oregon avec un émetteur RF 433MHz et l’excellent code disponible ici:

Il est possible d’emettre des trames de 2 types de sondes Oregon: la sonde de température thn132n et la sonde de température/humidité thgr228n.

L’intéret n’est pas de créer une sonde de température/humidité à base d’Arduino, cela ne reviendrai pas forcement moins cher qu’une sonde vendu dans le commerce.

L’idée est d’utliser ce protocole pour envoyer des données de capteur autres que température/humidité/…​

Un récepteur rfxcom ou compatible permettra de recevoir ces sondes atypiques.

L’usage décrit ici sera de pouvoir mesurer la hauteur d’une cuve (dans mon cas un bac à sel d’un adoucisseur) et d’envoyer la donnée sous le protocole Oregon.

 

Matériel

  • Un ci AVR compatible Arduino: ATtiny85

  • Senseur ultrason - HC-SR04

  • Emetteur RF 433MHz AM (ici un Laipac TLP434A)

Voir ce lien http://highlowtech.org/?p=1695 pour programmer l’ATtiny85 sous Arduino.

 

Shéma

 

Code

ATTENTION: L’ATtiny85 doit être configuré en horloge 8 MHz pour respecter les timing RF

Cela peut se faire dans l’IDE Arduino: une fois que l’ATtiny est connecté et testé avec un simple sketch "blink", choisir le type de carte “ATtiny45 (8 MHz)” et lancer “Burn Bootloader” (Graver la séquence d’initalisation) du menu "Outils". Il suffira de le faire qu’une seul fois.

Le programme va émettre le niveau de sel (en cm) restant dans la cuve codé dans une trame Oregon comme une donnée température (la donnée batterie n’est pas utlisée est forcée à '1' dans le programme soit 90% vu par le rfxcom.)

Elle sera donc vu par le rfxcom comme une sonde de température, cela impliquera que le logiciel domotique en amont devra interpréter cette donnée en conséquence.

Ci-dessous réception par un rfxcom de la trame émise et convertit en message xPL.

2016-11-02 23:40:35  xpl-trig { hop=1 source=bnz-rfxcomrx.hera target=* } sensor.basic { device='thn132n.bb' type='temp' current='26' }
2016-11-02 23:40:35  xpl-trig { hop=1 source=bnz-rfxcomrx.hera target=* } sensor.basic { device='thn132n.bb' type='battery' current='90' units='%' }
2016-11-02 23:43:07  xpl-trig { hop=1 source=bnz-rfxcomrx.hera target=* } sensor.basic { device='thn132n.bb' type='temp' current='26' }
2016-11-02 23:43:07  xpl-trig { hop=1 source=bnz-rfxcomrx.hera target=* } sensor.basic { device='thn132n.bb' type='battery' current='90' units='%' }
2016-11-02 23:45:39  xpl-trig { hop=1 source=bnz-rfxcomrx.hera target=* } sensor.basic { device='thn132n.bb' type='temp' current='26' }
2016-11-02 23:45:39  xpl-trig { hop=1 source=bnz-rfxcomrx.hera target=* } sensor.basic { device='thn132n.bb' type='battery' current='90' units='%' }

Il est possible de créer plusieurs sondes comptatibles Oregon en changeant le code de la constante OREGON_ID dans le sketch.

Le montage doit être alimenter sous une alimentaion de 5V. Le watchdog est utlisé pour réveillé l’ATtiny85 par intervale aprés mise en veille, cela devrait permettre une utlisation sur batterie (non testé).

 

Tests en situation

  • Photos:

Les fils reliés au cable en nappe ne servent qu’à la programmation de l’AVR ATtiny85 (dans ce cas un programmateur AVR USBTiny). il est possible d’uiliser une carte Arduino de base pour programmmer l’ATtiny85.

Table 1. Montages en test

.

.

.

.

.

.

  • Bargraphes

Graphes généré à partir des données en base MySql:

 

A faire

  • Circuit imprimé pour le montage final.

  • Renvoyer la hauteur en pourcentage au lieu de cm

  • Déduire la consommation de sel des graphes obtenus.

Autre usage de sonde

  • Sonde luminosité Arduino/Oregon à base d’ATtiny85

  • Sonde monoxide de carbone (à base de module MQ7)

…​


21/3/2016