Estación meteorológica de Arduino GPRS - parte 1 (21 / 23 paso)

Paso 21: Código completo para ATMEGA 328p Chip

AMO ver adjunto archivo de texto para detalles completo. < br > #include #include startMS largo; Esto mantendrá la hora de salida en milisegundos int windCounterStatus = bajo; int rainCounterStatus = alto; resetStatus int = bajo; int val = 0; int val1 = 0; int val2 = 0; ratas de int = 0; número de ratas detectado ratones int = 0; número de ratones detecta lluvia larga sin signo = 0; previousRain largo sin signo = 0; int windSpeedInputPin = 2; int rainInputPin = 3; int resetWatcherPin = 4; Recibe un pulso del pin 5 en el esclavo. int powerToWindDirPin = 7; int sleepModePin = 8; int resetFonaPin = 9; const int ledPin = 13; unsigned rainPulses largo = 0; windPulseRate largo sin signo = 0; maxWindPulseRate largo sin signo = 0; avWindPulseRate largo sin signo = 0; addingWindPulseRate largo sin signo = 0; int resetEverything = 0; int moisturePin = A1; int moisturePowerPin = 10; moistureValue largo sin signo = 0; futureRainDebounceValue largo sin signo = 0; int n = 0; int r = 0; int i = 0; int ledState = bajo; sleepMode int = bajo; unsigned previousLongMillis largo = 0; unsigned previousShortMillis largo = 0; unsigned previousMillis largo = 0; const veryShortInterval largo = 50; const shortInterval largo = 5000; const longInterval largo = 600000; 60000 = 1 minuto const rainDebounceValue largo = 10000; int windDirection = 0; int windDirection2 = 0; int windDirection3 = 0; int uno = 0; int dos = 0; int tres = 0; int 4 = 0; int 5 = 0; int 6 = 0; int siete = 0; int 8 = 0; int respuesta = 0; void setup() {Wire.begin(); pinMode (ledPin, salida); pinMode (sleepModePin, salida); pinMode (powerToWindDirPin, salida); pinMode (resetFonaPin, salida); pinMode (windSpeedInputPin, INPUT_PULLUP); pinMode (rainInputPin, INPUT_PULLUP); pinMode (resetWatcherPin, INPUT_PULLUP); pinMode (moisturePowerPin, salida); 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 ("a partir de viento y lluvia grabación...");} void loop() {< p > sin firmar largo currentMillis = millis(); / / Millis vuelve a cero después de 50 días windCounter(); / / viento pulso contando función rainCounter(); resetCounter(); sleepModeFunction(); resetFonaFunction(); windDirectionCalc(); si (currentMillis - previousLongMillis < = longInterval) / / Observe que nunca utilizamos la función de 'delay' durante esta instrucción 'if'. {/ / Si (currentMillis - previousShortMillis < = veryShortInterval) / / envía un pulso de 5V a sensor de dirección del viento para un intervalo muy corto. {digitalWrite(powerToWindDirPin,HIGH); windDirection3 = analogRead(0); tone(6,(windDirection3+300));} Else {digitalWrite(powerToWindDirPin,LOW); noTone(6);} / / si (currentMillis - previousShortMillis > = shortInterval) {/ / / / / si ((n>10) & & (n < 120)){tone(6,((answer*15)+400));} else {noTone(6);} / / uso de depuración viento dirección sensor. / / windPulseRate = 100 * rats/(shortInterval/1000); addingWindPulseRate = addingWindPulseRate + windPulseRate; n = n + 1; myMode(); / / calcula la dirección del viento de modo
. Serial.println(""); Serial.Print ("valor de humedad es:"); Serial.Print(moistureValue); Serial.println ("%"); Serial.Print ("Millis ="); Serial.println(currentMillis); Serial.Print ("pulso de viento por micro segundo ="); Serial.println(windPulseRate); Serial.Print ("pulso de viento promedio por segundo micro ="); Serial.println(avWindPulseRate); Serial.Print ("n ="); Serial.println(n); Serial.Print ("r ="); Serial.println(r); Serial.Print ("pulso de viento máximo por segundo micro ="); Serial.println(maxWindPulseRate); Serial.Print ("caída de lluvia ="); Serial.println(RAIN); Serial.Print ("resetEverything ="); Serial.println(resetEverything); Serial.Print ("dirección del viento ="); Serial.println(windDirection2); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// previousShortMillis = currentMillis; i = 0; ratas = 0; } Si (windPulseRate > maxWindPulseRate) {maxWindPulseRate = windPulseRate; Serial.Print ("pulso de viento máximo por segundo micro ="); Serial.println(maxWindPulseRate); } Si (lluvia > previousRain) {previousRain = lluvia;}} Else {avWindPulseRate = addingWindPulseRate/n; windDirection = respuesta; Serial.Print ("vientos de mediana para alambre ="); Serial.println(windDirection); Wire.beginTransmission(9); transmitir al dispositivo #9 / / asegurarse de que el orden es el mismo en maestro y esclavo. digitalWrite (moisturePowerPin, HIGH); Delay(10); Wire.Write(maxWindPulseRate/10); Valores no deben ser mayores que 255 (1 byte). Delay(10); Wire.Write(windDirection); Un número promedio entre 1 y 8 inclusive. Delay(10); Wire.Write(RAIN); moistureValue = analogRead (moisturePin) * 0.102; El sensor está calibrado multiplique por 0.102. Delay(10); Wire.Write(avWindPulseRate/10); Delay(10); Wire.Write(moistureValue); Delay(10); digitalWrite (moisturePowerPin, bajo); Wire.endTransmission(); interrumpir la transmisión a resetMyMode(); Para depurar esta función no debe estar en resetEverything si declaración. previousLongMillis = currentMillis; addingWindPulseRate = 0; avWindPulseRate = 0; n = 0; r = r + 1; cuenta hasta un período de tiempo en el cual se restablece fona en múltiplos de cualquier intervalo de tiempo se establece en. } if(resetEverything > 0) / / esta es la llamada a decir transmisión de datos exitosa para HTTP. {tone(6,((answer*15)+400),1000); maxWindPulseRate = 0; lluvia = 0; previousRain = 0; resetEverything = 0;} } / / / / / / void windCounter() {val = digitalRead(windSpeedInputPin); / leer valor de entrada si (val == HIGH) {/ / comprobar si la entrada es alto si (windCounterStatus == LOW) {/ / sólo hemos convertido en windCounterStatus = alto; digitalWrite(ledPin,HIGH); / / Serial.print ("pulsos ="); Serial.println(Rats); ratas = ratas + 1; {}} else {si (windCounterStatus == HIGH) {windCounterStatus = bajo; digitalWrite(ledPin,LOW);}}} / / void resetCounter() {val1 = digitalRead(resetWatcherPin); / leer valor de entrada si (val1 == HIGH) {/ / comprobar si la entrada es alto si (resetStatus == LOW) {/ / sólo hemos convertido en resetStatus = alta; / / digitalWrite(ledPin,HIGH); / / Serial.print ("resetEverything ="); Serial.println(resetEverything); resetEverything = 1; {}} else {si (resetStatus == HIGH) {resetStatus = bajo; / / digitalWrite(ledPin,LOW);}}} void rainCounter () {val2 = digitalRead(rainInputPin); / leer valor de entrada si (val2 == HIGH) {/ / comprobar si la entrada es alto si (rainCounterStatus == baja) {/ / sólo hemos convertido en rainCounterStatus = alto; digitalWrite(ledPin,HIGH); ratones = ratones + 1;}} más {si (rainCounterStatus == HIGH) {rainCounterStatus = bajo; digitalWrite(ledPin,LOW);}} / / Debounce (sospechamos que ratones es demasiado alto): sin firmar largo currentMillis = millis(); si ((mice > 0) & & ((currentMillis - previousShortMillis) > (shortInterval - 10))) {lluvia = lluvia + 1; ratones = 0;}} / / void windDirectionCalc () {si ((windDirection3 > -1) & & (windDirection3 < 20)) {windDirection2 = 1;} si ((windDirection3 > 20) & & (windDirection3 < 60)) {windDirection2 = 2;} Si ((windDirection3 > 60) & & (windDirection3 < 120)) {windDirection2 = 3;} si ((windDirection3 > 200) & & (windDirection3 < 250)) {windDirection2 = 4;} Si ((windDirection3 > 345) & & (windDirection3 < 400)) {windDirection2 = 5;} si ((windDirection3 > 310) & & (windDirection3 < 345)) {windDirection2 = 6;} Si ((windDirection3 > 250) & & (windDirection3 < 310)) {windDirection2 = 7;} si ((windDirection3 > 120) y & (windDirection3 < 200)) {windDirection2 = 8;}} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void sleepModeFunction () { if ( (n > 110)|| (n<10)) {digitalWrite(sleepModePin,HIGH);} Else {digitalWrite(sleepModePin,LOW);}} void resetFonaFunction () {si (r > 143) / / restablece fona una vez cada 24 horas. Esto debe ser cambiado a r > 143. {digitalWrite(resetFonaPin,HIGH); delay(100); digitalWrite(resetFonaPin,LOW); r = 0;} } / / / / / / void myMode() / / calcula la dirección del viento de modo (el valor que ocurre más a menudo). {Si (windDirection2 == 1) {uno = uno + 1;} si (windDirection2 == 2) {dos = dos + 1;} si (windDirection2 == 3) {tres = tres + 1;} si (windDirection2 == 4) {cuatro = cuatro + 1;} si (windDirection2 == 5) {cinco = 5 + 1;} si (windDirection2 == 6) {seis = 6 + 1;} si (windDirection2 == 7) {siete = siete + 1;} si (windDirection2 == 8) {ocho = 8 + 1;} si ((un > dos) & &(one>three) & &(one>four) & &(one>five) & &(one>six) & &(one>seven) & & (uno > ocho)) {respuesta = 1;} si ((dos > uno) & &(two>three) & &(two>four) & &(two>five) & &(two>six) & &(two>seven) & &(two>eight)) {respuesta = 2;} Si ((tres > uno) & &(three>two) & &(three>four) & &(three>five) & &(three>six) & &(three>seven) & &(three>eight)) {respuesta = 3;} si ((cuatro > uno) & &(four>two) & &(four>three) & &(four>five) & &(four>six) & &(four>seven) & &(four>eight)) {respuesta = 4;} Si ((cinco > uno) & &(five>two) & &(five>three) & &(five>four) & &(five>six) & &(five>seven) & &(five>eight)) {respuesta = 5;} si ((seis > uno) & &(six>two) & & (seis > tres) & &(six>four) & &(six>five) & &(six>seven) & &(six>eight)) {respuesta = 6;} Si ((siete > uno) & &(seven>two) & &(seven>three) & &(seven>four) & &(seven>five) & &(seven>six) & &(seven>eight)) {respuesta = 7;} si ((ocho > uno) & &(eight>two) & &(eight>three) & &(eight>four) & &(eight>Five) & &(eight>six) & &(eight>seven)) {respuesta = 8;} Serial.Print ("mi modo valor es:"); Serial.println(Answer); } void resetMyMode() {uno = 0; dos = 0; tres = 0; cuatro = 0; cinco = 0; 6 = 0; siete = 0; 8 = 0; respuesta = 0;} < /p >

Artículos Relacionados

Estación meteorológica de Arduino DIY

Estación meteorológica de Arduino DIY

Cómo hacer tu propia estación meteorológica utilizando Arduino.Paso 1: partesArduinoCables de puenteProtoboardPantalla de Nokia 5110DHT11Paso 2: Conectar Conectar el circuito como el esquema.Paso 3: Tiempo de código!Cargar el código.Paso 4: hacer!!!!
Estación meteorológica de Arduino (AWS)

Estación meteorológica de Arduino (AWS)

En este proyecto, vamos a hacer una estación meteorológica que mide presión, temperatura, gota de lluvia, humedad del suelo y humedad del aire usando Arduino que guardar los datos de adquisición de datos.Es un proyecto bastante fácil y puede ser util
Independiente DIY estación meteorológica con Arduino

Independiente DIY estación meteorológica con Arduino

Hola creadores de ahiEsto no es un instructivo paso a paso. Como siempre me olvidé de tomar tomar instantáneas desde el inicio de este proyecto.La idea de construir una estación meteorológica de comunidad utilizando hardware abierto comenzó una larga
ESP8266 estación meteorológica con Arduino: Hardware #1

ESP8266 estación meteorológica con Arduino: Hardware #1

FondoHe leido sobre la ESP8266 primero en marzo este año y no sabía qué hacer con. Y ahora estoy realmente fascinado lo fácil que puede ser la conexión de un Arduino a Internet. Como otros me establecer una estación meteorológica en un protoboard pri
Estación meteorológica de Arduino Parte2

Estación meteorológica de Arduino Parte2

para mi último proyecto fue una máquina de frialdad de viento de Arduino.Naturalmente, este vago Geek viejo quería añadir una veleta (dirección del viento) a mi estación. ¿A quién le importa, usted puede preguntar? Bueno, soy un Geek. En realidad, di
La estación meteorológica de Arduino / termostato

La estación meteorológica de Arduino / termostato

actualización:ACTUALIZACIÓN: Agregar cálculos de punto de rocíoACTUALIZACIÓN: control de velocidad del vientoSiempre he estado interesado en el seguimiento de mi tiempo y notó la diferencia entre lo weather.com y accuweather.com creo que mi tiempo es
Estación meteorológica de Arduino.

Estación meteorológica de Arduino.

Hace un tiempo tengo una idea para construir mi propia estación meteorológica, desde cero.Resultó gran. Vamos a empezar!Paso 1: partes Una lista de artículos usan:-2 x Arduino nano.-transmisor 433mhz.-433 mhz receptor.-4 x 20 LCD (azul)-un azul led y
Mini estación meteorológica con Arduino

Mini estación meteorológica con Arduino

Este es mi primer instructable y primer completo Arduino proyecto. Aunque se puede encontrar proyecto similar, yo aprende mucho de este proyecto.Paso 1: Propósito de la estación meteorológica Esta estación meteorológica simple tendrá temperatura y le
ESP8266 estación meteorológica con Arduino – #2 Software

ESP8266 estación meteorológica con Arduino – #2 Software

Este instructable es para el software de mi Weater estación proyecto. Por favor lea primero para entender todas las explicaciones.Debido a las MCU ambos el concepto de software se basa en dos partes: el ESP8266 funciona en Nodemcu y hace el Internet
Nube de tolvas - estación meteorológica de Arduino

Nube de tolvas - estación meteorológica de Arduino

Simple del Arduino Uno estación con acceso web de Ethernet usando sensores de Maplin barato :) Ver PDF para la descripción y el código de Arduino. Se necesita 1 Arduino Uno y el shield Ethernet + algunos de la tira o el tablero un pan para conectar l
Estación meteorológica de Arduino con módulos MHz RF433

Estación meteorológica de Arduino con módulos MHz RF433

En este proyecto que le mostrará cómo hacer dos Arduinos hablar con frecuencia del RF (inalambrico)En el pasado publiqué cuatro instructables que conducen a este:Los dos primeros son acerca de cómo conectar una LCD serial con I2C a un Arduino UNO y u
Estación meteorológica personal arduino hebreo

Estación meteorológica personal arduino hebreo

הרעיון בפרויקט זה הוא ליצור שילוב של נתוני מזג אוויר המגיעים מלוח ארדוינו הנמצא בבית, ומהאינטרנט, ולאפשר למשתמש הן חיווי הנובע מהנתונים והן ביצוע פעולות פשוטות כמו הדלקה וכיבוי של תאורה מקומית (או כל מכשיר אחר המחובר לשקע הנשלט על ידי הלוח או מופעל ב
Arduino Uno DHT11 LCD estación meteorológica DIY

Arduino Uno DHT11 LCD estación meteorológica DIY

esto es DYI sobre cómo hacer su estación meteorológica usando Arduino Uno, sensor de temperatura y humedad DHT11, DFRobot LCD 2 x 16 pantalla con teclado. Generalmente puedes comprar Arduino, DHT11 y LCD por separado y desde cada capítulo de disposit
Anemómetro DIY y Windvane para estación meteorológica independiente

Anemómetro DIY y Windvane para estación meteorológica independiente

Me gustaría compartir algunos conocimientos sobre estación meteorológica. Como hemos escuchado muchas veces acerca de estación y algunas personas le gustaría construir su propia estación meteorológica en su página de inicio.Estación meteorológica es