아두이노 코딩-75: Cactus ESP8266WiFi 보드 ThingSpeak 사물인터넷 웹서버 I-아날로그 데이터 ThingSpeak 전송 및 그래프 작성 사용법
아두이노 호환 보드의 종류가 다양하므로 어떤 보드를 사용하게 되드라도 합리적으로 적응해야 할 필요가 있다. 여기서 소개하는 아두이노 Cactus Micro 모듈은 아두이노 보드 중에서 ESP8266 와이파이 칩을 장착한 초소형 뎡량 보드로서 저 전력 웨어러블 용으로 사용된다. 아울러 아두이노 편집기에서 보드 지정 시 LilyPad Arduino USB로 규정된다.
핀 구조를 보면 다수의 아날로그 입력 핀들이 있으며 I2C인터페이스를 위한 SDA, SCL핀들이 있어 필요한 센서 들을 장착할 수 있다. 전원 Vcc 는 저전력 ESP8266 칩을 사용하므로 당연히 3V3 으로 보면 된다. 따라서 Catur Micro를 포터블로 사용하려면 외부 배터리 전원을 사용해야 하는데 아두이노 우노라든지 또는 WeMos 보드 와 달리 DC 어댑터가 없으므로 사용자가 직접 만들어서 RAW 핀을 통해 공급해야 한다.
코딩 후 컴파일 업로딩은 마이크로 USB로 실험하되 포터블 기기로 사용할 경우 전원 공급은 RAW 단자에 적절한 배터리 전압을 공급해야 한다. 대개 4.2V 이상을 공급해야 하는 것으로 인터넷에 알려져 있으나 실제로 3.7V 리튬 폴리머 배터리로도 아무 이상 없이 잘 작동한다.
사진은 500mAH 급 소형 드론용 리튬 폴리머 배터리로서 커넥터 뒷 부분에 배선용 점퍼선 침을 꽂은 상태에서 전기 쇼트를 방지하기 위해 스카치 테이프로 간단히 절연해둔 상태이다. 점퍼선을 잘라서 끼워 두어도 좋다.
NodeMCU/WeMos 웹서버 예제와는 달리 Cactus Micro WiFi 모듈을 Client fh 사용하기로 하자. 즉 가변저항에 의해 생성되는 전압 신호를 모니터링하여 스마트 폰 핫스팟 공유기 또는 PC에 설치한 무선 고유기를 통해 사물인터넷 사이트로 잘 알려진 ThingSpeak 서버 사이트에 데이터를 전송하여 전압 변동그래프를 작성하기로 한다.
그림에서처럼 Cactus Micro의 Vcc와 GND에 가변저항의 양단을 연결하고 가변저항의 중앙 입력 단을 아날로그 입력단 A0에 연결하여 Vcc에 가해지고 있는 전압 값을 정수 값 0∼1023사이 값으로 변환하여 ThingSpeak 서버에 전송하기로 하자.
이 실험에서도 9k옴의 범위를 가지는 가변 저항을 사용하였다. 이보다 적은 값을 가지는 1k나 2k옴 정도의 범위를 가져도 문제는 없다. 만약 리튬 폴리머 배터리를 사용하고자 한다면 최소 전압이 3.7V 이상임을 멀티메터로 확인하고 핀 배치도를 참고하여 3.7V를 반드시 RAW 핀에 공급하도록 한다. 포터블로 사용하지 않을 경우에는 마이크로 USB를 통해 전원을 공급하면 된다.
ThingSpeak에 회원 가입하여 사전 준비를 마치도록 하자. Catus Micro 클라이언트 코드를 돌릴 수 있도록
ThingSpeak.com 의 기초적인 사용법을 알아보도록 하자.
ThingSpeak.com 사이트는 MATLAB 이라는 소프트웨어로 유명한 회사에서 제공하는 사물인터넷 용 웹서버로서 무료로 측정 채널을 제공하고 있다. ThingSpeak을 활용하여 Cactus Micro 사물인터넷을 만들려면 반드시 무료회원으로 가입하여 API를 부여 받아야 한다.
ThingSpeak에 가입하려면 반드시 구글의 Email 주소가 필수적이다. 화면상의 ID는 임의로 입력해보았다. Password를 입력하고 엔터키를 누르면 다음 화면으로 넘어간다.
상당히 장황한 문장 및 입력 창이 나오지만 사물인터넷 코딩과는 큰 관계가 없으므로 그냥 넘어가도록 하나 마지막 초록색에서 자신의 ThingSpeak 계정 사용 여부를 문의하므로 마우스로 클릭하도록 한다.
예전에 잘되던 로그인이 안되어 살펴보니 Mathwork 계정을 만들라는 요구가 새로이 생겼다.
이 단계를 완료 후 ThingSpeak 사이트가 지시하는대로 account 생성시에 지정했던 이메일을 방문하자.
Mathwork Account 생성을 위해 제공했던 이메일로 돌아와 Verify 작업을 실행하자.
스팀잇 비밀번호 부여 받는 것이랑 비슷하군요.
이렇게 번거로운 작업 후 mathwork Account를 이용하여 로그인하자.
내용이 좀 길어졌는데 결론은 자신이 제공한 이메일 주소를 ID 로 하고 Mathwork Account 생성 시에 만들어둔 비밀 번호면 로그인이 가능하다. 과거에 작업했던 그래프들이 보관되어 있음을 확인할 수 있다.
이로서 Cactus Micro WiFi 클라이언트 모듈에서 송신되는 전압데이터를 수신하여 그래프 작성을 위한 준비가 되었다.
로그인이 완료된 상태에서 Cactus Micro WiFi 클라이언트 모듈에서 송신되는 전압데이터를 수신하여 그래프 작성을 위한 준비가 되었다. 아래에 진해 내용 중 오늘 thigSpeak에 들어가 보니 Map 이 보이질 않는다. 뭔가 약간 변경이 있었다고 보인다.
ThingSpeak 사이트의 Channels 탭에서 Private View 화면이다. 현재의 화면은 Channel Settings에서 ADC-01 이라는 이름으로 Field1의 챠트 타이틀이 부여되어 있는 상태이며 세로 축 단위는 Volt로 입력되어 있다. 본 블로그에서 전압 측정데이터의 범위는 0∼1023이므로 최대 1500으로 설정하였다. 시간 축에 가로 축 설정은 Field1 Chart 오른쪽의 붉은 색 써클 친 부분을 클릭하면 그래프 세부 설정이 가능하다.
참고로 우측의 Map은 Channel Settings 탭을 누르고 들어가 경도와 위도 데이터를 입력하면 자동으로 나타난다. 이는 기상 데이터 처리할 경우에 필요할 수도 있다.
Channel Settings 탭으로 들어가 필요한 최소한의 정보 즉 Name 과 Field 1의 측정 단위 Volt를 입력한다. 필요하다면 경도와 위도도 입력하고 하단의 Save Channel 버튼을 누른다.
다음 중요한 스텝은 API keys 탭에서 본인의 API를 부여 받는 일이다. Channel Settings 옆의 API keys 탭을 클릭하여 들어간다. Write API와 Read API 두 종류의 키가 있으나 Write API 키가 필요하다. 이 키 암호는 Cactus Micro 클라이언트 프로그램에서 ThingSpeak.com에 연결 요청을 위해 사용되는 개인 정보이다. 가입 시에 개인 별로 부여되는 고유의 개인 정보이다.
일단 이로써 기본 준비가 끝난 상태라면 Cactus Micro의 와이파이 클라이언트가 데이터를 보낼 때 그래프를 관찰해 보기로 한다. 클라이언트에서 데이터를 준비해서 보낼 때 한 가지 주의할 점은 ThingSpeak.com의 데이터를 수신하는 시간 간격이 15초 이상을 요한다는 점이다. 이러한 점을 감안하여 Cactus Micro 프로그램에 반드시 시간 지연 즉 delay(15000); 또는 그 이상으로 설정해야 한다. 여기서는 가변 저항을 여유 있게 여러 번 조작하여 0과 1023을 찍은 후 연결한 그래프를 보도록 한다. 첫 번 째 값 1023이 출력된 상태이다.
측정 점의 개수와 그래프의 가로 세로 축 규격을 설정하기 위해서는 그래프 상단 우측의 두 번째 연필 모양 아이콘을 클릭한다.
측정 포인트 디스플레이는 즉 Results는 20개로 제한하였고 Y축 최대와 데이터 최대 값을 1100으로 설정하였다.
1023 또는 0 의 값을 출력하였으며 가변 저항을 서서히 돌려 그 사이의 값을 그래프로 보여준다. 지정된 데이터 갯수를 넘어 가면 데이터가 하나씩 사라지며 새로운 측정값이 디스플레이 된다.
한편 Cactus Micro 클라이언트 프로그램이 작동과 상관 없이 구글 웹브라우저로 이러한 데이터 수신 및 그래프 작성 과정을 모니터링 해 볼 수 있다.
API Keys 옆의 Data Import/Export 탭으로 클릭해 들어가면 API Requests 하단에 GET 명령 사례를 볼 수 있다.
GET이란 인터넷 통신에서 보안이 없이 ASCII 문자 데이터를 주소창 url을 통해 보내는 과정을 뜻하며 보내고 받는 정보를 직접 시각적으로 확인할 수 있다.
이 부분은 결국 Cactus Micro 코드 중간에도 나타나는 내용인데 별도로 https://...부터 field1=0 이라 쓰인 부분을 구글 크롬 url 창에 입력하고 엔터키를 치면 데이터 송신에 성공했을 경우 하단에 ThinSpeak.com으로부터 회신 받은 정수 값이 출력된다. 반드시 자신의 api_key 값을 넣어서 점 데이터를 처리하는지 아래의 명려을 사용하여 체크해 보기 바란다. 아래 예제의 api-key는 임의로 써둔 값이다.
GET https://api.thingspeak.com/update?api_key=0DDP99L3Z0KXYESP&field1=1023
처음 데이터라면 ThingSpeak 서버로부터 전송된 값 1이 출력되며 동시에 ThingSpeak 사이트의 그래프에 입력됨을 확인할 수 있다. 확인을 위해서 field1= 1023 과 같이 특수한 값을 입력해 보기 바란다. 아울러 ThingSpeak 그래프에 나타난 결과를 관찰해 보자.
보다 구체적인 코딩 사례를 이어서 곧 포스팅할 예정이다.