728x90
반응형
SMALL
안녕하세요 땜블리 입니다.
라즈베리파이 피코 베이직 트레이닝 보드를 이용한 IoT 조명 프로젝트를 진행 하겠습니다.
베이직 트레이닝 보드는 아래에서 확인이 가능합니다.
먼저adafruit IO 에서 Feed를 만듭니다. 가입방법 및 만드는 방법은 adafruit 클라우드를 이용한 식물재배기 프로젝트 1차를 참고 해주시면 됩니다.
ws 2812조명 그룹에 피드는 brightness, fullcolor, pow 로 만듭니다.
그리고 데시보드에서 컬러 선택기, 토글 버튼, 슬라이드 를 만들어 줍니다.
슬라드더에 min값 과 max 값을 0 ~ 1 변경하고 step size를 0.1씩 변하도록 블럭을 설정 합니다.
반응형
소스코드
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 neopixel
import pwmio
import adafruit_ssd1306
import busio
import microcontroller
# 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()
# LED 개수 설정
num_pixels = 4
# LED 핀 설정
pixels = neopixel.NeoPixel(board.GP13, num_pixels)
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']
def set_brightness(brightness):
"""0에서 1 사이의 값을 받아서 밝기를 설정합니다."""
pixels.brightness = brightness
def parse_color_data(color_string):
# 예: '#a42323'
r = int(color_string[1:3], 16) # 0xA4
g = int(color_string[3:5], 16) # 0x23
b = int(color_string[5:7], 16) # 0x23
return (r, g, b)
while True:
try:
pow_data_feed_key = "ws2812jomyeong.pow"
pow_data = get_feed_value(pow_data_feed_key)
print(pow_data)
if pow_data == "ON":
color_data_feed_key = "ws2812jomyeong.fullcolor"
color_data = get_feed_value(color_data_feed_key)
print(color_data)
r, g, b = parse_color_data(color_data)
brightness_data_feed_key = "ws2812jomyeong.brightness"
brightness_data = get_feed_value(brightness_data_feed_key)
print(brightness_data)
# LED 색상 설정
pixels.fill((r, g, b))
set_brightness(float(brightness_data))
else:
pixels.fill((0, 0, 0))
print('R value: {0}, G value: {1}, B value: {2}, brightness value : {3} '.format(r, g, b, brightness_data))
oled.fill(0)
oled.text("R value : ", 0, 0, 1)
oled.text(str(r), 80, 0,1)
oled.text("G value: : ", 0, 12,1)
oled.text(str(g), 80, 12,1)
oled.text("B value: : ", 0, 22,1)
oled.text(str(b), 80, 22,1)
oled.text("bri value: : ", 0, 32,1)
oled.text(str(brightness_data), 80, 32,1)
oled.text("pow value: : ", 0, 42,1)
oled.text(str(pow_data), 80, 42,1)
oled.show()
# 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(0.5)
SMALL
secrets.py
secrets.py 코드에서는 공유기 이름과 공유기 비밀번호, Adafruit 이름과 ,Adafruit key를 적어 놓는 곳입니다.
secrets = {
'ssid' : 'AP_name',
'password' : 'AP_password',
'aio_username' : 'Adafruit_username',
'aio_key' : 'Adafruit_key'
}
동작 결과
728x90
반응형
LIST
'프로젝트' 카테고리의 다른 글
라즈베리파이 피코와 베이스보드를 이용한 카운터기 (0) | 2023.04.19 |
---|---|
IoT 모니터링 adafruit IO 클라우드 서비스 이용 (0) | 2023.04.18 |
IoT 콘센트 & 스위치 (0) | 2023.03.22 |
adafruit 클라우드를 이용한 식물재배기 프로젝트 2차 (0) | 2023.03.13 |
adafruit 클라우드를 이용한 식물재배기 프로젝트 1차 (0) | 2023.03.13 |
댓글