NodeMCU Lua 사용해보기 #2 글에서는 ESP8266 개발보드인 Amica 에 LED 를 달아서 깜빡여 보았습니다. 이번에는 온도센서인 LM35 를 달아서 LED 와는 반대로 센서값을 ESP8266 (Amica Board) 에서 입력받아 보겠습니다. OUTPUT 을 해 봤으니 INPUT 도 알아봐야겠죠? 나중에 보드를 인터넷에 연결하는 방법을 익히게 된다면 센서값을 인터넷을 통해서 볼 수 있게 될 것입니다. 그것이 이 보드의 제일 중요한 역할이니까요. 이미 아두이노와 ESP8266 (ESP-01) 을 이용해서 AT Command 기반으로 ThingSpeak 연동까지 해 봤지만 이젠 ESP8266 과 NodeMCU Lua 기반으로 인터넷에 접속이 되는 것입니다. 본격적인 사물 인터넷의 시작이라고 할 수 있겠습니다. 아무튼 그렇게 되기 위해서는 기초가 중요 합니다.
https://arduino-info.wikispaces.com/LM35
LM35 온도센서 입니다. 작동 전압은 2.7V ~ 5.5V 입니다. 고로 Amica 보드의 3,3V 에 연결하면 되겠습니다.
ESP8266 Amica Board Pin Definition - http://artofcircuits.com
■ 연결
LM35 |
ESP8266 (Amica Board) |
VCC |
3.3V |
Signal |
A0 |
GND |
GND |
LM35와 Amica의 연결 입니다. 전원은 보드의 3.3V 를 이용하고 Signal 은 보드의 Analog In 단자인 A0 에 연결 합니다.
■ 소스 및 결과
1 2 3 4 5 6 | while 1 do r = adc.read(0) c = r * 285 / 1024 print("temperature = " .. c) tmr.delay(1000000) -- wait 1,000,000 us = 1 second end | cs |
소스는 매우 간단 합니다. 변수 선언도 필요가 없네요. LED Blink 소스처럼 while 을 이용해서 1초 마다 반복되도록 했습니다. A0 에서 센서의 값을 받아서 값을 섭씨 온도로 바꿔주고 Print 해주면 됩니다. 어떻게 보면 아두이노의 C언어 코드보다 더욱 간단합니다.
r = adc.read(0) 에서 A0 (Analog in) 의 온도값을 읽습니다. adc 는 Analog to Digital Converter 를 뜻 합니다. 그 아래 줄은 LM35로 부터 받은 값을 섭씨온도로 고쳐주는 부분 입니다.
그리고 여기서 처음 보는 문법이 나오는데 print("temperature = " .. c) 부분 입니다. .. 가 문자열을 연결해 주고 있습니다. 매우 편합니다.
작성 후 Send to ESP 를 클릭해서 보드에서 실행을 시켜 봅니다.
위와 같이 LM35 의 온도값을 읽어서 시리얼 창에 1초 간격으로 잘 나타내 줍니다.
하기 전에는 막막했는데 이제 뭔가 감이 오는 것 같습니다. GPIO I/O 를 해 봤으니 다음 부터는 Wi-Fi 연결을 통해서 본격적으로 무언가 해 볼까 합니다.
'ESP8266' 카테고리의 다른 글
NodeMCU Lua 사용해보기 #5 - 인터넷에 연결해보기 (1) | 2016.07.05 |
---|---|
NodeMCU Lua 사용해보기 #4 - 모듈(Modules) (0) | 2016.07.05 |
NodeMCU Lua 사용해보기 #2 - GPIO 사용 (LED Blink) (0) | 2016.07.02 |
NodeMCU Lua 사용해보기 #1 - init.lua (0) | 2016.07.01 |
ESP8266 기반 NodeMCU 개발보드에 개발환경 설치 - Amica Board (3) | 2016.07.01 |