J'ai toujours voulu que ma maison réponde au son de ma voix, aux claquements de mes doigts, etc... Et je me suis dit que pour commencer, une télécommande pour contrôler une lampe c'était pas mal (pas vraiment utile pour une lampe classique j'avoue mais c'était surtout un petit défi technique).
Au départ j'ai réalisé mon projet avec des modules nRF24L01 (des tranceivers 2.4Ghz pour Arduino à 5€ la poignée). Mais j'ai été confronté à plein de problèmes : interférences et débit qui chute au bout d'un certain moment d'utilisation... Après y avoir passé du temps, cela a quand même fini par fonctionner en utilisation "normale", mais si je m'amusais un peu à changer très rapidement l'éclairage, la connexion finissait toujours par laguer et devenir très aléatoire... Du coup ces modules m'ont un peu déçu et j'ai cherché une autre solution pour contrôler ma lampe.
Puis j'ai fini par découvrir un vrai bijou: l'ESP8266 ! Il s'agit d'un tout petit module WiFi qui peut se brancher sur un Arduino (et au passage il peut même être totalement indépendant si 2 E/S vous suffisent). Et cette bestiole coûte seulement 2€ ! De quoi se lancer dans l'IoT simplement et pour pas cher.
Light controller
Adieu mes nRF, avec ce nouveau module j'ai pu pousser l'idée jusqu'au bout et connecter vraiment ma lampe. :) Plus besoin de télécommande, maintenant n'importe quel appareil connecté à mon réseau internet peut venir la contrôler ce qui est beaucoup moins contraignant, et ça rend possible le développement d'une interface web beaucoup plus agréable.
Voilà le résultat "final" (je risque d'améliorer ça quand j'aurai le temps, et pour l'instant seul les leds sont complétements fonctionnelles, j'attend quelques composants pour piloter l'ampoule):
Pour l'interface web, j'aurai pu directement la mettre sur l'Arduino qui aurait envoyé la page aux clients, mais j'ai pensé que ce n'était pas une bonne idée au cas où mon interface devenait trop lourde. Pour l'instant j'ai préféré mettre un intermédiaire entre mon ESP et les clients : un serveur sur mon réseau s'occupe d'afficher une belle page web et il dialogue avec l'ESP via cURL. Le seul problème est une légère perte de réactivité mais cela reste très correct et au moins j'ai une interface très sympa (j'ai utilisé bootstrap pour l'occasion).
Voilà ce que ça donne sur mon smartphone sous chrome :
Si ce petit projet vous intéresse, j'ai mis mes sources à disposition :
Et voilà quelques liens qui pourront vous aidez à démarrer :
- http://www.les-electroniciens.com/videos/arduino-ep16-installation-du-module-wifi-esp8266
- http://www.sunrom.com/p/wifi-module-esp8266/application-create-webserver-controlling-led
- http://blog.nyl.io/esp8266-led-arduino/
- https://nurdspace.nl/ESP8266#AT_Commands
Si vous connaissez déjà bien Arduino et que vous avez quelques notions sur le protocole HTTP vous ne devriez pas avoir de problèmes. :)