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 con Arduino Nano

Componentes y suministros

Arduino Nano R3
× 1
módulo DHT 11
× 1
SENSOR DE PRESIÓN BMP-280
× 1
Pantalla LCD ST7735 de 1,44 pulgadas
× 1
ARMARIO IMPRESO EN 3D
× 1
Cable USB A a mini USB B
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Impresora 3D (genérica)
Alambre de soldadura
Cinta de doble cara

Aplicaciones y servicios en línea

Arduino IDE
Autodesk Fusion 360

Acerca de este proyecto

Introducción

La captura de datos físicos en tiempo real es siempre fascinante. En este proyecto, no solo podrá capturar tres parámetros físicos fundamentales para la predicción meteorológica, a saber. temperatura, humedad y presión atmosférica, pero también podrá mostrar los datos en tiempo real en una pantalla LCD.

Descripción y principio de funcionamiento

Los dos sensores utilizados en este proyecto son BMP-280 y DHT-11. El primero detecta la temperatura y la presión atmosférica, mientras que el segundo detecta la humedad relativa. El DHT-11 podría haberse hecho usando BME-280 (también puede medir la humedad) en lugar del BMP-280, pero si se tiene en cuenta el costo, usar la combinación de sensores que se usan aquí es mucho más económico para el bricolaje. proyectos. También debe tenerse en cuenta que aunque el DHT-11 es capaz de detectar tanto la temperatura como la humedad, se usa para la detección de humedad solo porque su resolución de detección de temperatura es +/- 2 ° en comparación con +/-. 5 ° para BMP-280. El corazón de este proyecto es la placa de desarrollo Arduino NANO. Aquí también se ha elegido la placa NANO sobre la UNO preferida por las masas debido a su precio asequible. Una pantalla LCD TFT serie ST7735 de 1,44 ”se utiliza como pantalla para nuestro proyecto. Se ha evitado una pantalla más grande aquí para que el Arduino NANO no se sobrecargue.

Circuito y programación

Se ha proporcionado una combinación de diagrama de circuito y diagrama de bloques de la forma más conveniente posible para ayudar a los fabricantes a comprender la configuración física y la conexión de los componentes. También se proporcionan tablas para la asignación de pines de los componentes para facilitar las cosas. Al revisar el diagrama y las tablas, uno notará que los pines 5V y GND del encabezado ICSP en Arduino NANO se han utilizado para suministrar energía a los componentes junto con los pines de tierra y de alimentación a bordo. Esto se ha hecho para eliminar cualquier fuente de energía adicional que haga que el sistema sea voluminoso.

En cuanto a la programación, en la primera parte se ha incluido una serie de bibliotecas para mantener la programación breve y sencilla. Además de las obvias, vale la pena mencionar las bibliotecas Wire.h y SPI.h porque Wire.h es la que permite que Arduino se comunique con los dispositivos I2C / TWI como el BMP-280 y el ST7735 LCD y SPI.h proporciona la interfaz de periféricos en serie con la pantalla LCD ST7735. En la segunda parte, se inicializan los sensores y se configura el diseño, color de fuente, etc. de la pantalla LCD para mostrar los datos según nuestras preferencias. En la parte final de nuestra programación, la salida de los sensores se obtiene y se muestra con un retraso conveniente entre cada lectura para mantener las cosas estables.

Construcción y pruebas

En el prototipo, los componentes se han mantenido modulares y conectados mediante cables de puente en lugar de soldarlos. Esto no solo permite una fácil resolución de problemas y reparaciones, sino que también hace que el proceso de ensamblaje sea sencillo. La carcasa del dispositivo se ha impreso en 3D a medida para un ajuste perfecto de los componentes. La caja está provista de una ventilación adecuada para exponer los sensores a los mensurandos y disipar el calor generado por el sistema que, de otro modo, interferirá con los elementos sensores. El dispositivo se alimenta a través del mismo tipo AUSB que el mini USB tipo B utilizado para programar el Arduino. El prototipo ha sido probado en interiores durante algunas horas utilizando el puerto USB de la PC y el cargador de teléfono inteligente de 5V como suministro. Los resultados son bastante precisos en comparación con los datos meteorológicos en línea, considerando el costo de producción y el tiempo de desarrollo.

Conclusión

En conclusión, se puede decir que este proyecto es bastante económico, útil por decir lo menos y, lo más importante, es divertido tener una estación meteorológica pequeña y práctica que cabe en tu bolsillo.

Para comprar piezas electrónicas, pídalas a UTSOURCE

Bibliografía

· Google.com

· Arduino.cc

· Mytectutor.com


Código

  • EL CÓDIGO
EL CÓDIGO C / C ++
ESTE ES EL BOSQUEJO PERTINENTE PARA EL PROYECTO, LAS DECLARACIONES DE COMENTARIOS EXPLICARÁN EL FUNCIONAMIENTO
 #include  // incluye la biblioteca de interfaz de periféricos en serie # incluye  // incluye la biblioteca de interfaz de dos cables # incluye  // incluir la biblioteca de gráficos Adafruit # incluir  // incluir la biblioteca TFT Adafruit ST7735 # incluir  // incluir la biblioteca del sensor Adafruit BMP280 # incluir "DHT.h" // incluir el sensor DHTXX biblioteca # definir DHTPIN 2 // Pin de datos DHT11 conectado al pin D2 de arduino # definir DHTTYPE DHT11 // especificar el tipo de sensor DHT utilizado # definir TFT_RST 8 // El pin TFT RST está conectado al pin D8 de arduino # definir TFT_CS 10 // TFT El pin CS está conectado al pin D9 de arduino # define TFT_DC 9 // El pin TFT DC está conectado al pin D10 de arduino // inicializa la biblioteca TFT de la SERIE ST7735 Adafruit_ST7735 tft =Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST); // definir la dirección I2C del dispositivo:0x76 o 0x77 (0x77 es la dirección predeterminada de la biblioteca) #define BMP280_I2C_ADDRESS 0x76 Adafruit_BMP280 bmp280; // inicializar la biblioteca Adafruit BMP280DHT dht (DHTPIN, DHTTYPE); // inicializar la configuración de vacío del sensor DHT (void) {dht.begin (); // sincronizando el sensor DHT tft.initR (INITR_144GREENTAB); // inicializar un chip ST7735S, pestaña negra tft.fillScreen (ST77XX_BLACK); // establecer fondo negro tft.drawFastHLine (0, 15, tft.width (), ST77XX_CYAN); // dibujar una línea de separación horizontal en la posición (0, 15) tft.setTextColor (ST77XX_CYAN, ST77XX_BLACK); // establece el color del texto en fondo blanco y negro tft.setTextSize (1); // establecer el tamaño del texto en 1 //tft.setCursor(4, 0); // mueve el cursor a la posición (4, 0) pixel //tft.print("ARDUINO + ST7735 TFT "); tft.setCursor (25, 5); // mueve el cursor a la posición (25, 5) pixel tft.print ("WEATHER BUDDY"); // inicializar el sensor BMP280 si (bmp280.begin (BMP280_I2C_ADDRESS) ==0) {// ¡error de conexión o dirección del dispositivo incorrecta! tft.setTextColor (ST77XX_RED, ST77XX_CYAN); // establece el color del texto en fondo rojo y negro tft.setTextSize (2); // establecer el tamaño del texto en 2 tft.setCursor (5, 76); // mueve el cursor a la posición (5, 76) pixel tft.print ("Conexión"); tft.setCursor (35, 100); // mueve el cursor a la posición (35, 100) pixel tft.print ("Error"); mientras (1); // quédate aquí} tft.drawFastHLine (0, 55, tft.width (), ST77XX_CYAN); // dibuja una línea de separación horizontal en la posición (0, 55) pixel tft.drawFastHLine (0, 95, tft.width (), ST77XX_CYAN); // dibuja una línea de separación horizontal en la posición (0, 195) pixel tft.setTextColor (ST77XX_RED, ST77XX_BLACK); // establece el color del texto en fondo rojo y negro tft.setCursor (30, 20); // mueve el cursor a la posición (30, 20) pixel tft.print ("TEMPERATURA"); // establecimiento de encabezado para la primera sección tft.setTextColor (ST77XX_CYAN, ST77XX_BLACK); // establece el color del texto en cian y fondo negro tft.setCursor (40, 60); // mueve el cursor a la posición (40, 60) pixel tft.print ("HUMEDAD"); // establecimiento de encabezado para la segunda sección tft.setTextColor (ST77XX_GREEN, ST7735_BLACK); // establece el color del texto en fondo verde y negro tft.setCursor (40, 100); // mueve el cursor a la posición (40, 100) pixel tft.print ("PRESIÓN"); // establecer el encabezado de la tercera sección tft.setTextSize (2); // establecer el tamaño del texto en 2} // main loopvoid loop () {char _buffer [8]; // leer temperatura, humedad y presión del sensor BMP280 float temp =bmp280.readTemperature (); // obtener la temperatura en ° C float hum =dht.readHumidity (); // obtener humedad en rH% float pres =bmp280.readPressure (); // obtener presión en hPa // imprimir temperatura (en ° C) if (temp <0) // si temperatura <0 sprintf (_buffer, "-% 02u.% 02u", (int) abs (temp), (int ) (abs (temperatura) * 100)% 100); else // si temperatura> =0 sprintf (_buffer, "% 02u.% 02u", (int) temp, (int) (temp * 100)% 100); // establecer la aproximación del valor tft.setTextColor (ST77XX_YELLOW, ST77XX_BLACK ); // establece el color del texto en fondo amarillo y negro tft.setCursor (11, 34); // mueve el cursor a la posición (11,34) pixel tft.print (_buffer); // imprimir temperatura del sensor BMP-280 tft.drawCircle (89, 34, 2, ST77XX_YELLOW); // imprime el símbolo de grado (°) (se puede omitir si se usa * en su lugar) tft.setCursor (95, 34); // mueve el cursor a la posición (95,34) pixel tft.print ("C"); // imprime el símbolo Celsius // 2:imprime la humedad (en%) sprintf (_buffer, "% 02u", (int) (hum)); // establecer la aproximación del valor tft.setTextColor (ST77XX_MAGENTA, ST77XX_BLACK); // establece el color del texto en magenta y fondo negro tft.setCursor (45, 74); // mueve el cursor a la posición (45,74) pixel tft.print (_buffer); // imprime la humedad del sensor DHT-11 tft.setCursor (75, 74); // mueve el cursor a la posición (75,74) pixel tft.print ("%"); // imprime el símbolo de porcentaje // 3:imprime la presión (en hPa) sprintf (_buffer, "% 04u.% 02u", (int) (pres / 100), (int) ((uint32_t) pres% 100)); // establecer la aproximación del valor tft.setTextColor (ST77XX_ORANGE, ST77XX_BLACK); // establece el color del texto en fondo naranja y negro tft.setCursor (3, 112); // mueve el cursor a la posición (3,112) pixel tft.print (_buffer); // imprime la presión atmosférica de BMP-280 tft.setCursor (91, 112); // mueve el cursor a la posición (91,112) pixel tft.print ("hPa"); // imprime la unidad de presión atmosférica como hectopascal delay (1000); // espere 1 segundo antes de tomar la siguiente lectura del sensor} 

Piezas y carcasas personalizadas

ESTE ES EL ARCHIVO STL PARA LAS PIEZAS IMPRESAS EN 3D QUE UTILIZÉ

Esquemas

SOLO DEBE SEGUIR EL CABLEADO QUE SE MUESTRA.

Proceso de manufactura

  1. Estación meteorológica Raspberry Pi 2
  2. Estación meteorológica Raspberry Pi
  3. Monitoreo remoto del clima usando Raspberry Pi
  4. Weather Station V 2.0
  5. Consola de edición de Photoshop DIY con Arduino Nano RP 2040
  6. Reloj de matriz de 7 segmentos
  7. $ 10 Estación meteorológica portátil Arduino (AWS)
  8. eDOT - Reloj de precisión y estación meteorológica basados ​​en Arduino
  9. Radio FM usando Arduino y RDA8057M
  10. Estación meteorológica ThingSpeak Arduino
  11. Estación meteorológica local