Remote Solar Charging Weather Station Arduino Santiapps

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Estación Ambiental Solar: Parte II

Ahora que tenemos nuestra fuente de poder podemos armar nuestra unidad de muestreo.  Esta se encargará de tomar las mediciones y por ende necesitará autonomía energética.  Aquí también veremos el uso de la librería LowPower, la cual nos ayudará a ahorrar energía mientras la unidad no este maestreando.  Es decir, la mayoría de las veces solo tenemos que muestrear 1 o 2 veces cada hora.  El resto del tiempo podemos reducir la cantidad de energía consumida ya que no es necesario alimentar todos los componentes.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO & Nano
  3. Battery LiPo
  4. Modulo Carga Solar USB-LiPo
  5. DC-DC Booster
  6. DHT11
  7. Modulo RF 433MHz(Rx/Tx)
  8. 2 Breadboards
  9. LCD 16×2
  10. Arduino IDE (https://www.arduino.cc/en/Main/Software)

En la edición anterior armamos nuestra Unidad de Carga.  Ahora veamos la Unidad que recopilará y enviará los datos muestreados.

Unidad de Muestreo:

  • Arduino UNO – Nano
  • DHT11
  • Tx RF de 433MHz para transmisión de datos

La Unidad de Muestreo estará a cargo de tomar las muestras y reportarlas via RF a la Unidad Central.  Esta es sencilla y podemos hacerla en una breadboard asi:

Arduino Tutorial Nano Transmision RF 433MHz DHT11 Santiapps Marcio Valenzuela
Arduino Tutorial Nano Transmision RF 433MHz DHT11

El código para muestra y transmitir llevará un bloque especial para ahorrar energía.  Usaremos una librería llamada el LowPower Library que esta disponible en GitHub:

GitHub

Se usa mas o menos asi:

#include “LowPower.h” // importar la libreria
int led = 13; // Para ilustrar
void setup() {
pinMode(led, OUTPUT);
}
void loop()  {
digitalWrite(led, HIGH); //Encendemos la LED
LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF); // en lugar de delay(1000) ;
digitalWrite(led, LOW); //Apagamos la LED
LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF); // en lugar de delay(1000) ;
}

Veamos el codigo de muestrear y transmitir los datos usando esta librería.  El muestreo se hace así:

[code]
// Envío de Datos y Dormir Modulo
#include <VirtualWire.h>
#include “LowPower.h”
#include “DHT.h”
#define DHTPIN 8 // Pin para el DHT11
#define DHTTYPE DHT11 // Objeto DHT 11
DHT dht(DHTPIN, DHTTYPE);
int ledPin = 13;
char Msg[30];// Para el string que enviaremos por el RF
void setup(){
dht.begin(); // initializar el DHT11
pinMode(ledPin,OUTPUT);
// VirtualWire
vw_setup(2000); // Bits por seg
vw_set_tx_pin(12);// Settear Tx pin. Default es 12
Serial.begin(19200);
}
void loop() {// Leer y almacenar data
int humidity = dht.readHumidity();
int temp = dht.readTemperature();
int f = dht.readTemperature(true);
int hi_f = dht.computeHeatIndex(f,humidity); //Indice calor en F
int heat_index =(hi_f-32)*5/9; // conversión a C
sprintf(Msg, “%d,%d,%d”, humidity,temp ,heat_index);
// Encender LED para mostrar Tx
digitalWrite(ledPin, HIGH);
delay(100);
Serial.print(“About to send message”);
vw_send((uint8_t *)Msg, strlen(Msg));
//print message
Serial.print(“The message is”);
Serial.print(Msg);
vw_wait_tx(); // Esperar hasta que todo el string se transmita
// Apagar luz después de transmision
digitalWrite(ledPin, LOW);
Serial.print(“Message sent!”);
// Dormir durante 5 minutos
// As low power library support maximum 8s ,we use for loop to take longer (5mins) sleep
// 5×60=300
//300/4=75
for(int i=0;i&lt;75;i++){
LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF); // En lugar de delay(4000);
}
}[/code]

La unidad se ve así:

Arduino Tutorial Carga Solar RF Transmision de Datos Santiapps Marcio Valenzuela
Arduino Tutorial Carga Solar RF Transmisión de Datos

En la siguiente parte cubriremos la Rx y platicaremos sobre cubrir necesidades energéticas de nuestros módulos.

Leave a Reply