Оглавление:

Детские часы для тренировки сна: 6 шагов (с изображениями)
Детские часы для тренировки сна: 6 шагов (с изображениями)

Видео: Детские часы для тренировки сна: 6 шагов (с изображениями)

Видео: Детские часы для тренировки сна: 6 шагов (с изображениями)
Видео: ФИТНЕС-БРАСЛЕТ М6. SMART BAND 6 - ОБЗОР и ПЕРВАЯ НАСТРОЙКА (39 ЦИФЕРБЛАТОВ!) 2024, Ноябрь
Anonim
Детские часы для тренировки сна
Детские часы для тренировки сна
Детские часы для тренировки сна
Детские часы для тренировки сна
Детские часы для тренировки сна
Детские часы для тренировки сна
Детские часы для тренировки сна
Детские часы для тренировки сна

Мне нужны были часы, чтобы помочь моим 4-летним близнецам научиться спать подольше (мне уже достаточно было просыпаться в 5:30 утра по субботам), но они еще не умеют читать время. После просмотра нескольких товаров на очень популярном торговом сайте я подумал: «Насколько сложно было бы просто сделать один ?!»

Итак, вот что я решил, что хочу в этом проекте. Он будет использовать несколько светодиодов RGB (в основном потому, что у меня их около пятидесяти из другого проекта) для отображения трех разных цветов. Красный будет означать, что нужно снова заснуть, рано просыпаться. Желтый означает, что они могут встать и спокойно поиграть в своей комнате. Зеленый, конечно, означает, что вы можете встать. Я также хотел иметь возможность регулировать время, потому что в некоторые дни я хотел бы спать дольше (выходные / праздничные дни против будних дней и т. Д.).

Запасы

Малина Pi Zero W

Два светодиода RGB

Шесть резисторов 220 Ом

Файлы (.stl, python, html) найдены здесь

Различные винтики, провода и мелкие детали по мере необходимости.

Шаг 1: 3D-печать

3D печать
3D печать
3D печать
3D печать
3D печать
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 &

Здесь нужно помнить две вещи:

  1. Используйте абсолютный путь к файлу, чтобы LINUX не считал, что файл sleeptraner1_1.py находится в том же каталоге, что и rc.local.
  2. Не забывайте амперсанд (&) в конце. это позволит 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: Собираем все вместе

Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе

Когда кодирование закончено и все детали напечатаны, пришло время для сборки. Я выполнил следующие шаги, чтобы собрать все вместе:

  1. Просверлите два небольших отверстия размером с RGB-светодиоды в нижней части рожка и поместите светодиоды в эти отверстия.
  2. Вставьте рог в отверстие в голове единорога и протяните его до упора. Используйте клей изнутри, чтобы закрепить рог.
  3. Прикрепите Raspberry Pi Zero W к внутренней части головы единорога. (Возможно, с помощью горячего клея)
  4. Прикрепите голову единорога к основанию единорога.
  5. Присоедините шнур питания и прикрепите всю сборку к стене.
  6. Подключите часы.

На данный момент у меня есть действующие детские часы с тренером по сну.

Шаг 6. Год спустя…

Год спустя …
Год спустя …

Год спустя:

Мои девочки спят подольше. Мы привыкли просыпаться, когда маленькие дети в нашей комнате говорят: «Папа, свет зеленый». и это здорово. Короче говоря, мы просыпаемся только в 5:30 в субботу, когда планируем это дальше.

Вещи, которые я планирую улучшить в будущем:

  • Возможно, добавление датчиков или других предметов, таких как микрофон и динамики.
  • Возможно, отредактируйте код, чтобы использовать динамик в качестве будильника, так как мои дети скоро пойдут в школу.

Рекомендуемые: