Мазмуну:

Балдардын уйкуга үйрөтүү сааты: 6 кадам (сүрөттөр менен)
Балдардын уйкуга үйрөтүү сааты: 6 кадам (сүрөттөр менен)

Video: Балдардын уйкуга үйрөтүү сааты: 6 кадам (сүрөттөр менен)

Video: Балдардын уйкуга үйрөтүү сааты: 6 кадам (сүрөттөр менен)
Video: АТА-ЭНЕГЕ таарынган балдарга насыйкат. Шейх Чубак ажы 2024, Ноябрь
Anonim
Балдардын уйку сааты
Балдардын уйку сааты
Балдардын уйку сааты
Балдардын уйку сааты
Балдардын уйку сааты
Балдардын уйку сааты
Балдардын уйку сааты
Балдардын уйку сааты

Мага 4 жаштагы эгиздеримдин дагы бир аз уктап калышына жардам берүү үчүн саат керек болчу (мен ишемби күнү эртең мененки 5: 30да ойгонушум керек болчу), бирок алар азырынча убакытты окуй алышпайт. Абдан популярдуу соода сайтындагы бир нече нерселерди карап чыккандан кийин, "Жөн эле жасоо канчалык кыйын болмок эле?!"

Ошентип, мен бул долбоордо эмнени каалаарымды түшүндүм. Бул үч башка түстү көрсөтүү үчүн кээ бир RGB LEDлерин колдонот (көбүнчө менде башка долбоордун элүүдөйү бар). Кызыл түс уктап кетүүнү билдирет, ойгонууга эрте. Сары түс алар ордунан туруп, өз бөлмөсүндө тынч ойной алат дегенди билдирет. Жашыл, албетте, ордунан тура алат дегенди билдирет. Мен дагы убакытты тууралагым келди, анткени кээ бир күндөрдө көбүрөөк уктап калгым келет (Дем алыш күндөрү/Майрамдар vs Жума күндөрү жана башкалар).

Жабдуулар

Raspberry Pi Zero W

Эки RGB LED

Алты 220 Ом резистор

Файлдар (.stl, python, html) бул жерден табылган

Ар кандай кичинекей бурамалар, зымдар жана кичинекей тетиктер керек болгондо.

1 -кадам: 3D басып чыгаруу

3D басып чыгаруу
3D басып чыгаруу
3D басып чыгаруу
3D басып чыгаруу
3D басып чыгаруу
3D басып чыгаруу

Менин кызым чын эле мүйүздүү мүйүздөргө окшош, ошондуктан бул долбоор үчүн мен Riven02дин Unicorn Nightlight ремиксин жасадым, бул Apachcreation's Unicorn Trophy ремикси, аны Thingiverse.com сайтынан табууга болот жана Creative Commons коммерциялык эмес лицензиясынын астында колдонулат. Мен малина pi нөлүнүн кубат сымына ылайыкташтырып уникорн базасын өзгөрттүм. Менде AMZ3D Red PLA бар болчу, андыктан уникорндун башы жана башы кызыл болот. Мен мүйүз үчүн тунук/тунук PLA колдондум. Мен колдонгон.stl файлдары жана орнотуулары:

Unicorn.stl

  • Катмар бийиктиги: 0.02
  • Дубал калыңдыгы:.8
  • Wall Line саны: 2
  • Толтуруу: 15%
  • Толтуруу үлгүсү: Тор

UnicornBase.stl

  • Катмар бийиктиги: 0.02
  • Дубал калыңдыгы:.8
  • Wall Line саны: 2
  • Толтуруу: 15%
  • Толтуруу үлгүсү: Тор

Horn.stl

  • Катмар бийиктиги: 0.02
  • Дубал калыңдыгы: 0.8
  • Wall Line саны: 3
  • Толтуруу: 0

2 -кадам: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Район абдан оңой. Мен RGBдин ар кандай түстөрүн күйгүзүү/өчүрүү үчүн алты башка GPIO казыгын тандадым. Бул казыктар жана тиешелүү LED түстөр:

  • 11 RGB 1 REDге кадоо
  • 13 RGB 1 GREENге кадаңыз
  • 15 RGB 1 BLUEга кадаңыз
  • 16 RGB 2 REDге кадаңыз
  • 18ди RGB 2 GREENге кадаңыз
  • 36 RGB 2 BLUEга кадаңыз
  • Жерге 39 -кадаңыз

Ар бир пин 220 Ом токту чектөөчү резистор аркылуу резисторго илинет (албетте жерди кошпогондо.) Мен резисторду линияга кошуп, жылуулукту кысуучу түтүктөр менен жаптым.

3 -кадам: Raspberry Pi даярдоо

Мен веб интерфейсинин жардамы менен уйку тренеринин саатын белгилей алгыбыз келди. Ошентип, мен Raspberry Piде Apache жана PHP Server орнотушум керек эле. Raspberry Piге жаңы программалык камсыздоону орнотууда дайыма кылышыңыз керек болгон биринчи нерсе - бул терүү аркылуу жаңыртылгандыгын текшерүү:

sudo apt-get update

Андан кийин, биз чындап эле бизнеске кире алабыз. Биз муну Apache2 орнотуу менен жасайбыз:

sudo apt -get apache2 -y орнотуу

бул Apache веб -серверин орнотушу керек. Сиз муну Raspberry piдеги браузерди колдонуу менен текшере аласыз:

localhost/

же башка компьютердин браузеринен Raspberry Piнин IP дарегине өтүү менен. IP дарегиңиздин түрүн табуу үчүн:

хосттун аты -I.

Муну кылуу демейки Apache Web Server барагына алып келет. Бул/var/www/html/каталогунда жайгашкан index.html алмаштыруу менен өзгөртүлүшү мүмкүн. Аны менин index.html файлым менен алмаштырса болот.

Кийинки PHP файлдарын иштетүү үчүн Apache веб -серверин орнотобуз. Терүү менен баштаңыз:

sudo apt-get 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 Drive шилтемесинен жайгаштыруу төмөнкүдөй болушу керек:

  • index.html жана sleepset.php/var/www/html каталогуна жайгаштырылышы керек
  • sleepset.txt жана sleeptrainer1_1.py/home/pi/pythoncode каталогуна жайгаштырылышы керек (кеңеш: бул каталогду түзүшүңүз керек)

Бул файлдарды туура каталогго жайгаштыргандан кийин, rc.local файлын ишке киргизүүдө sleeptrainer1_1.py программасын иштетүү үчүн өзгөртүү керек. 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 файлында окугандар менен салыштыруу үчүн мен datetime объектисин колдондум. Текст файлы эки саптан турат, биринчиси саат үчүн, экинчиси мүнөт үчүн. sleeptrainer1_1.py процессорду байлабоо үчүн циклди кайталоонун ортосунда бир мүнөт уктайт. Жашыл жарык башында өтө жарык болчу, ошондуктан мен аны импульстун туурасы модуляциясын колдонуп, кызыл түс менен сары кылып колдонгом.

Python коду:

GPO катары RPi. GPIO импорттоо

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) return a, b def ledlight (color): if (color == "red"): GPIO.output (red1, GPIO. ЖОГОРУ) 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. ЖОГОРУ) elif (түс == "жашыл"): 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 (red2, GPIO. HIGH) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) elif (color == "off"): GPIO.output (red1, GPIO. LOW) GPIO.output (red2, GPIO. LOW) GPIO.output (blue1, GPIO. LOW) GPIO.output (blue2, GPIO. LOW) p1.stop () p2.stop () True: settime = readset () саат, мүнөт = убакыт эгер мүнөт == 0: эгер dt (dt.now (). жыл, dt.now (). ай, dt.now (). күн, саат-2) <dt.now () <dt (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, мүнөт): светофор ("жашыл") башка: лампа ("өчүк") элиф dt (dt.now (). жыл, dt.now (). ай, dt.now (). күн, ho ur-2) <dt.now () <dt (dt.now (). жыл, dt.now (). ай, dt.now (). күн, саат, мүнөт-30): лампа ("кызыл") elif dt (dt.now (). жыл, dt.now (). ай, dt.now (). күн, саат, мүнөт-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, мүнөт): лампа ("жашыл") башка: лампа ("өчүк") убакыт.уйку (60)

Файл index.html HTMLде иштелип чыккан негизги форма. Бул эки текст кутучасынын мазмунун алат жана форманы иштетүү үчүн sleepset.php файлына өткөрөт. PHP файлы жөн эле sleepset.txt файлын жаңыртылган маалыматтар менен жазат.

5 -кадам: Бардыгын бириктирүү

Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу
Баарын бир жерге коюу

Коддоо бүтүп, бардык бөлүктөрү басылып чыккандан кийин, жыйноо убактысы келди. Мен баарын бириктирүү үчүн бул кадамдарды жасадым:

  1. Мүйүздүн ылдый жагындагы RGB светодиоддоруна окшогон эки кичинекей тешикти бургулаңыз жана бул тешиктерге LEDдерди коюңуз.
  2. Мүйүздү жалгыз мүйүздүү баштын тешигине салып, аны бекем болгонго чейин тартыңыз. Мүйүздү бекитүү үчүн ичинен клей колдонуңуз.
  3. Жалгыз мүйүздүү баштын ичине Raspberry Pi Zero W тиркеңиз. (Балким, ысык клей тапанчасын колдонуу менен)
  4. Жалгыз мүйүздүү башты жалгыз мүйүздүү базага бекиңиз.
  5. Электр шнурун туташтырыңыз жана бүт куралды дубалга тиркеңиз.
  6. Саатты сайыңыз.

Бул жерде мен иштеп жаткан балдардын уйку тренери сааты бар.

6 -кадам: Бир жылдан кийин…

Бир жылдан кийин …
Бир жылдан кийин …

Бир жылдан кийин:

Менин кыздарым дагы бир аздан кийин уктап жатышат. Биз бөлмөбүздөгү кичинекей балдарды ойготууга көнүп калдык: "Ата, жарык жашыл". жана бул сонун. Кыскача айтканда, биз ишемби күнү эртең мененки саат 5.30да ойгонобуз.

Мен келечекте жакшыртууну пландап жаткан нерселер:

  • Балким, сенсорлорду же микрофон жана динамиктер сыяктуу башка нерселерди кошсоңуз болот.
  • Балким, менин балдарым жакында мектепке кире тургандыктан, ойготкуч катары колдонуу үчүн спикер менен иштөө үчүн кодду түзөтүңүз.

Сунушталууда: