Как использовать Raspberry Pi Pico для автоматического включения света: практическое руководство

Как использовать Raspberry Pi Pico для автоматического включения света: практическое руководство

Первая часть с вводной информацией вверху
Обещал макропад, но я еще не заказал переключатели поэтому делаем из чего есть 🙂

К делу, надо сделать само авто выключение/включение света, а также возможность включения игнорирования датчика
Датчиком будет модуль фоторезистора с LM393
Проект построен на СircuitPython

У данного модуля есть 3 вывода: VCC (+5V) , GND , DO (DigitalOut)
есть версия с выводом «сырого сигнала» (AO-Analog Output) но смысла в нем мало
Как мы знаем Raspberry Pi Pico может дать до 3.3 вольт , но обычно на пине «3.3_v» есть 2.8 — 3 вольта , что не достаточно для питания поэтому нужен источник питания соответственно на 5V

Начнем cборку:
Cхема

Рызрыв кабеля подключаем к СOM и NO на реле

Почему не транзистор IRF520 ? А он не подходит по логическим напряжениям
pico даст логический сигнал максимум 3.3V а он требует минимум 4V для открытия

Кнопка- GP5 , GND
Модуль фоторезистора-GP22 , GND
Модуль реле-GP21 , GND
Рекомендую соединить все земли отдельными проводами
Pico питается через свой Micro-USB
Оба модуля требуют 5V питания
(На всякий случай выдерните провод microUSB пока все подключаете)

код:

import board
from digitalio import DigitalInOut, Direction, Pull
import digitalio
import asyncio

s1 = DigitalInOut(board.GP22)
s1.direction = Direction.INPUT
s1.pull = Pull.DOWN

b1 = DigitalInOut(board.GP5)
b1.direction = Direction.INPUT
b1.pull = Pull.UP

r1 = DigitalInOut(board.GP21)
r1.direction = Direction.OUTPUT

led = DigitalInOut(board.GP25)
led.direction = digitalio.Direction.OUTPUT

async def main():
val=True

while True:
if val:
if s1.value:
if not led.value: led.value=True
r1.value=True
else:
if led.value: led.value=False
r1.value=False

if not b1.value: #Игнорирование датчика
if val: #Включение игнора
val=False
led.value=True
await asyncio.sleep(0.3)
led.value=False
r1.value=False
await asyncio.sleep(0.3)
else: #Выключение игнора
led.value=True
await asyncio.sleep(1)
led.value=False
val=True

await asyncio.sleep(0.05)

asyncio.run(main())

Также нужно установить библиотеку asyncio и adafruit_ticks в плату
как устанавливать библиотеки я уже говорил в прошлой статье:

если не устанавливается через Thonny
То скачайте библиотеку здесь:
asyncio , adafruit_ticks

Готово!
Немного информации:
1 долгий «пик» светодиодом-Выключение игнорирования датчика
1 короткий «пик» cветодиодом-Включение игнорирования датчика
Включение и Выключение игнорирования воспроизводится через кнопку на пине GP5
Работа кода:
(Модуль реле был занят , поэтому понаблюдайте за светодиодом на плате)

Cпасибо за прочтение статьи! Надеюсь это хоть как-то вам помогло
По возможности , «плюсаните» статью 🙂

Ccылки:
adafruit_ticks , asyncio , проект

GitHub:

Первая часть:

 

Источник

pico, raspberry, автоматического, включения, для, использовать, Как, Практическое, руководство, света

Читайте также