Station météo sur Arduino de A à Z. Partie 2

À suivre. La partie précédente .


Table des matières:



Doux Sélection des composants



Le choix du matériel et des logiciels est étroitement lié comme «poulet et œuf». Par où commencer, avec du matériel, avec des logiciels? Si vous avez un bon matériel, mais qu'il n'a pas de pilotes, de bibliothèques et de logiciels (IDE, utilitaires pour firmware, etc.), alors il est inutile, et vice versa.


Par conséquent, je vous raconte à nouveau le choix entre nRF24L01 + et ESP8266 pour connecter des capteurs à distance à l'unité centrale.


Le fait est que l'ESP8266 n'est pas seulement un stupide adaptateur WiFi, il dispose à bord d'un microcontrôleur d'une puissance et d'une capacité de mémoire supérieures à Arduino. Par défaut, l'ESP8266 possède un micrologiciel sous la forme d'un ensemble de commandes AT, auquel cas l'ESP est utilisé comme un simple modem. Mais il y a un firmware plus avancé, ici l'ESP8266 peut même agir comme un serveur web, et bien sûr, contrôler des capteurs comme Arduino.


Cependant, tous ces firmwares avancés ont des inconvénients qui ne permettaient pas (au total avec des questions de fer sur lesquelles j'ai déjà écrit) d'utiliser ESP8266 dans ce projet:


  • tous les micrologiciels sont encore très bruts (à partir de 2016)
  • certains prêts non libres
  • le seuil d'entrée pour le débogage et la modification est beaucoup plus élevé que celui d'Arduino.

Par conséquent, je n'ai pas trouvé de micrologiciel avancé prêt à l'emploi et jusqu'à présent, je ne suis pas prêt à créer le mien. La puce ESP8266 est un sujet vaste et intéressant.


À son tour, le micrologiciel AT standard présente également des inconvénients:


  • ils sont encore humides (à partir de 2016)
  • Je ne pouvais pas trouver une bibliothèque normale pour Arduino pour contrôler le module ESP8266 en utilisant les commandes AT, j'ai dû me «regrouper».

D'un autre côté, le module radio nRF24L01 + est simple et direct; il existe une super bibliothèque RadioHead pour travailler avec lui et aucun problème de programmation. La bibliothèque est bien documentée, ce qui est important.


RadioHead vous permet de transférer des structures de données (et pas seulement des nombres uniques), qui est implémentée dans ce projet. Pour l'avenir, je dirai que RadioHead peut transmettre des données de manière fiable , avec des répétitions s'il n'atteint pas la première fois. La bibliothèque s'occupe de toutes ces choses.


Pour économiser l'énergie, j'utilise la bibliothèque basse consommation, elle est simple et ne contient que ce dont vous avez besoin.


Voici un morceau de code:


//    2.402 GHz ( 2), 2Mbps, 0dBm rfdata.init(); //     ( ,  ) rfdata.sendtoWait((uint8_t*)&dhtData, sizeof(dhtData), SERVER_ADDRESS); //  LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);` 

C’est tout!


Dans le cas de l'utilisation de l'ESP8266 dans un capteur monté sur fenêtre, j'aurais été obligé de créer un point d'accès WiFi et de transférer les données (où sont le firmware, où est le logiciel?). Ou laissez le capteur envoyer directement des données au serveur Web et apprenez à l'unité centrale (qui dans ce cas cesse de jouer le rôle de "centrale") de lire les données à partir de là pour les afficher sur le tableau.


En d'autres termes, j'ai opté pour une plus grande autonomie par rapport à Internet WiFi et au serveur PHP + MySQL. Vous pouvez commencer à riveter une station météo maintenant sans avoir accès à Internet et / ou l'hébergement pour le serveur, dans ce cas, vous n'avez pas besoin d'ESP8266, ajoutez-le plus tard.


Pour lire les données de capteurs comme DHT, il existe une bibliothèque de capteurs Adafruit DHT . Travailler avec est simple et direct.


La bibliothèque unifiée Adafruit BMP085 , qui nécessite la bibliothèque de niveau abstrait Adafruit Sensor , convient à un capteur de pression.


Toutes les bibliothèques ont des exemples de croquis.


C'est peut-être tout avec la partie théorique. «Nos objectifs sont clairs, les tâches sont définies. Pour le travail, camarades! ”


Unité centrale. Le fer


Enfin, après tout l'agitation, nous procédons au montage!


Remarque Si vous n'avez jamais récupéré de station météo (eh bien!), Vous pouvez commencer sans avoir tous les détails à portée de main. Par exemple, vous pouvez commencer sans avoir de module radio et / ou ESP8266. Le capteur de pression barométrique BMP180 peut également être manquant. Ajoutez plus tard. Certes, dans ce cas, vous devrez commenter indépendamment dans l'esquisse les sections du code qui sont responsables de l'interaction avec les blocs manquants, mais ce n'est pas si difficile. Je vais vous montrer comment.


L'essentiel est qu'au moins quelque chose se soit rassemblé et gagné, alors c'est plus amusant de continuer.


Comme déjà mentionné, l'unité centrale est basée sur l'Arduino MEGA. Nous aurons également besoin de:


  • capteur de température et d'humidité DHT11
  • capteur de pression barométrique type BMP180
  • Module WiFi ESP8266
  • Module radio nRF24 2,4 GHz
  • Affichage de type LCD1604 (4 lignes de 16 caractères chacune), vous pouvez acheter pour 5 $
  • alimentation avec une sortie 5-12 V DC (j'ai utilisé la charge à partir d'un mobile avec une sortie USB, ce qui est pratique)
  • une planche à pain pour le soudage, un fer à souder, de la colophane, de la soudure ou une planche à pain Arduino ordinaire sans soudure. Personnellement, j'ai soudé pour la fiabilité, car le projet était clairement de longue durée et ne voulait pas souffrir à cause d'un câblage accidentellement tiré de la planche à pain.

Vous pouvez acheter une carte de développement pour dessouder à partir de 1 $. Prenez une taille plus grande, suffisante pour toutes les connexions. Et encore: avant d'acheter, lisez la description, pas la photo.


Des frais sans soudure peuvent être achetés à partir de 2 $. Prenez une taille plus grande, suffisante pour toutes les connexions.


Les fils de connexion sont des types dont nous avons besoin:


  • Câble Dupont «père-mère» (il y a aussi «père-père», «mère-mère»). Il s'agit d'un câble composé de plusieurs fils avec différentes couleurs d'isolation et de connecteurs pour contacts à broches pour Arduino. Avec ces fils, il est pratique de connecter les cartes et les capteurs directement à l'Arduino sans utiliser de maquette.
  • Fils de connexion conventionnels pour une planche à pain sans soudure pour Arduino.
  • Un tas de fils à souder.

La première étape a été de souder le LCD-1604. J'ai d'abord soudé les broches à la carte, puis les connecteurs à la planche à pain.



Vue d'en bas.



J'ai soudé sur une intuition sans câblage préalable, donc aucun circuit ne sera donné ici. Faites comme c'est plus pratique, ça ne sera pas pire. Adhérez au principe que le fil noir est toujours la terre, le rouge est le «plus» de l'alimentation, le reste des couleurs fonctionnera. Cela s'est avéré comme ça.




Afin de ne pas oublier où se trouvent les connecteurs, il a «peint» des sections de la carte d'à côté avec un correcteur blanc et fait les inscriptions correspondantes. Laid? Mais pratique et rapide, c'est un prototype!



Brochage et connexion


Affichage 16 × 4 LCD1604


Pour plus d'informations sur l'affichage et l'utilisation de celui-ci, recherchez «Utilisation des écrans LCD à caractère basés sur HD44780». Notez que vous devez soigneusement considérer la polarité de l'alimentation de l'indicateur LCD et que la tension d'alimentation est dans la plage + 4,5 ... 5,5 V. Une attitude inattentive à cela peut entraîner une défaillance de l'indicateur!


Pin LCD 1604Arduino MEGAArduino unoLa description
VssGNDGNDGND
Vdd5 V5 V4.7 - 5.3V
RS224Un niveau élevé signifie que le signal aux sorties DB0-DB7 est des données, un niveau bas signifie une commande
RwGNDGNDDétermine la direction des données (lecture / écriture). Étant donné que l'opération de lecture des données d'un indicateur n'est généralement pas réclamée, il est possible de définir un niveau bas en permanence à cette entrée
E235Une impulsion d'une durée d'au moins 500 ms sur cette broche détermine le signal de lecture / écriture des données des broches DB0-DB7, RS et WR
DB4248Données entrantes / sortantes
DB5259
DB62610
DB72711
LED A ++ Résistance 5V ou 220 Ohm → + 5VLED-A
LED B-GND
V0Tondeuse GND ou 10kΩ

L'initialisation du logiciel ressemblera à ceci:


 // Arduino MEGA LiquidCrystal lcd(22, 23, 24, 25, 26, 27); // Arduino UNO LiquidCrystal lcd(4, 5, 8, 9, 10, 11); 

Température, humidité DHT11


Connexion d'un capteur de température et d'humidité DHT11 (SainSmart). Placez le capteur face vers le haut, les fils seront décrits de gauche à droite.


DHT11Arduino mega
DONNÉESBroche numérique 2 (PWM) (voir DHTPIN ci-dessous)
Vcc3,3 à 5 V (5 V recommandés; meilleure alimentation externe)
GNDGND

Initialisation du logiciel


 #define DHTPIN 2 //   Digital pin 2 (PWM) #define DHTTYPE DHT11 // . DHT.h //  DHT dht(DHTPIN, DHTTYPE); 

Baromètre BMP180


Connexion du capteur de pression atmosphérique BMP180 (baromètre) + température via l'interface I2C / TWI.


BMP180Arduino mega
Vccpas connecté
GNDGND
SCL21 (SCL)
SDA20 (SDA)
3.33,3 V

Pour UNO: A4 (SDA), A5 (SCL).


 //  Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085); // sensorID 

nRF24L01 +


Brève caractéristiques:


  • Gamme de fréquences 2,401 - 2,4835 GHz
  • 126 canaux. Le canal zéro commence à 2400 MHz puis avec un pas de 1 MHz, par exemple, le canal 70 est situé à 2470 MHz, respectivement. Lors du réglage de la vitesse de transmission de 2 Mbps, la largeur du canal est de 2 MHz
  • Alimentation 1,9 - 3,6 V (3,3 V recommandé)

Voici le brochage du module.


Brochage nRF2401L +


Certains conseillent de souder immédiatement un condensateur céramique 100nF (1µF, 10µF possible) aux fils d'alimentation RF pour éviter les parasites électriques.


Brochage nRF24L01 + (regardez en haut de la carte où se trouve la puce, les broches doivent être en bas):


broche 2 3.3Vbroche 4 CSNbroche 6 MOSIbroche 8 IRQ
broche 1 GNDbroche 3 CEbroche 5 SCKbroche 7 MISO

Connexion pour station météo:


Arduino meganRF24L01 +
3,3 VVCC pin 2 (meilleure alimentation externe)
broche D8Broche CE 3 (activation de la puce)
Broche SS D53Broche 4 du CSN (puce sélectionnée)
Broche SCK D52Broche SCK 5 (horloge SPI)
Broche MOSI D51Broche SDI 6 (entrée SPI Data)
Broche MISO D50SDO pin 7 (sortie de données SPI)
Broche IRQ 8 (sortie d'interruption) non connectée
GNDBroche GND 1 (mise à la terre)

La programmation du module radio sera décrite en détail dans la partie logiciel.


ESP8266


Brochage ESP8266 (regardez en haut de la carte où les puces, les broches doivent être en bas):


GNDGPIO2GPIO0Rx
TXCH_PDRÉINITIALISERVcc

Connexion de l'ESP8266 à une station météo:


ESP8266Arduino mega
TX10 broches (SoftwareSerial RX)
Rx11 broches (SoftwareSerial TX)
Vcc3,3 V
GNDGND
CH_PDVia une résistance 10K à 3,3 V Arduino
GPI0En option Via une résistance 10K à 3,3 V Arduino
GPI2En option Via une résistance 10K à 3,3 V Arduino

KDPV


Assemblage de l'unité centrale. J'ai découpé la "carte mère" dans une boîte en carton sous mes chaussures et j'ai vissé le reste avec 3 vis.


Assemblage de l'unité centrale


Comme vous pouvez le voir à cet endroit, toute la nourriture est fournie à partir de broches Arduino, c'est-à-dire rien ne va directement à l'alimentation, et jusqu'à présent, il y a assez de puissance.


Comme tout. Je n’ai rien oublié.


Soudez, connectez. Dans la prochaine partie, un croquis de travail pour l'unité centrale sera donné et notre station météo montrera déjà quelque chose.


Source: https://habr.com/ru/post/fr425927/


All Articles