Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

AWS - Arduino-weerstation

Componenten en benodigdheden

Arduino UNO
× 1
USB-A naar micro-USB-kabel
× 1
Broodplank (algemeen)
× 1
Jumperdraden (algemeen)
× 1
Plexiglas 4 mm
× 1
Weerstand 221 ohm
× 1
Adafruit Standaard LCD - 16x2 Wit op Blauw
× 1
Maxim Integrated DS1307 64 x 8, serieel, I²C realtime Klok
× 1
Fotoweerstand
× 1
DHT11 temperatuur- en vochtigheidssensor (4 pinnen)
× 1
Temperatuursensor
× 1
IR-ontvanger (algemeen)
× 1
Waterniveausensor
× 1
Sunfounder RFID-startset
× 1

Benodigde gereedschappen en machines

Lasersnijder (algemeen)

Over dit project

AWS, Arduino Weather Station, levert dag en nacht nauwkeurige gegevens voor het milieu. Het is met name gebaseerd op een Arduino-microcontrollerbord en het ondersteunt een hele reeks sensoren voor de analyse van de omgeving.

Het doel

Het doel van deze controle is om een ​​reeks gegevens te detecteren via de hierboven beschreven sensoren en deze via een LCD-scherm met de gebruiker te communiceren. De kleine omvang van het project "hardware" maakt het mogelijk om het te sluiten in een kleine doos gemaakt met de lasercut machine.

Gebruikte sensoren

Water- en sneeuwniveausensor

De waterniveau-indicator wordt gebruikt om het waterniveau in de bovenliggende tank aan te geven, door dit te gebruiken kunnen we het overlopen van water voorkomen en kunnen we op elk moment het waterniveau in de tank weten.

DHT11 Vochtigheids- en temperatuursensor

DHT11 digitale temperatuur- en vochtigheidssensor is een gekalibreerde digitale signaaluitgangstemperatuur en vochtigheid gecombineerde sensor, die toepassingsspecifieke modules technologie en digitale temperatuur- en vochtigheidssensortechnologie vastleggen om producten met een hoge betrouwbaarheid en uitstekende stabiliteit op lange termijn te garanderen. Het product heeft een uitstekende kwaliteit, snelle respons, anti-interferentievermogen, lage kosten en andere voordelen.

Fotoweerstand

Fotoweerstanden, ook wel lichtafhankelijke weerstanden (LDR) genoemd, zijn lichtgevoelige apparaten die het meest worden gebruikt om de aan- of afwezigheid van licht aan te geven of om de lichtintensiteit te meten. In het donker is hun weerstand erg hoog, maar wanneer de LDR-sensor wordt blootgesteld aan licht, daalt de weerstand dramatisch, zelfs tot enkele ohms, afhankelijk van de lichtintensiteit.

LCD I2C 1602-scherm

LCD1602 met een I2C-bus is een soort seriële bus. Het is een hoogwaardige seriële bus met een busregel en een hoge of lage snelheidsapparaatsynchronisatiefunctie die vereist is door een systeem met meerdere hosts. De blauwe potentiometer op de I2C LCD1602 wordt alleen voor de achtergrondverlichting gebruikt.

I2C gebruikt slechts twee bidirectionele open-drain-lijnen, Serial DataLine (SDA) en Serial Clock Line (SCL), opgetrokken met weerstanden. Typische gebruikte spanningen zijn +5 V of +3,3 V, hoewel systemen met andere spanningen zijn toegestaan.

DS1302 Realtimeklokmodule

Het is gebaseerd op de geïntegreerde DS1302 met daarin een real-time klok/kalender en 31 bytes statisch RAM. U kunt het tijdformaat zien als uu/mm/ss, terwijl het datumformaat jjjj/mm/dd is.

LM35 Temperatuursensor

De LM35 Precisie Temperatuursensor is een sensor die de temperatuur zeer nauwkeurig detecteert. De Analoog naar Digitaal Converter (ADC) zet analoge waarden om in een digitale benadering op basis van de formule ADCValue =sample * 1024 / reference voltage (+5v). Dus met een referentie van +5 volt is de digitale benadering =ingangsspanning * 205.

Infraroodontvanger en afstandsbediening

Deze twee componenten werken samen:de ir-ontvanger maakt de ontvangst van gegevens van de afstandsbediening mogelijk. De gegevens zijn afhankelijk van de knop die u wilt indrukken. De volgende knoppen zijn gekozen om ze toe te wijzen aan specifieke functies:

  • 0-knop:u kunt de tijd en datum op het LCD-scherm zien.
  • 1 knop:u kunt temperatuurgegevens van de LM35 en vochtigheidsgegevens van DHT11 op het LCD-scherm zien.
  • 2-knop:u kunt het percentage duisternis op het LCD-scherm zien.
  • 3 Knop:u kunt de waarde van het vloeistofniveau (mm) op het LCD-scherm zien.
  • Knop "Cyclus":u kunt alle schermen in een tijdsinterval van 4 seconden van elkaar zien.

DE AWS

Stap 1:Constructie van de doos

Na overweging van de projectomvang zijn we overgegaan tot de constructie van de plexiglas box. De afmetingen van de vlakken met hun relatieve in elkaar grijpende zittingen en gaten voor de uitgang van de sensordraden zijn ontworpen met Autocad-software, daarna hebben we de vlakken gesneden met de lasersnijmachine. En tot slot hebben we alles in elkaar gezet met wat krachtige lijm.

Stap 2:Schematische en hardwareverbindingen

Hier is de afbeelding van het schema voor het Arduino-weerstation. Het heeft gedaan met fritzing-software. Verbindingen zijn vrij eenvoudig.

Stap 3:Arduino programmeren

We hebben de code op Arduino IDE gedaan, alle bibliotheken gebruikt die we nodig hadden en het zo geprogrammeerd dat ons weerstation werkt zoals we wilden.

Stap 4:Hoe het werkt

AWS (Arduino-weerstation ) is een weerstation dat wat gegevens uit de omgeving oppikt en deze mogelijk laat zien met behulp van een infrarood afstandsbediening. Om ze met de gebruikers te communiceren, heeft het een LCD-scherm met vijf verschillende schermen die door de gebruiker kunnen worden verwisseld.

Dit zijn de schermen:

1. Startscherm: het is het eerste scherm dat de gebruiker kan zien als we het bord aanzetten. Het presenteert het project met de woorden "Arduino Weather Station", die een bijzonder vervagend effect hebben. Je kunt dit scherm ook zien nadat je AWS hebt gevraagd om bepaalde gegevens te zien.

2. Datum- en tijdscherm: het is het eerste scherm waartoe de gebruiker toegang heeft, door gewoon op de 0-knop op de afstandsbediening te drukken. Als u hierop drukt, heeft het scherm een ​​vertraging van 10 seconden en keert het vervolgens terug naar het startscherm.

3. Vochtigheids- en temperatuurscherm: het is het scherm dat de gegevens geeft die door de DHT11- en LM35-sensoren worden ontvangen over respectievelijk vochtigheid en temperatuur. Het is verbonden met de 1-knop op de afstandsbediening en wanneer erop wordt gedrukt, heeft het scherm een ​​vertraging van 10 seconden en keert vervolgens terug naar het startscherm.

4. Donker scherm: het is het scherm dat de door de LDR ontvangen gegevens geeft over de hoeveelheid licht op de sensor. Het toont het percentage duisternis op de sensor. Het is verbonden met de 2-knop op de afstandsbediening en wanneer erop wordt gedrukt, heeft het scherm een ​​vertraging van 10 seconden en keert vervolgens terug naar het startscherm.

5. Vloeistofniveau-scherm: dit scherm geeft de hoogte van een hoeveelheid vloeistof in een recept. Het is verbonden met de 3-knop op de afstandsbediening en wanneer erop wordt gedrukt, heeft het scherm een ​​vertraging van 10 seconden en keert vervolgens terug naar het startscherm.

De laatste vier schermen kunnen achter elkaar worden bekeken met een tijdsinterval van 4 seconden van elkaar, door op de Cyclus-knop te drukken op de afstandsbediening. Met deze modus wordt slechts één ronde van de informatie uitgevoerd.

Voorzorgsmaatregelen

Het eerste feit dat in overweging moet worden genomen voor de goede levensduur van dit project is om elk contact van vloeistoffen of andere schadelijke stoffen met het bord en met het station in het algemeen te vermijden.

Na een neerslag is het noodzakelijk om het waterreservoir te legen, de sensor te controleren en schoon te maken.

De oplaadbare batterij heeft een levensduur van ongeveer twee dagen, dus het is noodzakelijk om hem op te laden (ongeveer 2 uur) als hij gaat ontladen.

Waarschijnlijk werkt de infraroodsensor soms niet zo goed als we willen, dus de functie kan worden onderbroken bij lage temperaturen (ongeveer 0 graden). Het vormt geen enkel probleem, in feite is het noodzakelijk om gewoon de doos te openen en op de resetknop te drukken:AWS zal weer normaal werken.

Als we op de resetknop drukken, verandert de RTC DS1302-module zijn waarde over datum en tijd niet, dankzij de ondersteuningsbatterij in de module die ongeveer 10 jaar meegaat.

Als de AWS-stroom uitvalt, veranderen de datum en tijd. Om het probleem op te lossen, is het noodzakelijk om ze opnieuw in te stellen op het punt dat op de lijst wordt aangegeven volgens uw voorkeuren. Eenmaal geladen, moet u de instellingen voor het programma verbergen, zoals hieronder aangegeven.

Before:Time t(2017, 12, 03, 10, 15, 00, 1);rtc.time(t);After://Time t(2017, 12, 03, 10, 15, 00, 1)//;rtc.time(t); 

Code

//include sketch libraries#include #include  //clock library#include  //clock library#include  //clock library#include  //dht11 library#include  //LCD library#include  //Wire for LCD library#define lmPin A1 //LM35 hechten aan A1LiquidCrystal_I2C lcd(0x27, 16, 2); // stel het LCD-adres in op 0x27 voor een 16-tekens en 2-regelige displaydht DHT; // maak een variabel type dhtconst int DHT11_PIN =4; // bevestig dht11 aan pin 4const int waterSensor =0; //set watersensor variabelint waterValue =0; //variabele voor watersensorint mmwaterValue =0;int sensorPin =A3; // selecteer de invoerpin voor de potentiometerint luce =0; //variabele voor de ldrint pluce =0; //variabele voor de ldrfloat tem =0; //variabele voor de temperatuurlange lmVal =0; //variabele voor de LM35//irconst int irReceiverPin =3;IRrecv irrecv(irReceiverPin); //Maakt een variabele van het type IRrecvdecode_results resultaten;//definieer klokvariabeleuint8_t RST_PIN =5; // RST-pin bevestig touint8_t SDA_PIN =6; //IO-pin hecht touint8_t SCL_PIN =7; //clk Pin hechten aan/* Maak buffers */char buf[50];char day[10];/* Maak een DS1302-object */DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);//maak een variabel type DS1302void print_time(){ /* Haal de huidige tijd en datum uit de chip */ Time t =rtc.time(); /* Noem de dag van de week */ memset(day, 0, sizeof(day)); switch (t.day) { case 1:strcpy(day, "Sun"); pauze; geval 2:strcpy(dag, "ma"); pauze; geval 3:strcpy(dag, "di"); pauze; geval 4:strcpy(dag, "wo"); pauze; geval 5:strcpy(dag, "do"); pauze; geval 6:strcpy(dag, "vrij"); pauze; geval 7:strcpy(dag, "za"); pauze; } /* Formatteer de tijd en datum en plaats deze in de tijdelijke buffer */ snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t. jr, t.mon, t.datum, t.hr, t.min, t.sec); /* Druk de geformatteerde string af naar serieel zodat we de tijd kunnen zien */ Serial.println(buf); lcd.setCursor(2, 0); lcd.print(t.jr); lcd.print("-"); lcd.print(t.mon/10); lcd.print(t.mon % 10); lcd.print("-"); lcd.print(t.datum/10); lcd.print(t.datum % 10); lcd.print(" "); lcd.print(dag); lcd.setCursor(4, 1); lcd.print(t.hr); lcd.print(":"); lcd.print(t.min / 10); lcd.print(t.min % 10); lcd.print(":"); lcd.print(t.sec/10); lcd.print(t.sec % 10);}void setup() { //clock Serial.begin(9600); rtc.write_protect(false); rtc.halt(false); //ir irrecv.enableIRIn(); //inschakelen ir ontvanger module lcd.init(); // initialiseer de lcd lcd.backlight(); // open de achtergrondverlichting pinMode (sensorPin, INPUT); Tijd t(2017, 12, 03, 10, 15, 00, 1);//initialiseer de tijd /* Stel de tijd en datum in op de chip */ rtc.time(t);}void loop() { lcd. setCursor(0, 0); lcd.print("A"); vertraging (50); lcd.setCursor(1, 0); lcd.print("r"); vertraging (50); lcd.setCursor(2, 0); lcd.print("d"); vertraging (50); lcd.setCursor (3, 0); lcd.print("u"); vertraging (50); lcd.setCursor(4, 0); lcd.print("i"); vertraging (50); lcd.setCursor (5, 0); lcd.print("n"); vertraging (50); lcd.setCursor(6, 0); lcd.print("o"); vertraging (50); lcd.setCursor(8, 0); lcd.print("W"); vertraging (50); lcd.setCursor(9, 0); lcd.print("e"); vertraging (50); lcd.setCursor(10, 0); lcd.print("a"); vertraging (50); lcd.setCursor(11, 0); lcd.print("t"); vertraging (50); lcd.setCursor (12, 0); lcd.print("h"); vertraging (50); lcd.setCursor(13, 0); lcd.print("e"); vertraging (50); lcd.setCursor(14, 0); lcd.print("r"); vertraging (50); lcd.setCursor(4, 1); lcd.print("S"); vertraging (50); lcd.setCursor (5, 1); lcd.print("t"); vertraging (50); lcd.setCursor(6, 1); lcd.print("a"); vertraging (50); lcd.setCursor(7, 1); lcd.print("t"); vertraging (50); lcd.setCursor(8, 1); lcd.print("i"); vertraging (50); lcd.setCursor(9, 1); lcd.print("o"); vertraging (50); lcd.setCursor(10, 1); lcd.print("n"); delay(50);if (irrecv.decode(&results)) //if de ir ontvanger module ontvanger data {if (results.value ==0xFF6897) //if "0" wordt gedrukt print TIME{ lcd.clear(); // wis de LCD print_time(); vertraging (10000); //vertraging 10000ms lcd.clear(); // wis de LCD-vertraging (200); //wacht even irrecv.resume(); // Ontvang de volgende waarde} als (results.value ==0xFF30CF) // als "1" wordt ingedrukt print TEMPERATURE and VOCHTIGHEID { lcd.clear (); // wis de LCD // LEES DATA van de DHT int chk =DHT.read11 (DHT11_PIN); // GEGEVENS WEERGEVEN lcd.setCursor (0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//lees de waarde van A1 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//print de eenheid" ? " lcd.print("C "); // Serieel.println ("C"); lcd.setCursor(0, 1); lcd.print("Hum:"); //Serial.print("Hum:"); lcd.print(DHT.vochtigheid, 1); // druk de vochtigheid af op lcd //Serial.print(DHT.humidity,1); lcd.print(" % "); //Serial.println ("%"); vertraging (10000); // wacht 3000 ms lcd.clear (); // wis de LCD-vertraging (200); //wacht even irrecv.resume(); // Ontvang de volgende waarde} als (results.value ==0xFF18E7) ​​// als "2" wordt ingedrukt, print de DONKERHEID { lcd.clear(); // wis het LCD lcd.setCursor (4, 0); // plaats de cursor op 4 kolommen, 1 rij lcd.print ("Darkness:"); luce =analoog lezen (sensorPin); // lees de ldr pluce =map (luce, 0, 1023, 0, 100); //de waarde van de sensor wordt omgezet in waarden van 0 tot 100 lcd.setCursor(6, 1); // plaats de cursor in het midden van het LCD lcd.print (pluk); // print de procentuele lcd.print ("%"); // druk de symboolvertraging (10000) af; //vertraging 10000 ms lcd.clear(); // wis de LCD-vertraging (200); //wacht even irrecv.resume(); // Ontvang de volgende waarde} als (results.value ==0xFF7A85) // als "3" wordt ingedrukt, druk het SNEEUW- of WATERNIVEAU af { lcd.clear(); // wis het LCD lcd.setCursor (0, 0); // plaats de cursor op 0 kolom, 1 rij lcd.print ("Vloeistofniveau (mm):"); // print "Vloeistofniveau (mm):" int waterValue =analogRead (waterSensor); // haal de waarde van de watersensor lcd.setCursor (6, 1); // plaats de cursor op 6 kolommen, 2 rijen mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterwaarde); // waarde weergegeven op lcd-vertraging (10000); //vertraging 10000ms lcd.clear(); // wis de LCD-vertraging (200); irrev.resume(); // Ontvang de volgende waarde} als (results.value ==0xFF9867) // als op "PRESENTATION" wordt gedrukt TIME, TEM en HUM, DARKNESS en S of W LEVEL één keer { lcd.clear(); // wis de LCD print_time(); vertraging (4000); //vertraging 10000ms lcd.clear(); // wis de LCD-vertraging (200); //wacht even //LEES DATA van de DHT int chk =DHT.read11(DHT11_PIN); // GEGEVENS WEERGEVEN lcd.setCursor (0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//lees de waarde van A0 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//print de eenheid" ? " lcd.print("C "); // Serieel.println ("C"); lcd.setCursor(0, 1); lcd.print("Hum:"); //Serial.print("Hum:"); lcd.print(DHT.vochtigheid, 1); // druk de vochtigheid af op lcd //Serial.print(DHT.humidity,1); lcd.print(" % "); //Serial.println ("%"); vertraging (4000); // wacht 3000 ms lcd.clear (); // wis de LCD-vertraging (200); //wacht even lcd.setCursor(4, 0); // plaats de cursor op 4 kolommen, 1 rij lcd.print ("Darkness:"); luce =analoog lezen (sensorPin); // lees de ldr pluce =map (luce, 0, 1023, 0, 100); //de waarde van de sensor wordt omgezet in waarden van 0 tot 100 lcd.setCursor(6, 1); // plaats de cursor in het midden van het LCD lcd.print (pluk); // print de procentuele lcd.print ("%"); // print de symboolvertraging (4000); //vertraging 10000 ms lcd.clear(); // wis de LCD-vertraging (200); // wacht even lcd.setCursor (0, 0); // plaats de cursor op 0 kolom, 1 rij lcd.print ("Vloeistofniveau (mm):"); // print "Vloeistofniveau (mm):" int waterValue =analogRead (waterSensor); // haal de waarde van de watersensor lcd.setCursor (6, 1); // plaats de cursor op 6 kolommen, 2 rijen mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterwaarde); // waarde weergegeven op lcd-vertraging (4000); //vertraging 10000ms lcd.clear(); // wis de LCD-vertraging (200); irrev.resume(); // Ontvang de volgende waarde}}}  

In plaats van de letter "Arduino Weather Station" per letter te schrijven, is het ook mogelijk om deze te schrijven met de "switch/case"-modus.

CONCLUSIES

We hebben een weerstation gemaakt met Arduino dat rekening houdt met de huidige datum en tijd en wat omgevingsgegevens oppikt om ze af te drukken op een LCD-scherm dat wordt bestuurd door een infraroodafstandsbediening.

Code

  • AWS-code.ino
AWS code.inoC/C++
//include sketch libraries#include #include  //clock library#include  //clock library#include  //clock library#include  //dht11 library#include  //LCD library#include  //Wire for LCD library#define lmPin A1 //LM35 attach to A1LiquidCrystal_I2C lcd(0x27, 16, 2 ); // stel het LCD-adres in op 0x27 voor een 16-tekens en 2-regelige displaydht DHT; // maak een variabel type dhtconst int DHT11_PIN =4; // bevestig dht11 aan pin 4const int waterSensor =0; //set watersensor variabelint waterValue =0; //variabele voor watersensorint mmwaterValue =0;int sensorPin =A3; // selecteer de invoerpin voor de potentiometerint luce =0; //variabele voor de ldrint pluce =0; //variabele voor de ldrfloat tem =0; //variabele voor de temperatuurlange lmVal =0; //variabele voor de LM35//irconst int irReceiverPin =3;IRrecv irrecv(irReceiverPin); //Maakt een variabele van het type IRrecvdecode_results resultaten;//definieer klokvariabeleuint8_t RST_PIN =5; // RST-pin bevestig touint8_t SDA_PIN =6; //IO-pin hecht touint8_t SCL_PIN =7; //clk Pin hechten aan/* Maak buffers */char buf[50];char day[10];/* Maak een DS1302-object */DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);//maak een variabel type DS1302void print_time(){ /* Haal de huidige tijd en datum uit de chip */ Time t =rtc.time(); /* Noem de dag van de week */ memset(day, 0, sizeof(day)); switch (t.day) { case 1:strcpy(day, "Sun"); pauze; geval 2:strcpy(dag, "ma"); pauze; geval 3:strcpy(dag, "di"); pauze; geval 4:strcpy(dag, "wo"); pauze; geval 5:strcpy(dag, "do"); pauze; geval 6:strcpy(dag, "vrij"); pauze; geval 7:strcpy(dag, "za"); pauze; } /* Formatteer de tijd en datum en plaats deze in de tijdelijke buffer */ snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t. jr, t.mon, t.datum, t.hr, t.min, t.sec); /* Druk de geformatteerde string af naar serieel zodat we de tijd kunnen zien */ Serial.println(buf); lcd.setCursor(2, 0); lcd.print(t.jr); lcd.print("-"); lcd.print(t.mon/10); lcd.print(t.mon % 10); lcd.print("-"); lcd.print(t.datum/10); lcd.print(t.datum % 10); lcd.print(" "); lcd.print(dag); lcd.setCursor(4, 1); lcd.print(t.hr); lcd.print(":"); lcd.print(t.min / 10); lcd.print(t.min % 10); lcd.print(":"); lcd.print(t.sec/10); lcd.print(t.sec % 10);}void setup() { //clock Serial.begin(9600); rtc.write_protect(false); rtc.halt(false); //ir irrecv.enableIRIn(); //inschakelen ir ontvanger module lcd.init(); // initialiseer de lcd lcd.backlight(); // open de achtergrondverlichting pinMode (sensorPin, INPUT); Tijd t(2017, 12, 9, 11, 20, 00, 7);//initialiseer de tijd /* Stel de tijd en datum in op de chip */ rtc.time(t);}void loop() { lcd. setCursor(0, 0); lcd.print("A"); vertraging (50); lcd.setCursor(1, 0); lcd.print("r"); vertraging (50); lcd.setCursor(2, 0); lcd.print("d"); vertraging (50); lcd.setCursor (3, 0); lcd.print("u"); vertraging (50); lcd.setCursor(4, 0); lcd.print("i"); vertraging (50); lcd.setCursor (5, 0); lcd.print("n"); vertraging (50); lcd.setCursor(6, 0); lcd.print("o"); vertraging (50); lcd.setCursor(8, 0); lcd.print("W"); vertraging (50); lcd.setCursor(9, 0); lcd.print("e"); vertraging (50); lcd.setCursor(10, 0); lcd.print("a"); vertraging (50); lcd.setCursor(11, 0); lcd.print("t"); vertraging (50); lcd.setCursor (12, 0); lcd.print("h"); vertraging (50); lcd.setCursor(13, 0); lcd.print("e"); vertraging (50); lcd.setCursor(14, 0); lcd.print("r"); vertraging (50); lcd.setCursor(4, 1); lcd.print("S"); vertraging (50); lcd.setCursor (5, 1); lcd.print("t"); vertraging (50); lcd.setCursor(6, 1); lcd.print("a"); vertraging (50); lcd.setCursor(7, 1); lcd.print("t"); vertraging (50); lcd.setCursor(8, 1); lcd.print("i"); vertraging (50); lcd.setCursor(9, 1); lcd.print("o"); vertraging (50); lcd.setCursor(10, 1); lcd.print("n"); delay(50);if (irrecv.decode(&results)) //if de ir ontvanger module ontvanger data {if (results.value ==0xFF6897) //if "0" wordt gedrukt print TIME{ lcd.clear(); // wis de LCD print_time(); vertraging (10000); //vertraging 10000ms lcd.clear(); // wis de LCD-vertraging (200); //wacht even irrecv.resume(); // Ontvang de volgende waarde} als (results.value ==0xFF30CF) // als "1" wordt ingedrukt print TEMPERATURE and VOCHTIGHEID { lcd.clear (); // wis de LCD // LEES DATA van de DHT int chk =DHT.read11 (DHT11_PIN); // GEGEVENS WEERGEVEN lcd.setCursor (0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//lees de waarde van A1 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//print de eenheid" " lcd.print("C "); // Serieel.println ("C"); lcd.setCursor(0, 1); lcd.print("Hum:"); //Serial.print("Hum:"); lcd.print(DHT.vochtigheid, 1); // druk de vochtigheid af op lcd //Serial.print(DHT.humidity,1); lcd.print(" % "); //Serial.println ("%"); vertraging (10000); // wacht 3000 ms lcd.clear (); // wis de LCD-vertraging (200); //wacht even irrecv.resume(); // Ontvang de volgende waarde} als (results.value ==0xFF18E7) ​​// als "2" wordt ingedrukt, print de DONKERHEID { lcd.clear(); // wis het LCD lcd.setCursor (4, 0); // plaats de cursor op 4 kolommen, 1 rij lcd.print ("Darkness:"); luce =analoog lezen (sensorPin); // lees de ldr pluce =map (luce, 0, 1023, 0, 100); //de waarde van de sensor wordt omgezet in waarden van 0 tot 100 lcd.setCursor(6, 1); // plaats de cursor in het midden van het LCD lcd.print (pluk); // print de procentuele lcd.print ("%"); // druk de symboolvertraging (10000) af; //vertraging 10000 ms lcd.clear(); // wis de LCD-vertraging (200); //wacht even irrecv.resume(); // Ontvang de volgende waarde} als (results.value ==0xFF7A85) // als "3" wordt ingedrukt, druk het SNEEUW- of WATERNIVEAU af { lcd.clear(); // wis het LCD lcd.setCursor (0, 0); // plaats de cursor op 0 kolom, 1 rij lcd.print ("Vloeistofniveau (mm):"); // print "Vloeistofniveau (mm):" int waterValue =analogRead (waterSensor); // haal de waarde van de watersensor lcd.setCursor (6, 1); // plaats de cursor op 6 kolommen, 2 rijen mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterwaarde); // waarde weergegeven op lcd-vertraging (10000); //vertraging 10000ms lcd.clear(); // wis de LCD-vertraging (200); irrev.resume(); // Ontvang de volgende waarde} als (results.value ==0xFF9867) // als op "PRESENTATION" wordt gedrukt TIME, TEM en HUM, DARKNESS en S of W LEVEL één keer { lcd.clear(); // wis de LCD print_time(); vertraging (4000); //vertraging 10000ms lcd.clear(); // wis de LCD-vertraging (200); //wacht even //LEES DATA van de DHT int chk =DHT.read11(DHT11_PIN); // GEGEVENS WEERGEVEN lcd.setCursor (0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//lees de waarde van A0 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//print de eenheid" " lcd.print("C "); // Serieel.println ("C"); lcd.setCursor(0, 1); lcd.print("Hum:"); //Serial.print("Hum:"); lcd.print(DHT.vochtigheid, 1); // druk de vochtigheid af op lcd //Serial.print(DHT.humidity,1); lcd.print(" % "); //Serial.println ("%"); vertraging (4000); // wacht 3000 ms lcd.clear (); // wis de LCD-vertraging (200); //wacht even lcd.setCursor(4, 0); // plaats de cursor op 4 kolommen, 1 rij lcd.print ("Darkness:"); luce =analoog lezen (sensorPin); // lees de ldr pluce =map (luce, 0, 1023, 0, 100); //de waarde van de sensor wordt omgezet in waarden van 0 tot 100 lcd.setCursor(6, 1); // plaats de cursor in het midden van het LCD lcd.print (pluk); // print de procentuele lcd.print ("%"); // print de symboolvertraging (4000); //vertraging 10000 ms lcd.clear(); // wis de LCD-vertraging (200); // wacht even lcd.setCursor (0, 0); // plaats de cursor op 0 kolom, 1 rij lcd.print ("Vloeistofniveau (mm):"); // print "Vloeistofniveau (mm):" int waterValue =analogRead (waterSensor); // haal de waarde van de watersensor lcd.setCursor (6, 1); // plaats de cursor op 6 kolommen, 2 rijen mmwaterValue =map (waterValue, 0, 1023, 0, 40); lcd.print (mmwaterwaarde); // waarde weergegeven op lcd-vertraging (4000); //vertraging 10000ms lcd.clear(); // wis de LCD-vertraging (200); irrev.resume(); // Ontvang de volgende waarde}}}

Aangepaste onderdelen en behuizingen

box_a5et5f4U9F.dwg

Schema's

aws_DMDwb4iUZp.fzz

Productieproces

  1. Weerstation V 2.0
  2. TinyML-taaldetector-gebaseerd op Edge Impulse &Arduino
  3. Arduino-gyroscoopspel met MPU-6050
  4. 6-Shooter:Arduino-drankmengstation
  5. Arduino digitale dobbelstenen
  6. Vind mij
  7. Arduino Audio Reactive Desk Light
  8. Arduino aangedreven weerballon datalogger
  9. $10 draagbaar Arduino-weerstation (AWS)
  10. NeoMatrix Arduino Pong
  11. ThingSpeak Arduino-weerstation