Arduino GPRS weerstation - deel 1 (21 / 23 stap)

Stap 21: Volledige Code voor ATMEGA 328P Chip

MASTER Zie verbonden tekstbestand voor volledige details. < br > #include #include lange startMS; Dit zal houden de begintijd in milliseconden int windCounterStatus = laag; int rainCounterStatus = hoog; int resetStatus = laag; int val = 0; int val1 = 0; int val2 = 0; int ratten = 0; aantal ratten ontdekt int muizen = 0; aantal muizen ontdekte niet-ondertekende lange regen = 0; unsigned long previousRain = 0; int windSpeedInputPin = 2; int rainInputPin = 3; int resetWatcherPin = 4; Ontvangt een puls van pin 5 op de slaaf. int powerToWindDirPin = 7; int sleepModePin = 8; int resetFonaPin = 9; Const int ledPin = 13; unsigned long rainPulses = 0; unsigned long windPulseRate = 0; unsigned long maxWindPulseRate = 0; unsigned long avWindPulseRate = 0; unsigned long addingWindPulseRate = 0; int resetEverything = 0; int moisturePin = a1 worden verkregen; int moisturePowerPin = 10; unsigned long moistureValue = 0; unsigned long futureRainDebounceValue = 0; int n = 0; int r = 0; int i = 0; int ledState = laag; int sleepMode = laag; unsigned long previousLongMillis = 0; unsigned long previousShortMillis = 0; unsigned long previousMillis = 0; Const lange veryShortInterval = 50; Const lange shortInterval = 5000; Const lange longInterval = 600000; 60000 = 1 minuut const lange rainDebounceValue = 10000; int windrichting = 0; int windDirection2 = 0; int windDirection3 = 0; int een = 0; int twee = 0; int drie = 0; int vier = 0; int vijf = 0; int zes = 0; int zeven = 0; int acht = 0; int antwoord = 0; void setup {Wire.begin(); pinMode (ledPin, OUTPUT); pinMode (sleepModePin, OUTPUT); pinMode (powerToWindDirPin, OUTPUT); pinMode (resetFonaPin, OUTPUT); pinMode (windSpeedInputPin, INPUT_PULLUP); pinMode (rainInputPin, INPUT_PULLUP); pinMode (resetWatcherPin, INPUT_PULLUP); pinMode (moisturePowerPin, OUTPUT); digitalWrite(sleepModePin,HIGH); digitalWrite(powerToWindDirPin,LOW); delay(2000); tone(6,500,1000); digitalWrite(resetFonaPin,HIGH); delay(100); digitalWrite(resetFonaPin,LOW); Serial.begin(115200); Serial.println ("starten van wind en regen opname...");} void loop {< p > unsigned long currentMillis = millis(); / / Millis gaat terug naar nul na 50 dagen windCounter(); / / Wind pols tellen functie-rainCounter(); resetCounter(); sleepModeFunction(); resetFonaFunction(); windDirectionCalc(); als (currentMillis - previousLongMillis < = longInterval) / / opmerking dat we nooit de functie 'vertraging' tijdens deze instructie 'als' gebruiken. {/ / / Als (currentMillis - previousShortMillis < = veryShortInterval) / / / dit een puls 5V naar windsensor richting voor een zeer korte interval stuurt. {digitalWrite(powerToWindDirPin,HIGH); windDirection3 = analogRead(0); tone(6,(windDirection3+300));} else {digitalWrite(powerToWindDirPin,LOW); noTone(6);} / / / als (currentMillis - previousShortMillis > = shortInterval) {/ / / / / als ((n>10) & & (n < 120)){tone(6,((answer*15)+400));} else {noTone(6);} / / gebruikt voor het debuggen van de wind richting sensor. / / / windPulseRate = 100 * rats/(shortInterval/1000); addingWindPulseRate = addingWindPulseRate + windPulseRate; n = n + 1; myMode(); / / berekent de windrichting modus
. Serial.println(""); Serial.Print ("vocht waarde is:"); Serial.Print(moistureValue); Serial.println ("%"); Serial.Print ("Millis ="); Serial.println(currentMillis); Serial.Print ("Wind polsslag per micro seconde ="); Serial.println(windPulseRate); Serial.Print ("gemiddelde wind polsslag per micro seconde ="); Serial.println(avWindPulseRate); Serial.Print ("n ="); Serial.println(n); Serial.Print ("r ="); Serial.println(r); Serial.Print ("Maximum wind polsslag per micro seconde ="); Serial.println(maxWindPulseRate); Serial.Print ("regen val ="); Serial.println(Rain); Serial.Print ("resetEverything ="); Serial.println(resetEverything); Serial.Print ("Wind richting ="); Serial.println(windDirection2); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// previousShortMillis = currentMillis; Ik = 0; ratten = 0; } Als (windPulseRate > maxWindPulseRate) {maxWindPulseRate = windPulseRate; Serial.Print ("Maximum wind polsslag per micro seconde ="); Serial.println(maxWindPulseRate); } Als (regen > previousRain) {previousRain = regen;}} else {avWindPulseRate = addingWindPulseRate/n; windrichting = antwoord; Serial.Print ("mediaan windrichting voor draad ="); Serial.println(windDirection); Wire.beginTransmission(9); verzenden naar apparaat #9 / / ervoor zorgen dat de volgorde is hetzelfde in master en slave. digitalWrite (moisturePowerPin, hoge); delay(10); Wire.write(maxWindPulseRate/10); Waarden moeten niet groter is dan 255 (1 byte). delay(10); Wire.write(windDirection); Een mediane getal tussen 1 en 8 inclusief. delay(10); Wire.write(Rain); moistureValue = analogRead (moisturePin) * 0.102; De sensor is gekalibreerd door te vermenigvuldigen met 0.102. delay(10); Wire.write(avWindPulseRate/10); delay(10); Wire.write(moistureValue); delay(10); digitalWrite (moisturePowerPin, laag); Wire.endTransmission(); stoppen met het verzenden van resetMyMode(); Voor deze functie Foutopsporing mag niet in resetEverything als verklaring. previousLongMillis = currentMillis; addingWindPulseRate = 0; avWindPulseRate = 0; n = 0; r = r + 1; graven tot een bepaalde periode waartegen fona wordt teruggesteld in veelvouden van de wat lange interval is ingesteld op. } if(resetEverything > 0) / / Dit is de aanroep terug naar het zeggen van succesvolle datatransmissie naar HTTP. {tone(6,((answer*15)+400),1000); maxWindPulseRate = 0; regen = 0; previousRain = 0; resetEverything = 0;} } / / / / / / void windCounter() {val = digitalRead(windSpeedInputPin); / / Lees invoerwaarde als (val == HIGH) {/ / controleren als de ingang hoog is als (windCounterStatus == LOW) {/ / we zojuist hebt ingeschakeld windCounterStatus = HIGH; digitalWrite(ledPin,HIGH); / / Serial.print ("pulsen ="); Serial.println(Rats); ratten = ratten + 1; {}} else {als (windCounterStatus == HIGH) {windCounterStatus = laag; digitalWrite(ledPin,LOW);}}} / / / void resetCounter() {val1 = digitalRead(resetWatcherPin); / / Lees invoerwaarde als (val1 == HIGH) {/ / controleren als de ingang hoog is als (resetStatus == LOW) {/ / we zojuist hebt ingeschakeld resetStatus = hoog; / / digitalWrite(ledPin,HIGH); / / Serial.print ("resetEverything ="); Serial.println(resetEverything); resetEverything = 1; {}} else {als (resetStatus == HIGH) {resetStatus = laag; / / digitalWrite(ledPin,LOW);}}} VOID rainCounter () {val2 = digitalRead(rainInputPin); / / Lees invoerwaarde als (val2 == HIGH) {/ / controleren als de ingang hoog is als (rainCounterStatus == LOW) {/ / wij zojuist rainCounterStatus hebt ingeschakeld = HIGH; digitalWrite(ledPin,HIGH); muizen = muizen + 1;}} anders {als (rainCounterStatus == HIGH) {rainCounterStatus = laag; digitalWrite(ledPin,LOW);}} / / Debounce (we vermoeden dat de muizen te hoog is): unsigned long currentMillis = millis(); als ((mice > 0) & & ((currentMillis - previousShortMillis) > (shortInterval - 10))) {regen = regen + 1; muizen = 0;}} / / / void windDirectionCalc () {als ((windDirection3 > -1) & & (windDirection3 < 20)) {windDirection2 = 1;} als ((windDirection3 > 20) & & (windDirection3 < 60)) {windDirection2 = 2;} als ((windDirection3 > 60) & & (windDirection3 < 120)) {windDirection2 = 3;} als ((windDirection3 > 200) & & (windDirection3 < 250)) {windDirection2 = 4;} als ((windDirection3 > 345) & & (windDirection3 < 400)) {windDirection2 = 5;} als ((windDirection3 > 310) & & (windDirection3 < 345)) {windDirection2 = 6;} als ((windDirection3 > 250) & & (windDirection3 < 310)) {windDirection2 = 7;} als ((windDirection3 > 120) & & (windDirection3 < 200)) {windDirection2 = 8;}} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void sleepModeFunction () { if ( (n > 110)|| (n<10)) {digitalWrite(sleepModePin,HIGH);} else {digitalWrite(sleepModePin,LOW);}} VOID resetFonaFunction () {als (r > 143) / / reset fona één keer per 24 uur. Dit moet veranderen terug naar r > 143. {digitalWrite(resetFonaPin,HIGH); delay(100); digitalWrite(resetFonaPin,LOW); r = 0;} } / / / / / / void myMode() / / berekent de windrichting modus (de waarde bevatten meestal). {Als (windDirection2 == 1) {één = + 1;} als (windDirection2 == 2) {twee = 2 + 1;} als (windDirection2 == 3) {drie = drie + 1;} als (windDirection2 == 4) {vier = vier + 1;} als (windDirection2 == 5) {vijf = vijf + 1;} als (windDirection2 == 6) {zes = zes + 1;} als (windDirection2 == 7) {zeven = zeven + 1;} als (windDirection2 == 8) {acht = 8 + 1;} als ((één > twee) & &(one>three) & &(one>four) & &(one>five) & &(one>six) & &(one>seven) & & (één > 8)) {antwoord = 1;} als ((twee > één) & &(two>three) & &(two>four) & &(two>five) & &(two>six) & &(two>seven) & &(two>eight)) {antwoord = 2;} als ((drie > één) & &(three>two) & &(three>four) & &(three>five) & &(three>six) & &(three>seven) & &(three>eight)) {antwoord = 3;} als ((vier > één) & &(four>two) & &(four>three) & &(four>five) & &(four>six) & &(four>seven) & &(four>eight)) {antwoord = 4;} als ((vijf > één) & &(five>two) & &(five>three) & &(five>four) & &(five>six) & &(five>seven) & &(five>eight)) {antwoord = 5;} als ((zes > één) & &(six>two) & & (zes > drie) & &(six>four) & &(six>five) & &(six>seven) & &(six>eight)) {antwoord = 6;} als ((zeven > één) & &(seven>two) & &(seven>three) & &(seven>four) & &(seven>five) & &(seven>six) & &(seven>eight)) {antwoord = 7;} als ((acht > één) & &(eight>two) & &(eight>three) & &(eight>four) & &(Eight>Five) & &(eight>six) & &(eight>seven)) {antwoord = 8;} Serial.Print ("mijn modus waarde is:"); Serial.println(answer); } ongeldig resetMyMode() {één = 0; twee = 0; drie = 0; vier = 0; vijf = 0; zes = 0; zeven = 0; acht = 0; antwoord = 0;} < /p >

Gerelateerde Artikelen

Arduino draadloze weerstation & webserver

Arduino draadloze weerstation & webserver

doelMijn PC (die al jarenlang op 24-7 6) en de weerstationsoftware vervangen door een Arduino – lager energieverbruik, minder onderhoud en kleinere fysieke voetafdruk.  Minimale PC-functionaliteit vereisen dubbel:• Registratie van weergegevens (winds
Arduino met Ajax deel 2

Arduino met Ajax deel 2

Github: https://github.com/rogerin/ArduinoComAjaxTwitter: https://twitter.com/rogerin
Arduino met ajax deel 1

Arduino met ajax deel 1

Github: https://github.com/rogerin/ArduinoComAjaxTwitter: https://twitter.com/rogerin
Afstandsbediening via GPRS/GSM SMS(Arduino)

Afstandsbediening via GPRS/GSM SMS(Arduino)

afstandsbediening, vooral wanneer deze geen ethernet of Wifi in de openlucht, een zeer diepe dingen in het verleden is geweest. Toen ik een kind was, beeld ik altijd dat ik heb een uitrusting die alle huistoestellen kunt bepalen. Nu, dit wordt een re
Arduino Tutorials (deel 3-17 Tutorial Pack)

Arduino Tutorials (deel 3-17 Tutorial Pack)

Dit is de Arduino Tutorial Pack deel 3.Het 1ste deel is hier beschikbaar:Het 2de deel hier:In tegenstelling tot andere tutorials hier geven niet ik elke achtergrond in theorie hoe het werkt. Het is hoe te bereiken - metingen uit veel van sensoren en,
Cloud Hoppers - Arduino-weerstation

Cloud Hoppers - Arduino-weerstation

Eenvoudige Arduino Uno weerstation met Ethernet web access met behulp van goedkope Maplin sensoren :) Zie PDF voor beschrijving en Arduino code. Je moet 1 Arduino Uno en de Ethernet-shield + enkele strip board of een brood bord aansluiten van de sens
Arduino Tutorials (deel 4-21 Tutorial Pack)

Arduino Tutorials (deel 4-21 Tutorial Pack)

Dit is de Arduino Tutorial Pack deel 4.Het 1ste deel is hier beschikbaar:Het 2e deel is hier beschikbaar:Het 3e deel is hier beschikbaar:In tegenstelling tot andere tutorials hier geven niet ik elke achtergrond in theorie hoe het werkt. Het is hoe te
Arduino Tutorials (deel twee-17 Tutorial Pack)

Arduino Tutorials (deel twee-17 Tutorial Pack)

Dit is de Arduino Tutorial Pack deel 2.Het 1ste deel is hier beschikbaar:Het 3e deel is hier beschikbaar:In tegenstelling tot andere tutorials hier geven niet ik elke achtergrond in theorie hoe het werkt. Het is hoe te bereiken - metingen uit veel va
Arduino Tutorials (deel één-16 Tutorial Pack)

Arduino Tutorials (deel één-16 Tutorial Pack)

Dit is de Arduino Tutorial Pack deel 1.Het 2e deel is hier beschikbaar:Het 3e deel is hier beschikbaar: In tegenstelling tot andere tutorials hier ik niet elke achtergrond geven in theorie hoe het werkt. Het is gericht op het resultaat hoe het te ber
Opzetten van een A100LK Anemometer op een Arduino

Opzetten van een A100LK Anemometer op een Arduino

Iedereen denkt van het installeren van een windgenerator, of zelfs een hele kudde voor windgenerators, zou er goed aan doen om te controleren de voorgestelde site ten minste één hele jaar voordat de uitgaven een cent meer op hardware. Dit is wat de A
Arduino bodem sonde met behulp van de DS18B20 en DIY vocht Hardware

Arduino bodem sonde met behulp van de DS18B20 en DIY vocht Hardware

Als een fanatieke tuinman of professionele akkerbouwer, te weten de milieuomstandigheden van onze bodem is van onschatbare waarde. Uiteraard kan niet meten we het aantal wormen of stukken van organische humus, maar we kunnen het meten van temperatuur
Arduino temperatuurgevoelig Fan

Arduino temperatuurgevoelig Fan

Ik en een paar leden van de groep hebben besloten dat voor de zomer, zou gunstig zijn voor het maken van een ventilator die worden ingeschakeld bij 70 graden Fahrenheit en in intensiteit met de hitte blijft toenemen. Dus is dat wat we deden. :)Stap 1
Arduino. Industriële apparatuur rijden

Arduino. Industriële apparatuur rijden

Hallo.Dit is waarschijnlijk een tweede deel vanWat ik in het begin heeft1. volledig dood/gedeeltelijk dode CPU op guilotonne (foto 3-4-5-6)2. gemonteerd en geprogrammeerde arduino apparaat uit deel 1 (foto 2)3. de machine zonder docsIn volgende stapp
Arduino afstand Detector met een zoemer en LED's

Arduino afstand Detector met een zoemer en LED's

dit is een eenvoudige gids over hoe te maken van een afstand-detector met behulp van een Arduino, een ultrasone Sensor van HC-SRO4, een zoemer en sommige LED's.  Het uiteindelijke doel van deze tutorial is te gebruiken van de zoemer en LED's om weer