메뉴 건너뛰기

정보자료게시판

장비/디자인/구조

esp32에 전압 측정 모듈 달기

by 라키 posted Sep 07, 2018
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

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&#39;s up time every second to Virtual Pin (5).
// In the app, Widget&#39;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&#39;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>

아쉽게도 이것도 근사치일 뿐, 정확하게 나오지 않는다. 대충 때려맞춰야 할 듯.

 

 

 


위로