[TUTORIEL] sur le montage et paramétrage de capteur/actionneur


#1

Salut à tous,

me revoilà encore avec un nouveau topic mais cette fois c’est pour partager avec vous tous le montages, codes et paramétrage des actionneurs/capteurs.

Pour le moment j’ouvre juste le topic, je le modifierais au fur et à mesure que mes docs seront prêtes.
Si vous en avez hésitez pas

:smiley:


#2

Salut à tous,

Bientôt une ébauche de la doc j’en suis à 10 pages déjà le plus long c’est pas de taper le texte mais la recherche des exemples et des codes plus leur adaptation à Gladys. Mais d’ici ce week-end vous l’avez. :wink:

@+


#3

Salut à tous,

Désolé pour ce retard, mais c’est la première fois que j’écris ce genre de tuto et je l’avoue, je me suis un peu emballé et je suis parti un peu dans tout les sens ;). Donc je suis repartis du début pour tout refaire correctement. Lol faire et défaire le quotidien des informaticiens…

Voici enfin le liens https://1drv.ms/w/s!AnRjJPC2u5tMoHtDSlScOwFjrmCK (One Drive)
Il n’est pas complet, je le compéterais au fur et à mesure de mes montages…

Dite moi si vous n’arrivez pas à le lire je le mettrais sur GIT.

Bonne lecture

PS Désolé pour les fautes d’orthographe, je l’écris sur mes temps de pause au taf Hi Hi Hi


#4

Salut @scoob79 !
C’est possible de l’avoir directement sur le forum pour qu’on l’intègre au référentiel? :slight_smile:


#5

Transposé en direct sur le forum ??? Je vais voir pour le faire
:wink:


#6

braveaux superbe travaille bien documenté :grin:


#7

Oui ! ça permet que ton travail soit indexé par le forum et donc disponible dans la recherche, ça peut aider du monde :wink:

beau boulot btw !


#8

Tutoriel Gladys


Bonjour à tout le monde, je vous propose un tutoriel sur Gladys, cependant je n’aborderai pas le sujet de l'installation car de nombreux tutoriel existe déjà sur ce sujet. Je vais vous proposer des tutoriels sur les modules de Gladys où la documentation est inexistante ou très rare et vous proposerai aussi de découvrir, dans certains tutoriels, comment assembler des sondes en électronique afin d’améliorer votre expérience au sein du projet Gladys.

Dans un premier temps je vous propose de faire une description rapide de ce projet, si certains d’entre vous ne connaissent pas encore Gladys. De très nombreux tutos parle de Gladys et je les comprends, car c'est un projet des plus intéressants au jour d'aujourd'hui. Je ne suis pas là pour dire que c’est le meilleur projet non plus, les autres projets du même genre sont sans doute tout aussi intéressant.

Je suis tombé sur le projet Gladys en voulant tester un Raspberry Pi. Actuellement je tourne sur deux Raspberry pi 3, qui sont à l’heure ou j’écris ces lignes, les derniers modèles dans la catégorie des Raspberry. Il est vrai qu’il est très intéressant de pouvoir se porter sur des projets permettant d’allier informatique, programmation et électronique. Cela ouvre des possibilités sur la domotique ainsi que sur la robotique. Le projet Gladys est un projet porté principalement sur la domotique avec une touche personnelle voulu par son concepteur, en intégrant une assistante intelligente. Pour en avoir parlé avec Pierre Gilles, fondateur de ce projet, le nom de Gladys vient du fait qu’il est fan de Iron Man et tout le monde le sait, dans Iron Man, l’intelligence artificielle de Tony Stark s’appelle Jarvis. Le problème qui s’est posé, est que la voix utilisée dans la synthèse vocale du projet est une voix féminine donc il a dû trouver un nom qui rime avec Jarvis, d’où Gladys.

Ce projet est axé sur la personnalisation complète, il utilise un système de scénario, d’événements et de device, qui permettent à l’utilisateur de créer quasiment toutes les actions issues d’une condition dont il pourrait avoir besoin. Bon j’imagine que pour le moment le projet vous paraît un peu vague, mais vous verrez qu’en fait le système est relativement simple et très performant.


Prenons un exemple, nous souhaitons que lorsque le soleil se couche qu’un halogène s’allume automatiquement dans une pièce, mais à condition qu’il y ait quelqu’un dans la maison.

Pré-requis :

  • 2 Arduino uno
  • 2 Arduino nano
  • une cellule photométrique
  • une prise radiofréquence cadencée à 433 mégahertz
  • un détecteur de mouvement
  • un RPI
  • du câble

Pour cela nous allons utiliser un actionneur et un capteur qui seront une cellule photométrique permettant de détecter le coucher du soleil et, dans mon cas, une prise radiofréquence cadencée à 433 mégahertz.
Ce capteur et cet actionneur pourraient suffire pour simplement décider, sans aucune condition supplémentaire, que lorsque le soleil se couche on allume cet halogène, mais dans le projet initial nous avons besoin de vérifier la présence d’un utilisateur dans la maison.

Pour cela nous utilisons en plus un détecteur de mouvement le tout sera organisée par Gladys, 2 Arduino nano et pour finir 2 Arduino Uno. Ces derniers serviront l’un pour le capteur de présence, le second pour la cellule photométrique et le troisième pour le module qui permettra à Gladys de gérer l’émission et réception de fréquence NRF24L01 et le quatrième pour l’émission RF 433 Mghz (car malheureusement les deux code ne sont pas compatibles entre eux).

Pourquoi préférer de déporter l’émission réception RF sur un Arduino, alors qu’on pourrait très bien le faire sur le Raspberry. L’explication est toute simple, pour éviter de surcharger le processeur du Raspberry pour rien. Pour tous les projets que l’on va aborder, Gladys sera équipée de 1 voire 2 Arduino.

Le principe est pas bien compliqué, c’est une suite de 4 conditions secondaires (maison vide, maison non vide, jours et nuit) plus une condition principale (si nuit et maison non vide alors allumer la lampe).
Pour les conditions secondaires, je vais vous les détailler :
Jour ou nuit :
Si le capteur photométrique renvoie comme information de la luminosité est inférieur à 30 %, nous créerons un premier scénario pour déclencher l’événement nuit et inversement pour le jour.
Maison vide ou maison non vide :
Si le capteur de présence renvoi 1 déclenchement l’événement maison non vide inversement pour maison vide.
La condition principale se servira des éléments déterminer dans les 4 conditions secondaires. Si événement coucher de soleil et événement maison non vide alors allumer la lampe.
Maintenant que notre exemple est posé avec toutes ces conditions passons sans plus tarder au montage des sondes.
Alors quelques montages de base, car avant de s’attaquer aux actionneurs et aux capteurs mieux vaut bien maitriser le câblage des antennes. Nous vous en faites pas il n’y a qu’un schéma à connaitre, il fonctionne pour les Gateway et pour les modules (Superbe avantage de ce système).

1 2

3

Et voici le code pour l’Arduino qui servira de GateWay :

/**
* The MySensors Arduino library handles the wireless radio link and protocol
* between your home built sensors/actuators and HA controller of choice.
* The sensors forms a self healing radio network with optional repeaters. Each
* repeater and gateway builds a routing tables in EEPROM which keeps track of the
* network topology allowing messages to be routed to nodes.
*
* Created by Henrik Ekblad 
* Copyright (C) 2013-2015 Sensnology AB
* Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
*
* Documentation: http://www.mysensors.org
* Support Forum: http://forum.mysensors.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*
*******************************
*
* DESCRIPTION
* The ArduinoGateway prints data received from sensors on the serial link.
* The gateway accepts input on seral which will be sent out on radio network.
*
* The GW code is designed for Arduino Nano 328p / 16MHz
*
* Wire connections (OPTIONAL):
* - Inclusion button should be connected between digital pin 3 and GND
* - RX/TX/ERR leds need to be connected between +5V (anode) and digital pin 6/5/4
with resistor 270-330R in a series
*
* LEDs (OPTIONAL):
* - To use the feature, uncomment any of the MY_DEFAULT_xx_LED_PINs
* - RX (green) - blink fast on radio message recieved. In inclusion mode will blink
fast only on presentation recieved
* - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will
blink slowly
* - ERR (red) - fast blink on error during transmission error or recieve crc error
*
*/

// Enable debug prints to serial monitor
#define MY_DEBUG


// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_NRF5_ESB
//#define MY_RADIO_RFM69
//#define MY_RADIO_RFM95

// Set LOW transmit power level as default, if you have an amplified NRF-module and
// power your radio separately with a good regulator you can turn up PA level.
#define MY_RF24_PA_LEVEL RF24_PA_LOW

// Enable serial gateway
#define MY_GATEWAY_SERIAL

// Define a lower baud rate for Arduino's running on 8 MHz (Arduino Pro Mini 3.3V &
SenseBender)
#if F_CPU == 8000000L
#define MY_BAUD_RATE 38400
#endif

// Enable inclusion mode
#define MY_INCLUSION_MODE_FEATURE
// Enable Inclusion mode button on gateway
//#define MY_INCLUSION_BUTTON_FEATURE

// Inverses behavior of inclusion button (if using external pullup)
//#define MY_INCLUSION_BUTTON_EXTERNAL_PULLUP

// Set inclusion mode duration (in seconds)
#define MY_INCLUSION_MODE_DURATION 60
// Digital pin used for inclusion mode button
//#define MY_INCLUSION_MODE_BUTTON_PIN 3

// Set blinking period
#define MY_DEFAULT_LED_BLINK_PERIOD 300

// Inverses the behavior of leds
//#define MY_WITH_LEDS_BLINKING_INVERSE

// Flash leds on rx/tx/err
// Uncomment to override default HW configurations
//#define MY_DEFAULT_ERR_LED_PIN 4 // Error led pin
//#define MY_DEFAULT_RX_LED_PIN 6 // Receive led pin
//#define MY_DEFAULT_TX_LED_PIN 5 // the PCB, on board LED

#include 

void setup()
{
// Setup locally attached sensors
}

void presentation()
{
// Present locally attached sensors
}

void loop()
{
// Send locally attached sensor data here
}
Je vous invite à construire la Gateway en premier car sans elle vous ne pourrez pas tester vos modules et donc savoir s’il fonctionne correctement.

4
Voici pour ma part ma Gateway. Cela peut paraitre très compliqué au premier abord mais ne vous en faites pas c’est juste que sur la mienne j’ai monté toutes les options disponibles. En réalité, vous pouvez très bien ne monter que l’antenne sur la vôtre.

Options disponibles :
• LED d’erreur
• LED de transmission
• LED de réception
• Bouton d’inclusion (lance manuellement la recherche de nouveaux modules)


Passons à la création de notre premier module :

Montage du détecteur de mouvement :

4
Jumper sur 1 et 2 pas de réarmement sur 2 et 3 s’il y a un mouvement pendant la période HIGH on relance le timer.

5
6

Trimpot Sx - Set sensitivity
Trimpot Tx - Trigger length (2.5sec - 200sec)

Alors sur les réglages je vous invite à faire autant de test que nécessaire, car les potentiomètres sont très sensibles surtout pour le réglage de la distance. Sur le réglage de la durée par défaut je recommande de le mettre au minimum il n’est pas nécessaire d’indiquer à Gladys qu’une personne est présente dans une pièce pendant 10 secondes, cette personne à très bien pu quitter la pièce entre temps (exemple : hall d’entrée) après cela peut s’avérer utile dans les pièces ou l’on reste plus longtemps (Exemple : salon), pour éviter de renvoyer un signal toutes les 2.5 secondes.

Dans tous les cas je vous conseille de positionner le jumper en auto reset, cela évitera beaucoup de transmissions inutiles.
Maintenant passons à la partie codage de l’arduino :
1 /**
2 * The MySensors Arduino library handles the wireless radio link and protocol
3 * between your home built sensors/actuators and HA controller of choice.
4 * The sensors forms a self healing radio network with optional repeaters. Each
5 * repeater and gateway builds a routing tables in EEPROM which keeps track of the
6 * network topology allowing messages to be routed to nodes.
7 *
8 * Created by Henrik Ekblad 
9 * Copyright (C) 2013-2015 Sensnology AB
10 * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
11 *
12 * Documentation: http://www.mysensors.org
13 * Support Forum: http://forum.mysensors.org
14 *
15 * This program is free software; you can redistribute it and/or
16 * modify it under the terms of the GNU General Public License
17 * version 2 as published by the Free Software Foundation.
18 *
19 *******************************
20 *
21 * REVISION HISTORY
22 * Version 1.0 - Henrik Ekblad
23 *
24 * DESCRIPTION
25 * Motion Sensor example using HC-SR501
26 * http://www.mysensors.org/build/motion
27 *
28 */
29
30 // Enable debug prints
31 // #define MY_DEBUG
32
33 // Enable and select radio type attached
34 #define MY_RADIO_NRF24
35 //#define MY_RADIO_NRF5_ESB
36 //#define MY_RADIO_RFM69
37 //#define MY_RADIO_RFM95
38
39 #include 
40
41 uint32_t SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
42 #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion
sensor. (Only 2 and 3 generates interrupt!)
43 #define CHILD_ID 1 // Id of the sensor child
44
45 // Initialize motion message
46 MyMessage msg(CHILD_ID, V_TRIPPED);
47
48 void setup()
49 {
50 pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin
as input
51 }
52
53 void presentation()
54 {
55 // Send the sketch version information to the gateway and Controller
56 sendSketchInfo("Motion Sensor", "1.0");
57
58 // Register all sensors to gw (they will be created as child devices)
59 present(CHILD_ID, S_MOTION);
60 }
61
62 void loop()
63 {
64 // Read digital motion value
65 bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;
66
67 Serial.println(tripped);
68 send(msg.set(tripped?"1":"0")); // Send tripped value to gw
69
70 // Sleep until interrupt comes in on motion sensor. Send update every two minute.
71 sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
72 }

#9

@LepetitGeek @pierre-gilles @alain33
Salut @ tous,

désolé pour cette longue absence, mais je ne vous ai pas oublié. Voici enfin le Tuto avec intégration sur le forum. Il faut dire que cela me fait plaisir d’être de retour sur la communauté et de me replonger dans le projet Gladys. Bon je ne pas flâné :beach_umbrella: pendant ce temps je me suis tapé un bouquin de 420 pages :disappointed_relieved: sur Python afin d’augmenter l’expérience Gladys et de permettre à tous de pour développer en Python sur gladys. :wink:

@+


#10

Salut @scoob79 !

Bon petit retour (en toute objectivité bien entendu) !

Déjà sans être méchant ça manque cruellement de mise en forme :confused:
Du coup je t’invite à lire ce topic tu y trouvera pas mal d’idée pour mettre en forme ton tuto et pas que des choses relative au forum :wink:

Ensuite la tu t’égard un peu ^^

Le sujet que tu traite est le montage et le paramétrage de capteur et d’actionneur alors pourquoi faire une présentation du projet ?
Pourquoi ne pas simplement redirigé l’utilisateur vers le site officiel ?
Tu économiserai quelques lignes ^^

Puis tu démarre ton tuto avec un exemple mais sans avoir de prérequis, du coup, avant de commencer à rentrer dans le vif on sait pas trop ce qu’il faut (le matériel, les connaissances …)

Et dernière petite chose… Tu colle ton code Arduino pour donner un exemple mais il y les numéro de lignes à chaque fois.

Donc tu as deux options ! Soit le gars fait un copier coller de ton code et il s’amuse à enlever les numéro lignes par ligne et va (à coup sur) en oublier quelque part, soit il réécris ton code mais risque d’oublier des trucs à droite à gauche comme une accolade un point virgule ou carrément une ligne entière… :confused:
Et dans les deux cas tu as de grande chance que ça casse chez lui…

Donc c’est vraiment du détail mais je pense que ça peut éviter quelques erreurs ^^


#11

Hi,

Il me semblait important de poser le contexte dans lequel ce Tuto s’applique en effet on est ici sur la communauté mais il peut très bien se retrouver sur un autre forum et la les gens ne comprendrait pas sur quoi je bosse et pourquoi j’ai choisi Gladys. De plus renvoyé les gens sur le site c’est une chose mais les petite anecdote ils les auraient pas forcément.

Pour la mise en page, merci pour le lien c’est cool je me suis retrouvé un peu bloqué hier.

Je vais supprimer les numéro de lignes par contre pour info notepad++ est génial pour ça.

Et effectivement la description des pré-requis n’est pas super claire.

Merci pour toutes ces remarques intéressante.

@+


#12

Tu me dira si c’est mieux… :wink:


#13

Salut, je suis occupé de suivre ton tuto pour me lancer dans mysensors et quand je compile le code de la gateway, il y a un #include seul à la ligne 90 ^^
C’est une ligne de trop ou il manque une bibliothèque? (même si ça serait bizarre de l’ajouter ici)


#14

Salut et excuse moi du retard !

Effectivement il faut poser un contexte mais la c’est plus une présentation personnel qu’un exemple pour aider l’utilisateur à comprendre.
Surtout que si ton tuto se retrouve sur un autre forum il vaut bien mieux rediriger l’utilisateur sur le site officiel car grâce à ça il aura un lien vers la doc du projet, une présentation avec exemple aussi bien en français que en anglais et aussi un lien pour le rediriger sur le forum…

Ouais je sais bien ^^


#15

Salut,

désolé pour le retard
En faite il est remarqué si tu veux tu peux l’enlever.

@+


#16

Oui je l’ai enlevé, je n’ai jamais su si ça fonctionnait car je me suis fait arnaquer sur mes nrf24l01, il manquait des composants sur la carte


#17

Hi,

c’est moche désolé pour toi.

@+