안녕하세요 땜블리 입니다.
라즈베리파이 피코 베이직 트레이닝 보드를 이용한 IoT 모니터링 실습을 진행 하겠습니다.
베이직 트레이닝 보드는 아래에서 확인이 가능합니다.
라즈베리파이 피코 베이직 트레이닝보드 구성
라즈베리파이 피코 보드의 펌웨어실습을 위한 베이직 트레이닝보드를 소개 합니다. 현재 네이버 스마트스토어에서 판매가 진행되고 있습니다. 라즈베리파이 피코 베이직 트레이닝 보드 라즈베
ttcw.tistory.com
adafruit io 사용 방법은 다음을 확인해주세요
adafruit 클라우드를 이용한 식물재배기 프로젝트 1차
안녕하세요 땜블리의 공작소에 땜블리 입니다. 라즈베리파이 피코 베이직 트레이닝 보드를 이용한 IoT 식물 재배기 실습을 1차, 2차에 걸쳐 진행 하겠습니다. 1차에서는 adafruit 사의 IO 클라우드
ttcw.tistory.com
더 자세한 것을 알고 싶으면 아래 링크를 이용하세요.
https://learn.adafruit.com/welcome-to-adafruit-io
Welcome to Adafruit IO
This guide will get you up and running with Adafruit IO - the easiest way to get your project on the web. Learn what hardware is compatible with IO, how to interact with your data, troubleshooting your IO project, available client libraries, and about taki
learn.adafruit.com
adafruit Io 클라우드 서비스 사용방법은 앞에 링크 되어 있는 자료들 확인 하시고 바로 시작 하겠습니다.
먼저 Feed를 만들어 보겠습니다.
IoT_CDS, IoT_Temp, IoT_Humi, IoT_Vr 를 만듭니다.
그리고 KEY를 한번 확인합니다.
"피드 키"는 영문자(대문자 또는 소문자), 숫자, 대시("-") 및 마침표(".") 또는 슬래시("/")만 포함해야 합니다.
다른 문자는 피드 키에 포함되어서는 안 됩니다.
라는 문구가 밑에 정의되어있으며 언더바(_)는 대쉬로(-)변경되어 설정됩니다.
그다음 소스 코드를 라즈베리파이 피코 W보드에 넣어 줍니다. 라이브러리도 LIB폴더에 넣어 줍니다.
라이브러리 추가 방법은 아래의 사이트 참조 부탁드립니다.
07. Circuit 파이썬 라즈베리파이 피코 W WS2812 제어하기
안녕하세요 땜블리 입니다. 라즈베리파이 피코 베이직 트레이닝 보드를 이용한 WS2812 제어를 진행 하겠습니다. 베이직 트레이닝 보드는 아래에서 확인이 가능합니다. https://ttcw.tistory.com/4 라즈베
ttcw.tistory.com
다음은 메인 구동 소스인 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)
소스를 업로드 하여 구동되면
Adafruit IO
Adafruit IO is the easiest way to get your projects onto the Internet of Things!
io.adafruit.com
위 사이트 에서 피더를 확인하면 다음과 같이 데이터가 입력되는 걸 확인 할 수 있습니다.
데이터를 좀 더 보기 편하게 대시보드를 만들어 봅시다.
대시 보드에서 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 |
댓글