[embedded] - 태양광 충전 테스트(WEMOS)
일전에 태양광을 이용한 온습도 측정기를 만들었었는데
결국 보드가 나가버렸는지 동작을 하질않아
배터리를 교체하고 충전테스트를 진행해보기로했다
기존 소켓형 배터리를 제거하고
드론에 사용하는 3.7v 배터리로 교체하는 작업을 진행했는데 사진을 찍질 않았다
덤으로 wemos r1 mini 보드도 제거해버렸다
소스 업로드는 되는데 정작 시리얼로 로그를 확인해봐도 동작을 안해서 이다
덤으로 D0 <-> RST 연결을 해도 보드 리셋을 하질 않으니 ...
WEMOS 보드가 있던자리가 비어있고
배터리가 바뀐 모습
덤으로 눈으로 확인하기 위해 녹색 LED를 배터리에 연결했다
한밤중에도 잘 켜있다
일단 방전을 위해 하루동안 밖에 방치했는데 LED 전원소모가 적어서 그런지...
꺼지는 모습을 보질 못해서 강제로 방전 시키고 야외에 두니
다음날에도 켜있었다
한마디로 충전이 잘된다는 소리
덤으로 WEMOS 센서를 제공해주셨던 분께 다시 보드를 받아서 온습도(DHT22) 를 연결하고
선물로 통채로 드렸다
만난자리에서 납땜하고 코딩한건 안자랑
베란다에 놓으셨다는데 8시까지는 배터리로 동작하고(충전된 전력)
11시 부터는 태양광로 동작하는듯 하다(충전과 보드동작)
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <BlynkSimpleEsp8266.h >
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <Arduino.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
ESP8266WiFiMulti WiFiMulti;
const char auth[] = "Blynk_Key";
const char ssid[] = "WIFI_SSID";
const char pass[] = "WIFI_PASSWORD";
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 5 //digtal ~5 pin
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
Blynk.begin(auth, ssid, pass);
while (Blynk.connect() == false) {
// Wait until connected
}
Blynk.notify("Hardware is just connected!");
}
void loop() {
float h = dht.readHumidity(); //습도
float t = dht.readTemperature(); //온도
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Blynk.run(); //get and print temperatures
Serial.print("Temp: ");
Serial.print(t);
Serial.println("C");
Blynk.virtualWrite(V0, t); // virtual pin 0
Serial.print("Humidity: ");
Serial.print(h);
Serial.println("%");
Blynk.virtualWrite(V1, h); // virtual pin 3
Serial.println(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
String url = "http://api.thingspeak.com/update?api_key=Thingspeak_API_KEY";
String param = "&field1=" + String(t) + "&field2=" + String(h);
WiFiClient client;
HTTPClient http;
Serial.print("[HTTP] begin...\n");
if (http.begin(client, url + param)) { // HTTP
Serial.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
} else {
Serial.printf("[HTTP} Unable to connect\n");
}
//5 min(d0 <-> rst)
ESP.deepSleep(5 * 60 * 1000000); // deepSleep time is defined in microseconds.
}
HTTPClient 예제와 Blynk 예제를 섞어서 대충만들었는데
잘동작하는것 같다
시간될때 소스를 좀 다듬어 볼까한다
그리고... 다시 선물로 받은 NODEMCU 보드와 태양광 패널..
NODEMCU+BME280 기압센서로...
다시 날씨스테이션을 만들어 드리기로 했다...
댓글 영역