초보자를 위한 “아두이노 weMos D1 와이파이 코딩으로 가변저항 전압 ThingSpeak 그래픽 처리”
사물인터넷 싸이트인 ThingSpeak에 전압 데이터를 보내 그래프를 작성해 보도록 하자. 전압 데이터는 가변저항을 사용하여 손잡이를 돌려 변동되는 저항 값에 따라 발생되는 전압을 15초 간격으로 ThingSpeak 에 전송하기로 한다. NodeMCU 와이 차이점을 구태여 지적한다면 NodeMCU 에서는 사용전압이 3,3V 이지만 weMos에서는 5V도 사용이 가능하다는 점이다.
ThingSpeak 싸이트를 이용을 위한 무료회원 가입 절차는 아래의 싸이트를 참조하기 바란다.
4-4 아두이노 Cactus ESP8266WiFi 보드 Thingspeak 웹서버 예제: I 아날로그 입력 데이터 생성 및 Thingspeak 전송 및 그래프 작성 99
http://blog.daum.net/ejleep1/305
4-5 아두이노 Cactus Micro ESP8266WiFi 클라이언트 Thingspeak 웹서버 코딩: II 106
http://blog.daum.net/ejleep1/306
weMos에서 사용할 코드는 아두이노 NodeMCU에서 사용하였던 코드를 약간의 수정 후 사용하기로 한다. 단 컴파일 및 업로딩 시 반드시 weMos(Retired) 보드를 지정하도록 유의하자.
아래의 싸이트 정보를 참조하기 바란다.
4-7 ESP8266WiFi NodeMCU 12E WiFi 모듈사용 ThingSpeak 전압데이터 전송:II
http://blog.daum.net/ejleep1/307
15초 간격으로 데이터를 송신하므로 여유있게 가변 저항 손잡이를 돌릴 수 있다.
세로 눈금이 전압(Volt) 값을 그냥 0∼1024로 출력하였기 때문에 ThinSpeak 상단의 연필 아이콘을 클릭하여 높이를 0∼1500 으로 설정하기 바란다.
weMos_thingspeak_resistor_01
#include <ESP8266WiFi.h>
#define myPeriodic 15 //in sec | Thingspeak pub is 15sec
const char* server = "api.thingspeak.com";
String apiKey = "0XKP29L3W0DXYFSP";//반드시 ThingSpeak에서 받은 자신의 API 키 값을 입력하세요.
const char* MY_SSID = "android1234"; //반드시자신의 무선 공유기 ID를 입력하세요.
const char* MY_PWD = "dddddddddd"; //반드시자신의 무선 공유기 비밀번호를 입력하세요.
int sent = 0;
void setup() {
Serial.begin(115200);
connectWifi();
}
void loop() {
float volt;
//char buffer[10];
volt = analogRead(0);
//String voltC = dtostrf(volt, 4, 1, buffer);//handled in sendvolt()
Serial.print(String(sent)+" Volt: ");
Serial.println(volt);
sendVoltVS(volt);
int count = myPeriodic;
while(count--)
delay(1000);
}
void connectWifi()
{
Serial.print("Connecting to "+*MY_SSID);
WiFi.begin(MY_SSID, MY_PWD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected");
Serial.println("");
}//end connect
void sendVoltVS(float volt)
{
WiFiClient client;
if (client.connect(server, 80)) { // use ip 184.106.153.149 or api.thingspeak.com
Serial.println("WiFi Client connected ");
String postStr = apiKey;
postStr += "&field1=";
postStr += String(volt);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
delay(1000);
}//end if
sent++;
client.stop();
}//end send