사물인터넷(IoT)2016. 7. 3. 09:00

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언어 코드보다 더욱 간단합니다. 


= 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 연결을 통해서 본격적으로 무언가 해 볼까 합니다.

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요

  1. 최규돈

    3번 라인의 285 라는 값은 어디서 얻은 값 인가요.

    2021.07.28 16:03 [ ADDR : EDIT/ DEL : REPLY ]