라즈베리파이4, notepad++, ssh로 원격으로 실습 진행.
오늘 한 실습은 온습도 측정 센서를 이용해 thinkspeak 웹을 사용. mathworks 계정이 있다면 사용 가능.
채널을 추가하고 관측 원하는 field를 알맞은 이름과 함께 추가한다.
온습도 변화가 서버에 저장되는 원리는, 개인에게 주어지는 고유한 Key를 url과 결합해서 field 옵션이 변경될때마다 서버에 변수들이 갱신된다. 위 그림처럼 차트와 어플로 확인 가능.
** Adafruit_DHT 문제발생 해결 방법 **
구글링해보면 Adafruit_DHT 라이브러리로 개발된 코드가 많다. 하지만 해당 라이브러리 이름으로는 설치 자체가 안되어 개발자의 github를 살펴보니 라이브러리 이름이 "adafruit-circuitpython-dht" 로 변경됨.또한, 기존 핀번호를 설정해주는 용법에서 -> board를 import해서 핀번호를 설정해주는 방식으로 변경 (board.D21)
https://github.com/adafruit/Adafruit_CircuitPython_DHT
해당 라이브러리를 포함해서만으로도 안되는 문제가 발생한다.
RuntimeError: Timed out waiting for PulseIn message
위와 같은 runtime에러가 발생한다면 libgpiod2라이브러리를 하나 더 설치해준다
sudo apt install libgpiod2
< 최종 코드 >
import time
import urllib.request
import adafruit_dht
import board
Key="개인 고유 key번호"
Url = 'https://api.thingspeak.com/update?api_key=%s' %Key
# 핀번호까지 설정해주고 온습도 하드웨어 객체(?) 생성
dhtDevice = adafruit_dht.DHT22(board.D21)
while True:
humidity= dhtDevice.humidity # 습도
temp=dhtDevice.temperature # 온도
# 온도와 습도를 url 뒤에 옵션으로 추가해 값 갱신
urllib.request.urlopen(Url + "&field1=%d&field2=%d" %(temp, humidity))
# 출력
s = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
s = s + " 온도 = %d C, 습도 = %d %%" %(temp, humidity)
print(s)
time.sleep(15)
'FW 심화 과정 > [2] STM32심화실습' 카테고리의 다른 글
[4주차 세미나] 포트포워딩 분석 (0) | 2022.07.16 |
---|---|
0714 라즈베리파이 bread board 제어, 스레드 구현 (0) | 2022.07.14 |
[RasPi] 사용 tool 정리 (0) | 2022.07.14 |
0713 RasPi 블루투스 제어 (0) | 2022.07.13 |
[RasPi] ifconfig 화면에서 wlan 안보일때 (0) | 2022.07.11 |
0711 환경구축 (0) | 2022.07.11 |