Гайд по Raspberry Pi Pico , авто включение света

Гайд по Raspberry Pi Pico , авто включение света

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

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

Гайд по Raspberry Pi Pico , авто включение света

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

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

Гайд по Raspberry Pi Pico , авто включение света

Рызрыв кабеля подключаем к С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:

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

9
18 комментариев

И все еще не пикобут(

2
Ответить

вышлешь GameCube , будет PicoBoot

Ответить

По видео ничего не ясно. Ничего не меняется.

1
Ответить

Его сжало DTF , а так если приглядется к плате (зеленой) то можно увидеть зелененький огонек от светодиода на плате

1
Ответить

Давай уже чё-нибудь полезное, типа высокооптимизированный сервер для статик файлов, со статистикой какая у него будет пропускная способность если он будет раздавать файлы 100кб например (условная веб-страничка простенькая почти без картинок)

Ответить

у Pico FLASH на 1 МБ , а еще у меня версия без WiFi

Ответить

Предложи что-то другое )

Ответить