Ma station météo maison sur l'Arduino Nano. Station météo intérieure sur Arduino Station météo sur arduino nano avec canal radio

Regarder la météo est une activité très excitante. J'ai décidé de construire ma station météo sur la base du populaire .

Le prototype de la station météo ressemble à ceci :

Fonctions de ma station météo :

  • mesure et affichage des températures ambiantes et extérieures ;
  • affichage de l'heure actuelle (heures et minutes);
  • affichage des phases actuelles de la lune et du jour lunaire ;
  • transfert des résultats de mesure vers un ordinateur via une connexion série ;
  • transmission des résultats de mesure par protocole MQTTà l'aide d'une application sur un ordinateur.


hexagone
-déposer
micrologiciel pour (version du 9 mai 2018) - .
Comment Flasher hexagone-fichier à bord Arduino J'ai décrit.

Microcontrôleur Arduino Nano 3.0

Le "cœur" de ma station météo est le microcontrôleur eBay):

Pour contrôler l'indication et l'interrogation des capteurs, j'utilise le timer 1 Arduino, provoquant des interruptions avec une fréquence de 200 Hz (période - 5 ms).

Indicateur

Pour afficher les lectures mesurées des capteurs et l'heure actuelle, je me suis connecté à Arduino indicateur LED à quatre chiffres Foryard FYQ-5643BH avec des anodes communes (les anodes de segments identiques de toutes les décharges sont combinées).
L'indicateur contient quatre chiffres à sept segments et deux points de séparation (heures) :

Les anodes de l'indicateur sont connectées via des résistances de limitation de courant aux bornes Arduino:

décharge 1 2 3 4
conclusion A3 A2 D3 D9

Cathodes de segment connectées à des broches Arduino:

segment un b c d e F g p
conclusion D7 D12 D4 D5 D6 D11 D8 D13

Le segment de l'indicateur s'allume si l'anode de la décharge correspondante a un potentiel haut (1), et un potentiel bas (0) à la cathode.

J'utilise l'indication dynamique pour afficher des informations sur l'indicateur - un seul chiffre est actif à la fois. Les décharges actives alternent à une fréquence de 200 Hz (période d'affichage 5 ms). En même temps, le scintillement des segments est imperceptible pour les yeux.

Capteur de température DS18x20

Pour la possibilité de mesure de température à distance, j'ai connecté un capteur , qui fournit une large gamme de mesures de température extérieure. Le capteur est connecté au bus 1 fil et a trois sorties - alimentation ( VCC), données ( DAT), Terre ( Terre):

sortie du capteur VCC DAT Terre
conclusion Arduino 5V A1 Terre

Entre les broches VCC Et DAT J'ai inclus une résistance pull-up de 4,7 kΩ.

Pour convertir entre degrés Celsius et Fahrenheit, vous pouvez utiliser la plaque suivante :

J'ai placé le capteur à l'extérieur de la fenêtre de la maison dans un étui en plastique à partir d'un stylo à bille :

\

Les stations météo professionnelles utilisent un écran Stevenson pour protéger le thermomètre de la lumière directe du soleil et permettre à l'air de circuler. écran stevenson):

Capteur de pression et de température BMP280

Les baromètres à mercure et anéroïdes sont traditionnellement utilisés pour mesurer la pression atmosphérique.

DANS baromètre à mercure la pression atmosphérique est équilibrée par le poids de la colonne de mercure dont la hauteur sert à mesurer la pression :

DANS baromètre anéroïde on utilise la compression et l'étirement de la boîte sous pression atmosphérique :

Pour mesurer la pression atmosphérique et la température ambiante dans ma station météo domestique, j'utilise un capteur - petit CMS- Capteur 2 x 2,5 mm basé sur la technologie piézorésistive :

Un mouchoir avec un capteur a été acheté sur le marché eBay:

Le capteur est connecté au bus I2C(données de contact - SDA/SDI, broche de synchronisation - SCL/SCK):

sortie du capteur VCC Terre IDS SCK
conclusion Arduino 3v3 Terre A4 A5

adafruit- des dossiers Adafruit_Sensor.h, Adafruit_BMP280.h, Adafruit_BMP280.cpp.

Unités de pression atmosphérique

Capteur via fonction lirePression donne la valeur de la pression atmosphérique en pascals. L'unité de base pour mesurer la pression atmosphérique est hectopascal(hPa) (1 hPa = 100 Pa), dont l'analogue est l'unité hors système " millibar" (mbar) (1 mbar = 100Pa = 1hPa). Pour convertir entre une unité de pression non systémique couramment utilisée " millimètre de mercure" (mm Hg) et hectopascals, les ratios suivants sont utilisés :
1 hPa = 0,75006 mmHg Art. ≈ 3/4 mm Hg ; 1 mmHg =1,3332 hPa ≈ 4/3 hPa.

La dépendance de la pression atmosphérique à l'altitude au-dessus du niveau de la mer

La pression atmosphérique peut être représentée sous forme absolue et relative.
Pression absolue QFE(Anglais) pression absolue) est la pression atmosphérique réelle, sans tenir compte de la correction au-dessus du niveau de la mer.
La pression atmosphérique diminue d'environ 1 hPa avec une augmentation d'altitude de 1 m :

La formule barométrique vous permet de déterminer la correction des lectures du baromètre pour obtenir la pression relative (en mmHg) :
$\Delta P = 760 \cdot (1 - (1 \over (10^ ( (0.0081350 \cdot H) \over (T + 0.00178308 \cdot H) ))))$ ,
où $T$ est la température moyenne de l'air sur l'échelle de Rankin, ° Ra, $H$ - hauteur au-dessus du niveau de la mer, pieds.
Conversion de degrés Celsius en degrés Rankine :
$^(\circ)Ra = (^(\circ)C \cdot 1.8) + 491.67$
La formule barométrique est utilisée pour le nivellement barométrique - détermination des hauteurs (avec une erreur de 0,1 à 0,5%). La formule ne tient pas compte de l'humidité de l'air et de la variation de l'accélération de la chute libre avec la hauteur. Pour de petites différences de hauteur, cette dépendance exponentielle peut être approximée avec une précision suffisante par une dépendance linéaire.
Pression relative QNH(Anglais) pression relative, Hauteur nautique Q-code) est la pression atmosphérique ajustée au niveau moyen de la mer. Niveau moyen de la mer, MSL) (Pour EST UN et une température de 15 degrés Celsius), et est initialement réglé en tenant compte de l'altitude à laquelle se trouve la station météo. Il peut être trouvé à partir des données du service météorologique, des relevés d'instruments calibrés dans les lieux publics, de l'aéroport (à partir de rapports METAR), à partir d'Internet.
Par exemple, pour l'aéroport voisin de Gomel ( UMGG) Je peux voir le bulletin météo réel METAR sur ru.allmetsat.com/metar-taf/russia.php?icao=UMGG :
UMGG 191800Z 16003MPS CAVOK M06/M15 Q1014 R28/CLRD//NOSIG ,
Q1014- pression QNHà l'aéroport est de 1014 hPa.
Historique des communiqués METAR disponible sur aviationwxchartsarchive.com/product/metar.
Pour une pression atmosphérique relative normale QNH une pression de 760 mm Hg est acceptée. Art. ou 1013,25 hPa (à une température de 0ºС, sous une latitude de 45º de l'hémisphère nord ou sud).
J'ai réglé la pression pour le baromètre anéroïde QNH avec la vis de réglage de sensibilité :

Prévisions météorologiques

L'analyse des changements de pression vous permet de construire une prévision météorologique, et sa précision est d'autant plus élevée que la pression change brusquement. Par exemple, la règle empirique d'un ancien navigateur est qu'une chute de pression de 10 hPa (7,5 mmHg) sur une période de 8 heures signifie que des vents forts sont en route.

D'où vient le vent ? L'air circule au centre de la zone de basse pression, vent- mouvement horizontal de l'air des zones de haute pression vers les zones de basse pression (la haute pression atmosphérique comprime les masses d'air dans une zone de basse pression atmosphérique). Si la pression est très faible, le vent peut atteindre tempête. En même temps, dans la région réduit(dépression barique ou cyclone), l'air chaud monte et forme des nuages, qui apportent souvent pluie ou neige.

La direction du vent en météorologie est la direction d'où souffle le vent :

Cette direction est réduite à huit points.

Un algorithme est souvent utilisé pour prédire le temps en fonction de la pression atmosphérique et de la direction du vent. Zambretti.

Capteur d'humidité

Pour déterminer l'humidité relative de l'air, j'utilise le module DHT11(acheté sur le marché eBay):

Capteur d'humidité DHT11 a trois sorties - alimentation ( + ), données ( dehors), Terre ( - ):

sortie du capteur + dehors -
conclusion Arduino 5V D10 Terre

Pour travailler avec le capteur, j'utilise la bibliothèque de adafruit- des dossiers DHT.h, DHT.cpp.

L'humidité caractérise la quantité de vapeur d'eau contenue dans l'air. Humidité relative montre la proportion d'humidité dans l'air (en pourcentage) par rapport à la quantité maximale possible à la température actuelle. Utilisé pour mesurer l'humidité relative :

Pour une personne, la plage optimale d'humidité de l'air est de 40 ... 60%.

Horloge en temps réel

En tant qu'horloge temps réel, j'ai appliqué le module RTC DS1302(un mouchoir avec une montre a été acheté sur le marché eBay):

Module DS1302 connecté au bus 3 fils. Pour utiliser ce module avec Arduino bibliothèque développée arduino_RTC( depuis iarduino.ru).

Carte avec module DS1302 a cinq broches que j'ai connectées aux broches de la carte Arduino Nano:

conclusion RTC VCC Terre TVD CLK DAT
conclusion Arduino 5V Terre D2 D1 D0

Pour conserver les lectures correctes de l'horloge lorsque l'alimentation est coupée, j'ai inséré une pile dans la prise de la carte. CR2032.

La précision de mon module d'horloge n'était pas très élevée - l'horloge est plus rapide d'environ une minute en quatre jours. Par conséquent, je remets les minutes à "zéro" et l'heure au plus près en maintenant le bouton connecté à la broche A0 de l'Arduino après avoir allumé la station météo. Après l'initialisation, la broche A0 est utilisée pour transférer des données via la connexion série.

Transférer des données vers un ordinateur et travailler via le protocole MQTT

Pour transférer des données via une connexion série vers Arduino connecte USB-UART convertisseur:

Conclusion Arduino utilisé pour transférer des données au format 8N1(8 bits de données, pas de parité, 1 bit d'arrêt) à 9600 bps. Les données sont transmises par paquets et la longueur du paquet est de 4 caractères. Le transfert de données s'effectue en " peu bang", sans utiliser le port série matériel Arduino.

Format des données transmises :

Paramètre 1er octet 2ème octet 3ème octet 4ème octet
température extérieure o espace ou moins dizaines de degrés ou espace unités de degrés
température ambiante je espace ou moins dizaines de degrés ou espace unités de degrés
Pression atmosphérique p centaines de mm Art. dizaines de mm Hg unités mmHg Avec.
humidité relative h espace dizaines de pour cent ou espace unités de pourcentage
heure actuelle des dizaines d'heures unités d'heures des dizaines de minutes unités de minutes

MQTT

aller application - client de protocole MQTT, qui envoie les informations reçues de la station météo au serveur ( MQTT-courtier) :

Service permet de créer un compte avec un forfait gratuit " " (limites : 10 connexions, 10 Kbps) :

Pour surveiller les lectures de la station météo, vous pouvez utiliser Android-application :

Nutrition

Pour alimenter la station météo, j'utilise le chargeur d'un ancien téléphone portable. Motorola, délivrant une tension de 5 V avec un courant jusqu'à 0,55 A et connectée aux contacts 5V(+) et Terre (-):

Vous pouvez également utiliser une pile 9 V pour l'alimentation, connectée aux contacts NIV(+) et Terre (-).

Fonctionnement de la station météo

Au démarrage, les capteurs sont initialisés et vérifiés.

En l'absence de capteur DS18x20 une erreur "E1" est émise, s'il n'y a pas de capteur - erreur "E3".

Ensuite, le cycle de travail de la station météo est lancé :

  • mesure et affichage de la température extérieure ;
  • mesure et affichage de la température ambiante ;
  • mesure et affichage de la pression atmosphérique et de la tendance de son évolution ;
  • mesure et affichage de l'humidité relative de l'air ;
  • affichage de l'heure actuelle ;
  • affichage de la phase de la lune et du jour lunaire.


Une vidéo de ma station météo est disponible sur mon -canal : https://youtu.be/vVLbirO-FVU

Affichage de la température

Lors de la mesure de la température, deux chiffres de température sont affichés et pour une température négative, un signe moins (avec un symbole de degré dans le chiffre le plus à droite) ;
pour la température extérieure, le signe degré s'affiche en haut :


pour température ambiante - ci-dessous :

Affichage de la pression

Lors de la mesure de la pression, trois chiffres de pression sont affichés en mmHg (avec le symbole " P" dans le chiffre le plus à droite):

Si la pression a chuté brusquement, alors au lieu du symbole " P" le caractère " s'affiche dans le chiffre le plus à droite L"s'il a fortement augmenté - alors" H". Le critère de netteté du changement est de 8 mm Hg en 8 heures:

Comme ma station météo affiche la pression absolue ( QFE), alors les lectures s'avèrent quelque peu sous-estimées par rapport aux informations du résumé METAR(qui fournit QNH) (14 UTC le 28 mars 2018) :

Le rapport de pression (selon SATI) était $(1015 \over 998) = $1,017. Altitude de l'aéroport de Gomel (code OACI UMGG) au-dessus du niveau de la mer est de 143,6 m. La température selon ATIS était de 1 ° C.

Les lectures de ma station météo ont presque coïncidé avec la pression absolue QFE selon SATI!

Pression max/min ( QFE) enregistré par ma station météo pendant toute la période d'observation :

Affichage de l'humidité relative

L'humidité relative de l'air est affichée en pourcentage (le symbole du pourcentage est affiché dans les deux chiffres de droite) :

Affichage de l'heure actuelle

L'heure courante est affichée sur l'indicateur au format "HH:MM", le deux-points séparateur clignotant une fois par seconde :

Affichage des phases de la lune et du jour lunaire

Les deux premiers chiffres de l'indicateur affichent la phase lunaire actuelle et les deux suivants - le jour lunaire actuel :

La Lune a huit phases (les noms anglais et russe (bleu - inexacts) sont donnés) :

Sur l'indicateur de phase sont affichés par des pictogrammes :

phase pictogramme
faucille en croissance (croissant)
croissant décroissant (croissant)

Transférer des données vers un ordinateur

Si vous connectez la station météo avec USB-UART convertisseur (par exemple, basé sur un microcircuit CP2102) connecté à USB-port de l'ordinateur, vous pouvez alors utiliser le programme du terminal pour observer les données transmises par la station météo :

J'ai développé dans un langage de programmation aller un programme qui tient un journal des observations météorologiques et envoie les données au service et visible sur Android-smartphone utilisant l'application :

Selon le journal des observations météorologiques, vous pouvez, par exemple, construire un graphique des changements de pression atmosphérique :
exemple de graphique avec un minimum de pression perceptible


exemple de graphique avec une légère augmentation de la pression

Améliorations prévues :

  • ajout de capteurs de direction et de vitesse du vent

Dans les stations météorologiques, un anémomètre à trois coupelles (1) est utilisé pour mesurer la vitesse du vent, et une girouette (2) est utilisée pour déterminer la direction du vent :

Également utilisé pour mesurer la vitesse du vent. anémomètres à fil chaud à filament(Anglais) anémomètre à fil chaud). En tant que fil chauffant, vous pouvez utiliser un filament de tungstène d'une ampoule avec du verre brisé. Dans les anémomètres industriels à fil chaud, le capteur est généralement situé sur un tube télescopique :

Le principe de fonctionnement de cet appareil est que la chaleur est évacuée de l'élément chauffant par convection par un flux d'air - vent. Dans ce cas, la résistance du filament est déterminée par la température du filament. La loi de variation de la résistance du filament $R_T$ à partir de la température $T$ a la forme :
$R_T = R_0 \cdot (1 + (\alpha \cdot (T - T_0)))$ ,
où $R_0$ est la résistance du filament à la température $T_0$, $\alpha$ est le coefficient de température de résistance (pour le tungstène $\alpha = 4,5\cdot(10^(-3) (^(\circ)(C^ ( -1))))$).

Avec un changement de vitesse du flux d'air, la température change à un courant de filament constant (un anémomètre à courant continu, eng. ACC). Si la température de l'élément chauffant est maintenue constante, le courant traversant l'élément sera proportionnel à la vitesse du flux d'air (anémomètre à température constante, eng. incitation à l'action).

À suivre

Novembre est un mois de temps incompréhensible : le soleil brillait le matin, et à midi tout devant la fenêtre était déjà blanc de neige. La bonne vieille station météo sur l'Arduino aidera à garder une trace de tout ce charivari météorologique. Inspirez-vous de notre sélection des stations météo maison les plus cool et construisez la vôtre pour être toujours prêt pour les surprises de la nature et ne pas littéralement vous asseoir dans une flaque d'eau.

lampe météo bluetooth

Le dispositif de contrôle surfe sur le Web à la recherche d'informations météorologiques et envoie des signaux via Bluetooth à un servomoteur dans la lampe, qui change les images en fonction des prévisions. Une station météo simple et élégante qui peut décorer votre intérieur.

Ici, le principe est à peu près le même que dans le projet précédent, mais le dispositif d'exécution est réalisé sous la forme d'un nuage, qui change de couleur en fonction de la température, et le servomoteur indique s'il fait chaud dehors ou froid. Cette mini station amusante aura fière allure sur votre bureau.

Pour ceux qui aiment plus de nuages, il y a une autre option

Station météo vintage

Les amateurs de gadgets vintage et les steampunkers chevronnés pourront apprécier la station météo en forme d'horloge ancienne.

La météo Twitter

Cette pyramide en bois indéfinissable est en fait une station météo de haute technologie qui peut mesurer la température, l'humidité de l'air, la pression, les niveaux de lumière, les niveaux de CO et vous envoyer toutes les données sur Twitter.

Tempéscope

Tempescope est le genre de chose que vous pouvez utiliser pour ramener la pluie à la maison. Ou du brouillard. Ou même un orage. Et ils y habiteront. Maintenant, vous n'avez même plus besoin de regarder par la fenêtre pour savoir ce que Mère Nature vous a préparé aujourd'hui.

La météo à Cuba

Vous pouvez non seulement voir les prévisions météorologiques, mais aussi les ressentir. Ce cube Cryoscope en acier, guidé par les données du réseau, se réchauffe ou se refroidit jusqu'à la température extérieure. Vous penchez celui-ci un peu plus bas que le coccyx, et il est immédiatement clair si vous devez mettre un sous-vêtement aujourd'hui ou non.

Pendant mon temps libre, et cette fois j'ai écrit des instructions pour fabriquer une petite station météo. Il fonctionnera comme une horloge avec une date et affichera les températures à l'intérieur et à l'extérieur de la pièce. Nous utiliserons un Arduino UNO comme contrôleur principal, mais une autre carte avec un Atmega328p à bord fera l'affaire. Pour l'affichage, nous utilisons l'écran graphique WG12864B. Nous connecterons également deux capteurs de température ds18b20. L'un est à l'intérieur, l'autre à l'extérieur. Commençons.

Dans le processus de fabrication de produits faits maison, nous avons besoin de:

Arduino UNO (ou toute autre carte compatible Arduino)
- Écran graphique WG12864B
- capteur de température ds18b20, 2 pièces
- Alimentation 6 - 12 V
- Résistances 4,7 Kom 0,25 W, 2 pièces.
- Résistances 100 ohm 0,25 W
- Compartiment à piles pour 4 piles AAA "petit doigt"
- Boîte de la cartouche de la console SEGA
- Ruban isolant
- Fils de connexion
- Circuit imprimé
- Boutons
- Couteau de papeterie
- fer à souder
- Soudure, colophane
- Ruban adhésif double face

Étape 1 Préparez WG12864B3.
Ceux qui n'ont jamais travaillé avec des écrans auparavant peuvent être intimidés par le grand nombre de modifications apportées à des écrans apparemment identiques. Je vais vous expliquer un peu. La plupart des écrans de ce type fonctionnent sur les puces ks0107/ks0108. Tous les écrans peuvent être divisés en 4 types :

Option A : HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T

Option B : HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displays AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG12864J4, QY-1286 4F, TM 12864L-2, 12864J-1

Option C : Shenzhen Jinghua Displays Co Ltd. JM12864

Option D : Wintek-Cascades WD-G1906G, Wintek - GEN/WD-G1906G/KS0108B, Wintek/WD-G1906G/S6B0108A, TECDIS/Y19061/HD61202, Varitronix/MGLS19264/HD61202

Ils se ressemblent presque. Mais les broches de connexion sont différentes. J'ai choisi, et je vous le recommande, WG12864B3 V2.0, mais si l'écran est venu dans un autre, ou si vous ne l'avez tout simplement pas sous la main, vous pouvez facilement le comprendre en utilisant le tableau :

Brèves spécifications :

Il existe de nombreux schémas de connexion différents sur Internet, et tout semble fonctionner. Le fait est qu'il existe non seulement des écrans différents, mais aussi deux façons de les connecter : en série et en parallèle. Lors de l'utilisation d'une connexion de port série, nous n'avons besoin que de 3 sorties de microcontrôleur. Avec un parallèle minimum de 13. Le choix dans ce cas est évident, l'Arduino n'a de toute façon pas beaucoup de conclusions. Pour une connexion en parallèle, le schéma de connexion est le suivant :

Pour une connexion série, que nous utiliserons, le schéma est le suivant :

WG12864B - Arduino UNO 1 (GND) - GND 2 (VCC) - +5V 4 (RS) - 10 5 (R/W) - 11 6 (E) - 13 15 (PSB) - GND 19 (BLA) - via résistance 100 Ohms - +5V 20 (BLK) - GND

Pour régler le contraste, un potentiomètre doit se trouver sur l'écran. Il y a des screens sans ça, mais c'est désormais rare :

Une résistance de 100 ohms est nécessaire pour qu'une tension de 5 volts ne brûle pas accidentellement les diodes de rétroéclairage.

Étape 2 Fabrication du boîtier.
Pour le boîtier, prenez la boîte de la cartouche du décodeur Sega. Si vous ne trouvez pas cette boîte à portée de main, vous pouvez utiliser un autre étui. L'essentiel est que l'écran et l'Arduino s'y adaptent.

Coupez le film transparent, sur le dessus de la boîte, pour qu'il n'y ait plus de morceaux :

Ensuite, à l'aide d'un couteau de bureau, découpez une fenêtre 37x69 pour l'écran.

Au verso, le long du bord de la découpe, nous collons du ruban adhésif double face, de préférence noir:

Nous retirons le papier protecteur du ruban adhésif et collons notre écran dessus :

Vu de l'extérieur ça devrait ressembler à ça :

Sous l'écran, également sur du ruban adhésif double face, nous montons l'Arduino, après avoir préalablement fait des découpes pour le port USB et la prise de courant :

Les découpes pour les prises Arduino doivent être faites de part et d'autre du boîtier afin qu'il puisse se refermer librement :

Étape 3 Capteurs de température.
Nous utiliserons des capteurs de température numériques DS18B20. En les utilisant, nous obtenons une plus grande précision de mesure, une erreur ne dépassant pas 0,5 °C, dans une large plage de température de -55 ... + 125 °C. De plus, le capteur est numérique et effectue tous les calculs lui-même, et l'Arduino reçoit simplement des lectures prêtes à l'emploi. Lors de la connexion de ce capteur, n'oubliez pas la résistance de rappel de 4,7 KΩ entre les broches DQ et VDD. Plusieurs options de connexion sont également possibles. Avec une alimentation externe, à mon avis la meilleure option, nous l'utiliserons :

Quelle que soit l'alimentation électrique, les capteurs sont connectés en parallèle :

Nous placerons le capteur de température intérieure sur une petite carte avec deux boutons que nous utiliserons pour régler l'heure et la date de l'horloge :

Nous connectons le fil commun des deux boutons à GND, connectons le fil du premier bouton à A0, du second à A1.
Nous le fixons sur du ruban adhésif double face à côté de l'Arduino :

Le capteur, qui est censé être placé à l'extérieur de la pièce, est préférable de choisir dans un boîtier métallique anti-poussière :

Calculez le fil de la longueur requise pour pouvoir accrocher le capteur à l'extérieur de la fenêtre, l'essentiel est qu'il ne dépasse pas 5 mètres, si vous avez besoin d'une longueur plus longue, vous devrez réduire la valeur de la traction- résistance vers le haut.

Nous connectons le fil du bus de données DQ des deux capteurs à la broche 5 de l'Arduino.
Vdd - +5 Arduino.
GND - GND Arduino.

Étape 4 Alimentation.
Pour l'alimentation, vous pouvez utiliser une alimentation avec une tension de 6 à 12 volts. À l'extrémité du câble d'alimentation, soudez une prise qui s'adapte à la prise d'alimentation Arduino :

Ou vous pouvez mettre un compartiment à piles pour quatre piles "AAA", "petit doigt" dans le boîtier. Et connectez le fil positif de la baie à Vin Arduino et le fil négatif à GND.

Étape 5 Préparez l'environnement de programmation.
Vous devez d'abord télécharger et installer l'IDE Arduino à partir du site officiel

Et ajoutez également les deux bibliothèques nécessaires au croquis. OneWire - requis pour la communication avec les capteurs ds18b20 :

U8glib - utilisé pour afficher des informations à l'écran :

Téléchargement de bibliothèques. Ensuite, nous déballons les archives et déplaçons le contenu des archives dans le dossier "bibliothèques", situé dans le dossier avec l'IDE Arduino installé. Vous pouvez également ajouter des bibliothèques via l'IDE Arduino. Pour ce faire, sans décompresser les archives, exécutez l'IDE Arduino, sélectionnez Sketch - Connect Library dans le menu. Tout en haut de la liste déroulante, sélectionnez l'élément "Add. Zip Library". Spécifiez l'emplacement des archives téléchargées. Après toutes les étapes, vous devez redémarrer l'IDE Arduino.

Étape 6 Modification de l'esquisse.
Les capteurs de température fonctionnent selon le protocole One Wire et ont une adresse unique pour chaque appareil - un code 64 bits. Il n'est pas conseillé d'ajouter des commandes pour rechercher des capteurs dans l'esquisse. Il n'est pas nécessaire de charger l'Arduino à chaque fois pour perturber les capteurs. Par conséquent, tout d'abord, après avoir tout rassemblé, nous remplissons le croquis Arduino, situé dans le menu Fichier - Exemples - Température de Dallas - OneWireSearch. Ensuite, nous lançons Tools - Port Monitor. Arduino devrait trouver nos capteurs, écrire des adresses et des lectures de température. Ces adresses doivent être écrites ou simplement copiées quelque part. Ouvrez maintenant l'esquisse Ard_Tic_Tak_WG12864B_2_x_Term_Serial et recherchez les lignes :

Byte addr1=(0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63);// adresse de l'octet interne addr2=(0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97); capteur

Nous remplaçons les adresses des capteurs correspondant à la localisation par nos adresses.
Notre horloge n'utilise pas le module RTC (horloge temps réel), il est donc nécessaire de corriger l'horloge. Pour plus de commodité, décommentez la ligne (des secondes apparaîtront à l'écran) :

//u8g.setPrintPos(44, 50); u8g.print(sec); // Affiche les secondes pour contrôler l'exactitude du mouvement

Réglez l'heure correcte à l'aide du moniteur de port. Pour ce faire, ouvrez le moniteur de port, attendez la fin des mesures de température initiales et entrez la date et l'heure actuelles au format "jour, mois, année, heures, minutes, secondes". Pas d'espaces, les chiffres sont séparés par des virgules ou des points.

Si l'horloge est pressée, changez la valeur en une valeur plus grande, je recommande d'expérimenter avec un pas de 100 unités. Si un retard doit diminuer la valeur dans la ligne :

If (micros() - prevmicros >494000) ( // changer pour autre chose pour ajuster c'était 500000

Empiriquement, nous déterminons le nombre auquel l'horloge tourne avec suffisamment de précision. Pour déterminer la précision du mouvement, vous avez besoin de la sortie en secondes. Après un calibrage précis du nombre, les secondes peuvent être commentées et ainsi supprimées de l'écran.
Téléchargement du croquis.

D'une manière ou d'une autre, en me promenant dans la ville, j'ai vu un nouveau magasin d'électronique radio qui venait d'ouvrir. En y allant, j'ai trouvé un grand nombre de shields pour Arduino. J'avais un Arduino Uno et un Arduino Nano à la maison et j'ai tout de suite eu l'idée de jouer avec des émetteurs de signaux à distance. J'ai décidé d'acheter l'émetteur et le récepteur le moins cher à 433 MHz :

Transmetteur de signaux.


récepteur de signaux.

Après avoir enregistré le schéma le plus simple de transmission de données (un exemple est tiré d'ici), il s'est avéré que les dispositifs de transmission peuvent être tout à fait appropriés pour transmettre des données simples, telles que la température, l'humidité.

L'émetteur a les caractéristiques suivantes :
1. Modèle : MX-FS-03V
2. Rayon d'action (dépend de la présence d'objets bloquants) : 20-200 mètres
3. Tension de fonctionnement : 3,5 -12 V
4. Dimensions du module : 19*19mm
5. Modulation du signal : SUIS
6. Puissance de l'émetteur : 10 mW
7. Fréquence : 433 MHz
8. Longueur requise de l'antenne externe : 25 cm
9. Facile à connecter (seulement trois fils) : DATA ; CCV ; Terre.

Caractéristiques du module de réception :
1. Tension de fonctionnement : 5 V CC.
2. Courant : 4 mA
3. Fréquence de travail : 433,92 MHz
4. Sensibilité : - 105dB
5. Dimensions du module : 30*14*7mm
6. Antenne externe requise : 32 cm.

Dans l'immensité d'Internet on dit que la portée de transmission d'informations à 2Kb/s peut atteindre jusqu'à 150m. Je ne l'ai pas vérifié moi-même, mais dans un appartement de deux pièces, il accepte partout.

Matériel de station météo domestique

Après plusieurs expériences, j'ai décidé de connecter un capteur de température, d'humidité et un émetteur à l'Arduino Nano.


Le capteur de température DS18D20 est connecté à l'arduino comme suit :

1) GND au moins du microcontrôleur.
2) DQ via une résistance pull-up à la masse et à la broche D2 d'Arduino
3) Vdd à +5V.

Le module émetteur MX -FS - 03V est alimenté en 5 Volts, la sortie de données (ADATA) est connectée à la broche D13.

J'ai connecté un écran LCD et un baromètre BMP085 à Arduino Uno.


schéma de câblage pour arduino uno

Le récepteur de signal est connecté à la broche D10.

Le module BMP085 est un capteur de pression atmosphérique numérique. Le capteur vous permet de mesurer la température, la pression et l'altitude. Interface de connexion : I2C. Tension d'alimentation du capteur 1,8-3,6 V

Le module est connecté à l'Arduino de la même manière que les autres appareils I2C :

  • VCC-VCC (3.3V);
  • GND-GND ;
  • SCL - à la broche analogique 5 ;
  • SDA - à la broche analogique 4.
  • Très faible coût
  • Alimentation et E/S 3-5V
  • Détermination de l'humidité 20-80% avec une précision de 5%
  • Détermination de la température 0-50 degrés. avec une précision de 2 %
  • Fréquence d'interrogation pas plus de 1 Hz (pas plus d'une fois toutes les 1 sec.)
  • Dimensions 15,5 mm x 12 mm x 5,5 mm
  • 4 broches avec espacement des jambes de 0,1"

DHT a 4 broches :

  1. Vcc (alimentation 3-5V)
  2. Sortie de données - Sortie de données
  3. Non utilisé
  4. Général

Se connecte à D8 Arduino.

Logiciel de station météo domestique

Le module émetteur mesure et transmet la température toutes les 10 minutes.

Ci-dessous le programme :

/* Sketch version 1.0 Envoie la température toutes les 10 min. */ #include #include #include #define ONE_WIRE_BUS 2 //Broche pour connecter le capteur Dallas OneWire oneWire(ONE_WIRE_BUS); Capteurs de température Dallas(&oneWire); Adresse de l'appareil à l'intérieur du thermomètre ; void setup(void) ( //Serial.begin(9600); vw_set_ptt_inverted(true); // Requis pour DR3100 vw_setup(2000); // Définir le débit en bauds (bps) sensors.begin(); if (!sensors .getAddress (insideThermometer, 0)); printAddress(insideThermometer); sensors.setResolution(insideThermometer, 9); ) void printTemperature(DeviceAddress deviceAddress) ( float tempC = sensors.getTempC(deviceAddress); //Serial.print("Temp C : " ); //Serial.println(tempC); //Formation des données pour envoyer int number = tempC; char symbol = "c"; //Symbole de service pour déterminer qu'il s'agit d'un capteur String strMsg = "z"; strMsg + = symbole; strMsg += " "; strMsg += nombre; strMsg += " "; char msg; strMsg.toCharArray(msg, 255); vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // Attendre la fin du transfert delay(200); ) void loop(void) ( for (int j=0; j<= 6; j++) { sensors.requestTemperatures(); printTemperature(insideThermometer); delay(600000); } } //Определение адреса void printAddress(DeviceAddress deviceAddress) { for (uint8_t i = 0; i < 8; i++) { if (deviceAddress[i] < 16); //Serial.print("0"); //Serial.print(deviceAddress[i], HEX); } }

L'appareil récepteur reçoit des données, mesure la pression et la température dans la pièce et les transmet à l'écran.

#include #include LCD LiquidCrystal(12, 10, 5, 4, 3, 2); # inclure le capteur dht11 ; #define DHT11PIN 8 #include #include BMP085 dps = BMP085(); long Température = 0, Pression = 0, Altitude = 0 ; void setup() ( Serial.begin(9600); vw_set_ptt_inverted(true); // Requis pour DR3100 vw_setup(2000); // Définir le taux de réception vw_rx_start(); // Démarrer la surveillance de l'air lcd.begin(16, 2); Wire.begin(); delay(1000); dps.init(); //lcd.setCursor(14,0); //lcd.write(byte(0)); //lcd.home(); ) void loop() ( uint8_t buf; // Tampon de message uint8_t buflen = VW_MAX_MESSAGE_LEN; // Longueur du tampon if (vw_get_message(buf, &buflen)) // Si un message est reçu ( // Commencer l'analyse int i; // Si le message est ne nous est pas adressé , exit if (buf != "z") ( return; ) char command = buf; // La commande est à l'index 2 // Le paramètre numérique commence à l'index 4 i = 4; int number = 0; // Comme le transfert se fait caractère par caractère, vous devez convertir le jeu de caractères en un nombre while (buf[i] != " ") ( number *= 10; number += buf[i] - "0"; i++; ) dps.getPressure(&Pressure); dps.getAltitude (&Altitude); dps.getTemperature(&Temperature); //Serial.print(commande); Serial.print(" "); Serial.println(nombre); lcd.print("T="); lcd.setCursor(2,0); impression lcd (nombre); lcd.setCursor(5,0); lcd.print("P="); lcd.print(Pression/133.3); lcd.print("mmH"); lcd.setCursor(0,1); lcd.print("T="); lcd.print(Température*0.1); lcd.print("H="); lcd.print(capteur.humidité); lcd.home(); //retard(2000); int chk = capteur.lire(DHT11PIN); switch (chk) ( case DHTLIB_OK : //Serial.println("OK"); break; case DHTLIB_ERROR_CHECKSUM: //Serial.println("Checksum error"); break; case DHTLIB_ERROR_TIMEOUT: //Serial.println("Time out erreur"); break; par défaut : //Serial.println("Erreur inconnue"); break; ) ) )

PS À l'avenir, je prévois d'ajouter les éléments suivants :
- capteur d'humidité vers l'émetteur, retravailler l'algorithme de transmission des données
- capteur pour mesurer la vitesse et la direction du vent.
- ajouter un autre écran au récepteur.
- transférer le récepteur et l'émetteur sur un microcontrôleur séparé.

Ci-dessous une photo de ce qui s'est passé :

Liste des éléments radio

Désignation Taper Dénomination Quantité NoteBoutiqueMon bloc-notes
partie émettrice.
Carte Arduino

Arduino Nano 3.0

1 Vers le bloc-notes
capteur de température

DS18B20

1 Vers le bloc-notes
Résistance

220 ohms

1 Vers le bloc-notes
module émetteurMX-FS-03V (433 MHz)1 Vers le bloc-notes
partie réception radio.
Carte Arduino

Arduino Uno

1 Vers le bloc-notes
Résistance ajustable 1 Vers le bloc-notes
Résistance


« Alors, mettons-nous d'accord tout de suite : vous n'allez pas faire un film pour Hollywood. Même au pays des merveilles, pas plus de cinq pour cent de tous les scripts sont approuvés, et seulement un pour cent passe ensuite en production ... Donc, au lieu de tout cela, vous allez créer votre propre Hollywood. ”
Ed Gaskel "Tourner du cinéma numérique, ou Hollywood à la maison"

Avant-propos

Quoi, une autre station météo Arduino ? ! Oui, un de plus et, quelque chose me dit, pas le dernier dans l'Internet des objets.


Tout comme chaque programmeur doit écrire un programme "Hello World!", chaque arduinien doit avoir de l'expérience dans la construction d'une station météo simple ou pas très.
Un nombre considérable de projets déjà créés de stations météorologiques sur Internet sont décrits, le lecteur peut choisir l'un d'entre eux pour la mise en œuvre. Franchement, j'ai étudié attentivement une douzaine de projets similaires et un tas de projets connexes. Par conséquent, on ne peut pas dire que j'ai tout créé à partir de zéro, bien sûr, je "me suis tenu sur les épaules de géants".


Je dois dire tout de suite que mes plans n'incluaient pas l'utilisation de services tiers pour le stockage et l'affichage des données. Je voulais personnellement ressentir et comprendre comment tout cela fonctionne de l'intérieur du début à la fin, de A à Z.


Donc, pour ceux qui veulent créer rapidement quelque chose à partir de rien, cette série d'articles ne convient probablement pas. Il est plus facile d'aller acheter un kit prêt à l'emploi avec des instructions de montage. Les professionnels de la microélectronique n'ont absolument rien à faire ici, peut-être hennir et se souvenir au début du voyage.
Mais pour ceux qui veulent vraiment comprendre, je pense que ça leur plaira. Peut-être que le matériel sera utile comme aide pédagogique.



Ce projet a été mis en place en 2016, mais j'espère qu'il est toujours d'actualité.

Ensemble technologique

Nous étudierons et travaillerons avec des choses simples et complexes :

  • capteurs de température et d'humidité type DHT22, DHT11
  • capteur de pression barométrique type BMP180
  • Module Wi-Fi ESP8266
  • module radio type nRF24 2.4GHz
  • famille Arduino Pro Mini, Arduino Mega
  • panneaux solaires et batteries
  • langage de programmation C/C++
  • Langage de programmation PHP
  • Système de gestion de base de données MySQL
  • le langage de programmation Java et le framework Android (création d'une application pour Adnroid permettant d'afficher les données météo sur un smartphone).

Certains des sujets énumérés ne valent rien, et certains peuvent être étudiés pendant des années. Par conséquent, nous n'aborderons les choses complexes que dans la partie directement liée à ce projet, afin que vous compreniez comment tout cela fonctionne.


Mais nous allons commencer dès le début Droite. A savoir, à partir de la description et de la conception du futur appareil "sur papier" de sorte qu'à la fin chaque brique était à sa place.

prototypage

Comme Wikipédia nous le dit correctement, prototypage est un projet rapide d'implémentation d'un système de travail. Ce qui, oui, ne fonctionnera pas de manière totalement inefficace et avec quelques erreurs, mais donnera une idée de la question de savoir si l'artisanat doit être développé en un design industriel. Le processus de création d'un prototype ne devrait pas être long. L'étape de prototypage est suivie de l'analyse du système et de son affinement.


Mais c'est dans une industrie où les travailleurs sont employés à temps plein.


Tous ceux qui rivent leur projet d'artisanat pour l'« Internet des objets » le soir doivent être conscients qu'ils créent un prototype, un produit semi-fini. C'est très loin du niveau d'un produit industriel normal. C'est pourquoi vous ne devriez pas confier à nos bateaux amateurs des zones critiques de survie et espérons qu'ils ne nous laisseront pas tomber.


Un produit industriel est construit sur une base d'éléments industriels et passe ensuite par de nombreuses autres étapes, y compris le débogage, les tests et la maintenance, avant de devenir un best-seller.


Alors, au lieu de tout cet ennui, nous allons créer notre propre jouet, mais pas simple. Avec des éléments de créativité technique, les débuts de la programmation et la connaissance (en cours de création) de bien d'autres choses connexes.


Bien sûr, les ingénieurs en électronique auront du mal au stade de la programmation et les programmeurs devront transpirer sur les circuits, mais l'auteur essaiera de tout énoncer de la manière la plus accessible possible et de décrire clairement pourquoi certaines solutions ont été utilisées.

Exigences

Habituellement, cette étape est ignorée. Décider de faire quelque chose comme ça en ce moment, et puis il s'avère que de petits détails mettent tout le projet dans une impasse ou même le rendent insupportable. Toute notre liste de souhaits doit être enregistrée, j'utilise Google Drive pour cela, elle est disponible depuis un PC et depuis un appareil mobile.


Ainsi, notre station météo devrait :

  • mesurer la température et l'humidité à l'extérieur
  • mesurer la température et l'humidité dans la maison
  • mesurer la pression atmosphérique
  • afficher les valeurs indiquées sur l'écran
  • transférer des données vers un serveur sur Internet, où les données seront stockées dans une base de données et affichées sur une page Web, ou utilisées dans une application mobile.

Les capteurs sont les plus simples et les moins chers. Par exemple, pour l'avenir, je dirai que le DHT22 mesure la température assez précisément, mais c'est un peu imprécis avec l'humidité. Mais, encore une fois, je le répète, cela n'a pas d'importance, car nous avons un prototype devant nous, et une dispersion de 5% d'humidité n'affectera rien d'important dans notre vie.


L'architecture, le matériel et les logiciels du système doivent permettre au système d'être encore plus extensible pour ajouter de nouveaux capteurs et de nouvelles capacités.

Fer. Sélection des composants

C'est la partie la plus importante, et pas de soudure ou de programmation du tout. Après avoir défini les exigences du système, il est nécessaire de décider à l'aide de ce qu'elles seront exactement mises en œuvre.


Ici, il y a une nuance. Pour sélectionner des composants, vous devez bien connaître leurs capacités, vous devez connaître les technologies elles-mêmes. Autrement dit, ici, vous devez être loin d'être un ingénieur en électronique et un programmeur débutant. Alors que faire maintenant pour passer quelques années à étudier toute la gamme d'appareils possibles ?


Cercle vicieux? Mais des cercles vicieux existent pour les briser.


Il y a une sortie. Vous pouvez simplement prendre et répéter le projet de quelqu'un. J'ai étudié les projets déjà existants de stations météo et j'espère avoir fait un pas en avant.


Donc. L'architecture de la station météo est basée sur l'Arduino. Parce qu'Arduino a un petit seuil d'entrée et j'ai déjà traité cela. Ensuite, il est plus facile de choisir.


Il est immédiatement devenu clair que la station météo comprendrait un capteur à distance hors fenêtre et un module central.


L'unité centrale principale sera située à l'intérieur. Il est important de déterminer cela au stade initial; des caractéristiques aussi importantes que le régime de température de fonctionnement et la «danse» de puissance à partir de cela.


Le capteur (ou les capteurs) à distance sera sans "cerveau", sa tâche est de prendre périodiquement des mesures et de transmettre des données à l'unité centrale d'accueil. L'unité centrale reçoit les données de tous les capteurs, les affiche à l'écran et les envoie sur Internet à la base de données. Bon là c'est déjà beaucoup plus facile, dès que les données sont dans la base de données, on peut en faire ce qu'on veut, même dessiner des graphiques.


Pour la communication avec le monde extérieur, Internet a été choisi sans équivoque par le module WiFi ESP8266 avec presque aucune alternative (remarque, peut-être que de telles alternatives sont maintenant apparues). Des cartes d'extension Ethernet sont disponibles pour Arduino, mais je ne voulais pas du tout être lié à un câble.



Une question intéressante était de savoir comment assurer la communication entre le capteur extérieur (ou les capteurs, souvenez-vous de l'exigence d'extensibilité du système ?) Et le centre. Les balises radio 433 MHz ne sont définitivement pas adaptées (elles ne conviennent à rien du tout).


Utiliser à nouveau ESP8266 ?


Inconvénients de cette solution :

    Nécessite un WiFi stable à l'extérieur de la maison

    la portée de communication ne sera pas grande

    la fiabilité en souffrira, si Internet tombe en panne, nous ne verrons pas nos télécapteurs

    plus de consommation d'énergie.

    Consommation d'énergie ESP8266 :

    lors de la transmission 120-170 mA

    lors de la réception 50-56 mA

    en mode veille profonde 10 µA (µA)

    état désactivé 5 µA (µA).

Au final, pour connecter des capteurs déportés à l'unité principale de la maison, la puce nRF24L01 + avec un émetteur et un récepteur 2,4 GHz dans une bouteille a été choisie, avec une antenne externe supplémentaire, pour certainement "percer" les murs.



Consommation électrique nRF24L01+ 2,4 GHz :

  • lors de la réception de 11 mA
  • lors de la transmission à une vitesse de 2 Mbps - 13 mA
  • en mode veille-I - 26 μA (μA)
  • état désactivé 900 nA (nA).

L'ESP8266 et le nRF24L01+ ont tous deux une plage de température de fonctionnement appropriée : de -40℃ à +80℃.


Vous pouvez acheter le nRF24L01+ pour environ 1 $, ou avec une antenne externe pour 3 $. Vous pouvez acheter ESP8266-01 pour environ 4 $. Lisez attentivement la description du produit ! Sinon, achetez une antenne.


Le cœur du système a émergé. Passons aux capteurs eux-mêmes.


Dans la rue, comme vous le savez, la température peut atteindre des valeurs négatives, donc le capteur DHT11 n'est pas adapté, mais le DHT22 est juste.



Spécifications du DHT22 / AM2302 :

  • Alimentation 3.3V à 5V, 5V recommandé
  • consommation 2,5mA maximum, au moment de la mesure et du transfert des données
  • plage de mesure d'humidité 0-100% avec une erreur de 2-5%
  • plage de mesure de température de -40 à +125°C avec une erreur de ±0,5°C
  • demande de mesure pas plus de 0,5 Hz - une fois toutes les 2 secondes.

A l'intérieur de la maison, j'espère qu'il n'y aura pas de températures négatives, vous pourrez donc utiliser le DHT11, d'autant plus que je l'avais déjà.


Caractéristiques du DHT11 :

  • Alimentation 3.3V à 5V
  • consommation 2,5 mA maximum, au moment de la mesure et du transfert des données
  • plage de mesure d'humidité 20-80% avec une erreur de 5%
  • plage de mesure de température de 0 à +50°C avec une erreur de ±2°C
  • demande de mesure pas plus de 1 Hz - une fois par seconde.

Vous pouvez acheter DHT22 pour environ 3 $. DHT11 coûte moins cher - 1 $, mais il est également moins précis.


Revenons maintenant à l'Arduino. Quelle planche choisir ?


J'ai testé des parties individuelles du système sur l'Arduino UNO. Ceux. J'ai connecté le module ESP à l'uno et l'ai étudié, l'ai éteint, puis connecté le nRF24, etc. Pour la mise en œuvre finale du capteur de fenêtre, j'ai choisi l'Arduino Pro Mini comme la miniature la plus proche de l'Uno.



En termes de consommation électrique, l'Arduino Pro Mini a également l'air bien :

  • il n'y a pas de convertisseur USB-TTL, qui lui-même "mange" beaucoup,
  • La LED est connectée via une résistance de 10k.

Pour des économies d'énergie avancées, il a été prévu :

  • retirez la LED - indicateur d'alimentation sur l'Arduino Pro Mini (j'ai regretté de ne pas avoir abîmé la carte)
  • ou utiliser un montage "nu" sur un microprocesseur Atmel ATmega328 (ne l'a pas utilisé)
  • utilisez la bibliothèque basse consommation ou JeeLib .

Parmi les bibliothèques que j'ai choisies, Low Power Library est simple et ne contient que ce dont vous avez besoin.


Pour l'unité centrale, puisqu'il était prévu d'y connecter de nombreux périphériques, la carte Arduino Mega a été choisie. De plus, il est entièrement compatible avec UNO et dispose de plus de mémoire. Pour l'avenir, je dirai que ce choix était pleinement justifié.


Vous pouvez acheter Arduino Mega pour environ 8 $.

Puissance et consommation d'énergie

Parlons maintenant de la nourriture et de la consommation d'énergie.


Il existe deux types d'Arduino Pro Mini :

  • pour tension d'alimentation 5V et fréquence 16MHz
  • pour une tension d'alimentation de 3.3V et une fréquence de 8MHz.

Étant donné que le module radio nRF24L01 + nécessite 3,3 V pour l'alimentation et que la vitesse n'est pas importante ici, achetez un Arduino Pro Mini à 8 MHz et 3,3 V.


Dans ce cas, la plage de tension d'alimentation de l'Arduino Pro Mini est :

  • 3.35-12V pour le modèle 3.3V
  • 5-12V pour le modèle 5V.

J'avais déjà un Arduino Pro Mini 5V, c'est pourquoi je l'ai utilisé. Vous pouvez acheter un Arduino Pro Mini pour environ 4 $.


L'alimentation de l'unité centrale se fera à partir du réseau 220 V via un petit bloc d'alimentation, donnant une sortie de 12V, 450mA, 5W. Quelque chose comme ça pour 5 $. Il y a aussi une sortie séparée pour 5V.



Et si cela ne suffit pas, vous pouvez le mettre plus puissamment. En d'autres termes, économiser de l'énergie pour l'unité centrale n'a pas beaucoup de sens. Mais pour un capteur sans fil à distance, l'économie d'énergie est la partie la plus importante. Mais je ne veux pas non plus perdre de fonctionnalité.


Ainsi, l'Arduino Pro Mini et le module radio nRF24 seront alimentés par un bundle de 4 batteries Ni-Mh.


Et rappelez-vous capacité maximale d'une batterie moderne environ 2500-2700mAh, rien de plus n'est soit un gadget marketing (Ansmann 2850) soit un canular (UltraFire 3500).


Je n'utilise pas de batteries Li-Ion pour plusieurs raisons :

  • très cher
  • lorsque la température ambiante descend en dessous de 0°C, la puissance de la batterie lithium-ion diminue à 40-50%
  • ceux qui sont bon marché sont fabriqués sans protection et ne sont pas sûrs (lors d'un court-circuit ou d'une décharge, ils peuvent exploser et brûler, voir un tas de vidéos sur YouTube)
  • vieillissent, même s'ils ne sont pas utilisés (cependant, on peut en dire autant de tous les éléments chimiques), au bout de 2 ans une batterie Li-Ion perd environ 20% de sa capacité.

Pour un prototype, il est tout à fait possible de se débrouiller avec des piles Ni-MH AA ou AAA de haute qualité. De plus, nous n'avons pas besoin de grands courants. Le seul inconvénient des batteries Ni-MH est leur long temps de charge.

Schéma général de la station météo

Résumons. Voici un schéma général de la façon dont tout cela fonctionne.



À suivre.

Vous avez aimé l'article ? Partager avec des amis: