esp32에 전압 측정 모듈 달기
소스
/*************************************************************
Download latest Blynk library here:
https://github.com/blynkkk/blynk-library/releases/latest
Blynk is a platform with iOS and Android apps to control
Arduino, Raspberry Pi and the likes over the Internet.
You can easily build graphic interfaces for all your
projects by simply dragging and dropping widgets.
```
Downloads, docs, tutorials: http://www.blynk.cc
Sketch generator: http://examples.blynk.cc
Blynk community: http://community.blynk.cc
Follow us: http://www.fb.com/blynkapp
http://twitter.com/blynk_app
```
Blynk library is licensed under MIT license
This example code is in public domain.
------
This example shows how value can be pushed from Arduino to
the Blynk App.
NOTE:
BlynkTimer provides SimpleTimer functionality:
http://playground.arduino.cc/Code/SimpleTimer
App project setup:
Value Display widget attached to Virtual Pin V5
*************************************************************/
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
#define WATER_SENSOR 33
#include <wifi.h>
#include <wificlient.h>
#include <blynksimpleesp32.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "ce6f280fc4754016a69003194d38db20";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "MSJC";
char pass[] = "25802580";
BlynkTimer timer;
// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void myTimerEvent()
{
// You can send any value at any time.
// Please don't send more that 10 values per second.
int state=0;
state=analogRead(WATER_SENSOR);
Blynk.virtualWrite(V5, state);
Serial.print("Voltage : ");
Serial.println(state);
int val01, val02;
float TEMP;
val01 = analogRead (WATER_SENSOR);
TEMP = val01 / 4.092;
val01 = (int) TEMP;
val02 = ((val01 % 100) / 10);
Blynk.virtualWrite(V6, val02);
Serial.println (val02);
Serial.print("V");
Serial.println();
}
void setup()
{
// Debug console
Serial.begin(9600);
pinMode(WATER_SENSOR, INPUT);
Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
// Setup a function to be called every second
timer.setInterval(1000L, myTimerEvent);
}
void loop()
{
Blynk.run();
timer.run(); // Initiates BlynkTimer
}
문제점
근데 측정값이 조금 이상하다. 아두이노와 볼트값이 맞지 않아서 생기는 문제인지 확인해봐야할 듯.
검토
영문 자료를 검색해봐도 esp32 와 같은 3.3v 시스템에 딱 맞는 값이 나오지 않는다. 개별 전압값과 센서에 찍히는 값을 봤더니 대충 선형관계가 나온다. 방정식을 역산했더니, 나오는 수식은,
float VBAT = ((0.3954f) * float(analogRead(33)) + 103.08f)/100.0f; </blynksimpleesp32.h></wificlient.h></wifi.h>
아쉽게도 이것도 근사치일 뿐, 정확하게 나오지 않는다. 대충 때려맞춰야 할 듯.