Autonome Wetterstation auf dem ATMEGA328P-Controller und batteriebetrieben mit einem drahtlosen Fernbedienungssensor

Um meinen Raumthermostat zu verbessern , über den ich bereits geschrieben habe , habe ich mich vorgenommen, ihn durch einen drahtlosen Temperatursensor zur Messung der Außenlufttemperatur zu ergänzen, einen batteriebetriebenen Thermostat zusammenzubauen und die Sender-Empfänger-Module RF 433MHz durch ein anderes Paar Funkmodule mit einer längeren Kommunikationsreichweite bei einer Versorgungsspannung zu ersetzen mehr als 3V. Im Zuge der Lösung dieser Probleme entstand eine autonome Wetterstation, auf die weiter unten eingegangen wird.



Die Wetterstation besteht aus zwei Knoten, die wir der Einfachheit halber als Analysator und Thermometer bezeichnen. Kommunikation zwischen Knoten - drahtlos, drahtlos.


Der Analysator basiert auf dem ATMEGA328P-Controller und misst die Temperatur und Luftfeuchtigkeit im Raum (Temperatur- und Feuchtigkeitssensor DHT22) sowie die Versorgungsspannung des Analysators, die von zwei 1,5-V-AA-Batterien bereitgestellt wird. Die Steuerung empfängt ein Signal vom LoRa-Empfänger, das Informationen vom Thermometer (Fernbedienungssensor) über Funk empfängt. Informationen von der Steuerung werden auf dem LCD des NOKIA 5110 angezeigt.


Das ebenfalls am ATMEGA328P-Controller montierte Thermometer misst die Außentemperatur (Temperatursensor DS18B20) und die Versorgungsspannung der Fernbedienung, die auf zwei 1,5-V-AA-Batterien aufgebaut ist. Der LoRa-Messumformer dieser Einheit überträgt die Temperatur und die Versorgungsspannung an den Analysator.


Der ATMEGA328P-Controller und der LoRa-Sender des Thermometers werden in den Ruhemodus versetzt, um nach den Messungen Batteriestrom zu sparen und Informationen zu senden. Die Versorgungsspannung des DS18B20-Sensors wird nur für die Dauer der Temperaturmessung programmgesteuert angelegt. Das Messen und Senden von Daten vom Thermometer erfolgt in einem Zeitraum von etwa einer Minute.


Im gleichen Work-Sleep-Modus arbeitet auch der Analysator. Die Dauer der Steuerung und des Empfängeranalysators für einige Sekunden länger als eine Minute. Dies geschieht, um das Signal vom Thermometer sicher zu empfangen - schließlich sind der Betrieb des Thermometers und des Analysators nicht synchronisiert. Anschließend werden der ATMEGA328P und der LoRa-Empfänger für 14 Minuten in den Ruhemodus versetzt, bevor sie aufwachen und den nächsten Zyklus starten. DHT22 liefert nur Strom während der Messung.


Zum Programmieren des Ruhemodus der ATMEGA328P-Controller wird die Bibliothek LowPower.h verwendet.


Mit dem Entladen der Batterien nimmt der Spannungswert auf ihnen ab.



Die untere Grenze der Betriebsspannung für den ATMEGA328P-Controller beträgt 1,8 V. Gleichzeitig wurde die Werkseinstellung der Sicherung ATMEGA328P durchgeführt, um den Schwellenwert der Versorgungsspannung von 2,7 V zu überwachen. Daher müssen die Werkseinstellungen der Sicherung auf den Überwachungsschwellenwert von 1,8 V geändert werden, um den Betrieb des Controllers bei Stromverbrauch entladener Batterien zu gewährleisten.


Der interne Reglergenerator startet möglicherweise nicht bei einer Frequenz von 16 MHz mit einer Versorgungsspannung von 3 V oder etwas niedriger. Beide Controller arbeiten mit 16 MHz Quarz bei einer reduzierten Versorgungsspannung von 2,7 ... 2,8 V, daher habe ich den 16 MHz Quarz nicht auf 8 MHz geändert.



Für die Montage des Geräts benötigen Sie Komponenten, deren Liste und deren geschätzte Kosten zu AliExpress- Website-Preisen in der Tabelle aufgeführt sind.


KomponentePreis, $
Analysator
ATMEGA328P-PU-Controller1,59
Temperatur- und Feuchtigkeitssensor DHT222,34
LoRa Ra-01 Sender3,95
LCD NOKIA 51101,91
Steckbrett (Montage), Montagekabel, AA-Batterien, 16-MHz-Quarzresonator, Widerstände usw.4.00
Thermometer
ATMEGA328P-PU-Controller1,59
Temperatursensor DS18B200,63
LoRa Ra-01 Sender3,95
Entwicklungsplatine (Glasfaser), Montagekabel, AA-Batterien, 16-MHz-Quarzresonator, Widerstände usw.4.00
Insgesamt (ungefähr):24

Analysator




Das Gehirn des Analysators ist ein ATMEGA328P-Controller. Es empfängt Signale vom DHT22-Sensor und kommuniziert über das SPI-Protokoll mit dem LoRa-Empfänger und dem NOKIA 5110-Display.



Im Internet gibt es viele Beschwerden über die geringe Genauigkeit des DHT22. Heute gibt es eine Alternative: modernere Temperatur- und Feuchtigkeitssensoren HTU21 (GY21) , (Vcc = 3 ... 5 V), Si7021 , (Vcc = 1,9 ... 3,6 V), SHT21 , (Vcc = 2,1 .... 3,6 V).


Ich verwende DHT22, da die Diskrepanz zwischen den Feuchtigkeitswerten meiner Probe dieses Sensors und dem im Handel erhältlichen LaCrosse WS-9024IT-Thermo-Hygrometer nicht mehr als 8 Einheiten beträgt, was für Haushaltszwecke durchaus akzeptabel ist. Die Diskrepanz zwischen den Feuchtigkeitswerten nimmt stark zu, wenn die Versorgungsspannung des DHT22 unter 3 V liegt. Dies ist verständlich, da die Versorgungsspannung von DHT22 innerhalb von 3 ... 5V liegen sollte. Zusammenfassend lässt sich sagen , dass der Si7021- Sensor idealerweise unter diesen Bedingungen in die Analysatorschaltung passt.


Im Bild unten - die Pinbelegung der Elemente der Wetterstation.



Fusion und viele weitere Steuerungen, einschließlich ATMEGA328P, können mit dem Dienstprogramm SinaProg gelesen und bearbeitet werden. Wenn Sie dieses Programm zum ersten Mal kennenlernen, versuchen Sie trotz der intuitiven Benutzeroberfläche nicht, nach der Installation der Anwendung mit der Arbeit zu beginnen. Lesen Sie zuerst diesen Artikel, in dem HWman die erforderlichen SinaProg-Add-Ons bereitstellt, wenn Sie das Arduino UNO-Board als Bootloader verwenden.


Ich empfehle Ihnen, zuerst die Werkseinstellungen des Fusion ATMEGA328P zu lesen und deren Werte zu speichern, um im Fehlerfall zu ihnen zurückzukehren. In meinen Controllern sind die Werkseinstellungen für das Sicherungsbit: LOW: 0xFF, HIGH: 0xDE, EXTENDED: 0x05 (Vcc = 2,7 V, BODLEVEL = 101). Neue Sicherungen zur Überwachung des 1,8-V-Schwellenwerts, den Sie einstellen möchten: LOW: 0xFF, HIGH: 0xDE, EXTENDED: 0x06 (Vcc = 1,8 V, BODLEVEL = 110).


Die Analysatorskizze zum Laden in den ATMEGA328P befindet sich unter dem Spoiler.


Analysatorskizze
`` `cpp
/ *
Autonome Wetterstation auf dem ATMEGA328P-Controller und batteriebetrieben mit einem drahtlosen Fernbedienungssensor, Analysator
https://habr.com/de/post/470381/
* /

#include <SPI.h>
#include <LoRa.h>

#include <DHT.h>
#define DHTPIN 3 // Mit welchem ​​digitalen Pin wir verbunden sind
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht (DHTPIN, DHTTYPE);

float tin = 0;
int Hin = 0;
float BatteryInLevel; // Basisbatteriespannung
String LoRaData, Tout_str, BatteryInLevel_str, BatteryOutLevel_str;

// schlafen
#include <LowPower.h>
#define PowerDHT (4) // DHT22 Power Pin
unsigned int sleepCounter;

// Nokia 5110
#include <SPI.h>
#include <Adafruit_GFX.h> //https://esp8266.ru/forum/threads/esp8266-5110-nokia-lcd.1143/#post-16942
#include <Adafruit_PCD8544.h> //https://esp8266.ru/forum/threads/esp8266-5110-nokia-lcd.1143/#post-16942

// Timer
#include <SimpleTimer.h>
SimpleTimer Timer;

Adafruit_PCD8544 display = Adafruit_PCD8544 (5, 7, 6);

void sendSensor () {
digitalWrite (PowerDHT, 1);
Verzögerung (2000);
Hin = dht.readHumidity ();
Tin = dht.readTemperature ();

/ * if (isnan (Hin) || isnan (Tin)) {
// Serial.println ("Fehler beim Lesen vom DHT-Sensor!");
zurück
} * /

digitalWrite (PowerDHT, 0);

// Batteriespannungsmessung:
analogReference (INTERN);
int sensorValue = analogRead (A4);
BatteryInLevel = (sensorValue * 3.2 / 1024);
}}

void draw () {
display.clearDisplay ();
// Zinn
{
display.setTextSize (2);
display.setCursor (8, 0);
display.println (Tin, 1); // eine Dezimalstelle
display.setCursor (68, 0);
display.println ("C");
}}
// hin
{
display.setTextSize (2);
display.setCursor (8, 16);
display.println (String (Hin) + "%");
}}
// Tout
{
char chr_Tout [12];

Tout_str.toCharArray (chr_Tout, 5);
display.setTextSize (1);
display.setCursor (50, 16);
display.println (String (chr_Tout) + "C");
}}
// Batteriestand
{
char chr_BatteryOutLevel [12];

BatteryOutLevel_str.toCharArray (chr_BatteryOutLevel, 4);
display.setTextSize (1);
display.setCursor (2, 32);
display.println ("BAT Out:" + String (chr_BatteryOutLevel) + "V");
}}
// Batterie in Füllstand
{
display.setTextSize (1);
display.setCursor (2, 40);
display.println ("BAT In:„);
display.setCursor (56, 40);
display.println (BatteryInLevel, 1); // eine Dezimalstelle
display.setCursor (74, 40);
display.println ("V");
}}

display.display ();
/ *
Serial.println ("Tin:" + String (Tin) + "* C");
Serial.println ("Hin:" + String (Hin) + "%");
Serial.println ("Tout:" + String (Tout_str) + "* C");
Serial.println ("BAT_In:" + String (BatteryInLevel) + "V");
Serial.println ("BAT_Out:" + String (BatteryOutLevel_str) + "V");
Serial.println ("......");
* /
}}

void sleepDevice () {
// sleepCounter = 65 - 10 min
// sleepCounter = 91 - 14 min
für (sleepCounter = 91; sleepCounter> 0; sleepCounter--) // 91 !!!
{
LoRa.sleep ();
LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF);
}}
LoRa.sleep ();
}}

void SignalReception () {
// versuche das Paket zu analysieren
int packetSize = LoRa.parsePacket ();
if (packetSize) {
// Paket lesen
while (LoRa.available ()) {
LoRaData = LoRa.readString ();
// Serial.println ("Accepted:" + (LoRaData));
}}
int pos1 = LoRaData.indexOf ('#');
Tout_str = LoRaData.substring (0, pos1);
BatteryOutLevel_str = LoRaData.substring (pos1 + 1, LoRaData.length ());
}}
}}

void setup () {
//Serial.begin(9600);
PinMode (PowerDHT, OUTPUT);

// Anzeige initialisieren und löschen
display.begin ();
display.clearDisplay ();
display.display ();
display.setContrast (60); // Kontrast einstellen

display.clearDisplay ();
display.setTextSize (2);
display.setCursor (12, 16);
display.println (">>>>>"); // Anzeige des Arbeitsbeginns beim Einschalten
display.display ();

dht.begin ();
sendSensor ();
draw ();

while (! LoRa.begin (433E6)) {
//Serial.println (".");
Verzögerung (500);
}}
// Der Bereich für das Synchronisationswort liegt zwischen "0 - 0xFF".
LoRa.setSyncWord (0xF3);
//Serial.println (wonLoRa Initializing ");
timer.setInterval (20000, sendSensor);
timer.setInterval (5000, draw);
timer.setInterval (65000, sleepDevice);
}}

void loop () {
SignalReception ();
timer.run ();
}}
`` ``


Um mit den ATMEGA328P-Controllern zu arbeiten, verwende ich die Arduino UNO-Karte als Programmierer. Auf Youtube gibt es ein gutes Video über die Installation des Bootloaders und das Herunterladen von Skizzen auf den ATMEGA328-Controller mithilfe der Arduino UNO-Karte.


In der Skizze wurden die Befehle zur Ausgabe an den Serial Port Monitor (Serial) auskommentiert. Gegebenenfalls auskommentieren.


Der Zyklus beginnt mit dem Abhören der Sendung und dem Empfangen von Informationen durch den LoRa-Empfänger. Der Timer stellt die Hörzeit auf 65 Sekunden ein. Zu diesem Zeitpunkt werden die Informationen auf dem NOKIA-Display mit einem Zeitraum von 5 Sekunden aktualisiert. Mit einem Zeitraum von 20 Sekunden (3 Mal) misst der DHT22-Sensor Temperatur, Luftfeuchtigkeit und den Spannungspegel der Batterien über einen der Analogeingänge des Controllers. Die Versorgungsspannung zum DHT22 wird nur bei Messungen mit einer Mindestverzögerung von 2 Sekunden angelegt, bei denen der Sensor noch arbeitet. Der Ausgang des ADC in der Skizze wird auf die Spannung der neuen Batterien skaliert, die 3,2 V (1,6 V x 2) beträgt. Die Abhörzeit der Luft wurde etwas mehr als 1 Minute gewählt, um sicher ein Paket von einem Thermometer zu empfangen, das bei einer Übertragung mit einer Dauer von 1 Minute arbeitet, aber mehr dazu weiter unten. Dann werden in der 62. Sekunde die Steuerung und der Empfänger in den Ruhemodus versetzt, der ungefähr 14 Minuten dauert, d.h. Die Dauer des Arbeits- / Schlafzyklus des Analysators beträgt ca. 15 Minuten. Ich stelle fest, dass der Schlafmodus im Analysegerät eine erzwungene Maßnahme ist, mit der der Verbrauch erheblich gesenkt werden soll.


Zum Vergleich zeigt die folgende Tabelle die Eigenschaften des LaCrosse WS-9024IT-Thermohygrometers und des Analysators aus diesem Projekt.


ParameterLaCrosse WS-9024ITSadilTM
Ernährung2xAA, 3B, Durasell2xAA, 3V, GP Ultra +, 1800 mAh
Schlafkonsum350 μA (10 μA)
Schlafdauer14 min
Betriebsverbrauch<200 μA12-18 mA
Arbeitsdauerca. 1 min
Arbeits- / Schlafzyklusperiode15 min
Betriebszeitungefähr 2 Jahreetwa 2,5 Monate

Der aktuelle Verbrauch von LaCrosse tanzt sehr stark. In der Tabelle habe ich den gemessenen Spitzenwert angegeben, um die Reihenfolge des Verbrauchs anzuzeigen: nicht mehr als zweihundert Mikroampere.



Ich wollte die Tabelle mit den Ergebnissen ähnlicher Amateurentwicklungen ergänzen, fand aber nichts. Wahrscheinlich, weil die meisten Amateure Informationen von Sensoren an einen Computer, ein Tablet, ein Smartphone oder auf dem Weg zu einem der Dienste im Netzwerk ausgeben, bei denen das Problem der Einsparung der Akkulaufzeit einfach nicht besteht.


Der Hauptfaktor für den Schlaf des Analysators (350 μA) ist das LCD. Wenn Sie es ausschalten, sinkt der Verbrauch auf 10 μA. Der Spitzenverbrauch von 18 mA tritt auf, wenn der LoRa-Empfänger das Signal vom Sender empfängt, das Signal jedoch einige Mikrosekunden dauert. Diese Zeit ist sehr kurz im Vergleich zu der Minute, in der sich der Empfänger im Hörmodus befindet, und dem Verbrauch von 10 mA. Daher habe ich diesen kurzfristigen Spitzenwert bei der Berechnung der Betriebszeit für einen Batteriesatz nicht berücksichtigt.


Berechnung der Arbeitszeit.
Durchschnittliche Stromaufnahme: 10 mA / 15 + 0,35 mA = 1,0 mA, wobei 15 das Tastverhältnis ist. Betriebszeit: 1800 mA * Stunde / 1,0 mA = 1800 Stunden (2,5 Monate).
Ich werde klarstellen:
- Die Berechnung ist sehr ungefähr.
- Die Betriebszeiten von LaCrosse basieren auf meinen eigenen Erfahrungen. Ich habe dieses Gerät für eine lange Zeit gehabt.


Thermometer



Die Kapazität und Spannung von Batterien bei kaltem Wetter werden stark reduziert . Um die Batterien und das Gerät insgesamt keinen so starken Tests auszusetzen, habe ich nur den Temperatursensor DS18B20 außerhalb des Raums herausgenommen, und das Gerät und die Batterien befinden sich im Raum. Der DS18B20 wird über ein dünnes dreiadriges Kabel mit der Host-Karte verbunden. Ich habe diese Lösung in meiner seriellen Wetterstation entdeckt - die Entwickler sind sich sicher, dass es in der Wohnung immer eine Lücke zum Verlegen von Drähten mit einem Durchmesser von mehreren Millimetern geben wird.



Die Sicherungen für das Thermometer ATMEGA328P sind die gleichen wie für das Analysegerät.


Die Thermometerbaugruppe basiert ebenfalls auf dem ATMEGA328P-Controller. Es empfängt das Signal vom DS18B20-Sensor, misst die Versorgungsspannung und steuert den LoRa-Sender.



Die Thermometerskizze befindet sich unter dem Spoiler.


Thermometer-Skizze
/*     ATMEGA328P        ,  https://habr.com/ru/post/470381/ */ #include <OneWire.h> OneWire ds(7); //pin 13, Atmega328P #include <SPI.h> #include <LoRa.h> #include <LowPower.h> #define PowerDS18B20 (6) //pin 12 (Atmega328P), e DS18B20 unsigned int sleepCounter; // ,    float Tout; // int i; //         (20   1 ) String messageTout; // LoRa- float batteryLevel; //   const int batteryPin = A0; // pin 23 (Atmega328P),        void Measurement () { //  byte data[2]; digitalWrite(PowerDS18B20, 1); ds.reset(); ds.write(0xCC); //     (1 ) ds.write(0x44); //    delay(700); ds.reset(); ds.write(0xCC); ds.write(0xBE); //      data[0] = ds.read(); data[1] = ds.read(); Tout = ((data[1] << 8) | data[0]) * 0.0625; // Serial.println("Tout= "+ String(Tout)); digitalWrite(PowerDS18B20, 0); //   : analogReference(INTERNAL); int sensorValue = analogRead(A0); batteryLevel = (sensorValue * 3.2 / 1024); // Serial.println("BAT= "+ String(batteryLevel)); } void SetSynchLoRa () { int counter = 0; while (!LoRa.begin(433E6) && counter < 10) { // Serial.print("."); counter++; delay(500); } LoRa.setTxPower(4); //  2-20  /* if (counter == 10) { // Serial.println("Failed to initialize ..."); }*/ LoRa.setSyncWord(0xF3); } void SendMessage () { //   (,  ) messageTout = String(Tout) + "#" + String(batteryLevel); // Serial.println(messageTout); delay(250); LoRa.beginPacket(); LoRa.print(messageTout); LoRa.endPacket(); } void setup() { //Serial.begin(9600); // Serial.println("Initializing ..."); pinMode(PowerDS18B20, OUTPUT); SetSynchLoRa (); } void loop() { //Serial.println(""); //Serial.println("i = " + String(i)); if (i >= 30) { // i >= 30 (1 ) —   (,  — 1 /1 ) for (sleepCounter = 5; sleepCounter > 0; sleepCounter--) { LoRa.sleep (); LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); } Measurement (); SendMessage (); LoRa.sleep (); } else { //   1 ,  — 1 /2  Measurement (); SendMessage (); delay (1000); } i++; if (i >= 30) i = 30; //    } 

Ein Paar LoRa-Sender-Empfänger bietet eine stabile Kommunikation in einer Entfernung von 1,5 km mit direkter Sicht und bis zu 300 m in städtischen Gebieten, natürlich bei maximaler oder nahezu maximaler Sendeleistung: 17-20 dB. Für eine stabile Verbindung innerhalb der Wohnung reichten 4 dB aus.


Wenn die Stromversorgung angeschlossen ist, arbeitet das Thermometer zunächst eine Minute lang im Intensivmodus. Es misst die Temperatur und Spannung der Batterien und sendet ihre Werte alle 2 Sekunden in die Luft. Dies dient der Bequemlichkeit. Angenommen, Sie müssen keine Minute warten, wenn Sie Batterien austauschen oder Fehler beheben. Informationen vom Sensor werden in den ersten Sekunden nach dem Anschließen der Batterien des Thermometers und des Analysators auf dem Analysator-Display angezeigt. Natürlich sollten Sie sich beeilen und zwischen dem Anschließen der Batterien an beiden Knoten keine Zeitspanne von mehr als einer Minute einlegen.


Dann geht der Fernbedienungssensor in den normalen Modus. Nach dem Messen und Senden von Informationen, die etwas länger als die erste Sekunde dauern, werden die Steuerung und der Sender für ca. 1 Minute in den Software-Ruhemodus versetzt.


Berechnung der Arbeitszeit.
Durchschnittliche Stromaufnahme: 14 mA / 60 + 0,005 mA = 0,24 mA, wobei 60 das Tastverhältnis ist. Betriebszeit: 1800 mA * Stunde / 0,24 mA = 7500 Stunden (10 Monate).
Bisherige Klarstellungen zur Genauigkeit der berechneten Betriebszeit eines einzelnen Batteriesatzes bleiben gültig.


Und eine Vergleichstabelle. Es enthält die Ergebnisse einiger ähnlicher Projekte aus dem Internet.


ParameterLaCrosse WS-9024ITManiacbugavs24rusSadilTM
Ernährung2xAAA, 3B, Durasell3 V, CR2450 Renata, 540 mAh3 V, CR2450, 550-610 mAh2xAA, 3V, GP Ultra +, 1800 mAh
Schlafkonsum0,14 mA (& agr;)14 μA5 μA
Schlafdauer1 min
Betriebsverbrauch<700 μA13,57 mA16 - 18 mA14 mA
Arbeitsdauer0,027 Sek1 Sek
Arbeits- / Schlafzyklusperiode1 min10 min1 min
Betriebszeitungefähr 2 Jahremehr als 0,5 Jahreetwa 10 Monate

Wenn die Knoten fehlerfrei zusammengesetzt sind, sehen wir auf dem Display das folgende Bild:



Aus den Vergleichstabellen ist ersichtlich, dass der Spitzenverbrauch von Amateurgeräten um eine Größenordnung höher ist als bei den analogen Funktionen des industriellen LaCrosse. Zum Beispiel 14 mA gegenüber 700 μA für den Fernsensor und 10 ... 18 mA gegenüber 200 μA für den Analysator. Ein derart auffälliger Unterschied im Maximalverbrauch erklärt sich meiner Meinung nach dadurch, dass die Steuerungen in Amateurschaltungen mit der Arduino IDE-Plattform, schweren Funktionen und Bibliotheken sowie in Industrieprodukten programmiert werden - höchstwahrscheinlich in einer der Low-Level-Sprachen oder beispielsweise in C. ++ (übrigens die Basissprache von Arduino) oder C (C). Wenn Sie diese Sprachen verwenden, können Sie sicher einen Verbrauch erzielen, der mit Industriedesigns vergleichbar ist. Dies wurde jedoch von HWman in seiner Veröffentlichung „ Warum viele Arduino nicht mögen “ sehr überzeugend experimentell gezeigt. Das Ausführen der einfachsten Skizze von bis zu einem Dutzend Zeilen (Blink), die in der Arduino IDE in einem Fall und in einem anderen ausgeführt wird - „einfaches C“, wie der Autor im Video sagt, führt zu einem 26-fachen Leistungsverlust. Kurz gesagt, ein erhöhter Ressourcenverbrauch ist eine Gebühr für Komfort und ein geringer Aufwand seitens des Programmierers - der Rest wird von den „gefräßigen“ Funktionen der Entwicklungsumgebung für ihn in Arduino erledigt. Ich gehe davon aus, dass Sie zumindest die Grundlagen von C / C ++, dessen Funktionen von der Arduino IDE kompiliert werden, belasten und beherrschen müssen.


Schlussfolgerungen


• Zusammengebaute Analysatoren und Thermometer verbrauchen im Vergleich zu Industriedesigns zu viel Strom.


• Ein Drittel bietet sich für die beiden Batterien in den Stromkreisen an, dann werden die folgenden Probleme automatisch gelöst: Die Sicherung muss nicht neu installiert werden, die Steuerung arbeitet mit einer Frequenz von 16 MHz, die Sensoren DHT22, DS18B20 sind weit von der unteren Schwelle ihrer Versorgungsspannung entfernt. Letzteres ist wichtig, da die Versorgungsspannung nicht direkt an die Sensoren geliefert wird, sondern programmgesteuert über den Schlüssel vom Pin des Controllers, auf den sie um etwa 1 V abfällt.


• Durch die Verwendung von LoRa-Funkmodulen mit einer programmierbaren Sendeleistung von 4 dB konnte eine stabile Verbindung innerhalb der Wohnung mit der Stromversorgung der Module aus zwei AA-Batterien hergestellt werden.


Verwandte Links


Niedrigenergie-Funksensor
Drahtloser Beleuchtungssensor CR2450
Drahtloser Temperatur-, Feuchtigkeits- und Atmosphärendrucksensor am nRF52832
Drahtloses Thermometer
Verwandeln Sie Arduino in einen vollwertigen AVRISP-Programmierer
Lora und schlaf
Erfahren Sie mehr über die ATmega328P-Konfigurationsbits und deren Verwendung mit einem externen Quarzkristall
AVR Fusion Rechner
Warum viele Leute Arduino nicht mögen
Grand Batterietest
Batterien in der Kälte

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


All Articles