이번엔 ThingSpeak를 활용해 웹페이지에 조도센서 값을 기록하는 프로그램을 만들어보겠습니다.
thingspeak는 데이터를 저장하거나 분석하는데 사용할 수 있는 유용한 웹 서비스로, 소규모 프로제그에 한해 무료로 이용할 수 있는 서비스입니다.
아두이노와 thingspeak를 함께 사용하기 위해서는 아두이노IDE에서 ThingSpeak 라이브러리를 설치해야합니다.
ThingSpeak 회원가입 및 서비스 설정
1. 구글에서 thingspeak를 검색해 메인페이지에 접속한 다음, 우측 상단의 계정(sign in) 아이콘을 클릭합니다.
2. 계정 생성 및 로그인
3. 로그인 후 [Channels]탭에서 [My Channels]로 이동하고, 초록색 [New Channel] 버튼을 클릭해 채널을 생성합니다.
4. 채널 생성 시에는 이름과 필드를 지정해주어야 합니다. 지정 후에는 스크롤을 내려 [Save Channel]을 클릭해주세요.
5. 아두이노와 연결하기 위해서 필요한 정보는 두가지입니다. 첫번째는 채널 이름 밑에 표시되는 [Channel ID)이고,
두번째는 [API Keys]탭에서 확인할 수 있는 API Key입니다.
이제 아두이노 프로그램과 연결할 준비는 끝났으니 프로그램을 작성해보겠습니다.
먼저 조도센서를 사용한 회로 구성은 아래와 같습니다.
마찬가지로 아두이노 WIFI ESP8266 D1R1 보드를 사용했습니다.
/*
thingspeak은 데이터를 저장하거나 분석하는데
사용할 수 있는 유용한 웹 서비스입니다.
소규모 프로젝트에 한해 무료로 이용할 수 있는 서비스입니다.
아두이노에서 사용하려면 라이브러리 매니저에서 ThingSpeak을 설치해야 합니다.
*/
// 아두이노로 thingspeak에 데이터 기록하기
#include <ESP8266WiFi.h>
#include "ThingSpeak.h"
#define CDS_PIN A0
const char *ssid = "yangminseok";
const char *password = "04160416";
WiFiClient client;
// ThingSpeak ID, Key 입력
unsigned long myChannelNumber = 2300068;
const char * myWriteAPIKey = "O5M2WE35W0A9WO1J";
void setup(){
Serial.begin(9600);
Serial.print("Connecting to ");
Serial.print(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected IP address: ");
Serial.println(WiFi.localIP());
ThingSpeak.begin(client);
}
void loop() {
int x = ThingSpeak.writeField(myChannelNumber, 1, analogRead(CDS_PIN), myWriteAPIKey);
if(x == 200){
Serial.println("Channel update successful.");
}
else{
Serial.println("Problem updating channel. HTTP error code" + String(x));
}
delay(20000); // 무료 계정의 경우 15초에 한 번 데이터를 쓸 수 있음
}
코드를 실행시키면 아래와 같이 조도센서의 값을 20초마다 시각화할 수 있습니다.