Tabla de contenido:

Estación meteorológica portátil para observadores del cielo nocturno: 7 pasos (con imágenes)
Estación meteorológica portátil para observadores del cielo nocturno: 7 pasos (con imágenes)

Video: Estación meteorológica portátil para observadores del cielo nocturno: 7 pasos (con imágenes)

Video: Estación meteorológica portátil para observadores del cielo nocturno: 7 pasos (con imágenes)
Video: OVNI saliendo del mar 🛸 en playa de Miami 🏖️. Emerge a una velocidad impresionante #OVNI #UFO #OSNI 2024, Mes de julio
Anonim
Estación meteorológica portátil para observadores del cielo nocturno
Estación meteorológica portátil para observadores del cielo nocturno

La contaminación lumínica es uno de los muchos problemas del mundo. Para resolver ese problema, necesitamos saber cuánto está contaminado el cielo nocturno con luz artificial. Muchos estudiantes con profesores en el mundo intentan medir la contaminación lumínica con sensores costosos. Decidí cambiar mi luxómetro portátil (para obtener más información, consulte el luxómetro portátil del proyecto instructables anterior) a una estación meteorológica con sensor TSL2591. Este sensor es lo suficientemente sensible para medir la contaminación nocturna. Además, agrego HTU21D para medir la temperatura y la humedad.

Paso 1: ¿Qué es la contaminación nocturna y cómo se mide?

¿Qué es la contaminación nocturna y cómo se mide?
¿Qué es la contaminación nocturna y cómo se mide?

La contaminación nocturna es la luz de las lámparas, los automóviles, las casas, los enormes paneles lcd de la ciudad y todas las luces hechas por humanos. Esa luz llama artificial. Para los observadores, la luz artificial es el principal problema para ver las estrellas desde la ciudad, y deben salir de la ciudad. Para los humanos, la alta contaminación lumínica es dañina. Y también para árboles, césped y animales.

Para verificar la contaminación lumínica de su lugar, puede ver aquí lightpollutionmap

Es solo un modelo y los valores reales pueden variar. Por eso creé ese luxómetro.

Para medir la contaminación lumínica, mido solo lux y calculo magnitud / arsec2.

Puedo calcular de lux a candela por metro cuadrado:

1 cd / m2 = 1 lux

La magnitud por segundo de arco cuadrado (mag / arcsec2) describe el fondo del cielo nocturno (lo llama brillo de la superficie).

Más en wiki: Brillo de superficie

Para calcular cd / m2 a mag / arcsec2 es la fórmula:

[valor en mag / arcsec2] = Log10 ([valor en cd / m2] / 108000) / - 0.4

unihedron.com/projects/darksky/magconv.php

Paso 2: BOM

BOM
BOM

Para este proyecto necesitas:

1. WEMOS D1 Mini o cualquier microcontrolador

(Yo uso wemos, porque es el más pequeño, con puerto usb, puedes probar Arduino Nano)

WEMOS D1 MINI (Correo aéreo económico de Yanwen)

WEMOS D1 MINI (envío estándar de AliExpress)

WEMOS D1 MINI 10 piezas (correo aéreo registrado en China Post - envío gratuito)

cable usb para programar y cargar código a wemos

2. Sensor TSL2591

TSL2591 (Correo aéreo económico de Yanwen)

TSL2591 (correo aéreo registrado en China)

TSL2591 (correo aéreo registrado en China)

3. Sensor de temperatura y humedad HTU21D

HTU21D (Cainiao Super Economía)

HTU21D (Correo aéreo económico Yanwen - envío gratuito)

4. Pantalla OLED 0.96 (128 x 64)

Pantalla OLED

Pantalla OLED

Pantalla OLED

5. Batería 18650

Batería de iones de litio 18650

Batería de iones de litio 18650

titular de la batería 18650

6. Módulo de carga TP4056

tp4056

tp4056

7. botones de interruptor o puente de inmersión

dip rojo swtich

swtichers, muy diferentes

8. cables de tablero y dupont

tablero pequeño

kit de tablero

9. caso, creo de madera + cinta

cinta roja

Impresora 3D Prusa, espero hacer caso de plástico: D

Paso 3: circuito

Circuito
Circuito

El circuito es bastante simple:

Conecte todos los módulos i2c (TSL2591, OLED, HTU21D) a los pines SCL y SDA en wemos (SDA -> D2, SCL -> D1).

Aliméntelos con 3.3 V de wemos.

Conecte el terminal plus de la batería al pin de 5V en wemos y el pin + pin de la batería en el módulo de carga tp4056 al terminal plus de la batería.

Conecte todas las tierras juntas.

Paso 4: Sensor HTU21D

Sensor HTU21D
Sensor HTU21D

¡Compro un sensor de temperatura nuevo, que mide con una precisión de 0,3 ° C!

Cosas que debe saber sobre este sensor (de sparkfun):

  • Utiliza la interfaz I2C
  • Precisión de humedad típica de ± 2%
  • Precisión de temperatura típica de ± 0,3 ° C
  • Funciona de 0 a 100% de humedad, pero este sensor no se recomienda para entornos hostiles en los que podría entrar en contacto con el agua (como la lluvia).
  • Sensor de 3.3V: use convertidores de nivel lógico en línea o resistencias de 10k para limitar las señales de 5V
  • Solo un sensor HTU21D puede residir en el bus I2C a la vez

Mi resumen: es un buen sensor, porque mide con precisión 0,3 ° C y ambos: temperatura y humedad. Los pros son la interferencia I2C y los contras 3.3V, pero en mi caso no importa.

Paso 5: TSL2591

TSL2591
TSL2591

Este sensor es bueno para medir la contaminación del cielo nocturno debido a su sensibilidad (¡hasta 188 micro lux!).

1. Son diodos con posible ir y medida completa. Yo no lo uso.

2. regulador de voltaje de 5 V a 3,3 V

Especificaciones del chip (de adafruit):

  • Respuesta aproximada del ojo humano
  • Rango dinámico extremadamente amplio 1 a 600, 000, 000 recuentos
  • Rango de lux: Sensibilidad de 188 uLux, hasta 88, 000 mediciones de entrada de Lux.
  • Rango de temperatura: -30 a 80 * C
  • Rango de voltaje: 3.3-5V en regulador integrado
  • Interfaz: I2C
  • Esta placa / chip utiliza la dirección I2C de 7 bits 0x29 (fija)
  • Dimensiones: 19 mm x 16 mm x 1 mm /.75 "x.63" x.04 "Peso: 1,1 g
  • 2 diodos para medir tanto: IR como espectro completo

Resumen:

188 uLux es perfecto, también la comunicación I2C es simple. Tal vez el problema pueda solucionarse con la dirección I2C (0x29). También el regulador a bordo es bueno y es posible usar el sensor durante el invierno (heladas).

Paso 6: Código

Necesita estas bibliotecas (las agrego a un archivo zip):

  • Adafruit-GFX-Library-master
  • adafruit_gfx_library_master
  • Adafruit_HTU21DF_Library-master
  • Adafruit_Sensor-maestro
  • Adafruit_TSL2591_Library-master

Código: puedes usar el mío o crear el propio. No olvide establecer el tiempo máximo de integración (600 MS) y la ganancia al máximo (GAIN_MAX) para la medida del cielo nocturno.

Si intenta utilizar mi código, descargue el archivo ino. Cuando copio de instructable mi código, algo anda mal con las bibliotecas

Uso la imagen de carga de la luna solo por diversión. Puede usar cualquiera, solo use esta página para obtener una matriz:

javl.github.io/image2cpp/

//https://lastminuteengineers.com/oled-display-arduino-tutorial///https://javl.github.io/image2cpp/ // mcd a magnitud https://unihedron.com/projects/darksky/magconv.php… // El HD44780 es un controlador para pantallas de cristal líquido (LCD) basadas en caracteres. https://unihedron.com/projects/darksky/magconv.php… #include

#incluir

#include #include #include "Adafruit_HTU21DF.h" #include "Adafruit_TSL2591.h" int contador; // Pantalla OLED Dirección TWI #define OLED_ADDR 0x3C Pantalla Adafruit_SSD1306 (-1); // - 1 para pantalla de reinicio con botón de reinicio en placa arduino Adafruit_HTU21DF htu = Adafruit_HTU21DF (); Adafruit_TSL2591 tsl = Adafruit_TSL2591 (2591); // pasar un número para el identificador del sensor (para su uso posterior) uint32_t lum; uint16_t ir, completo; int ulux; flotador lux; temperatura de flotación; float rel_hum; float mag_arcsec2; // visual mags / arcsecond² [valor en mag / arcsec2] = Log10 ([valor en cd / m2] / 108000) / - 0.4 // símbolos // grado para Celsius const unsigned char degree PROGMEM = {0xe, 0x11, 0x11, 0x11, 0xe, 0x0, 0x0, 0x0}; // exponente 2 const unsigned char exponent PROGMEM = {0xe, 0x1b, 0x3, 0x6, 0xc, 0x18, 0x1f, 0x0}; // 'moon_logo', 128x64px const unsigned char intro PROGMEM = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0fx, 0xff, 0xfe, 0x0fx, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x03, 0xff, 0xc0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x07, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,, 0x80, 0x1f, 0xbe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xcc, 0xff, 0xff, 0x8fx, 0xff,, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xc0, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xffx, 0xfex, 0xfex,, 0xc0, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3f, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x3f, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0fx00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x3f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xffx, 0xff, 0xff,, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x ff, 0xff, 0xf0, 0x00, 0x3f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x60, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x18, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x38, 0xff, 0xc0, 0x38, 0xff 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x48, 0x7f, 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x80, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc4, 0x1f, 0xff, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x60, 0x0f, 0x80ff, 0xff, 0x0f, 0x80ff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0x, 0xff, 0xff, 0xf0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0 0x43, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x5f, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x03,, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x01, 0xff, 0xff, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xffx, 0xff, 0xff,, 0xff, 0xff, 0xf8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x03, 0xffx, 0xff, 0xff,, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x01, 0x0f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xffx, 0xff, 0xff, 0xffx, 0xff,, 0xfc, 0x01, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x3f, 0xff, 0xffx, 0xff,, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x 00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x01, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0x, 0x 0x7f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00x, 0xff, 0x00, 0x00x, 0xff 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x03x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xffx, 0xff, 0xff, 0xffx, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; configuración vacía () {// htu21d htu.begin (); // tsl2591 sensor_t sensor; tsl.getSensor (& sensor); tsl.setGain (TSL2591_GAIN_MAX); // MAX, HIGH MED, LOW, tsl.setTiming (TSL2591_INTEGRATIONTIME_600MS); // 100MS, 200 MS, 300MS, 400MS, 500MS, 600MS // configuración para pantalla OLED display.begin (SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay (); display.display (); display.drawBitmap (0, 0, intro, 128, 64, BLANCO); display.display (); retraso (1000); display.setTextSize (1); display.setTextColor (BLANCO); display.setFont (& FreeSerif9pt7b); display.clearDisplay (); } bucle vacío () {lux = 0; ulux = 0; mag_arcsec2 = 0; temp = 0; rel_hum = 0; retraso (100); lum = tsl.getFullLuminosity (); ir = lum >> 16; completo = lum & 0xFFFF; retraso (100); lux = tsl.calculateLux (completo, ir); // intensidad de luz en microlux ulux = lux * 1000000; si (ulux <0) {ulux = 0; } mag_arcsec2 = log10 (lux / 108000) / - 0,4; // (log ((ulux / 108000)) /(-0.4) temp = htu.readTemperature (); rel_hum = htu.readHumidity (); display_values ();} void display_values () {//display.drawPixel(120, 50, BLANCO); display.clearDisplay (); display.setCursor (1, 15); display.print (temp); display.drawBitmap (42, 2, grados, 8, 5, BLANCO); display.setCursor (50, 15); display.print ("C"); display.setCursor (70, 15); display.print (rel_hum); display.setCursor (114, 15); display.print ("%"); display.drawLine (1, 20, 127, 20, BLANCO); display.drawLine (67, 1, 67, 20, BLANCO); display.setCursor (1, 35); display.print ("ulux ="); display.setCursor (50, 35); display.print (ulux); display.setCursor (1, 55); display.print ("mag / arsec"); display.drawBitmap (70, 45, exponent, 8, 8, WHITE); display. setCursor (83, 55); display.print (mag_arcsec2); display.display ();}

Paso 7: Interior

Dentro
Dentro
Dentro
Dentro

Creo mi propio estuche y utilizo un tablero con cables dupont como pueden ver.

Utilizo TP4056 para cargar la batería con un cable usb (necesito un puente de inmersión swtich).

Para encender / apagar utilizo dip jumper.

Para la luz del día, TSL2591 muestra 0 y mag / arcsec2 es nan.

Para el cielo nocturno, TSL2591 debe mostrar de 0 a 1000 000 microlux (ulux) y mag / arcsec2 correspondiente.

(cca. 14 a 22 mag / arsec2).

Para fullMoon, medí 50k ulux, que es 0.05 lux.

Recomendado: