Мазмуну:
- Жабдуулар
- 1 -кадам: 3D басып чыгаруу
- 2 -кадам: Circuit
- 3 -кадам: Raspberry Pi даярдоо
- 4 -кадам: Код
- 5 -кадам: Бардыгын бириктирүү
- 6 -кадам: Бир жылдан кийин…
Video: Балдардын уйкуга үйрөтүү сааты: 6 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Мага 4 жаштагы эгиздеримдин дагы бир аз уктап калышына жардам берүү үчүн саат керек болчу (мен ишемби күнү эртең мененки 5: 30да ойгонушум керек болчу), бирок алар азырынча убакытты окуй алышпайт. Абдан популярдуу соода сайтындагы бир нече нерселерди карап чыккандан кийин, "Жөн эле жасоо канчалык кыйын болмок эле?!"
Ошентип, мен бул долбоордо эмнени каалаарымды түшүндүм. Бул үч башка түстү көрсөтүү үчүн кээ бир RGB LEDлерин колдонот (көбүнчө менде башка долбоордун элүүдөйү бар). Кызыл түс уктап кетүүнү билдирет, ойгонууга эрте. Сары түс алар ордунан туруп, өз бөлмөсүндө тынч ойной алат дегенди билдирет. Жашыл, албетте, ордунан тура алат дегенди билдирет. Мен дагы убакытты тууралагым келди, анткени кээ бир күндөрдө көбүрөөк уктап калгым келет (Дем алыш күндөрү/Майрамдар vs Жума күндөрү жана башкалар).
Жабдуулар
Raspberry Pi Zero W
Эки RGB LED
Алты 220 Ом резистор
Файлдар (.stl, python, html) бул жерден табылган
Ар кандай кичинекей бурамалар, зымдар жана кичинекей тетиктер керек болгондо.
1 -кадам: 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
Район абдан оңой. Мен 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 &
Бул жерде эстей турган эки нерсе бар:
- LINUX sleeptraner1_1.py файлы rc.local менен бир каталогдо жайгашкан деп ойлобошу үчүн, абсолюттук файлдык жолду колдонуңуз.
- Аягында амперсанды (&) унутпаңыз. бул 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 -кадам: Бардыгын бириктирүү
Коддоо бүтүп, бардык бөлүктөрү басылып чыккандан кийин, жыйноо убактысы келди. Мен баарын бириктирүү үчүн бул кадамдарды жасадым:
- Мүйүздүн ылдый жагындагы RGB светодиоддоруна окшогон эки кичинекей тешикти бургулаңыз жана бул тешиктерге LEDдерди коюңуз.
- Мүйүздү жалгыз мүйүздүү баштын тешигине салып, аны бекем болгонго чейин тартыңыз. Мүйүздү бекитүү үчүн ичинен клей колдонуңуз.
- Жалгыз мүйүздүү баштын ичине Raspberry Pi Zero W тиркеңиз. (Балким, ысык клей тапанчасын колдонуу менен)
- Жалгыз мүйүздүү башты жалгыз мүйүздүү базага бекиңиз.
- Электр шнурун туташтырыңыз жана бүт куралды дубалга тиркеңиз.
- Саатты сайыңыз.
Бул жерде мен иштеп жаткан балдардын уйку тренери сааты бар.
6 -кадам: Бир жылдан кийин…
Бир жылдан кийин:
Менин кыздарым дагы бир аздан кийин уктап жатышат. Биз бөлмөбүздөгү кичинекей балдарды ойготууга көнүп калдык: "Ата, жарык жашыл". жана бул сонун. Кыскача айтканда, биз ишемби күнү эртең мененки саат 5.30да ойгонобуз.
Мен келечекте жакшыртууну пландап жаткан нерселер:
- Балким, сенсорлорду же микрофон жана динамиктер сыяктуу башка нерселерди кошсоңуз болот.
- Балким, менин балдарым жакында мектепке кире тургандыктан, ойготкуч катары колдонуу үчүн спикер менен иштөө үчүн кодду түзөтүңүз.
Сунушталууда:
Балдарга убакытты үйрөтүү үчүн RGB сааты: 4 кадам
Балдарга убакытты үйрөтүү үчүн RGB сааты: Кечээ кечинде мен 5 жашымда убакытты түшүнүүгө кантип жардам берүүнү ойлоп таптым. Балдар кийинкиде эмне болоорун түшүнүү үчүн күнүмдүк окуяларга багыт алганы анык. эреже катары, бир аз баш аламандык жана дээрлик эч качан
Классикалык роботту кантип үйрөтүү керек: 5 кадам (сүрөттөр менен)
Instructables боюнча Clumsy Robotту кантип ойноо керек .: Эгерде сиз бактысыз болсоңуз (же бактысыз болсоңуз), инструктивдүү сервердин катасы жөнүндө кабардар болуп калсаңыз, аны менен көңүл ачыңыз. Киргизилген оюн жөн эле үйрөтүлүүчү робот жана ачкычтар менен учуучу кушка окшош. Мында мен
Ultrasonic Theremin (Үн үйрөтүү): 3 кадам (Сүрөттөр менен)
Ultrasonic Theremin (Үн үйрөтүү): Ultrasonic Theremin - үн толкундарын үйрөтүү үчүн арзан тереминди колдонгон Arduino долбоору. Колго чейинки аралыкты түзмөккө өзгөртүү менен мен үн толкундарынын жыштыгын өзгөртүп жатам. Ошондой эле, потенциометрди жылдыруу t амплитудасын өзгөртөт
Сыйлыктарды кантип үйрөтүү керек: 7 кадам (сүрөттөр менен)
Instructables программасында сыйлыктарды кантип утуп алса болот: " көрсөтмө утуштарды кантип алуу керек " Instructables боюнча издөө тилкесинде сиз Mrballeng тарабынан Instructables конкурстарында кантип биринчи орунга ээ болосуз. Ооба, сиз муну окушуңуз керек жана Мрбаленгени ээрчишиңиз керек, анткени анын сонун сулуулугу бар
Lego роботтору менен PID көзөмөлүн үйрөтүү: 14 кадам
Lego роботтору менен PID көзөмөлүн үйрөтүү: Көптөгөн жаш робот ышкыбоздору башкаруунун өркүндөтүлгөн темаларына кызыгышат, бирок көбүнчө жабык укурук системаларын анализдөө үчүн зарыл болгон эсептөөлөргө тоскоол болушу мүмкүн. Интернетте "… курулушун жөнөкөйлөтүүчү сонун ресурстар бар