151_IoT클라우드_ThingSpeak_실시간센서대시보드 ☁️📈

도로시와 지니가 함께하는 센서 빅데이터 클라우드 로깅과 실시간 인터랙티브 온라인 차트 대시보드 구축
- 👧 도로시: “지니야! 아두이노 시리얼 플로터는 컴퓨터를 끄면 그래프가 다 날아가버리잖아. 며칠 동안 낮과 밤의 기온 변화를 인터넷 구름(Cloud)에 24시간 안전하게 기록하고, 언제 어디서나 스마트폰으로 그래프를 볼 순 없을까?”
- 🐱 지니: “그게 바로 글로벌 빅데이터 연구에 쓰이는 대표적인 오픈 IoT 클라우드 플랫폼, 씽스피크(ThingSpeak) 란다! 전 세계 메이커와 연구원들이 센서 데이터를 무료로 클라우드에 보관하고, 실시간 그래프와 게이지 위젯으로 공유하는 최고의 도구지!”
-
🐶 토토: “바우! 온도가 오르내리는 물결이 화면에 착착 그려진다 멍!”
- 🖥️ 강의 슬라이드: slides.md
1. IoT 클라우드와 ThingSpeak의 핵심 구조

[ 우리 집 ESP32 센서 ] [ ThingSpeak IoT 클라우드 ] [ 사용자 (어디서나) ]
──────────────────────────────────────────────────────────────────────────────────────────────────
온도: 24.5 ℃ ──(15초 주기 HTTP GET)──▶ [ Channel #2389104 ] 스마트폰 웹 브라우저
습도: 58 % - Field 1: Temperature ──(실시간 차트)─▶ PC 태블릿 대시보드
- Field 2: Humidity 친구/가족 공유 URL
- 채널(Channel): 내 센서 장치를 등록하는 데이터 보관소
- 필드(Field 1~8): 채널 안에서 최대 8개까지 독립된 센서 값(온도, 습도, 미세먼지 등)을 개별 저장
- Write API Key: 외부에서 허가받지 않은 침입자가 내 채널에 가짜 데이터를 쓰지 못하게 막는 16자리 암호 보안 키
2. 무료 계정 생성 및 채널 개설 3단계
- ThingSpeak 웹사이트(thingspeak.com) 접속 및 무료 회원가입 (MathWorks 계정)
Channels➔New Channel클릭:- Name:
Dorothy Smart Makerspace - Field 1:
Temperature(온도) - Field 2:
Humidity(습도) - 하단 [Save Channel] 버튼 클릭!
- Name:
API Keys탭 확인:Write API Key(예:A1B2C3D4E5F6G7H8)를 복사해둡니다.
3. 라이브러리 설치
아두이노 IDE [라이브러리 관리자]에서 ThingSpeak (by MathWorks)를 검색하여 설치합니다.
4. 실습: ESP32 + 온습도 센서 클라우드 자동 업로드
#include <WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
WiFiClient client;
// ThingSpeak 채널 정보 (본인의 채널 번호와 Write API 키 입력!)
unsigned long myChannelNumber = 2389104;
const char* myWriteAPIKey = "A1B2C3D4E5F6G7H8";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("
Wi-Fi Connected!");
ThingSpeak.begin(client); // ThingSpeak 클라이언트 초기화
}
void loop() {
// 실제 센서 값(DHT11 등) 또는 실습용 시뮬레이션 데이터
float temp = 23.5 + random(-20, 30) / 10.0;
int humidity = 55 + random(-10, 15);
// Field 1과 Field 2에 데이터 세팅
ThingSpeak.setField(1, temp);
ThingSpeak.setField(2, humidity);
// 클라우드로 일괄 전송!
int httpCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (httpCode == 200) {
Serial.println("✅ [클라우드 업로드 성공] 온도: " + String(temp) + "C, 습도: " + String(humidity) + "%");
} else {
Serial.println("❌ 업로드 실패! 에러 코드: " + String(httpCode));
}
// ThingSpeak 무료 정책상 최소 15초 이상의 업로드 간격 필수!
delay(20000); // 20초마다 주기적 업데이트
}
5. 대시보드 위젯 꾸미기와 공개(Public) 공유
- 위젯 추가(Add Widgets):
- 채널 화면에서 [Add Widgets] 클릭 후 Gauge(원형 계측기) 또는 Numeric Display(숫자 디스플레이) 선택
- 초록-노랑-빨강 색상 구간을 지정하여 위험 온도 경보 비주얼 완성
- 공개 뷰(Sharing):
Sharing탭에서Share channel view with everyone을 선택하면 나만의 실시간 환경 모니터링 웹 사이트 URL 생성!
🌟 도로시와 지니의 핵심 요약 노트!

- 👧 도로시: “스마트폰으로 링크에 접속했더니 내가 만든 온습도 꺾은선 차트가 실시간으로 움직여! 이제 집 밖에서도 언제든 연구실 환경을 감시할 수 있어!”
- 🐱 지니: “훌륭해! 센서 데이터를 축적하면 계절별 변화나 이상 징후를 예측하는 진정한 빅데이터 AIoT로 발전할 수 있단다.”
- 🐶 토토: “바우! 이제 긴급 상황이 터지면 스마트폰 메신저로 삐뽀삐뽀 알림을 쏴주는 ‘152_스마트폰_텔레그램봇’으로 출동하자 멍!”
서브목차