WiFi 가 내장 된 Cactus Micro 모듈 을 사용 하 여 사물 인터넷 사이트 인 ThingSpeak 사이트 에 데이터 를 전송 하 여 이미 준비 된 형태 의 실시간 그래프 를 작성 하 였 다 . 이번 예제 에서 는 마찬가지 로 WiFi 모듈 이 내장 되 어 있 는 NodeMCU 모듈 에 가변저항 을 사용 하 여 0 ∼ 1023 의 정수 값 형태 의 범위 를 가지 는 아날로그 전압 을 생성 하 여 ThingSpeak 사이트 에 전송 하 여 그래프 를 작성 하 도록 할 것 이 다 . 이번 에 도 그림 에서 처럼 NodeMCU 의 3 V 3 과 GND 에 가변저항 의 양단 을 연결 하 고 가변저항 의 중앙 입력 단 을 NodeMCU 의 아날로그 입력단 A 0 에 연결 하 여 3 . 3 V 범위 의 전압 값 을 정수 값 0 에서 1023 로 변환 하 도록 한다 . 앞 블로그 에서 지적 했 듯이 아두이노 NodeMCU 의 유일 한 아날로그 입력 단 A 0 의 위치 를 파악 하 여 배선 하 도록 한다 . 이미 Cactus Micro WiFi 프로젝트 에서 ThingSpeak 사이트 의 API 키 를 부여 받 은 상태 라면 다음 에 제시 된 프로그램 을 컴파일 하 여 업 로딩 함 으로서 직접 결과 를 관찰 할 수 있 을 것 이 다 . 그렇 치 않 은 독자 의 경우 에 는 최근 에 본 블로그 에 게재 된 다음 의 세 가지 를 반드시 참고 하 기 바란다 . 비록 NodeMCU 보드 를 사용 하 여 ThingSpeak 에 데이터 를 올리 고 그래프 를 작성 하 는 작업 이 어느 정도 내용 을 아 는 분 이 라면 지극히 쉬운 일 이나 특히 디지털 IT 분야 의 프로젝트 의 특성 상 대단히 간단 한 것 들 을 사전 인지 하 지 못하 거나 준비 가 되 지 않 으면 본인 실력 과 는 무관 하 게 프로젝트 를 망치 기 십상 이 기 때문 이 다 . 1 . 아두이노 NodeMCU ESP 8266 WiFi 웹 서버 예제 : 아날로그 입력 데이터 생 성 및 전송 데이터 핀 구조 , 아날로그 입력 핀 A 0 및 가변저항 설치 2 . 아두이노 NodeMCU ESP 8266 WiFi 모듈 의 핀 배치 프로그래밍 주 의 사항 NodMCU 보드 의 데이터 핀 구조 특성 설명 3 . 아두이노 Cactus ESP 8266 WiFi 보드 Thingspeak 웹 서버 예제 : I 아날로그 입력 데이터 생 성 및 Thingspeak 전송 및 그래프 작성 ThingSpeak 회원 가입 및 Private 탭 에서 의 그래프 사용 요령 프로그램 구조 는 앞서 제시 되 었 던 프로그램 들 과 거의 동일 한 맥락 이나 여기 서 는 loop ( ) { } 내부 의 구조 를 단순 화 시키 기 위해 몇 개 의 작 은 서브루틴 들 을 구성 하 여 loop 문 내부 로 불러 들이 는 형식 을 취했 다 . 보드 지정 은 본인 이 보유 한 보드 의 정확 한 규격 을 지정 하 도록 한다 . 프로그램 이 간단 한 경우 에 는 NodeMCU 0 . 9 보 드나 NodeMCU 1 . 0 을 혼동 해도 그다지 심각 한 문제 는 없 는 듯 하 다 . 생성 되 는 전압 범위 도 Catus Micro 프로젝트 와 동일 하 므로 ThingSpeak 사이트 에 준비 되 어 있 는 Private View 탭 에서 Channel Settings 탭 으로 들어가 하단 에서 Clear Channel 버튼 을 눌러 기존 데이트 를 지운 후 Private View 탭 에서 결과 를 관찰 하 도록 하 자 . NodeMCU _ ThingSpeak _ Resistor _ 01 / / nodeMCU v 1 . 0 ( black ) with Arduino IDE # include # define myPeriodic 15 / / in sec | Thingspeak pub is 15 sec const char * server = " api . thingspeak . com "; String apiKey = " 0 DKP 99 L 3 Z 0 DXYESP "; const char * MY _ SSID = " AndroidHotspot 1994 "; const char * MY _ PWD = " 00000000 "; 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 += "& field 1 ="; 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 시리얼 창 에서 Volt 로 출력 된 전압 데이터 와 그래프 와 의 일치 성 을 확인 해 보 기 바란다 . 공유 하 기 글 요소