Arduino :: Lecture & TIPs

[Smart Garden] 스마트 정원 구현하기 (3) – ESP32 MCU 와 ThingSpeak 클라우드 플랫폼 연동하기

Arduino 를 활용해 각각의 센서에서 측정된 센서 값들을 인터넷에서 확인하려면 일반적으로 직접 서버를 구축하는 방법이 있습니다. 하지만, 보안적인 기술들과 함께 관리도 힘들어질 뿐 아니라 무엇보다 24 시간 구동이 필요하므로 소음이 발생되는 단점은 물론이고, 서버 냉각을 위한 냉방까지, 그만큼 전기료도 만만치 않게 부과되는 문제가 발생합니다.

이러한 문제를 해결하기 위해 웹 호스팅 (Web-hosting) 방식으로 서버를 양도받는 방식으로, IoT 프로젝트에 활용할 수 있도록 운영되고 있는 서비스 중 하나가 바로 ThingSpeak 입니다.

추가적인 비용을 지불하고, 기능에 제약이 없는 계정을 사용하거나 비영리적 혹은 연구 목적으로 제공하는 제약에 맞게 사용할 수도 있습니다만, 무료 계정으로도 일반적인 사용 환경에서는 사용하는데 큰 지장이 없습니다.

오늘 다루어 볼 내용은 IoT 기기에서 측정된 센서값 데이터를 https://www.thingspeak.com/ (클라우드 서비스) 로 전송하고, 이를 결과 그래프로 출력하는 내용입니다.

조립 전 부품 목록

집 창가에 공유기 SSID와 암호 바꾸고, 화분에 꽂아놓고 테스트 중입니다.

ThingSpeak 플랫폼으로 IoT 기기 측정 결과 확인

https://thingspeak.com/channels/1416673

인터넷이 불가능한 지역의 상황까지 가정하고 작동이 원활하도록, 아래의 구성으로 결과물을 최종 구현하였습니다.

스마트 정원 IoT 기기 → Raspberry Pi 기반의 공유기 (RaspAP 활용) + Cat.M1

– LTE Cat.M1 (Category M1 방식) 을 사용하기 위해 CodeZoo 사 (社) 의 Cat.M1 제품 을 사용하였습니다.

– 태양광 전력관리모듈은 단순한 MPPT 충전 방식을 지원하는 CN3791 보드 를 사용했습니다.

MPPT 충전 방식이란?

MPPT (최대 전력점 추적 : Maximum PowerPoint Tracking) 컨트롤러는 태양전지 모듈과 배터리 간의 간접 연결을 특징으로 하는데, 태양전지 모듈과 배터리 사이에 DC-DC 변환기가 포함되어 있는 관계로, 전력 손실을 최소화 함으로서 보다 낮은 전압에서도 여분의 전류로 변환할 수 있어 높은 에너지 효율을 유지할 수 있도록 해 줍니다.

MPPT 컨트롤러는 입력되는 전압을 조절하여 태양전지의 최대 전력점을 찾아 가장 효율적인 전력량을 유지하는 알고리즘 방식으로 충전합니다. 구름, 나무, 눈에 의해서 그림자가 생겨 여러 개의 최대 전력을 나타내는 경우에 MPPT 컨트롤러가 가장 효율적으로 작동되는데요, PWM 방식으로는 최대 출력 지점들에 대한 포인트를 정확하게 식별하지 못해 충전량이 떨어지는 경우가 빈번하지만, MPPT 방식을 이용하면 복수의 최대 출력 지점들을 신속하고 정확하게 감지하여 전력의 손실을 줄이고 모듈의 충전 효율을 최대한으로 높여준다는 이점이 존재합니다.

결과적으로 MPPT 방식을 사용하면, 실사용시에 아래와 같은 장점들을 누릴 수 있습니다.

고효율적 충전 방식.
(온도가 낮은 추운 지역에서 충전 효과와 효율이 높아집니다.)

부품과 모델별 성능에 따라 상이하겠지만, 이론 상으로 60-Cell 태양전지도 충전이 가능합니다.

여름철에도 효율이 좋지만, 겨울철에 더욱 효과적인 충전이 가능합니다.

이 모듈은 태양열 충전기로 작동하는 것 외에도 USB 충전기로 최대 900 mA 의 충전 전류를 3.7 V 의 외장배터리로 공급할 수 있다는 장점 또한 존재합니다.

결과적으로 5V / 1A 출력의 전원 ON / OFF 를 제어할 수 있는 DC – DC 컨버터는 다양한 태양광 발전 프로젝트 및 저전력을 요구하는 프로젝트의 요구 사항을 충족시킵니다. 

요약 및 정리

센서를 이용한 스마트 정원 시스템은 최초 현장 설치 후 동작이 시작되면 사용자의 간섭없이 24시간, 365 일을 능동적으로 동작해야합니다. 이를 구현하기 위해 설계 시 몇 가지 고려해야 했던 사항들은 아래와 같습니다.

전력

리튬 이온 및 리튬 폴리머 배터리를 사용하여 동작하므로 배터리 잔량이 바닥나게 되면 동작이 멈춥니다.

연속동작을 보장하기 위한 태양광 패널과 USB Type-C 포트를 통한 충전 시스템을 통해 전력을 보충할 수 있도록 설계했습니다. 최종적으로 태양광 충전을 지원하며 MPPT (최대 전력점 추적) 방식이 적용되었습니다.

절전모드

태양광 패널이 크고, 대용량의 배터리를 내장하면 절전 모드에 대해 고민할 필요가 없으나, 작은 태양광 패널과 배터리에 저장되는 전력의 한계로 인하여 실제로 센서가 동작 중인 상태 이외에는 최소 전력으로 동작되어야 합니다.

ESP32 MCU 에 Arduino 개발환경 기반으로 개발되었으며, ESP-IDF SDK 에서 제공하는 Deep Sleep API 를 호출하여 최소한의 전력으로 구동되는 저전력 모드를 구현하였으며, 이와 더불어 측정 센서 부분에 동작되는 전원 차단도 추가적으로 진행했습니다.

Watchdog (경비견) 기능

스마트 정원에 설치된 IoT 센서가 365 일 24 시간 동작 도중에 어느 순간 알 수 없는 오류가 발생해 동작이 중단되는 경우가 발생할 수 밖에 없습니다. 동작이 중단되었는데 외부 일정이 있어서 제어가 불가능한 상황이거나, 손이 닿지 않는 장소에 설치되었거나, 센서가 대량으로 설치된 경우 등에 한해 난처한 상황이 발생할 수 밖에 없습니다. 이 때 Watchdog 을 설정해 지정된 충분한 시간 안애 시스템에서 반응이 없는 경우에 시스템을 자동적, 강제적으로 재시작 할 수 있어야 합니다.

이러한 기능을 구현하기 위해 Watchdog 타이머 기능을 분석해보고 ESP-IDF SDK API 에서 호출해 Arduino 코드단에서 적용했습니다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: