Publicité

Le Wi-Fi est un élément essentiel du kit pour tous les projets de bricolage Internet des objets (IoT), mais notre Arduino préféré n'est pas livré avec le Wi-Fi, et l'ajout d'un bouclier Wi-Fi peut porter le coût total à environ 40 $. Et si je vous disais qu'il y a une carte de développement compatible Arduino avec Wi-Fi intégré pour moins de 10 $? Eh bien, il y en a.

Rencontrez le tueur Arduino: ESP8266. Ce n'était qu'une question de temps avant que la couronne ne soit volée à la tête brillante de notre chère carte de développement Arduino. Est-il possible de tomber amoureux d'une carte de circuit imprimé?

Mis à part les noms accrocheurs, l'ESP8266 (également connu sous le nom de NodeMCU) a été initialement commercialisé comme un module complémentaire Wi-Fi à faible coût. pour les cartes Arduino, jusqu'à ce que la communauté des hackers se rende compte que vous pouvez couper l'Arduino de l'équation entièrement.

En moins d'un an, l'ESP8266 a gagné en popularité et est maintenant si bien pris en charge et développé que si vous utilisez actuellement Arduino, vous devez vous lever et prendre note.

instagram viewer
Achetez-en un maintenant, puis suivez ce guide pour commencer à programmer votre ESP8266 - le tout depuis l'IDE Arduino familier.

Vous n'êtes pas limité à utiliser l'IDE Arduino bien sûr - ils sont également compatibles avec Lua (qui ressemble à un Python allégé pour mon yeux novices), mais comme nous abordons cela du point de vue de ceux d'entre nous qui ont appris sur Arduino, c'est ce que nous couvrirons exclusivement aujourd'hui.

Il y a pas mal de modèles d'ESP8266 à l'heure actuelle, mais je vais aller de l'avant et recommander celui-ci: ESP-12E (également connu sous le nom de NodeMCU 1.0, ou son dernier frère NodeMCU 2.0).

C'est un peu plus cher que les autres (6,50 $ contre 4 $!), Mais comprend le pilote série nécessaire pour programmer la puce, et dispose d'un régulateur de puissance intégré, ainsi que de nombreuses broches IO. Il est largement pris en charge et n'a vraiment besoin de rien d'autre qu'une connexion USB pour la programmation ou l'alimentation, il est donc le plus facile à utiliser. Si vous achetez un autre type de carte ESP8266, vous aurez peut-être besoin d'un régulateur de puissance 3,3 V séparé et d'une connexion FTDI appropriée pour la programmation.

Mise en route avec ESP8266-12E et Arduino

Premier, installer les pilotes série pour ce conseil. Vous devrez peut-être désactiver la signature KEXT si vous utilisez El Capitan en raison de nouveaux systèmes de sécurité.

Ensuite, nous devons activer la prise en charge d'ESP8266 à partir du gestionnaire de cartes de l'Arduino IDE. Ouvrez les préférences et entrez l'URL suivante à l'endroit indiqué URL supplémentaires de Board Manager:

URL du gestionnaire de cartes Arduino

Appuyez sur OK, puis ouvrez le Gestionnaire des conseils de Outils -> Conseil menu, recherchez esp8266 et installez la plateforme. Vous devriez maintenant voir un choix pour NodeMCU 1.0.

sélectionner le conseil

Laissez le processeur et la vitesse de téléchargement tels quels, puis sélectionnez votre port série nouvellement installé. Sur Mac, cela apparaît comme cu. SLAB_USBtoUART.

En tant que premier programme, je suggère le simple scanner Wi-Fi - trouvez-le sur Fichier -> Exemples -> ESP8266WiFi -> WifiScan. Notez qu'il est assez lent à télécharger, mais finalement il dira "terminé le téléchargement" et à ce stade (pas avant, ou vous interromprez le processus de téléchargement), vous pouvez ouvrir le moniteur série. Vous devriez voir quelque chose de similaire à ceci:

test de scan wifi esp8266
Succès! Maintenant, essayons de nous connecter à un.

Voici un code barebones absolument simple pour se connecter à un réseau Wi-Fi. Il ne fait rien d'autre que se connecter, mais c'est quelque chose que vous pouvez ajouter trop tard. N'oubliez pas de changer votre YOUR_SSID et YOUR_PASSWORD en vos détails Wi-Fi. Téléchargez, ouvrez la console série et vous devriez voir qu'elle se connecte.

 #include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; void setup () {Serial.begin (115200); Serial.print ("Connexion à"); Serial.println (ssid); WiFi.begin (ssid, mot de passe); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connecté"); Serial.println ("adresse IP:"); Serial.println (WiFi.localIP ()); } boucle vide () {}

N'est-ce pas génial à quel point c'était ridiculement simple?

Avant de continuer, voici le schéma de brochage - il pourrait vous être utile plus tard. Notez que les numéros de broches mentionnés dans le code sont les numéros GPIO, pas le D0-16 probablement écrit sur votre PCB. Si vous ne pouvez absolument pas comprendre pourquoi un capteur ne fonctionne pas, vous avez probablement mélangé les numéros de broches.

NodeMCU__v1.0_pinout

Capteur Quick Smart Home avec MQTT et DHT11

Voici un exemple pratique que vous pouvez utiliser immédiatement pour surveiller votre maison. Nous allons ajouter un capteur de température et d'humidité DHT11, puis signaler les valeurs à l'aide du protocole MQTT sur le réseau Wi-Fi, dans mon cas vers un système domotique OpenHAB DIY (sinon, vous voudrez peut-être lire notre guide du débutant pour faire fonctionner OpenHAB sur un Raspberry Pi Premiers pas avec OpenHAB Home Automation sur Raspberry PiOpenHAB est une plate-forme domotique open source mature qui fonctionne sur une variété de matériel et est indépendant du protocole, ce qui signifie qu'il peut se connecter à presque n'importe quel matériel domotique du marché aujourd'hui. Lire la suite , et la partie 2, qui traite spécifiquement de installation d'un serveur MQTT Guide du débutant OpenHAB Partie 2: ZWave, MQTT, règles et graphiquesOpenHAB, le logiciel domotique open source, dépasse de loin les capacités des autres systèmes domotiques du marché - mais ce n'est pas facile à configurer. En fait, cela peut être carrément frustrant. Lire la suite ).

Côté câblage, connectez le capteur DHT à GND, 3.3v, et ~ D4 (ou GPIO 2). C’est tout ce dont nous avons besoin pour le moment.

Télécharger ces bibliothèques MQTT et DHT. Même si vous en avez déjà, téléchargez-les quand même, sauvegardez ce que vous avez et remplacez-les. La dernière bibliothèque DHT11 d'Adafruit utilise un algorithme automatique pour déterminer la vitesse à laquelle les données sont lues à partir du capteur, mais il est buggé sur ESP8266 et 90% du temps entraîne un échec lectures.

Avec l'ancienne version 1.0 de la bibliothèque que j'ai incluse dans le téléchargement, vous pouvez modifier manuellement le timing: 11 fonctionne mieux pour ces cartes ESP2866. J'ai également parcouru de nombreuses copies de la bibliothèque MQTT en essayant d'en trouver une bonne rappeler fonction, enfin atterrir sur celui inclus. Vous devrez redémarrer l'IDE Arduino après les avoir remplacés.

Voici le code complet du projet. En haut se trouvent toutes les variables que vous devez modifier, y compris les détails Wi-Fi, le serveur MQTT (une URL peut être utilisée à la place si vous utilisez un serveur cloud, bien qu'il n'y ait pas d'authentification en place) et des canaux pour publier des données.

Voici comment cela fonctionne et quelques notes:

  • Nous nous connectons d'abord au Wi-Fi, puis au serveur MQTT, puis commençons le boucle().
  • Dans la boucle, nous interrogeons le capteur DHT toutes les 60 secondes et publions les lectures sur les canaux MQTT concernés. Encore une fois, si vous trouvez la plupart des résultats de lecture dans un message d'échec, vous avez la mauvaise version de la bibliothèque DHT - rétrogradez à v1.0.
  • client.loop () passe le contrôle à la bibliothèque MQTT, lui permettant de réagir aux messages entrants.
  • Il y a un message reçu() fonction où nous traitons les messages entrants - faites simplement une simple instruction if pour comparer la charge utile avec le message que vous attendez. Vous pouvez l'utiliser pour activer un relais, par exemple.
  • Après avoir exécuté ces derniers pendant quelques jours, j'ai constaté qu'ils cesseraient de fonctionner au hasard - je suppose que c'est une sorte de fuite de mémoire, mais étant donné Je n'ai pas les compétences de codage pour gérer cela et cela pourrait être avec les bibliothèques de base, j'ai opté pour une réinitialisation logicielle simple tous les journée. Exactement un jour après la première activation des nœuds des capteurs, ils redémarreront d'eux-mêmes.
  • Lorsque vous alimentez ces modules DHT11 bon marché à partir de 3,3 V, les valeurs d'humidité sont bien inférieures à ce qu'elles devraient être. J'ai résolu cela avec une simple multiplication et calibré par rapport à un capteur commercial. Je vous conseille également de confirmer par rapport à votre propre source connue, avant de vous fier aux lectures. Alternativement, alimentez-les avec 5V - mais vous devez placer un décalage de niveau logique 5v-3.3v entre la broche de données et l'ESP8266, sinon vous l'endommagerez.

Si tout s'est bien passé, vous devriez maintenant recevoir des lectures de capteur dans votre courtier MQTT et pouvez continuer à les connecter à OpenHAB comme détaillé dans partie 2 de notre guide du débutant Guide du débutant OpenHAB Partie 2: ZWave, MQTT, règles et graphiquesOpenHAB, le logiciel domotique open source, dépasse de loin les capacités des autres systèmes domotiques du marché - mais ce n'est pas facile à configurer. En fait, cela peut être carrément frustrant. Lire la suite , où je vous ai également montré comment représenter graphiquement les données.

graphique d'humidité d'Openhab

Adieu Arduino, nous t'aimions tellement. Je plaisante: pas partout dans ma maison peut même obtenir le Wi-Fi, donc pour ces endroits, j'ai toujours besoin d'un réseau maillé avec des récepteurs Arduino et RF.

Pour un projet amusant, consultez comment créer un bouton Wi-Fi avec l'ESP8266 Comment créer votre propre bouton connecté Wi-Fi avec ESP8266Dans ce didacticiel, vous apprendrez à créer un bouton compatible Wi-Fi à l'aide de NodeMCU et IFTTT. Lire la suite .

Mais que ferez-vous avec ESP8266? Tout projet utilisant ESP8266 que vous aimeriez voir écrit sur MakeUseOf? Faites le nous savoir dans les commentaires!

James est titulaire d'un BSc en intelligence artificielle et est certifié CompTIA A + et Network +. Il est le développeur principal de MakeUseOf et passe son temps libre à jouer au paintball VR et aux jeux de société. Il construit des PC depuis qu'il est enfant.