
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04




Мне нужны были часы, чтобы помочь моим 4-летним близнецам научиться спать подольше (мне уже достаточно было просыпаться в 5:30 утра по субботам), но они еще не умеют читать время. После просмотра нескольких товаров на очень популярном торговом сайте я подумал: «Насколько сложно было бы просто сделать один ?!»
Итак, вот что я решил, что хочу в этом проекте. Он будет использовать несколько светодиодов RGB (в основном потому, что у меня их около пятидесяти из другого проекта) для отображения трех разных цветов. Красный будет означать, что нужно снова заснуть, рано просыпаться. Желтый означает, что они могут встать и спокойно поиграть в своей комнате. Зеленый, конечно, означает, что вы можете встать. Я также хотел иметь возможность регулировать время, потому что в некоторые дни я хотел бы спать дольше (выходные / праздничные дни против будних дней и т. Д.).
Запасы
Малина Pi Zero W
Два светодиода RGB
Шесть резисторов 220 Ом
Файлы (.stl, python, html) найдены здесь
Различные винтики, провода и мелкие детали по мере необходимости.
Шаг 1: 3D-печать



Моя дочь очень любит единорогов, поэтому для этого проекта я сделал ремикс на Unicorn Nightlight от Riven02, который представляет собой ремикс на Unicorn Trophy от Apachcreation, который можно найти на Thingiverse.com и использовать по некоммерческой лицензии Creative Commons. Я модифицировал основу единорога, чтобы она соответствовала шнуру питания для Raspberry Pi Zero. У меня случайно оказалось немного AMZ3D Red PLA, поэтому основание и голова единорога будут красными. Я использовал прозрачный / полупрозрачный PLA для рожка. Я использовал следующие файлы.stl и настройки:
Unicorn.stl
- Высота слоя: 0,02
- Толщина стенки: 0,8
- Количество линий стены: 2
- Заполнение: 15%
- Рисунок заполнения: сетка
UnicornBase.stl
- Высота слоя: 0,02
- Толщина стенки: 0,8
- Количество линий стены: 2
- Заполнение: 15%
- Рисунок заполнения: сетка
Horn.stl
- Высота слоя: 0,02
- Толщина стенки: 0,8
- Количество линий стены: 3
- Заполнение: 0
Шаг 2: Схема



Схема довольно простая. Я выбрал шесть разных контактов GPIO для управления включением / выключением разных цветов RGB. Эти контакты и соответствующие цвета светодиода:
- Контакт 11 к RGB 1 КРАСНЫЙ
- Контакт 13 для RGB 1 ЗЕЛЕНЫЙ
- Контакт 15 к RGB 1 СИНИЙ
- Контакт 16 к RGB 2 КРАСНЫЙ
- Контакт 18 для RGB 2 ЗЕЛЕНЫЙ
- Контакт 36 для RGB 2 СИНИЙ
- Штырь 39 на массу
Каждый вывод подключен к резистору через резистор ограничения тока 220 Ом (за исключением, конечно, земли). Я припаял резистор в линию и накрыл его термоусадочной трубкой.
Шаг 3: Подготовка Raspberry Pi
Я хотел иметь возможность устанавливать время для часов тренера сна с помощью веб-интерфейса. Поэтому мне нужно было настроить Apache и PHP-сервер на Raspberry Pi. Первое, что вы всегда должны делать при установке нового программного обеспечения на Raspberry Pi, - это обновлять его, набрав:
sudo apt-get update
После этого мы действительно можем приступить к делу. Мы сделаем это, установив Apache2:
sudo apt-get install apache2 -y
это должно установить веб-сервер Apache. Вы можете проверить это, используя браузер на Raspberry pi и перейдя к:
localhost /
или перейдя из браузера другого компьютера на IP-адрес вашего Raspberry Pi. Чтобы найти свой IP-адрес, введите:
имя хоста -I
Это приведет к открытию страницы веб-сервера Apache по умолчанию. Это можно изменить, заменив index.html, расположенный в каталоге / var / www / html /. Его можно заменить моим собственным файлом index.html.
Затем мы настроим веб-сервер Apache, чтобы иметь возможность запускать файлы PHP. Начните с ввода:
sudo apt-get install php libapache2-mod-php -y
теперь вы можете поместить файл sleepset.php в / var / www / html вместе с файлом index.html.
Чтобы перейти на эту страницу в вашей собственной сети, вам необходимо настроить Raspberry Pi со статическим IP-адресом (или вы можете просто попытаться определить новый IP-адрес, когда ваша сеть время от времени обновляет его). Чтобы это работало, вам нужно отредактировать пару файлов. Вам нужно будет отредактировать файл /etc/dhcpcd.conf следующим образом:
интерфейс wlan0
статический ip_address = 192.168.1. статические маршрутизаторы = 192.168.1.1 статические domain_name_servers = 192.168.1.1
Замените информацией о вашей сети. Единственное, что вам теперь нужно сделать, это перезагрузить компьютер.
перезагрузка sudo
Размещение файлов по ссылке на Google диск должно быть следующим:
- index.html и sleepset.php следует поместить в каталог / var / www / html.
- sleepset.txt и sleeptrainer1_1.py должны быть помещены в каталог / home / pi / pythoncode (подсказка: вам нужно будет создать этот каталог)
После размещения этих файлов в правильном каталоге необходимо изменить файл rc.local для запуска программы sleeptrainer1_1.py при запуске. Для изменения файла rc.local вам потребуется доступ с правами root, поэтому введите:
sudo nano /etc/rc.local
В редакторе прокрутите вниз и перед строкой exit 0 добавьте:
python /home/pi/pythoncode/sleeptrainer1_1.py &
Здесь нужно помнить две вещи:
- Используйте абсолютный путь к файлу, чтобы LINUX не считал, что файл sleeptraner1_1.py находится в том же каталоге, что и rc.local.
- Не забывайте амперсанд (&) в конце. это позволит LINUX запустить этот файл в фоновом режиме и продолжить загрузку.
Теперь сохраните файл, набрав ctrl-x, а затем y, когда будет предложено сохранить, а затем ENTER.
Затем введите sudo reboot.
Здесь следует упомянуть, что (как минимум) вы должны изменить свой пароль Raspberry Pi с помощью команды passwd. Если вы еще этого не сделали, сейчас самое подходящее время.
Шаг 4: Код
Ниже приведен код из файла sleeptrainer1_1.py. Я использовал объект datetime для сравнения времени со временем, прочитанным в файле sleepset.txt. Текстовый файл - это просто две строки, первая для часа, вторая для минут. Sleeptrainer1_1.py спит в течение одной минуты между итерациями цикла, чтобы не отвлекать процессор. Изначально зеленый свет выходил слишком ярким, поэтому я использовал широтно-импульсную модуляцию, чтобы приглушить его, когда использовал красный, чтобы сделать желтый.
Код Python:
импортировать RPi. GPIO как GPIO
from datetime import datetime as dt import time GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) red1 = 11 red2 = 16 green1 = 13 green2 = 18 blue1 = 15 blue2 = 36 GPIO.setup (red1, GPIO. OUT) GPIO.setup (красный2, GPIO. OUT) GPIO.setup (зеленый1, GPIO. OUT) GPIO.setup (зеленый2, GPIO. OUT) GPIO.setup (синий1, GPIO. OUT) GPIO.setup (синий2, GPIO. OUT) p1 = GPIO. PWM (green1, 100) p2 = GPIO. PWM (green2, 100) def readset (): setfile = open ("/ home / pi / pythoncode / sleepset.txt", 'r') a = setfile. readline () b = setfile.readline () a = int (a) b = int (b) return a, b def ledlight (цвет): if (color == "красный"): GPIO.output (red1, GPIO. HIGH) GPIO.output (red2, GPIO. HIGH) p1.stop () p2.stop () GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "синий"): GPIO.output (красный1, GPIO. LOW) GPIO.output (красный2, GPIO. LOW) p1.stop () p2.stop () GPIO.output (синий1, GPIO. HIGH) GPIO.output (синий2, GPIO. ВЫСОКИЙ) elif (цвет == "зеленый"): GPIO.output (красный1, GPIO. LOW) GPIO.output (красный2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "желтый"): p1.start (60) p2.start (60) GPIO.output (red1, GPIO. HIGH) GPIO.output (красный2, GPIO. HIGH) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "off"): GPIO.output (red1, GPIO. LOW) GPIO.output (красный2, GPIO. LOW) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) p1.stop () p2.stop () while True: settime = readset () час, минута = установленное время если минута == 0: если dt (dt.now (). year, dt.now (). month, dt.now (). day, hour-2) <dt.now () <dt (dt.now ().year, dt.now (). month, dt.now (). day, hour-1, minute + 30): ledlight ("красный") elif dt (dt.now (). year, dt.now ().month, dt.now (). day, hour-1, minute + 30) <dt.now () <dt (dt.now (). year, dt.now (). month, dt.now ().day, час, минута): ledlight ("желтый") elif dt (dt.now (). year, dt.now (). month, dt.now (). day, hour, minute) <dt.now () <dt (dt.now (). year, dt.now (). month, dt.now (). day, hour + 1, minute): ledlight ("зеленый") else: ledlight ("off") elif dt (dt.now (). year, dt.now (). month, dt.now (). day, ho ur-2) <dt.now () <dt (dt.now (). year, dt.now (). month, dt.now (). day, hour, minute-30): ledlight ("красный") elif dt (dt.now (). год, dt.now (). month, dt.now (). день, час, минута-30) <dt.now () <dt (dt.now (). год, dt.now (). month, dt.now (). день, час, минута): ledlight ("желтый") elif dt (dt.now (). year, dt.now (). month, dt.now ().day, час, минута) <dt.now () <dt (dt.now (). year, dt.now (). month, dt.now (). day, hour + 1, minute): ledlight ("зеленый") else: ledlight ("off") time.sleep (60)
Файл index.html - это базовая форма, разработанная в HTML. Он берет содержимое двух текстовых полей и передает их в файл sleepset.php для обработки формы. Файл PHP просто перезаписывает файл sleepset.txt обновленными данными.
Шаг 5: Собираем все вместе



Когда кодирование закончено и все детали напечатаны, пришло время для сборки. Я выполнил следующие шаги, чтобы собрать все вместе:
- Просверлите два небольших отверстия размером с RGB-светодиоды в нижней части рожка и поместите светодиоды в эти отверстия.
- Вставьте рог в отверстие в голове единорога и протяните его до упора. Используйте клей изнутри, чтобы закрепить рог.
- Прикрепите Raspberry Pi Zero W к внутренней части головы единорога. (Возможно, с помощью горячего клея)
- Прикрепите голову единорога к основанию единорога.
- Присоедините шнур питания и прикрепите всю сборку к стене.
- Подключите часы.
На данный момент у меня есть действующие детские часы с тренером по сну.
Шаг 6. Год спустя…

Год спустя:
Мои девочки спят подольше. Мы привыкли просыпаться, когда маленькие дети в нашей комнате говорят: «Папа, свет зеленый». и это здорово. Короче говоря, мы просыпаемся только в 5:30 в субботу, когда планируем это дальше.
Вещи, которые я планирую улучшить в будущем:
- Возможно, добавление датчиков или других предметов, таких как микрофон и динамики.
- Возможно, отредактируйте код, чтобы использовать динамик в качестве будильника, так как мои дети скоро пойдут в школу.
Рекомендуемые:
SWD >> Устройство для хорошего сна: 5 шагов

SWD >> Устройство для сна: устройство для воспроизведения приятного звука, например. дождь, волны, джунгли, чтобы лучше спать. Одна зарядка будет играть (на умеренной громкости) до 8 часов! Это " как " построить крошечный перезаряжаемый MP3-плеер. Я использовал коробку размером 8,5 x 7 x 4 см. Идея заключалась в том, чтобы собрать
Манекен для тренировки реакции: 9 шагов (с изображениями)

Манекен для тренировки реакции: В качестве просьбы друга-спортсмена создать дешевое, но эффективное устройство для улучшения тренировки реакции я придумал это! Идея заключалась в том, чтобы создать набор светодиодных устройств, которые пользователи должны отключать с помощью определения приближения. При отключении устройства случайным образом
Детские часы с подсветкой - Green Means Go! Красный, оставайся в кровати !!!: 5 шагов (с картинками)

Детские часы с подсветкой - Green Means Go! Red, Stay in BED !!!: Мы сходили с ума, не выспавшись !!! Наш двухлетний ребенок не мог понять, как «ждать семерки». на часах перед выходом из комнаты утром за утром. Он просыпался рано (я имею в виду около 5:27 утра - "там 7 !!!"
Жидкокристаллические очки для амблиопии (очки для тренировки чередующейся окклюзии) [ATtiny13]: 10 шагов (с изображениями)
![Жидкокристаллические очки для амблиопии (очки для тренировки чередующейся окклюзии) [ATtiny13]: 10 шагов (с изображениями) Жидкокристаллические очки для амблиопии (очки для тренировки чередующейся окклюзии) [ATtiny13]: 10 шагов (с изображениями)](https://i.howwhatproduce.com/images/002/image-4775-39-j.webp)
Жидкокристаллические очки при амблиопии (тренировочные очки с переменной окклюзией) [ATtiny13]: амблиопия (ленивый глаз), нарушение зрения, которым страдает примерно 3% населения, обычно лечится простыми повязками на глаза или каплями атропина. К сожалению, эти методы лечения закрывают более сильный глаз на длительные непрерывные периоды времени, нет
Создайте настоящие часы с боем колокола для вашего ПК и часы с огнетушителем: 3 шага (с изображениями)

Создайте настоящие часы с боем колокола для вашего ПК и часы с огнетушителем: медный колокол, маленькое реле, еще несколько вещей и настоящий колокол могут пробить часы на вашем рабочем столе. Хотя этот проект работает на Windows и Mac OS X тоже, я решил установить Ubuntu Linux на ПК, который я нашел в мусорном ведре, и поработать над этим: у меня никогда не было