Kit domotique WARAN : Raspberry Pi, Arduino, capteurs et composants
Composants et fournitures
Raspberry Pi 2 Model B
×
1
Arduino UNO
×
1
Capteur température/humidité DHT11 (4 broches)
×
2
Hygromètre de sol
×
1
Arduino Pro Mini 5V
×
2
Batterie 9V (générique)
×
3
Pompe à eau
Optionnel
×
1
nRF24l01+
×
3
Socket nRF24l01+
Optionnel
×
1
Transistor NPN
Optionnel
×
1
Régulateur 3,3 V
×
2
Résistance 10 kΩ
×
2
Condensateur 10 µF
×
4
Condensateur 47 µF
×
2
Plaque d'essai (perfboard)
×
3
Outils et machines nécessaires
Machine à souder
Dénudeur
Coupe-fil
Fils de liaison
Applications et services en ligne
Microsoft Windows 10 IoT Core
Microsoft Azure
API PubNub Publish/Subscribe
À propos de ce projet
Je voulais construire un système domotique bon marché et modulaire, permettant d'ajouter capteurs et actionneurs sans grands changements. WARAN (Windows IoT, Azure, Raspberry Pi, Arduino, NRF24L01+) est un système modulaire composé d'un Hub unique et de plusieurs modules. Chaque module combine un microcontrôleur et des capteurs, collecte des données à différents endroits de la maison et les transmet au Hub via RF. Toute la communication Hub-modules se fait par RF. Une application Windows Phone compagnon accompagne le Hub. Voici un diagramme de flux simplifié.
Pourquoi Windows IoT ?
En tant que développeur logiciel découvrant l'IoT, mon expérience avec XAML/C# et Visual Studio (le meilleur IDE selon moi) m'a permis une implémentation rapide.
Pourquoi NRF24L01+ ?
Option sans fil bon marché et basse consommation. Des bibliothèques puissantes existent.
Pourquoi Windows Azure
Facile à apprendre et à déployer, peu de configuration, focus sur le développement. Mon expérience Azure a accéléré l'intégration.
Le Hub
Centre de contrôle de WARAN. Composé d'un RPi2, Arduino Uno et nRF24L01+. Le RPi2 exécute Windows IoT Core et une application universelle agissant comme centre de contrôle. Connecté à un grand écran (TV/moniteur) pour visualiser et contrôler les modules. Clavier/souris sur le RPi2 pour ajouter/retirer modules. Schéma du circuit (voir fichier WARAN.Hub.fzz).
Fonctionnement
Chaque module a une adresse unique pour communiquer avec le Hub. On ajoute un module au centre de contrôle via cette adresse et un nom. Une fois ajouté, l'application universelle envoie des données à l'Arduino Uno via I2C. L'Arduino transmet au module via nRF24L01+ ; le module lit les capteurs ou actionne un dispositif selon les données reçues et renvoie les données à l'Arduino. L'Arduino les transmet au centre de contrôle via I2C. Ces données s'affichent à l'écran et sont envoyées au cloud. L'Arduino fait simplement interface entre le RPi2 et les modules distants. Ce processus se produit dans trois scénarios :
À intervalles réguliers selon le module
Lors d'interaction utilisateur avec le centre de contrôle (souris/clavier)
Lorsqu'un déclencheur vient du cloud (via PubNub)
Flux typique :
Interactions entre composants du Hub et modules :
Le Centre de contrôle
Application universelle sur le RPi2. Interface utilisateur pour interagir avec les modules et le cloud. Utilise Azure Mobile Services et PubNub comme backend cloud. Chaque module ajouté est stocké localement (SQLite) et envoyé à Azure Mobile Service, qui envoie un message PubNub ou notification push vers l'application mobile. Le code source, la documentation et les détails de déploiement sont sur Bitbucket (documentation en cours de mise à jour).
L'application mobile
Application Windows Phone (autres plateformes prévues) agissant comme compagnon du Hub. Visualisez toutes les données de capteurs où que vous soyez. En cas d'alerte importante (fuite de gaz), notification push reçue. Peut aussi déclencher une action sur un module (démarrer pompe sur module arrosage) depuis le mobile. Tout passe par le cloud, pas besoin de proximité avec le Hub.
Modules
Un module combine des composants travaillant ensemble, recevant et envoyant des données au Hub via RF. Peut être Arduino Pro Mini avec capteurs, ou RPi2 avec capteurs, etc. Il doit recevoir données/commandes du Hub via RF et répondre. Possibilités infinies. Pour commencer, deux modules :
Arroseur de plantes
Moniteur de température
Arroseur de plantes
Surveille le niveau d'eau dans les plantes et la température ambiante. Alerte sur mobile si eau insuffisante. Démarrage pompe depuis mobile n'importe où. Configuration possible pour démarrage auto si niveau sous seuil. Composants : Arduino Pro Mini, DHT11, hygromètre de sol, nRF24L01+. Schéma (voir PlantWaterer.fzz).
Alimentation : 9 V sur broche RAW du Pro Mini. Régulateur intégré donne 5 V sur Vcc pour DHT11. 9 V aussi sur régulateur 3,3 V pour nRF24L01+. Niveau d'eau lu sur A3. Température DHT11 sur broche numérique 6. Broche 5 commande transistor/relais pour pompe. Pour démo, pompe DC et transistor comme interrupteur. Flux de fonctionnement :
Circuit transféré sur perfboard pour compacité. Référez-vous au schéma pour votre propre layout.
Vidéo de démonstration disponible.
Moniteur de température
Surveille température/humidité d'une pièce (ex. chambre) et informe. Peut allumer/éteindre ou régler un dispositif (thermostat, climatisation) depuis le Hub ou le mobile. Pour démo, allume/éteint une LED. Composants : Arduino Pro Mini, DHT11, nRF24L01+. Schéma (voir TemperatureMonitor.fzz).
Alimentation identique : 9 V sur RAW, 5 V pour DHT11, 3,3 V via régulateur pour nRF24L01+. Température/humidité DHT11 sur broche numérique 5. Broche 6 commande transistor/relais pour dispositif (thermostat, clim...). Pour démo, LED. Flux :
Layout sur perfboard :
Problèmes connus
Alimentation – La batterie se vide en quelques heures. Besoin d'une source d'énergie efficace et portable. Prévu d'utiliser des ATtiny à la place du Pro Mini là où possible.
Concurrence I2C – Si le RPi2 envoie 2 requêtes I2C simultanées à l'Arduino Uno, l'une échoue. Travail sur mécanisme d'évitement et de réessai.
Communication unidirectionnelle – Le Hub initie, le module répond. Certains modules futurs devront envoyer des données sans requête du Hub.
Portée – Modules testés dans la pièce voisine, réception correcte. Pour augmenter la portée, remplacer le nRF24L01+ du Hub par un NRF24L01+PA+LNA avec antenne externe.
Sécurité – Développé pour usage personnel, pas d'authentification. Vous pouvez intégrer Azure Identity Service (Microsoft, FB, Twitter, Google) pour l'authentification.
Projets futurs
Rendre cette plateforme ouverte pour que chacun implémente sa domotique. Stabiliser Hub et app mobile. Ajouter de nombreux modules :
Capteur de fuite de gaz
Détecteur d'intrusion
Contrôleurs de dispositifs (machine à café, lumières, etc.)
Ouvre-porte de garage
Modules portables
Services Internet sans matériel (météo, Azure Logic App, bourse, etc.)
Modules hors portée du Hub communiquant via Internet (tracker voiture, animal, podomètre, etc.)
Tous ces modules combinés via le Hub donneront le système domotique souhaité. J'ajouterai les nouveaux modules comme projets séparés sur Hackster. Bienvenue à tous pour contribuer. Wiki à venir pour expliquer comment ajouter des modules.