Tabla de contenido:

Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta: 8 pasos (con imágenes)
Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta: 8 pasos (con imágenes)

Video: Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta: 8 pasos (con imágenes)

Video: Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta: 8 pasos (con imágenes)
Video: Estación meteorológica con energía solar y Arduino 2024, Mes de julio
Anonim
Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta
Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta
Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta
Estación meteorológica NaTaLia: estación meteorológica con energía solar Arduino hecha de la manera correcta

Después de 1 año de operación exitosa en 2 ubicaciones diferentes, estoy compartiendo los planes del proyecto de mi estación meteorológica con energía solar y explicando cómo evolucionó hasta convertirse en un sistema que realmente puede sobrevivir durante largos períodos de tiempo a partir de la energía solar. Si sigue mis instrucciones y utiliza exactamente los mismos materiales que se enumeran, puede construir una estación meteorológica con energía solar que funcionará durante muchos años. En realidad, el único factor que limita cuánto tiempo funcionará es la vida útil de la batería que está utilizando.

Paso 1: Operación de la estación meteorológica

1, transmisor: caja montada al aire libre con panel solar que envía telemetría meteorológica (temperatura, humedad, índice de calor, fuerza solar) periódicamente a la unidad receptora interior.

2, Receptor: Unidad interior hecha de Raspberry PI 2 + Arduino Mega que tiene un Receptor RF de 433 Mhz conectado para la recepción de datos. En mi configuración, esta unidad no tiene ninguna funcionalidad de pantalla LCD local. Corre descuidadamente. Un programa principal en C se encarga de recibir los datos entrantes del Arduino a través de la serie, luego registra los datos en un archivo de texto y hace que los últimos datos recibidos estén disponibles a través de telnet para que otros dispositivos los consulten.

La estación está controlando las luces de mi casa mediante la lectura del fotorresistor (que determina si afuera es de día o de noche). El receptor no tiene cabeza en mi caso, pero puede modificar fácilmente el proyecto para agregar una pantalla LCD. Uno de los dispositivos que usa, analiza y muestra los datos meteorológicos de la estación es mi otro proyecto: Ironforge the NetBSD Toaster.

Paso 2: Primeras versiones

Primeras Versiones
Primeras Versiones
Primeras Versiones
Primeras Versiones
Primeras Versiones
Primeras Versiones
Primeras Versiones
Primeras Versiones

Hay muchos proyectos solares en la red, pero muchos de ellos cometen el error común de que el sistema extrae más energía de la batería con el tiempo de lo que el panel solar podría reponer, especialmente durante los meses nublados y oscuros del invierno.

Cuando diseña un sistema de energía solar, lo único que importa es el CONSUMO DE ENERGÍA, en todos los componentes: mcu, transmisor de radio, regulador de voltaje, etc.

Usar una computadora grande como una raspberry pi o un dispositivo wifi hambriento de energía como el ESP solo para recopilar y transportar un par de bits de datos meteorológicos sería una exageración, pero como lo mostraré en este tutorial, incluso una pequeña placa Arduino lo es.

Lo mejor es siempre medir la corriente durante su proceso de construcción con un medidor o con un alcance (útil cuando intenta medir pequeños picos de uso durante la operación en períodos de tiempo muy cortos (milisegundos)).

En la primera imagen puedes ver mi primera estación (basada en Arduino Nano) y la segunda placa Arduino Barebone Atmega 328P.

La primera versión, aunque funcionó perfectamente (monitoreando el entorno y enviando datos por radio) tenía un consumo de energía demasiado alto ~ 46mA y agotó la batería en unas pocas semanas.

Todas las versiones usaban la siguiente batería:

18650 Placa de protección incorporada de batería recargable de iones de litio protegida de 6000 mAh

ACTUALIZAR sobre estas baterías ScamFire. Aunque este es un Instructable bastante antiguo, todavía me sentí obligado a corregirlo debido a esta batería falsa. NO compre la batería mencionada, haga su propia investigación sobre otras baterías LION / LIPO, todas las baterías de 3.7V funcionarán con este proyecto.

Finalmente tuve tiempo de desacreditar la batería ScamFire para ver cuál es su capacidad real. Por lo tanto, realizaremos 2 cálculos en paralelo con las capacidades reales y "anunciadas".

En primer lugar, una cosa es que esta batería es falsa y nada de lo que dicen es cierto, las nuevas versiones son aún peores, copiaron la falsificación sin dejar de lado el circuito de protección de 2 centavos, por lo que nada evitará que se descarguen a cero.

Un pequeño artículo sobre las baterías LION / LIPO:

TLDR:

Lo que esto significa es que el voltaje máximo de la celda es 4.2v y que el voltaje "nominal" (promedio) es 3.7V.

Por ejemplo, aquí hay un perfil del voltaje para una batería 'clásica' de 3.7V / 4.2V. El voltaje comienza en 4.2 como máximo y cae rápidamente a aproximadamente 3.7V durante la mayor parte de la vida útil de la batería. Una vez que alcanza los 3,4 V, la batería está muerta y, a 3,0 V, el circuito de corte desconecta la batería.

Mis medidas usando una carga ficticia:

Batería cargada: 4,1 V

Ajuste de corte a: 3.4V

Simulación de carga: 0.15A (mi dispositivo tuvo un pequeño problema al bajar por debajo de esto).

Capacidad medida: 0,77 Ah ¡le dan 0,8 Ah gratuitos, que son 800 mAh en lugar de los 6000 mAh anunciados!

Como esta batería ni siquiera tenía el circuito de protección, podía bajar libremente, pero a 3.4V después de 10 minutos ya se cae a 3.0V.

Por lo tanto, con cálculos simples, la batería proporciona:

Teórico

Voltaje de la batería = 3,7 V

Potencia = 3,7x6000 = 22000 mWh

Verdadero

Voltaje de la batería = 3.7V Potencia = 3.7x800 = 2960 mWh

Versión: 0.1 ARDUINO NANO BASED

Incluso con la biblioteca LowPower, un Arduino nano consume ~ 16 mA (en modo de suspensión) -> FAIL.

Teórico

Pavg = VxIavg = 5Vx16mA = 80 mW

Duración de la batería = 22000/80 = 275 horas = 11 días aproximadamente

RealPavg = VxIavg = 5Vx16mA = 80 mW

Duración de la batería = 800/80 = 10 horas

Versión: 0.2 Atmega 328P Barebone

La potencia consumida por un ATmega328 depende mucho de lo que esté haciendo con él. Simplemente sentado allí en un estado predeterminado, puede usar 16 mA a 5 V mientras funciona a 16 MHz.

Cuando el ATmega328P está en modo activo, ejecutará continuamente varios millones de instrucciones por segundo. Además, el convertidor analógico a digital de periféricos integrados (ADC), la interfaz de periféricos en serie (SPI), el temporizador 0, 1, 2, la interfaz de dos cables (I2C), el USART, el temporizador de vigilancia (WDT) y la detección de caída de tensión (DBO) consumen energía.

Para ahorrar energía, la MCU ATmega328P admite varios modos de suspensión y los periféricos no utilizados se pueden apagar. Los modos de dormir difieren en las partes que permanecen activas, por la duración del sueño y el tiempo necesario para despertar (período de despertar). El modo de suspensión y los periféricos activos se pueden controlar con las bibliotecas de energía y suspensión del AVR o, más concisamente, con la excelente biblioteca de bajo consumo.

La biblioteca Low-Power es fácil de usar pero muy poderosa. La declaración LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); pone la MCU en SLEEP_MODE_PWR_DOWN durante 16 ms a 8 s, según el primer argumento. Desactiva el ADC y el BOD. La suspensión de apagado significa que todas las funciones del chip están deshabilitadas hasta la próxima interrupción. Además, el oscilador externo se detiene. Solo las interrupciones de nivel en INT1 e INT2, interrupciones de cambio de pin, coincidencia de direcciones TWI / I2C o WDT, si está habilitado, pueden activar la MCU. Entonces, con la declaración única, minimizará el consumo de energía. Para un Pro Mini de 3.3 V sin LED de alimentación y sin regulador (ver más abajo) que ejecuta la declaración, el consumo de energía es de 4.5 μA. Eso está muy cerca de lo que se menciona en la hoja de datos ATmega328P para la suspensión de apagado con WDT habilitado de 4.2 μA (hoja de datos vinculada en las fuentes). Por lo tanto, estoy bastante seguro de que la función powerDown apaga todo lo que es razonablemente posible. Con la declaración LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, el WDT se desactivará y no se despertará hasta que se active una interrupción.

Entonces, con la configuración básica, podemos poner el chip en modo de suspensión durante 5 minutos, mientras consume muy poca energía (0.04 mA sin periféricos). Sin embargo, este es solo el chip Atmega 328P con el oscilador de cristal y nada más, el amplificador de voltaje utilizado en esta configuración para aumentar el voltaje de la batería de 3.7V -> 5.0 V también consume 0.01 mA.

Un drenaje de voltaje constante fue la fotorresistencia adicional que elevó el consumo en el modo de suspensión a un total de 1 mA (esto incluye todos los componentes).

La fórmula para calcular el consumo preciso del dispositivo tanto en el modo de suspensión como en el de activación es:

Iavg = (Ton * Ion + Tsleep * Está durmiendo) / (Ton + Tsleep)

Ion = 13mA

Esto proviene principalmente del transmisor RF433 Mhz:

Transmisor:

Voltaje de trabajo: 3V - 12V fo máx. uso de energía 12V Corriente de trabajo: máx. Menos de 40mA máx. y mín. 9mA Modo de resonancia: (SAW) Modo de modulación: ASK Frecuencia de trabajo: Eve 315MHz o 433MHz Potencia de transmisión: 25mW (315MHz a 12V) Error de frecuencia: + 150kHz (máx.) Velocidad: menos de 10Kbps

Está durmiendo = 1mA

Sería significativamente menor sin la fotorresistencia.

Tiempo de Trunon Ton = 250 mS = 0.25s

Tiempo de sueño Tsleep = 5 min = 300 s

Iavg = (Ton * Ion + Tsleep * Está durmiendo) / (Ton + Tsleep)

Iavg = (0,25 s * 13 mA + 300 s * 1 mA) / (0,25 s + 300 s)

Iavg = 1,26 mA

Pavg = VxIavg = 5Vx1.26mA = 6 mW

Teórico

Duración de la batería = 22000 mWh / 6 mW = 3666 horas = 152 días aproximadamente

Verdadero

Duración de la batería = 800 mWh / 6 mW = 133 horas = 5,5 días aproximadamente

Aunque estas eran todavía una mejor serie UltraFire, la que usé inicialmente, se pudo ver que sin el panel solar o el bajo consumo de 1 mA, este proyecto no sobreviviría mucho tiempo.

Siéntase libre de construir la estación y anote sus hallazgos y cálculos en los comentarios y actualizaré el artículo. También agradecería los resultados con diferentes MCU y convertidores boost.

Paso 3: construcción de una estación meteorológica exitosa

Construyendo una estación meteorológica exitosa
Construyendo una estación meteorológica exitosa
Construyendo una estación meteorológica exitosa
Construyendo una estación meteorológica exitosa
Construyendo una estación meteorológica exitosa
Construyendo una estación meteorológica exitosa
Construyendo una estación meteorológica exitosa
Construyendo una estación meteorológica exitosa

Aunque es la primera versión exitosa, contiene algunas fallas en las imágenes y no puedo rehacerlas porque las estaciones ya están implementadas. Los dos amplificadores de voltaje que se muestran en la imagen se pueden obtener en el momento de escribir este artículo para el modelado aerodinámico y otras aplicaciones. Cuando rediseñé mi estación, estaba pensando en obtener una placa elevadora de voltaje más pequeña y eficiente, sin embargo, un tamaño más pequeño definitivamente no significa que sea más eficiente.

El nuevo módulo pequeño en la imagen que ni siquiera tiene un LED indicador en realidad drenó 3 mA (* FAIL *) por sí solo, así que me quedé con mi placa anterior:

PFM Control DC-DC USB 0.9V-5V a 5V dc Boost Módulo de fuente de alimentación elevadora

En el momento de escribir este artículo, este módulo todavía está disponible en Ebay por 99 centavos, pero si decide usar otro amplificador, siempre verifique el consumo de energía en espera. Con un amplificador de buena calidad no debería ser más que el mío (0,01 mA), aunque el pequeño LED a bordo tuvo que ser desoldado.

Paso 4: Lista de hardware

Lista de hardware
Lista de hardware
  • 18650 Placa de protección incorporada de batería recargable de iones de litio protegida de 6000 mAh
  • Atmega 328P16M 5V con cargador de arranque
  • Kit Adafruit DC Boarduino (compatible con Arduino) (con ATmega328) <esta será una buena inversión si está realizando futuros proyectos barebone
  • Foto resistor fotorresistor fotorresistencia fotosensible 5 mm GL5539
  • Diodo 1A 1000V 1N4007 IN4007 Diodos rectificadores DO-41
  • PFM Control DC-DC USB 0.9V-5V a 5V dc Boost Módulo de fuente de alimentación elevadora
  • 1.6W 5.5V 266mA Mini sistema de módulo de panel solar Cargador de celda epoxi DIY
  • TP405 5V Mini USB 1A Módulo de cargador de placa de carga de batería de litio
  • Kit de enlace de transmisor y receptor RF de 433 Mhz para control remoto Arduino / ARM / MC <Kit, contiene tanto el transmisor como el receptor
  • Caja de conexiones del protector del interruptor IP65 Caja impermeable al aire libre 150x110x70mm
  • Nuevo módulo de sensor de temperatura y humedad relativa DHT22 para Arduino
  • 1x220 ohmios, 2x10KOhm, 1xLED, 1xMini interruptor, 1x1N4007diode
  • Oscilador / Resonador Cerámico Adafruit de 16 MHz [ADA1873]
  • Arduino UNO / Mega, etc. para estación receptora + Raspberry PI 1/2/3
  • Caja de plástico acrílico transparente (opcional)

Puede encontrar todos estos en Ebay, no quiero promocionar a ningún vendedor mediante enlaces a sus páginas y los enlaces se perderán en el futuro de todos modos.

Notas para la lista de hardware:

En caso de que bloquee el Atmega de alguna manera con la programación, compre más de ellos, lo mismo ocurre con el amplificador de voltaje y el controlador de carga solar.

El cargador solar contiene 2 pequeños LED de color que solo se encienden en caso de carga solar e indican (rojo-> cargando, azul-> estados de carga completa). Estos también se pueden desoldar. Más bien le da un poco más de energía a la batería durante la carga.

Como ve, no hay portapilas en mi lista. ¿Por qué? Porque no son fiables. Tuve innumerables ocasiones en las que la batería se salió de su soporte y perdió la conexión. Especialmente si su configuración está montada en un poste de antena alto como el mío, abierto para condiciones climáticas adversas. Incluso coloqué la batería en el soporte con 2 cremalleras y aún así se las arregló para salir. No lo haga, simplemente retire el revestimiento externo de la batería y suelde los cables directamente en la parte inferior de la batería, que contiene el circuito de protección de sobrecarga (no omita la protección). Se puede usar un soporte de batería solo para mantener la batería en su lugar en el dispositivo.

Placa de carga de batería de litio TP405 5V Mini USB 1A: desafortunadamente esta placa no incluye protección de corriente inversa al panel solar, para esto necesitará 1 diodo más para ser colocado entre una pata del panel solar y el circuito de carga para detener el intento de corriente. para fluir de regreso al panel solar por la noche.

Paso 5: Montaje

Montaje
Montaje
Montaje
Montaje
Montaje
Montaje

Este tablero contiene relativamente pocos componentes y los marcadores en el tablero son bastante simples.

Asegúrese de NO insertar el Atmega328P de manera incorrecta (eso puede calentar y bloquear el chip, y también podría destruir el amplificador de voltaje).

En esta configuración, el chip está hacia abajo (pequeño orificio en U que marca el PIN1). Todos los demás componentes deberían ser obvios.

Utilice un cable blindado (por ejemplo: el cable de audio de CDrom funcionará bien) para el LDR. En algunos casos (durante muchas semanas de prueba) resultó que estaba interfiriendo con la transmisión de la señal de radio. Este fue uno de esos errores difíciles de solucionar, así que si no quiere problemas, simplemente use un cable blindado, fin de la historia.

LED: El LED en la parte inferior de la caja se agregó originalmente para parpadear cuando hay transmisión de radio saliente, pero luego lo he considerado como un desperdicio de energía y solo parpadea 3 veces en el proceso de inicio.

TP: es un punto de prueba para medir la corriente para todo el circuito.

DHT22: No compre el DHT11 barato, gaste 50 centavos más para obtener el DHT22 blanco, que también puede medir temperaturas negativas.

Paso 6: Diseño de la carcasa

Diseño de caso
Diseño de caso
Diseño de caso
Diseño de caso
Diseño de caso
Diseño de caso

Aunque es un poco exagerado, se hizo un cubo impreso en 3D (weather_cube) para mantener el sensor de temperatura DHT22 en su lugar. El cubo está pegado a la parte inferior de la caja IP, con solo 1 orificio para que el aire llegue al sensor. He agregado una red en el hoyo contra abejas, avispas y otras moscas pequeñas.

Opcionalmente, se puede usar una caja externa para hacer que la estación sea más impermeable en caso de que la esté montando en un poste para plato al aire libre.

Idea para 1 característica útil: agregar una gran placa de techo de metal de 1-2 cm en la parte superior de la caja que proporciona sombra del sol durante el verano, aunque esto también podría quitarnos la luz solar útil del panel. Puede crear un diseño que separe el panel y la caja (dejando el panel en el sol, la caja en la sombra).

En las imágenes: una de las estaciones se retiró del entorno de trabajo después de 1 año, el voltaje de la batería es impresionante de 3.9V aún, no hay daños por agua en ninguna parte de la caja, aunque la red que pegué en la parte inferior del cubo se rompió. La razón por la que la estación necesitaba mantenimiento es una falla de conexión en el conector LDR, aunque el cable de puente parecía estar todavía en su lugar, la conexión se rompió, por lo que el pin a veces flotaba y proporcionaba lecturas analógicas de LDR incorrectas. Sugerencia: si utiliza cables de puente de PC estándar, péguelos todos después de que la estación funcione perfectamente para evitar esto.

Paso 7: software

Software
Software

El código de software requerirá 3 bibliotecas externas (LowPower, DHT, VirtualWire). Últimamente tuve problemas para encontrar algunos de ellos fácilmente en línea, así que los adjunto en un archivo ZIP separado. Independientemente del sistema operativo que esté usando Linux / Windows, simplemente busque la carpeta de la biblioteca de su Arduino IDE y extráigala allí.

Solo una nota, independientemente de que ya desaconseje comprar el DHT11, si usa el tipo incorrecto de sensor DHT, el programa simplemente se bloqueará para siempre al principio en la sección de inicialización (ni siquiera verá el LED de inicio parpadear 3 veces).

El código del bucle principal es muy simple, primero lee los valores del entorno (temperatura, índice de calor, humedad, solar), los envía por radio y luego usa la biblioteca de baja potencia para poner el Arduino en suspensión durante 5 minutos.

He descubierto que reducir la velocidad en baudios aumentará la estabilidad de las transmisiones de radio. La estación está enviando una cantidad muy pequeña de datos, 300 bps es más que suficiente. Además, no olvide que el transmisor solo funciona desde aprox. 4.8V, en la futura versión de 3.3V, esto podría conducir a una calidad de transmisión aún peor (enviar datos a través de paredes y otros obstáculos). Me encuentro con un problema al usar un Arduino Mega conectado a una Raspberry PI 2 que alimenta el Mega desde el PI, que no recibí ninguna transmisión. La solución fue alimentar el Mega desde una fuente de 12V externa separada.

Paso 8: Versión 2 (basado en ESP32)

Versión 2 (basado en ESP32)
Versión 2 (basado en ESP32)
Versión 2 (basado en ESP32)
Versión 2 (basado en ESP32)
Versión 2 (basado en ESP32)
Versión 2 (basado en ESP32)

Todo lo que pueda romperse se romperá para citar al bueno de Murphy y, finalmente, después de años, las estaciones fallaron por caminos misteriosos. Uno comenzó a enviar datos solares galimatizados que subieron a decenas de miles, lo cual es imposible debido a: La placa Arduino contiene un convertidor de 10 bits analógico a digital de 6 canales (8 canales en el Mini y Nano, 16 en el Mega). Esto significa que mapeará voltajes de entrada entre 0 y 5 voltios en valores enteros entre 0 y 1023. Entonces, después de reemplazar la radio, el LDR y reprogramar el Atmega 328P varias veces, me rendí y decidí que era hora de innovar. Vamos a ESP32.

La placa que utilicé fue una: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

Microcontrolador ESP-32

Voltaje de funcionamiento 3.3V Pines de E / S digitales 19 Pines de entrada analógica 6 Velocidad de reloj (máx.) 240Mhz Flash 4M bytes Longitud 5 mm Ancho 2.54 mm Peso 4g

Que a diferencia de la de la foto no tiene el logo de LOLIN (falsificación de China). Mi primera sorpresa agradable fue que el pinout impreso en la placa coincidía con el pinout de Arduino. Después de lidiar con tantos tableros sin nombre donde tuve que buscar pinouts todo el día, cansado de cometer errores, finalmente un tablero donde el pinout es sencillo ¡WoW!

Sin embargo, aquí está el lado oscuro de la historia:

Inicialmente, conecté el LDR a A15, que es el pin 12 porque era más fácil unir los pines en caliente. Luego obtuve 4095 lecturas (que es el máximo que puede obtener con AnlogRead en el ESP32) que me volvió loco porque la razón por la que reconstruí la estación fueron las lecturas de LDR rotas de la anterior (el DHT todavía funcionaba bien). Entonces resulta que:

El esp 32 integra dos registros ACD de 12 bits. ADC1 con 8 canales conectados a GPIO 32-39 y ADC2 con 10 canales en otros pines. El caso es que el ESP32 usa el ADC2 para administrar las funciones wifi, por lo que si usa Wifi, no puede usar ese registro. La API del controlador ADC admite ADC1 (8 canales, conectados a GPIO 32-39) y ADC2 (10 canales, conectados a GPIO 0, 2, 4, 12-15 y 25-27). Sin embargo, el uso de ADC2 tiene algunas restricciones para la aplicación:

ADC2 es utilizado por el controlador de Wi-Fi. Por lo tanto, la aplicación solo puede usar ADC2 cuando el controlador de Wi-Fi no se ha iniciado. Algunos de los pines ADC2 se utilizan como pines de sujeción (GPIO 0, 2, 15), por lo que no se pueden utilizar libremente. Tal es el caso de los siguientes kits de desarrollo oficiales:

Entonces, conectar el LDR del pin 12 al A0, que es el VP, resolvió todo, pero no entiendo por qué incluso enumeran los pines ADC2 como disponibles para los fabricantes. ¿Cuántos otros hobbist perdieron toneladas de tiempo hasta descubrir esto? Al menos marque los pines inutilizables con rojo o algo así o no lo mencione en el manual para que otros fabricantes solo puedan averiguar sobre ellos si realmente los necesitan. El propósito del ESP32 es usarlo con WIFI, todos lo usan con WIFI.

Un buen comienzo sobre cómo configurar el IDE de Arduino para esta placa:

Aunque lo puse en el código aquí va una vez más:

¡Es posible que este código no se compile para otros modelos ESP32 que no sean Weemos LOLIN 32!

Configuraciones de construcción: -Utilice upload / serial: 115200 -Use CPU / ram: 240Mhz (Wifi | BT) -Utilice flash freq: 80 Mhz

Hay toneladas de estaciones meteorológicas basadas en ESP32 en la red, son mucho más comunes que mi versión 1 con el chip barebone porque son más fáciles de configurar, no necesita un programador, solo conecte el dispositivo en usb y lo programe y su El modo de suspensión profunda es excelente para funcionar durante mucho tiempo con la batería. De buenas a primeras, esto fue lo primero que probé incluso antes de soldar los pines de ruptura porque, como noté en varios lugares en este proyecto, lo MÁS importante es el consumo de energía y con la batería actual (falsa) y el pequeño panel solar el modo de espera. la energía no puede superar los 1-2 mA, de lo contrario, el proyecto no podrá sostenerse a largo plazo.

Fue una agradable sorpresa nuevamente que el modo de sueño profundo funcione como se anuncia. Durante el sueño profundo, la corriente era tan baja que mi multímetro barato ni siquiera podía medirla (funciona para mí).

Durante el envío de datos, la corriente era de alrededor de 80 mA (que es aproximadamente 5 veces más que cuando el Atmega 328P se estaba despertando y transmitiendo), sin embargo, no olvide que con el V1 hubo un consumo de energía promedio de 1 mA en el LDR en modo de suspensión (que también dependía de los niveles de luz y pasó de 0.5mA - 1mA) que ahora se ha ido.

Ahora que la batería UltraFire está desacreditada si usa la misma batería, esto es lo que puede esperar:

Iavg = (Ton * Ion + Tsleep * Está durmiendo) / (Ton + Tsleep)

Iavg = (2s * 80mA + 300s * 0.01mA) / (2s + 300s) Iavg = 0.5mA

Pavg = VxIavg = 5Vx0.5mA = 2.5 mW

Teórico

Duración de la batería = 22000 mWh / 2,5 mW = 8800 horas = 366 días aproximadamente

Verdadero

Duración de la batería = 800 mWh / 2,5 mW = 320 horas = 13 días aproximadamente

No tenía un alcance para medir con precisión el tiempo de encendido, pero con mis ajustes alcanza un máximo de 2 segundos.

No quería pasar la tarde codificando todo de forma personalizada, así que busqué otras estaciones meteorológicas en Instructables basadas en ESP32 para ver qué hacen para el almacenamiento de datos. Lamentablemente, notaron que están usando sitios inflexibles y limitados como weathercloud. Como no soy fanático de la "nube" y su código se rompió hace mucho tiempo porque el sitio ha cambiado su API desde entonces, me he tomado mis 10 minutos para crear una solución personalizada porque no es tan difícil como uno podría pensar. ¡Empecemos!

En primer lugar, no hay una imagen de placa de circuito por separado para este proyecto, porque usa exactamente los mismos componentes (lo siento por eso soldado en una imagen de placa fea) que el V1 con la diferencia de que todo funciona con 3.3V. El DHT se conectó con un pullup a VCC, el LDR tiró hacia abajo con un 10k. El problema que uno podría ver con las baterías 18650 como mi falso chino (6500 mAh ultra sun fire lol: D) es que comienzan la curva de descarga desde alrededor de 4.1V new age y continúan hasta que su circuito de corte se activa para detener el daño celular (los que tienen la suerte de tenerlo). Esto no es bueno para nosotros como entrada de 3.3V. Aunque esta placa LOLIN tiene un conector de batería de litio y un circuito de carga en este proyecto, quería restaurar la mayor parte de lo que pude de la estación anterior, por lo que con el antiguo 18650 NO PUEDE usar este cargador incorporado. La solución fue muy simple: corté un cable micro USB soldado a los 5V del antiguo amplificador de voltaje y listo, el problema se resolvió, ya que la placa del microUSB tiene regulador.

Entonces, la diferencia entre la versión antigua y la nueva que en la batería vieja proporciona 3.7V -> aumentada a 5V -> ardu funciona con 5V -> todos los componentes funcionan con 5V.

En el nuevo: la batería proporciona 3.7V -> aumentada a 5V -> regulada a través del registro a bordo en ESP32 -> todos los componentes funcionan con 3.3V.

En cuanto al software, también necesitaremos otra biblioteca DHT, el DHT de Arduino no es compatible con el ESP. Lo que necesitamos se llama DHT ESP.

Comencé a basar mi código en el ejemplo de DHT que proporcionaba este código. El funcionamiento del código es:

1, obtenga los datos ambientales de los datos solares DHT + de la fotocélula

2, conéctese a wifi con IP estática

3, PUBLICAR los datos en un script php

4, ve a dormir durante 10 minutos

Como notará, ajusté el código por eficiencia para minimizar absolutamente el tiempo de activación, ya que está consumiendo 5 veces más energía que el proyecto anterior cuando está encendido. ¿Cómo hice esto? En primer lugar, si hay CUALQUIER tipo de error, la función getTemperature () regresará con falso (lo que significa 10 minutos de suspensión de nuevo). Esto puede ser como si el sensor DHT no se pudiera iniciar o la conexión wifi no estuviera disponible. Como puede notar, el bucle usual while () para seguir intentando la asociación wifi para siempre también se eliminó, pero se debe dejar un retraso de 1 segundo allí, de lo contrario, no siempre se conectará y también depende del tipo de AP, carga, etc., qué tan rápido sucederá, con 0.5s obtuve un comportamiento inconsistente (a veces no se pudo conectar). Si alguien conoce una mejor manera de hacer esto, déjelo en los comentarios. Solo cuando se lean los datos DHT Y la conexión wifi esté activa, intentará publicar los datos en el script en el servidor web. Todo tipo de funciones de pérdida de tiempo como Serial.println () también están deshabilitadas en el modo operativo normal. Como servidor, también utilizo IP para evitar una búsqueda de DNS innecesaria, en mi código tanto la puerta de enlace predeterminada como el servidor dns están configurados en 0.0.0.0.

No entiendo por qué es tan difícil crear su propia API cuando todo lo que se necesita es:

sprintf (respuesta, "temp =% d & hum =% d & hi =% d & sol =% d", temp, hum, hi, sol);

int httpResponseCode = http. POST (respuesta);

Pones este pequeño código php en cualquier raspberry pi y puedes hacer tareas del sistema () de inmediato según la telemetría, como encender ventiladores o encender las luces si oscurece lo suficiente.

Algunas notas sobre el código:

WiFi.config (IP estática, puerta de enlace, subred, dns); // DEBE ser después de que Wifi comience, qué tonto …

Modo WiFi (WIFI_STA); // DEBE de lo contrario también creará un AP no deseado

Sí, bueno, ahora lo sabes. Además, el orden de las configuraciones de IP puede cambiar a través de las plataformas, primero probé otros ejemplos en los que se cambiaron los valores de la puerta de enlace y la subred. ¿Por qué establecer una IP estática? Bueno, es bastante obvio, si tiene una caja dedicada en su red como un servidor linux que ejecuta isc dhcpd, no querrá cien millones de entradas de registro cuando el ESP se active y obtenga la IP del DHCP. Los enrutadores normalmente no registran asociaciones, por lo que no se verán. Este es el precio del ahorro de energía.

V2 nunca pudo sostenerse debido a la mala calidad de la batería y simplemente lo puse en un adaptador, así que si desea construir el V1 o el V2 NO compre la batería mencionada, haga su propia investigación sobre baterías (cualquier 18650 más de 2000 mAh de capacidad anunciada en Ebay es una estafa con una alta probabilidad).

Recomendado: