NodeMcu V2 웨더스테이션

Nodemcu V2버전으로 만든 웨더스테이션입니다. LCD는 2.8인치이구요.

Darksky는 애플에게 넘어가서 더이상 계정을 만들 수 없는 상태입니다.

이제는 https://openweathermap.org 에서 API 키를 만들어야 합니다.

AM2320 온습도 센서를 설치해서 실내 온습도 측정도 가능하게 만들었습니다.

RFID 복사 쉽게 하기

Wemos D1 Mini와 RC522보드를 SPI로 연결했습니다.

SPI에 전부 연결했고 D0 – RST 만 추가했습니다. 버튼은 D3, LED는 D4에 연결했습니다.

I2C로 쓰이는 D1, D2은 추후에 디스플레이 사용을 대비해서 사용을 안했습니다.

기본 모드는 카드 읽는 모드이고 버튼 누르면 쓰기 모드로 바뀌면서 LED에 불이 들어옵니다.

추후에 PCB보드 만들면 세트로 제작할 계획입니다. 

ESP32-CAM 사용하기

ESP32에 카메라 모듈이 달린 버전을 사용해 보았습니다.

셋업은 NodeMcu를 USB로 사용하였습니다. 일반 usb모듈로 사용하기에는 로직레벨도 맞지 않고 해서 esp8266으로 셋팅하였습니다.

연결은 아래와 같습니다.

  1. ESP8266의 EN-GND
  2. ESP8266 RX – ESP32-CAM U0R
  3. ESP8266 TX – ESP32-CAM U0T
  4. ESP8266 GND – ESP32-CAM GND
  5. ESP32-CAM GPIO0-GND
  6. USB 5V – ESP32-CAM 5V
  7. USB GND – ESP32-CAM GND

보드 셋업은 아래와 같습니다. 플래시 모듈이 안 좋은지 Flash Frequency를 80MHz로 하면 작동이 안됩니다.

예제는 아래와 같이 불러 옵니다.

예제 코드에서 아래 부분을 수정해서 업로드 합니다.

업로드가 끝나면 ESP32-CAM의 GPIO0-GND 연결선을 빼주고 리셋 버튼을 눌러 줍니다. 그 다음에 시리얼 모니터 창을 열면 아래와 같이 나옵니다. 여기서 나오는 주소로 웹브라우저에 열면 카메라 셋팅창이 나옵니다. (아래 사진은 가져온 이미지 입니다)

아래 처럼 사진도 찍을 수 있고 영상도 나오게 할 수 있네요.

컴퓨터 전원을 원격으로 제어하기

ESP8266으로 컴퓨터 전원 제어 가능하게 만들어 보았습니다. 실제로 컴퓨터에 연결해서 테스트 하기는 번거롭고 해서 그냥 아두이노를 컴퓨터처럼 설정해 놓고 테스트 해 보았습니다.

https://www.hackster.io/zvonko-bockaj/wemos-esp8266-remote-pc-switch-062c7a

위의 링크를 참조해서 만들었습니다. 몇가지 빼고 만들긴 했지만 기본적으로 똑같다고 보면 됩니다. *** 아두이노 나노에 있는 Red Led가 컴퓨터에 들어오는 Led라고 생각하시면 됩니다.

BC337 트랜지스터 말고 2N2222 트랜지스터를 사용했습니다. 트랜지스터의 핀의 위치가 달라서 그것에 맞춰 조정했습니다. 

간단히 만들려고 DS18B20 온도 센서와 LED 2개는 설치 안했습니다. 

스마트폰의 MQTT Dash 어플로 아래와 같이 State 버튼 눌러서 컴퓨터의 전원을 제어합니다. State 버튼을 누르면 아래와 같이 전원이 켜지면서 불이 들어 옵니다.

컴퓨터 여러대 연결해서 전원 관리 시스템도 만들 수 있겠네요.

2.8 LCD 셋업

PCB 제작 전에 테스트용으로 셋업 했습니다. 선 복잡하네요.

  1. ESP32
  2. Push button 3개
  3. Active Buzzer
  4. S8050 Transistor
  5. AM2320 온습도 센서
  6. DS3231 Real Time Clock
  7. 0.1uF Capacitor
  8. 10K Resistor 3개
  9. 470 Resistor
  10. 4.7K Resistor
  11. LDR 센서
  12. 2.8인치 ILI9341 TFT LCD

microPython 설치하기

  1. python을 설치합니다.
  2.  microPython사이트 에서 본인이 가지고 있는 버전을 다운 받습니다.
  3. cmd창으로 들어가 pip install esptool 로 esptool 설치
  4. esptool.py port COM3 erase_flash 로 플래시 삭제
  5. esptool.py –port COM3 –baud 460800 write_flash 0x1000 esp32-20190122-v1.9.4-782-geb446ec22.bin 로 새로운 펌웨어 설치(파일 이름은 다릅니다)

위와 같이 하면 정상적으로 설치가 된겁니다. putty로 해당 serial 포트에 115200 baud로 접속하면 확인이 가능합니다.

위 화면에서 파이썬 코드 작성해서 실행 가능합니다. 보드에서 위에 처럼 코드 작성하는 것보다는 에디터에서 파이썬 코드 작성해서 저장한 다음에 보드에 업로드해서 실행해 보는게 방법적으로 더 좋습니다.

pip install adafruit-ampy 로 ampy 설치

pip install rshell, pip install pyreadline 로 rshell 설치

위에 두가지 중에 하나 사용해서 프로그램을 보드에서 실행하거나 복사할 수 있습니다.

위에 무한 반복되게 깜박이는 프로그램입니다. sublime text로 작성해서 ampy로 업로드 했습니다. 전원 켜질때 마다 실행되게 할려면 main.py로 복사해 넣으면 됩니다.

아두이노의 C 코드보다 보기도 좋고 깔끔해서 속도가 문제되는 경우가 아니면 마이크로파이썬 추천합니다.

BMP280 센서와 ESP8266(NodeMcu) 한글 작업

bmp280 센서로 온도와 기압 측정하는 셋팅해보았습니다.

bme280 센서는 습도까지 측정이 가능하기 때문에 구입하실거면 bme280으로 사시는게 좋습니다. dht22센서만 구입해서 온습도만 측정해도 되긴 합니다만 기압센서로 날씨측정까지 하면 더 좋겠지요.

bmp280은 SPI로 연결했고 oled는 I2C로 연결했습니다.

- BMP280 connections
D5 - SCK
D6 - SDO (MISO)
D7 - SDI (MOSI)
D8 - CS

- OLED connections
D1 - SCL
D2 - SDA

센서로 측정해서 나오게 하는건 문제가 없는데 한글 나오게 할려고 작업하다보니 좀 복잡해졌습니다. 한글 부분은 다음에 따로 포스팅하겠습니다.