Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Mini estación meteorológica Arduino UNO

Componentes y suministros

Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1
Arduino Proto Shield
o una protoboard ordinaria
× 1
Sensor de temperatura DHT22
× 1
Seeed Grove - Sensor de luz
× 1
Seeed Grove - Sensor UV
× 1
Seeed Grove - Sensor de barómetro
× 1
Seeed Grove - Sensor de polvo
× 1
Resistencia 1k ohm
× 2
Resistencia de 10k ohmios
× 1
Resistencia de 4,75 k ohmios
× 1
Cables de puente (genéricos)
× 1

Aplicaciones y servicios en línea

Arduino IDE
API ThingSpeak

Acerca de este proyecto

Esta es la primera generación de mi mini estación meteorológica basada en Arduino con conexión Wi-Fi, que puede publicar datos públicamente en línea utilizando la plataforma ThingSpeak.

La estación meteorológica recopila los siguientes datos relacionados con el clima y el medio ambiente utilizando diferentes sensores:

  • Temperatura
  • Humedad
  • Presión atmosférica
  • Intensidad de la luz
  • índice UV
  • Concentración de polvo

El objetivo es hacer una estación meteorológica pequeña y sencilla, utilizando hardware abierto.

¡Empecemos y divirtámonos!

Componentes electrónicos

No necesitarás herramientas específicas para el montaje de este proyecto. Todos los componentes se pueden encontrar en línea en su tienda de comercio electrónico favorita.

El circuito es alimentado por el puerto USB (conectado a una computadora o un cargador de teléfono ordinario), pero también puede agregar una fuente de alimentación de CC externa o una batería conectada al conector de alimentación Arduino.

Un caso para el circuito de la estación meteorológica está fuera del alcance de este proyecto.

Conexión de las piezas

Conecte todos los componentes de acuerdo con el esquema. Necesitará algunos cables de puente para conectar cada sensor a la placa de pruebas. Puede usar un protoshield (para un circuito más compacto), una placa de pruebas ordinaria o diseñar su propio escudo Arduino.

Conecte el cable USB a la placa Arduino Uno y continúe con el siguiente paso.

Código

Suponiendo que ya ha instalado el último IDE de Arduino, descargue e instale las siguientes bibliotecas:

  • biblioteca DHT22
  • Biblioteca Adafruit BMP085

Para obtener instrucciones sobre cómo agregar las bibliotecas a Arduino IDE, consulte la siguiente guía de Arduino.

Descarga el código Arduino ( weatherBox.ino ) incluido en la sección de código. Reemplazar XXXXX por el SSID de su enrutador WiFi, YYYYY por contraseña del enrutador y ZZZZZ por su canal ThingSpeak escriba la clave API (vea cómo obtenerla en el siguiente paso).

Conecte la placa Arduino al puerto USB de su computadora y cargue el código.

Configuración de ThingSpeak

  • Cree una cuenta ThingSpeak
  • Cree un nuevo canal

Especifique el nombre y la descripción de su estación meteorológica. Asigne los siguientes canales y guarde el canal:

  • canal 1 =ligero
  • canal 2 =humedad
  • canal 3 =temperatura (de DHT22)
  • canal 4 =índice UV
  • canal 5 =concentración de polvo
  • canal 6 =presión
  • canal 7 =temperatura (de BMP085)

Copie la clave de escritura de la API. Se usa en el paso anterior en el código Arduino. Cuando la estación está encendida, los valores de los sensores se cargarán al canal periódicamente. Puede configurar visualizaciones públicas y privadas de cada variable.

Ejemplo de un canal público:https://thingspeak.com/channels/35540

Usando la aplicación de Android

Podrás visualizar los datos de la estación meteorológica en cualquier navegador. Pero también puede verificarlo en su teléfono inteligente basado en Android y visualizarlo cuando lo desee.

  • Descargue e instale la aplicación ThingsView de la tienda Google Play en su dispositivo Android
  • En la aplicación, inserte el número de identificación de su canal y haga clic en agregar. Encontrarás el ID en la configuración de tu canal ThingSpeak
  • Los valores actuales de cada variable se mostrarán en un gráfico.

¡Diviértete!

Código

  • weatherBox.ino
weatherBox.ino Arduino
 #include  #include  #include  #include  #include  #include  #define SSID "XXXXX "// reemplaza XXXXX por el SSID de tu enrutador # define PASS" YYYYY "// reemplaza YYYYY por la contraseña de tu enrutador # define IP" 184.106.153.149 "// thingspeak.com IP # define DHT22_PIN 2String GET =" GET / update? key =ZZZZZ &campo1 ="; // reemplaza ZZZZZ por tu canal ThingSpeak write keySoftwareSerial monitor (10, 11); // Comunicación serial al módulo ESP8266 (RX, TX) dht DHT; Adafruit_BMP085_Unified bmp =Adafruit_BMP085_Unified (10085); // Variablesint luminancePin =A0; int uvPin =A1; int dustPin =8; unsigned long duration; unsigned long starttime; unsigned long sampletime_ms =30000; unsigned long delay_time =60000; unsigned long lowpulseoccupancy =0; tasa de flotación =0; concentración de flotación =0; // setupvoid setup () {// iniciar comunicaciones seriales Serial.begin (9600); monitor.begin (9600); Serial.println ("Inicializando ..."); // configurar los pines de Arduino pinMode (dustPin, INPUT); // inicializar el sensor de presión Serial.println ("Detectando el sensor de presión BMP085 ..."); if (! bmp.begin ()) {Serial.println ("No se detectó el sensor BMP085. ¡Verifique sus conexiones o DIRECCIÓN I2C!"); mientras (1); } Serial.println ("¡BMP085 detectado!"); // comunicación con el módulo wifi monitor.flush (); monitor.println ("AT"); retraso (2000); if (monitor.find ("OK")) {Serial.println ("Comunicación con el módulo ESP8266:OK"); } else {Serial.println ("ERROR del módulo ESP8266"); } // conecta el enrutador wifi connectWiFi (); Serial.print ("Muestreo ("); Serial.print (sampletime_ms / 1000); Serial.println ("s) ..."); // inicializa el tiempo de inicio del temporizador =millis ();} void loop () {// midiendo la duración de las partículas de polvo =pulseIn (dustPin, LOW); baja ocupación de pulsos =baja ocupación de pulsos + duración; // ciclo de 30 segundos if ((millis () - hora de inicio)> =sampletime_ms) {ratio =lowpulseoccupancy / (sampletime_ms * 10.0); // porcentaje (de 0 a 100%) concentración =1,1 * pow (relación, 3) -3,8 * pow (relación, 2) + 520 * relación + 0,62; // de la hoja de datos lowpulseoccupancy =0; // leer otros sensores char buffer [10]; // sensor de luz flotante luminance =analogRead (luminancePin); // sensor UV flotante uv =analogRead (uvPin); uv =uv * 0,0049; // convertir valores a voltios uv =uv * 307; // convertir a mW / m² uv =uv / 200; // calcular el índice UV // temperatura y humedad int chk =DHT.read22 (DHT22_PIN); humedad de flotación =DHT.humedad; temperatura de flotación =temperatura DHT; // evento de sensores de presión y temperatura1_event_t; bmp.getEvent (&evento); presión de flotación =0; temperatura de flotación1 =0; if (event.pressure) {presión =event.pressure; bmp.getTemperature (&temperature1); } // convierte los valores del sensor en cadenas String luminanceStr =dtostrf (luminance, 4, 1, buffer); luminanceStr.replace ("", ""); Cadena uvStr =dtostrf (uv, 4, 1, búfer); uvStr.replace ("", ""); String humedadStr =dtostrf (humedad, 4, 1, tampón); humedadStr.replace ("", ""); String temperatureStr =dtostrf (temperatura, 4, 1, búfer); temperatureStr.replace ("", ""); String dustStr =dtostrf (concentración, 4, 1, tampón); dustStr.replace ("", ""); String pressureStr =dtostrf (presión, 4, 1, búfer); presiónStr.replace ("", ""); String temperature1Str =dtostrf (temperature1, 4, 1, buffer); temperature1Str.replace ("", ""); // enviar datos a ThingSpeak updateSensors (luminanceStr ,idityStr, temperatureStr, uvStr, dustStr, pressureStr, temperature1Str); // esperar el siguiente ciclo de muestreo Serial.print ("Wait"); Serial.print (delay_time / 1000); Serial.println ("s para el próximo muestreo"); Serial.println (); delay (delay_time); // inicializar nuevo ciclo Serial.println (); Serial.print ("Muestreo ("); Serial.print (sampletime_ms / 1000); Serial.println ("s) ..."); hora de inicio =milis (); }} // Enviar datos a ThingSpeakvoid updateSensors (String luminanceStr, String humedadStr, String temperatureStr, String uvStr, String dustStr, String pressureStr, String temperature1Str) {String cmd ="AT + CIPSTART =\" TCP \ ", \" "; cmd + =IP; cmd + ="\", 80 "; monitor.println (cmd); retraso (2000); cmd =OBTENER; cmd + =luminanceStr; cmd + ="&campo2 ="; cmd + =humedadStr; cmd + ="&campo3 ="; cmd + =temperatureStr; cmd + ="&campo4 ="; cmd + =uvStr; cmd + ="&campo5 ="; cmd + =dustStr; cmd + ="&campo6 ="; cmd + =presiónStr; cmd + ="&campo7 ="; cmd + =temperatura1Str; cmd + ="\ r \ n"; retraso (1000); int strsize =cmd.length (); monitor.println ("AT + CIPSEND =" + String (strsize)); retraso (2000); monitor.print (cmd); if (monitor.find ("OK")) {Serial.println ("Transmisión completada con éxito"); } else {Serial.println ("¡Transmisión fallida!"); }} void sendDebug (String cmd) {Serial.print ("ENVIAR:"); Serial.println (cmd); monitor.println (cmd);} boolean connectWiFi () {Serial.println ("Conectando wi-fi ..."); Cadena cmd ="AT + CWMODE =1"; monitor.println (cmd); retraso (2000); monitor.flush (); // borrar búfer cmd ="AT + CWJAP =\" "; cmd + =SSID; cmd + =" \ ", \" "; cmd + =APROBADO; cmd + =" \ ""; monitor.println (cmd); retraso (5000); if (monitor.find ("OK")) {Serial.println ("¡Conexión exitosa!"); devuelve verdadero; } else {Serial.println ("¡Conexión fallida!"); falso retorno; } Serial.println ();} 
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library
Github
https://github.com/adafruit/Adafruit-BMP085-Libraryhttps://github.com/adafruit/Adafruit-BMP085-Library

Proceso de manufactura

  1. Estación meteorológica Raspberry Pi
  2. Sistema de robótica de detección humana con Arduino Uno
  3. Monitoreo de CO2 con sensor K30
  4. ¿Qué tan alto eres?
  5. WebServerBlink usando Arduino Uno WiFi
  6. Calculadora UNO simple
  7. Torre de sensores de nubes Arduino
  8. Persistencia de la visión
  9. Estación meteorológica local
  10. Monitorización de la estación de salud
  11. Monitoreo de temperatura en teléfonos inteligentes