Съдържание:

Детски часовник за сън: 6 стъпки (със снимки)
Детски часовник за сън: 6 стъпки (със снимки)

Видео: Детски часовник за сън: 6 стъпки (със снимки)

Видео: Детски часовник за сън: 6 стъпки (със снимки)
Видео: Детето ми се храни само със зеленчуци 2024, Юли
Anonim
Детски часовник за сън
Детски часовник за сън
Детски часовник за сън
Детски часовник за сън
Детски часовник за сън
Детски часовник за сън
Детски часовник за сън
Детски часовник за сън

Имах нужда от часовник, за да помогна на моите 4 -годишни близнаци да се научат да спят малко по -дълго (достатъчно ми е, че трябва да се събуждам в 5:30 сутринта в събота), но те все още не могат да четат времето. След като прегледах няколко елемента на много популярен сайт за пазаруване, си помислих: „Колко трудно би било просто да си направим такъв ?!“

Така че ето какво реших, че искам в този проект. Той ще използва някои RGB светодиоди (най -вече защото имам около петдесет от тях от друг проект) за показване на три различни цвята. Червеното би означавало да заспите, твърде рано е да се събудите. Жълтото би означавало, че те могат да станат и да играят тихо в стаята си. Зеленото, разбира се, означава, че можете да станете. Исках също да мога да коригирам времето, защото бих искал да спя по -дълго в някои дни (уикенди/празници срещу делнични дни и други).

Консумативи

Raspberry 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 с нетърговска цел. Промених основата на еднорога, за да пасне на захранващ кабел за малиновата пи нула. Случайно около мен имаше AMZ3D Red PLA, така че основата и главата на еднорога ще бъдат червени. Използвах прозрачен/полупрозрачен PLA за клаксона.. Stl файловете и настройките, които използвах са:

Еднорог.stl

  • Височина на слоя: 0,02
  • Дебелина на стената:.8
  • Брой линии на стената: 2
  • Запълване: 15%
  • Модел на пълнене: Решетка

UnicornBase.stl

  • Височина на слоя: 0,02
  • Дебелина на стената:.8
  • Брой линии на стената: 2
  • Запълване: 15%
  • Модел на пълнене: Решетка

Horn.stl

  • Височина на слоя: 0,02
  • Дебелина на стената: 0,8
  • Брой линии на стената: 3
  • Попълване: 0

Стъпка 2: Веригата

Веригата
Веригата
Веригата
Веригата
Веригата
Веригата

Схемата е доста лесна. Избрах шест различни GPIO пина, за да контролирам включването/изключването за различните цветове на RGB. Тези щифтове и съответните LED цветове са:

  • ПИН 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 статични сървъри на име на домейн = 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 при стартиране. Ще ви е необходим достъп на ниво root, за да промените файла rc.local, така че въведете:

sudo nano /etc/rc.local

В редактора превъртете надолу и точно преди изходния ред 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. Използвах обект за дата и час, за да сравня часовете с тези, прочетени във файла sleepset.txt. Текстовият файл е просто два реда, първият за час, вторият за минута. sleeptrainer1_1.py спи една минута между цикличните цикли, за да не обвърже процесора. Първоначално зелената светлина излизаше твърде ярка, затова използвах модулация на ширината на импулса, за да я затъмня, когато се използва с червено, за да стане жълто.

Код на Python:

импортирайте RPi. GPIO като GPIO

от datetime импортиране datetime като dt време за импортиране 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 (red2, GPIO. OUT) GPIO.setup (green1, GPIO. OUT) GPIO.setup (green2, GPIO. OUT) GPIO.setup (blue1, GPIO. OUT) GPIO.setup (blue2, 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) връщане a, b def ledlight (color): if (color == "red"): 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 == "blue"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.stop () p2.stop () GPIO.output (blue1, GPIO. HIGH) GPIO.output (blue2, GPIO. HIGH) elif (color == "green"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) p1.start (100) p2.start (100) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "yellow"): p1.start (60) p2.start (60) GPIO.output (red1, GPIO. HIGH) GPIO.output (червен2, GPIO. HIGH) GPIO.изход (син1, GPIO. LOW) GPIO.изход (син2, GPIO. LOW) elif (цвят == "изключен"): GPIO.изход (червен1, GPIO. LOW) GPIO.изход (червен2, GPIO. LOW) GPIO.изход (син1, GPIO. LOW) GPIO.изход (син2, GPIO. LOW) p1.stop () p2.stop () докато True: settime = readset () час, минута = settime ако минута == 0: ако dt (dt.now (). година, dt.now (). месец, dt.now (). ден, час-2) <dt.now () <dt (dt.now (), година, dt.now (). месец, dt.now (). ден, час-1, минута+30): ledlight ("червен") elif dt (dt.now (). година, dt.now (), месец, dt.now (). ден, час-1, минута+30) <dt.now () <dt (dt.now (). година, dt.now (). месец, dt.now (). ден, час, минута): светодиодна светлина ("жълта") elif dt (dt.now (). година, dt.now (). месец, dt.now (). ден, час, минута) <dt.now () <dt (dt.now (). година, dt.now (). месец, dt.now (). ден, час+1, минута): ledlight ("зелено") else: ledlight ("off") elif dt (dt.now (). година, dt.now (). месец, dt.now (). ден, ho ur-2) <dt.now () <dt (dt.now (). година, dt.now (). месец, dt.now (). ден, час, минута-30): ledlight ("червено") elif dt (dt.now (). година, dt.now (). месец, dt.now (). ден, час, минута-30) <dt.now () <dt (dt.now (). година, dt.now (). месец, dt.now (). ден, час, минута): ledlight ("жълто") elif dt (dt.now (). година, dt.now (). месец, dt.now (). ден, час, минута) <dt.now () <dt (dt.now (). година, dt.now (). месец, dt.now (). ден, час+1, минута): ledlight ("green") 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 сутринта в събота, когато вече го планираме.

Неща, които планирам да подобря в бъдеще:

  • Може би добавяне на сензори или други елементи като микрофон и високоговорители.
  • Може би редактирайте кода, за да работите с високоговорител, който да използвате като будилник, тъй като децата ми скоро ще тръгнат на училище.

Препоръчано: