728x90
반응형
SMALL
안녕하세요 땜블리 입니다.
라즈베리파이 피코 베이직 트레이닝 보드를 이용한 IoT 콘센트 & 스위치 실습을 진행 하겠습니다.
베이직 트레이닝 보드는 아래에서 확인이 가능합니다.
adafruit 사의 IO 클라우드 서비스를 이용하여 IoT 콘센트와 스위치를 만들어보겠습니다.
스위치는 시중에 판매 되는 아래와 같은 스위치 입니다.
https://blog.naver.com/zmsgfc/221747342683
반응형
IoT 콘센트는 원격으로 ON OFF 할 수 있는 콘센트입니다.
콘센트는 완제품이 아닌 다이용 콘센트를 이용하여 제작합니다.
아래는 구성도가 되겠습니다.
DIY용 콘센트를 열어 선 하나를 빼 보드 릴레이에 연결하는 작업을 해보겠습니다.
다음은 adafruit 사의 IO 클라우드에서 Feed 를 만들어보겠습니다. 그룹생성을 하여 콘센트스위치그룹에 powersocket, sw 를 만들어보겠습니다.
대시보드에도 토글블럭을 두개 넣어 만듭니다.
그다음 소스 코드를 라즈베리파이 피코 w에 넣어 실행 시켜 봅니다.
SMALL
소스 코드
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()
# 핀 할당
relay_pin = board.GP12
servo_pin = board.GP19
# PWM 제어용 디지털 핀 초기화
servo1_pwm = pwmio.PWMOut(servo_pin, frequency=50, duty_cycle=0)
in_min = 0
in_max = 65535
out_min = 1000
out_mid = 4500
out_max = 9000
servo1_pwm.duty_cycle = int(out_mid)
# 릴레이 제어용 디지털 핀 초기화
relay = digitalio.DigitalInOut(relay_pin)
relay.direction = digitalio.Direction.OUTPUT
# 제어할 장치들의 초기 상태 설정
relay.value = True
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']
while True:
try:
switch_feed_key = "konsenteuseuwici.sw"
switch_value = get_feed_value(switch_feed_key)
# 스위치 값에 따라 작업 수행
if switch_value == 'ON':
print("Switch is on!")
servo1_pwm.duty_cycle = int(3500)
elif switch_value == 'OFF':
print("Switch is off.")
servo1_pwm.duty_cycle = int(6500)
powersocket_feed_key = "konsenteuseuwici.powersocket"
powersocket_value = get_feed_value(powersocket_feed_key)
# 스위치 값에 따라 작업 수행
if powersocket_value == 'ON':
print("powersocket is on!")
relay.value = False
elif powersocket_value == 'OFF':
print("powersocket is off.")
relay.value = True
print('Switch value: {0}, powersocket: {1}'.format(switch_value, powersocket_value))
oled.fill(0)
oled.text("Switch : ", 0, 0, 1)
oled.text(str(switch_value), 80, 0,1)
oled.text("powersocket : ", 0, 12,1)
oled.text(str(powersocket_value), 80, 12,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)
결과 영상
728x90
반응형
LIST
'프로젝트' 카테고리의 다른 글
라즈베리파이 피코와 베이스보드를 이용한 카운터기 (0) | 2023.04.19 |
---|---|
IoT 모니터링 adafruit IO 클라우드 서비스 이용 (0) | 2023.04.18 |
IoT 조명 프로젝트 (0) | 2023.03.23 |
adafruit 클라우드를 이용한 식물재배기 프로젝트 2차 (0) | 2023.03.13 |
adafruit 클라우드를 이용한 식물재배기 프로젝트 1차 (0) | 2023.03.13 |
댓글