Первая часть с вводной информацией вверху
Обещал макропад, но я еще не заказал переключатели поэтому делаем из чего есть 🙂
К делу, надо сделать само авто выключение/включение света, а также возможность включения игнорирования датчика
Датчиком будет модуль фоторезистора с 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:
Первая часть: