안녕하세요 땜블리 입니다.
라즈베리파이 피코 베이직 트레이닝 보드를 이용한 IoT 모니터링 실습을 진행 하겠습니다.
베이직 트레이닝 보드는 아래에서 확인이 가능합니다.
adafruit io 사용 방법은 다음을 확인해주세요
더 자세한 것을 알고 싶으면 아래 링크를 이용하세요.
https://learn.adafruit.com/welcome-to-adafruit-io
adafruit Io 클라우드 서비스 사용방법은 앞에 링크 되어 있는 자료들 확인 하시고 바로 시작 하겠습니다.
먼저 Feed를 만들어 보겠습니다.
IoT_CDS, IoT_Temp, IoT_Humi, IoT_Vr 를 만듭니다.
그리고 KEY를 한번 확인합니다.
"피드 키"는 영문자(대문자 또는 소문자), 숫자, 대시("-") 및 마침표(".") 또는 슬래시("/")만 포함해야 합니다.
다른 문자는 피드 키에 포함되어서는 안 됩니다.
라는 문구가 밑에 정의되어있으며 언더바(_)는 대쉬로(-)변경되어 설정됩니다.
그다음 소스 코드를 라즈베리파이 피코 W보드에 넣어 줍니다. 라이브러리도 LIB폴더에 넣어 줍니다.
라이브러리 추가 방법은 아래의 사이트 참조 부탁드립니다.
다음은 메인 구동 소스인 code.py 소스 입니다.
code.py
import time
import ssl
import wifi
import socketpool
import board
import digitalio
import analogio
import adafruit_requests
import adafruit_dht
from adafruit_io.adafruit_io import IO_HTTP, AdafruitIO_RequestError
from secrets import secrets
import adafruit_ssd1306
import busio
# i2c설정
i2c = busio.I2C(board.GP15, board.GP14)
oled = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3c)
uart = busio.UART(board.GP16, board.GP17, baudrate=115200)
# 초기화
oled.fill(1)
oled.show()
time.sleep(1)
oled.fill(0)
oled.show()
# 핀 할당
cds_pin = board.GP27
dht_pin = board.GP7
vr_pin= board.GP26
dhtOut = adafruit_dht.DHT11(dht_pin)
# CDS 광센서 제어용 아날로그 핀 초기화
cds = analogio.AnalogIn(cds_pin)
vr = analogio.AnalogIn(vr_pin)
wifi.radio.connect(secrets["ssid"],secrets["password"])
aio_username = secrets['aio_username']
aio_key = secrets['aio_key']
pool = socketpool.SocketPool(wifi.radio)
requests = adafruit_requests.Session(pool, ssl.create_default_context())
# Initialize an Adafruit IO HTTP API object
io = IO_HTTP(aio_username, aio_key, requests)
print("connected to io")
def get_feed_value(feed_key):
try:
feed = io.get_feed(feed_key)
except RequestError:
raise Exception('Feed not found')
data = io.receive_data(feed_key)
return data['value']
try:
# get feed
picowTemp_feed = io.get_feed("iot-monitoring.iot-temp")
picowHumid_feed = io.get_feed("iot-monitoring.iot-humi")
picowCds_feed = io.get_feed("iot-monitoring.iot-cds")
picowVr_feed = io.get_feed("iot-monitoring.iot-vr")
except AdafruitIO_RequestError:
# if no feed exists, create one
picowTemp_feed = io.create_new_feed("iot-monitoring.iot-temp")
picowHumid_feed = io.create_new_feed("iot-monitoring.iot-humi")
picowCds_feed = io.create_new_feed("iot-monitoring.iot-cds")
picowVr_feed = io.create_new_feed("iot-monitoring.iot-vr")
# pack feed names into an array for the loop
feed_names = [picowTemp_feed, picowHumid_feed, picowCds_feed, picowVr_feed]
print("feeds created")
clock = 10
while True:
try:
temp_data = dhtOut.temperature
humi_data = dhtOut.humidity
cds_data = cds.value
vr_data = vr.value
VrDataV = (3.3/65535) * vr_data
VrDataV = round(VrDataV, 2)
CdSDataV = (3.3/65535) * cds_data
CdSDataV = round(CdSDataV, 2)
print('CDS value: {0} V, Vr value: {2} V, Temperature: {1} C, Humidity: {2} %'.
format(CdSDataV, VrDataV, temp_data, humi_data))
oled.fill(0)
oled.text("Temp(C) : ", 0, 0, 1)
oled.text(str(temp_data), 80, 0,1)
oled.text("Humi(%) : ", 0, 12,1)
oled.text(str(humi_data), 80, 12,1)
oled.text("CdS(V) : ", 0, 24,1)
oled.text(str(CdSDataV), 80, 24,1)
oled.text("Vr (V) : ", 0, 34,1)
oled.text(str(VrDataV), 80, 34,1)
oled.show()
if clock >= 10:
# read sensor
data = [temp_data, humi_data, CdSDataV, VrDataV]
# send sensor data to respective feeds
for z in range(4):
io.send_data(feed_names[z]["key"], data[z])
time.sleep(1)
print()
# reset clock
clock = 0
else:
clock += 1
# pylint: disable=broad-except
# any errors, reset Pico W
except Exception as e:
print("Error:\n", str(e))
print("Resetting microcontroller in 10 seconds")
#time.sleep(10)
#microcontroller.reset()
# delay
time.sleep(1)
print(clock)
소스를 업로드 하여 구동되면
위 사이트 에서 피더를 확인하면 다음과 같이 데이터가 입력되는 걸 확인 할 수 있습니다.
데이터를 좀 더 보기 편하게 대시보드를 만들어 봅시다.
대시 보드에서 IoT 모니터링 만들어 추가 해줍니다.
그리고 라인 그래프 블록 추가 하여 IoT 모니터링에 있는 피더를 다 체크 해줍니다.
블록 이름은 모니터링으로 하겠습니다.
블록을 생성하면 대시보드에 다음과 같이 나옵니다.
와우 완료가 되었습니다.
위와 같이 조금씩 진해하시면 adafruit IO 서비스를 이용하여 IoT시스템을 구현 할 수 있습니다.
중간중간 설정들은 연결 사이트를 방문하시어 참조 하시면 됩니다.
무료로 사용을 하여 진행하다보니 많은양의 데이터는 확인이 불가능 합니다.
이점 참조 하세요.
'프로젝트' 카테고리의 다른 글
라즈베리파이 피코와 베이스 보드를 이용한 타이머 구동 (0) | 2023.04.20 |
---|---|
라즈베리파이 피코와 베이스보드를 이용한 카운터기 (0) | 2023.04.19 |
IoT 조명 프로젝트 (0) | 2023.03.23 |
IoT 콘센트 & 스위치 (0) | 2023.03.22 |
adafruit 클라우드를 이용한 식물재배기 프로젝트 2차 (0) | 2023.03.13 |
댓글