Domotique intelligente avec Raspberry Pi 2 et Windows 10 IoT
Composants et fournitures
| Arduino UNO (un par pièce à automatiser) | ×1+ |
| Raspberry Pi 2 Modèle B | ×1 |
| Fils de liaison (génériques) | ×1 |
| Plaque d'essai (breadboard) | ×1 |
| LDR (Photorésistance) - détection intensité lumineuse | ×1 |
| Capteur PIR (infrarouge passif) - détection présence humaine | ×1 |
| Module relais (générique) - 1 relais par appareil à commander | ×1+ |
| Contacteur Siemens 3TF32 00-0AP0 - pour pompe à eau (max 16A, 415 VAC), bobine 250 VAC | ×1 |
| Disjoncteur miniature 1P C16A - protection pompe à eau | ×1 |
Applications et services en ligne
- Arduino IDE (firmware Arduino)
- Microsoft Visual Studio 2015 Community (gratuit jusqu'à 5 utilisateurs)
- Microsoft Windows 10 IoT Core (OS principal sur Raspberry Pi)
À propos de ce projet
Aujourd'hui, la technologie améliore la vie humaine. L'automatisation, jadis de la science-fiction, est maintenant réalité. En combinant Raspberry Pi et Windows 10, nous construisons un système domotique capable de piloter les appareils de la maison automatiquement.
Démarrage : Architecture globale
Le Raspberry Pi 2 agit comme contrôleur principal. Chaque pièce possède son propre Arduino UNO (esclave) qui gère les appareils et capteurs. La communication Pi ↔ Arduino se fait via bus I2C.
Configuration par pièce
Chaque Arduino UNO de pièce contrôle : plusieurs appareils (lumière(s), ventilateur, prise(s) murales...), un capteur PIR (présence), une sonde de température LM35, et une LDR (luminosité près de la fenêtre).
Adressage des appareils
Identification simple : adresse = numéro de pièce + numéro d'appareil. Exemple : pièce 1, appareil 3 → adresse 13.
Schémas
Pour connecter plusieurs Arduino sur le bus I2C, utilisez une barrette de bus I2C. Schéma de câblage relais et contacteur pour pompe/geyser fournis.
Logiciel
Développé dans Visual Studio 2015 pour Raspberry Pi 2 (application Universal Windows). Connaissances supposées : Arduino, C#, XAML Universal Windows.
Protocole de communication I2C
Objectifs : lire capteurs, lire états appareils, commander appareils. Protocole = séquence d'octets. Envoi : 3 octets fixes. Réception : 14 octets. Implémenté dans la classe I2C_Helper (projet Universal Windows) et côté Arduino (bibliothèque Wire).
Structure de classes (C#)
- Home : liste générique de
Room(List<Room>), méthodes statiques Load/Save - Room : liste de
Device+ structureSensor(encapsule lumière, PIR, température) - Device : détails + méthodes On/Off via protocole Mode 2
- AmbientLight, PassiveIR, Temperature : données environnementales, rafraîchies périodiquement via protocole Mode 0
Interface utilisateur
Objectifs : gestion pièces, gestion appareils, services externes (GSM, Internet). Découpage en :
- Page d'accueil : état appareils, date/heure, verrouillage
- Appareils favoris : accès direct
- Page pièces : pièces configurées et leurs appareils
- Appareils eau communs : pompe, chauffe-eau
- Paramètres/Configuration : gestion pièces et appareils
Wireframes et captures d'écran de l'UI finale incluses.
Comment configurer ?
Configuration pas à pas via l'interface : ajouter pièces, ajouter appareils par pièce, définir adresses I2C, tester.
Commande pompe à eau et chauffe-eau
Ne les branchez jamais directement sur le relais (danger, grillage). Utilisez un contacteur : le relais commande la bobine du contacteur, qui lui commute la charge puissance. Vérifiez les cotes du contacteur (bobine + contacts) par rapport à votre pompe.
Déploiement sur Raspberry Pi 2
Voir la documentation Microsoft pour le déploiement d'applications Universal Windows sur Windows 10 IoT Core.
Enregistrer l'application au démarrage
Consultez mon article : "Windows 10 IoT Core : Setting Startup App".
Problèmes connus
- Démarrage Arduino : la broche D13 clignote au boot → ne connectez pas de relais sur D13, ou reflashez l'OptiBoot sans clignotement D13.
- Horloge : Pas de RTC matériel sur Pi 2 → heure perdue à la coupure. Solution : RTC externe (DS3231) sur Pi ou Arduino, ou NTP si Internet.
- Débogage Universal App : erreurs asynchrones difficiles à tracer. Solution : points d'arrêt préventifs.
Perspectives futures
Communication radio/IR au lieu d'I2C, portail web via Azure, automatisation événementielle (ex: lumière jardin si luminosité < seuil) ou horodatée (RTC). Windows 10 IoT + Pi 2 (quad-core 900 MHz) offre une plateforme puissante pour aller plus loin.
Code
Sketch Arduino (C/C++)
// Arduino Sketch v0.4 - Esclave I2C pour Home Automation
// Adresse esclave : 0x40
// Broches : LDR=A0, PIR=2, Temp=A1, Relais=0,1,3-13,A2,A3
// Protocole : Mode 0=capteurs (14 octets), Mode 1=états appareils (14 octets), Mode 2=commande appareil
// Réponse Mode 0 : [LDR_8bits, PIR_bool, Temp_signe, Temp_abs]
// Réponse Mode 1 : 14 octets = états broches 0,1,3-13,A2,A3
// Réponse Mode 2 : état de la broche commandée
#include <Wire.h>
#define SLAVE_ADDRESS 0x40
// ... code complet dans la source ...
Logiciel Raspberry Pi 2 (Universal Windows App)
Code source complet sur GitHub
Schémas
Ajoutez plusieurs pièces en connectant des Arduino individuels avec adresses I2C uniques sur le bus. Fichier Fritzing complet fourni.
Processus de fabrication
- Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
- Construire un contrôleur domotique 433 MHz avec Sensorflare et Raspberry Pi
- Capteur d'occupation de salle de bain basé sur Raspberry Pi avec alertes vocales et SMS via Twilio
- Surveiller la température de votre maison avec un tableau de bord Raspberry Pi
- Construire un système domotique piloté par Raspberry Pi pour contrôle à distance
- Envoyer les données IMU 10DOF Adafruit du Raspberry Pi 2 vers Azure Event Hubs avec Windows 10 IoT Core
- Surveillance Précise de Température et Humidité avec SHT15 sur Windows 10 IoT Core
- Installation de Windows 10 IoT Core sur Raspberry Pi 3 Model B+ : Guide Étape par Étape
- Intégration Microsoft Kinect avec Raspberry Pi pour détection humaine temps réel sur robot Sonbi