Mundarija:

Meni uyg'ot - aqlli budilnik: 6 qadam
Meni uyg'ot - aqlli budilnik: 6 qadam

Video: Meni uyg'ot - aqlli budilnik: 6 qadam

Video: Meni uyg'ot - aqlli budilnik: 6 qadam
Video: Zino qilgan ayolni dinda qanday jazolashadi? 2024, Noyabr
Anonim
Meni uyg'ot - aqlli budilnik
Meni uyg'ot - aqlli budilnik

Meni uyg'ot - aqlli budilnik, uni aqlli yorug'lik sifatida ham ishlatish mumkin.

O'rnatilgan chiziq chizig'i sizning xonangizga kiradigan tabiiy yorug'likni taqlid qiladi. Bu sizning kuningizni tinch va tabiiy tarzda boshlashingizga imkon beradi.

Budilnik, shuningdek, vaqtni o'qish uchun 4*7 segmentli displey, sevimli musiqangiz bilan uyg'onish uchun karnaylar, sensorli tugma, LED chizig'ining yorqinligini moslashtirish uchun ldr va harorat sensori bilan jihozlangan. xonangizdagi harorat.

Ta'minotlar

Men to'lagan aniq narxlar ro'yxatini bu erda topishingiz mumkin:

Mikrokontrollerlar va kompyuterlar:

Raspberry Pi 4I malina pi 4 4GB ishlatgan, ammo har qanday malina pi modeli 3+ yaxshi bo'lishi kerak

Arduino Uno

Arduino 4*7 segmentli soat displeyini boshqarish uchun ishlatiladi.

Sensorlar:

  • TMP36: harorat sensori
  • LDR: nurga qarshilik

Aktuatorlar:

  • WS2801: Individual ravishda kirish mumkin bo'lgan chiziq
  • LCD displey: 16*2 o'lchamli LCD displey.
  • 4*7 segmentli soat displeyi

IC:

  • 74HC595: LCD displey uchun Shiftregister
  • MCP3008: 8-bitli analog raqamli konvertor
  • Mantiqiy darajadagi konvertor: raspi va arduino o'rtasida muloqot qilish uchun ishlatiladi

Boshqa narsalar:

  • Karnaylarni quvvatlantirish uchun adafruit MAX9744 kuchaytirgichi
  • Har qanday karnay, men Visaton 4Ohm 8Watt to'liq diapazonli dinamikdan foydalanardim (2240 -modda).
  • Kuchaytirgichni quvvatlantirish uchun 9 voltli quvvat manbai
  • Led va boshqa komponentlarni etkazib berish uchun 5 voltli quvvat manbai. LED chizig'idagi har bir LED 60 mA ga tushishi mumkinligini yodda tuting, shuning uchun quvvat manbai etarli ekanligiga ishonch hosil qiling.
  • Bir necha 220 Ohm qarshilik
  • Sizning holatingizga qo'yish uchun kichik non paneli.

Asboblar:

  • Lehimlash temir.
  • Ishni bajarish uchun biror narsa (yog'och effekt olish uchun men PLA va PETG bilan 3D printerni va vinil stikerlardan foydalanardim.)

1 -qadam: Raspberry Pi -ni sozlash

Malinali pi - bizning asosiy mikro boshqaruvchimiz.

Raspberry pi bizning mahalliy veb -serverimizni, ma'lumotlar bazasini boshqaradi, LED chizig'ini, karnaylarni boshqaradi …

1 -qism: Raspbian -ni o'rnatish

Raspbian -ni o'rnatish uchun ushbu qo'llanmadan foydalaning:

SSH yoqilganligiga ishonch hosil qiling

2 -qism: Ulanish

Internetga ulanish uchun siz malina pi terminaliga kirishingiz kerak. Men macun ishlatishni maslahat beraman. Terminal turida:

wpa_passphrase "Sizning tarmoq" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

"YourNetwork" - bu Wi -Fi tarmog'ingizning nomi va "YourSSID" - bu tarmoq parolidir.

Tarmoqni qo'shgandan so'ng, Raspberry Pi -ni qayta ishga tushiring.

"Ping 8.8.8.8" buyrug'ini kiriting, agar siz tarmoqqa ulangan bo'lsangiz va u ishlayotgan bo'lsa, Google serverlariga paket yuboriladi.

3 -qism: kerakli dasturlarni o'rnating

Loyihani ishga tushirish uchun bizga qo'shimcha dasturlarni o'rnatish kerak bo'ladi.

Ishni boshlashdan oldin, hamma narsa yangilanganligiga ishonch hosil qilish uchun ushbu 2 buyruqni bajaring.

sudo apt yangilash

sudo apt upgrade

Bu biroz vaqt olishi mumkin.

Apache

sudo apt install apache2 -y

sudo apt ni o'rnating php libapache2-mod-php -y

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt install php -mysql -y

PHPMyAdmin

sudo apt install phpmyadmin -y

Python quvur

Ba'zi python kutubxonalarini yoqish uchun biz pip o'rnatishimiz kerak

pip3 mysql-connector-python-ni o'rnating

pip3 flask-socketio-ni o'rnating

pip3 flakon-korslarni o'rnating

pip3 gevent -ni o'rnating

pip3 gevent-websocket-ni o'rnating

2 -qadam: Elektronni ulash

Elektronni ulash
Elektronni ulash
Elektronni ulash
Elektronni ulash

Men ikkita sxemani qo'shdim, 1 - sinov uchun non paneli. Men birinchi sxemani tuzishni va kodni ishlashga harakat qilishni tavsiya qilaman.

Men quyida qotib qolgan fayllarni qo'shdim.

3 -qadam: ma'lumotlar bazasini loyihalash

Ma'lumotlar bazasi dizayni
Ma'lumotlar bazasi dizayni

Bu men yaratgan ma'lumotlar bazasi sxemasi. So'zlar golland tilida, lekin men har bir jadvalni batafsil tushuntirib beraman.

1 -jadval: tblMuziek

Bu juda oddiy jadval. Bu qo'shiqchining ismini, qo'shiq nomini va fayl nomini saqlaydi.

2 -jadval: tblLedstrip

Bu jadvalda chiziq chizig'ining hozirgi holati kuzatiladi, bu esa chiziq chizig'ining holatini saqlaydi. Bu bizga smartlight funktsiyasi uchun kerak.

3 -jadval: tblSensoren

Bu jadval signalizatsiyadagi sensorlarni kuzatib boradi. Biz sensor va MCP3008 kanalining nomini saqlaymiz

4 -jadval: tblMeting

Bu jadvalda sensorlarimiz qiymatlari va vaqtlari saqlanadi.

5 -jadval: tblWekker

Bu jadvalda budilnikning paroli va nomi saqlanadi (masalan, yotoqxona). Bu jadval majburiy emas, lekin men sizning uyingizda 1dan ortiq budilnik bor deb o'ylayman.

6 -jadval: signal signalizatsiyasi

Bu, ehtimol, eng muhim jadval. U siz o'rnatgan budilnikni va soat nima qilishi kerakligini kuzatib boradi (qaysi qo'shiqni ijro etish kerak, qaysi ketma -ketlikni boshqargan, qaysi kunlarda o'chishi kerak …). 2 sanani kuzatib borish juda muhim. Qachon signal o'chishi kerakligini saqlash uchun 1 sana ishlatiladi. Ikkinchisi, signal oxirgi marta qachon yopilganligini kuzatib boradi. Ish kuni qanday bo'lishi kerakligini bilish uchun men 7 ta raqamdan iborat varchar ishlatardim. Birinchi raqam dushanba, ikkinchi seshanba,… Agar 1 bo'lsa, u o'chishi kerak, 0 bo'lsa, bo'lmasligi kerak. Misol: 1111100 bu shuni anglatadiki, bu signal dushanba, seshanba, chorshanba, payshanba va juma kunlari o'chishi kerak.

4 -qadam: Arduino -ni sozlash

Bu qadam juda oson. Keyingi bosqichda mening github -ga havola bo'ladi, u erda siz arduino faylini yuklab olishingiz mumkin.

Dastur nima qiladi?

Dastur pi -dan ketma -ket ma'lumotlar kelishini kutadi.

Ma'lumotlar olinishi bilan u ipdan ajratiladi va pi ga tasdiqni qaytaradi.

String shunday bo'ladi: "1201", bu soat 12:01. Men 7 anodli umumiy anodli displeydan foydalandim, bu raqamlar yuqori bo'lishi kerak va ularni yoqish uchun A, B, C, D, E, F, G va DP past bo'lishi kerak. Agar siz umumiy katoddan foydalansangiz, "HIGH" ni "LOW" va "LOW" ni "HIGH" ga o'zgartirishingiz kerak.

Bu erda 7 segmentli displeylar qanday ishlashi haqida qo'shimcha ma'lumot berilgan havola. (kutubxonadan foydalangan holda):

www.instructables.com/id/Using-a-4-digit-7…

Kutubxonadan foydalanmasdan 7 segmentli displeylar haqida havola:

create.arduino.cc/projecthub/SAnwandter1/p…

5 -qadam: Raspberry Pi orqa qismi

Raspberry Pi orqa qismi
Raspberry Pi orqa qismi

Siz mening kodimni Github -dan yuklab olishingiz mumkin. (https://github.com/VanHevelNico/WakeMeUp)

Dasturni qanday o'rnatish kerak:

Orqa tomon kolba yordamida pitonda yozilgan. Siz ushbu dasturni (app.py) avtomatik ravishda ishga tushiradigan xizmatni yaratishingiz mumkin.

Old kodni biz ilgari yuklagan apache serverining html fayliga qo'yish kerak. (/var/html)

Dastur qanday ishlaydi?

Budilnik yoqilganda, soatning IP manziliga o'ting (u LCD displeyda ko'rsatiladi)

Brauzeringizdagi IP -manzilga kirganingizda, kompyuteringiz mijozga ulanganligi haqida socket.io so'rovini yuboradi. Orqa fon qabul qilganda, bir nechta mavzu boshlanadi, men quyida tushuntiraman.

Sozlash

Bu barcha kerakli ob'ektlarni birlashtiradi.

GetTemp

Bu mcp3008 0 kanalini o'qiydi va ikkilik ma'lumotlarni haqiqiy haroratga o'zgartiradi va joriy sana va soat bilan ma'lumotlar bazasiga joylashtiradi.

GetTempGrafiek

Bu harorat sensori o'tgan 20 qiymatini oladi va uni old tomonga chiqaradi.

tijd_sturen

Bu usul joriy vaqtni oladi va daqiqa o'zgarganligini tekshiradi. Agar u o'zgargan bo'lsa, dastur ketma -ket aloqa yordamida yangi vaqtni arduino -ga yuboradi

chek signallari

Bu eng muhim usul. U yoqilgan barcha signallarni oladi va bu signallarning 5 yoki 5 minut oldin o'chishi kerakligini tekshiradi (bu har bir signal kerak bo'lganda o'chib ketishiga ishonch hosil qilish uchun bufer). Agar signal o'chishi kerak bo'lsa, biz musiqani, chiziq chizig'ini ishga tushiramiz … Biz kuchga sezgir rezistorni muttasil o'qiymiz va qiymat 1000dan pastga tushganda (fsr bosilganda o'qiladi) Biz signalni o'chirib, signalni yangilaymiz. ma'lumotlar bazasi. Biz signal oxirgi marta o'chgan sanani joriy sanaga o'rnatdik.

statusLight

Bu usul chiziq chizig'ining qiymatini chiqaradi va agar kerak bo'lsa, chiziq chizig'ini yoqadi.

lixAanpassen

Bu LED chizig'i va signal chiroqlari bir -biriga zid kelmasligiga ishonch hosil qilishning qo'shimcha usuli.

6 -qadam: ish

Koson
Koson
Koson
Koson
Koson
Koson

Mening fayllarimga havolani bu erda topish mumkin:

Kosonni chop etish uchun 3d printerdan foydalanardim. U 4 xil qismda chop etilgan:

  1. Karnay uchun teshiklari va 7 segmentli displey uchun ba'zi devorlari bo'lgan oldingi plastinka
  2. PETG shaffof shamchiroqidagi chiziqlar uchun tashqi halqa.
  3. O'rta qismi
  4. Lcd uchun teshikli va kabellar uchun teshikli orqa panel.

Asl modelda 7 segmentli displey uchun teshik yo'q edi, lekin bu kerak, chunki aks holda 7 segmentli displeyning nuri o'tmaydi.

Ko'rib turganingizdek, barcha komponentlarni joylashtirgandan so'ng, yakuniy natijani yaxshiroq ko'rsatish uchun yog'ochdan yasalgan vinil stikerlardan foydalanardim. Stiker orqali soat displeyi porlab turadi, bu esa juda chiroyli ko'rinishga olib keladi.

Tavsiya: