Turinys:

Pažadink mane - išmanusis žadintuvas: 6 žingsniai
Pažadink mane - išmanusis žadintuvas: 6 žingsniai

Video: Pažadink mane - išmanusis žadintuvas: 6 žingsniai

Video: Pažadink mane - išmanusis žadintuvas: 6 žingsniai
Video: Кто-нибудь из вас слышал о полуночной игре? Страшные истории. Мистика. Ужасы 2024, Lapkritis
Anonim
„Wake Me Up“- išmanusis žadintuvas
„Wake Me Up“- išmanusis žadintuvas

„Wake me up“yra išmanusis žadintuvas, kuris taip pat gali būti naudojamas kaip išmanioji lemputė.

Įmontuota LED juosta imituoja natūralią šviesą, patenkančią į jūsų kambarį. Tai leidžia ramiai, natūraliai pradėti savo dieną.

Žadintuvas taip pat turi 4*7 segmentų ekraną, skirtą laikui skaityti, garsiakalbius, skirtus pabusti su mėgstama muzika, jutiklinį mygtuką, ldr, skirtą LED juostos ryškumui reguliuoti, ir temperatūros jutiklį, kurį galite naudoti norėdami peržiūrėti jūsų kambario temperatūra.

Prekės

Tikslių mano sumokėtų kainų sąrašą rasite čia:

Mikrovaldikliai ir kompiuteriai:

„Raspberry Pi 4I“naudojau „Raspberry pi 4 4GB“, tačiau bet koks „Raspberry Pi“3+ modelis turėtų būti tinkamas

Arduino Uno

„Arduino“naudojamas valdyti 4*7 segmentų laikrodžio ekraną.

Jutikliai:

  • TMP36: temperatūros jutiklis
  • LDR: nuo šviesos priklausomas rezistorius

Pavaros:

  • WS2801: individualiai adresuojama LED juosta
  • LCD ekranas: 16*2 LCD ekranas.
  • 4*7 segmentų laikrodžio ekranas

IC:

  • 74HC595: LCD ekrano perjungimo registras
  • MCP3008: 8 bitų analoginis-skaitmeninis keitiklis
  • Loginio lygio keitiklis: naudojamas bendrauti tarp raspi ir arduino

Kiti reikalai:

  • Adafruit MAX9744 stiprintuvas garsiakalbiams maitinti
  • Bet kokiam garsiakalbiui naudojau Visaton 4Ohm 8Watt viso diapazono garsiakalbį (2240 str.)
  • 9 voltų maitinimo šaltinis stiprintuvui maitinti
  • 5 voltų maitinimo šaltinis, skirtas maitinti šviesos diodų juostą ir kitus komponentus. Atminkite, kad kiekvienas LED juostelėje esantis šviesos diodas gali pakelti 60 mA, todėl įsitikinkite, kad jūsų maitinimo šaltinis yra pakankamas.
  • Keli 220 omų rezistoriai
  • Maža duonos lentelė, kurią galėsite įdėti į savo dėklą.

Įrankiai:

  • Lituoklis.
  • Kažkas, kad padarytumėte dėklą (norėdamas gauti medinį efektą, naudojau 3D spausdintuvą su PLA ir PETG ir kai kuriuos vinilo lipdukus.)

1 žingsnis: nustatykite „Raspberry Pi“

Aviečių pi yra pagrindinis mūsų mikrovaldiklis.

„Raspberry pi“valdo mūsų vietinę žiniatinklio serverį, duomenų bazę, valdo šviesos diodų juostą, garsiakalbius,…

1 dalis: Raspbian diegimas

Norėdami įdiegti raspbian, naudokite šią pamoką:

Įsitikinkite, kad SSH įjungtas

2 dalis. Prisijungimas

Norėdami prisijungti prie interneto, turite prisijungti prie savo aviečių pi terminalo. Rekomenduoju naudoti glaistą. Terminalo tipas:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

„YourNetwork“yra jūsų „Wi -Fi“tinklo pavadinimas, o „YourSSID“- tinklo slaptažodis.

Pridėję tinklą, pabandykite iš naujo paleisti „Raspberry Pi“.

Įveskite komandą „ping 8.8.8.8“, jei gausite atsakymą, kad jūsų tinklas yra nustatytas ir veikia, jis siunčia paketą „Google“serveriams.

3 dalis: Įdiekite reikalingas programas

Mums reikės įdiegti keletą papildomų programų, kad šis projektas būtų pradėtas vykdyti.

Prieš pradėdami vykdyti šias 2 komandas, kad įsitikintumėte, jog viskas atnaujinta.

sudo apt atnaujinimas

sudo apt atnaujinimas

Tai gali užtrukti.

Apache

sudo apt įdiegti apache2 -y

sudo apt įdiegti php libapache2-mod-php -y

MariaDB

sudo apt įdiegti mariadb-server mariadb-client -y

sudo apt įdiegti php -mysql -y

PHPMyAdmin

sudo apt įdiegti phpmyadmin -y

Python pip

Turime įdiegti „pip“, kad įgalintume kai kurias „python“bibliotekas

pip3 įdiegti „mysql-connector-python“

pip3 įdiegti kolbą-lizdą

pip3 sumontuokite kolbas

pip3 įdiegimo geventas

pip3 įdiegti gevent-websocket

2 žingsnis: Elektronikos prijungimas

Elektronikos prijungimas
Elektronikos prijungimas
Elektronikos prijungimas
Elektronikos prijungimas

Pridėjau 2 schemas, viena yra bandymo lentos schema. Aš rekomenduoju sukurti pirmąją schemą ir pabandyti, kad kodas veiktų.

Aš pridėjau fritzing failus žemiau.

3 žingsnis: duomenų bazės projektavimas

Duomenų bazės dizainas
Duomenų bazės dizainas

Tai yra mano sukurta duomenų bazės schema. Žodžiai yra olandų kalba, bet aš išsamiai paaiškinsiu kiekvieną lentelę.

1 lentelė: tblMuziek

Tai gana paprastas stalas. Tai išsaugo atlikėjo vardą, dainos pavadinimą ir dainos failo pavadinimą.

2 lentelė: „tblLedstrip“

Ši lentelė stebi esamą LED juostos būseną ir išsaugo LED juostos būseną. Mums to reikia „Smartlight“funkcijai.

3 lentelė: tblSensoren

Šioje lentelėje stebimi mūsų aliarmo jutikliai. Mes saugome jutiklio pavadinimą ir MCP3008 kanalą

4 lentelė. „TblMeting“

Šioje lentelėje saugomos mūsų jutiklių vertės ir jų laikas.

5 lentelė: „tblWekker“

Šioje lentelėje saugomas jūsų žadintuvo (pvz., Miegamojo) slaptažodis ir pavadinimas. Ši lentelė nėra privaloma, bet aš ją pridėjau, nes manau, kad jūsų namuose bus daugiau nei 1 žadintuvas.

6 lentelė: tblAlarm

Tai turbūt svarbiausia lentelė. Jis stebi jūsų nustatytą žadintuvą ir tai, ką turi padaryti laikrodis (kurią dainą paleisti, kokia sekos eilutė, Kokiomis dienomis ji turėtų išsijungti, …). Labai svarbu sekti 2 datas. 1 data naudojama saugoti, kurią valandą žadintuvas turėtų skambėti. Kitas stebi paskutinį kartą suveikusį signalą. Norėdami sužinoti, kuri darbo diena turėtų išsijungti, aš naudoju varchar, kuriame yra 7 skaitmenys. Pirmasis skaitmuo yra pirmadienis, antrasis antradienis,… Jei jis yra 1, jis turėtų išnykti, jei jis yra 0, neturėtų. Pavyzdys: 1111100 tai reiškia, kad šis signalas turėtų skambėti pirmadienį, antradienį, trečiadienį, ketvirtadienį ir penktadienį.

4 žingsnis: „Arduino“sąranka

Šis žingsnis yra labai lengvas. Kitame žingsnyje bus nuoroda į mano „github“, kur galite atsisiųsti arduino failą.

Ką veikia programa?

Programa laukia, kol iš pi pateks serijiniai duomenys.

Kai tik duomenys gaunami, jie analizuoja eilutę ir siunčia pi patvirtinimą.

Eilutė bus maždaug tokia: „1201“, tai reiškia, kad yra 12:01. Aš naudojau įprastą 7 segmentų anodo ekraną, tai reiškia, kad skaitmenys turėtų būti dideli, o A, B, C, D, E, F, G ir DP turėtų būti maži, kad juos įjungtumėte. Jei naudojate įprastą katodą, tiesiog pakeiskite HIGH į LOW ir LOW į HIGH.

Čia yra nuoroda su daugiau informacijos apie tai, kaip veikia 7 segmentų ekranai. (naudojant biblioteką):

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

Štai nuoroda apie 7 segmentų rodinius nenaudojant bibliotekos:

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

5 veiksmas: „Raspberry Pi“pagrindinė programa

Raspberry Pi Backend
Raspberry Pi Backend

Mano kodą galite atsisiųsti naudodami „Github“. (https://github.com/VanHevelNico/WakeMeUp)

Kaip įdiegti programą:

Užpakalinė dalis parašyta python naudojant kolbą. Galite sukurti paslaugą, kuri automatiškai paleidžia šią programą (app.py).

Priekinės dalies kodą turėtumėte įdėti į anksčiau atsisiųsto apache serverio html failą. (/var/html)

Kaip veikia programa?

Kai žadintuvas įjungtas, eikite į savo laikrodžio IP adresą (jis bus rodomas LCD)

Kai tik eisite į tą IP adresą savo naršyklėje, jūsų kompiuteris atsiųs „socket.io“užklausą vidinei sistemai, sakydamas, kad klientas prisijungė. Kai užpakalinė programa tai gaus, prasidės kelios temos, kurias paaiškinsiu toliau.

Sąranka

Tai inicializuoja visus reikalingus objektus.

„GetTemp“

Tai nuskaito „mcp3008“kanalą 0 ir konvertuoja dvejetainius duomenis į faktinę temperatūrą ir įtraukia juos į duomenų bazę su dabartine data ir valanda.

GetTempGrafiek

Tai gauna paskutines 20 temperatūros jutiklio verčių ir skleidžia jį priekinei sistemai.

tijd_sturen

Šis metodas nustato dabartinį laiką ir patikrina, ar nepasikeitė minutė. Jei ji pasikeitė, programa siunčia naują laiką „arduino“naudodama nuoseklųjį ryšį

checkAlarmen

Tai yra svarbiausias metodas. Jis gauna visus įjungtus pavojaus signalus ir patikrina, ar kuris nors iš šių signalų turi įsijungti nuo dabar iki 5 minučių (tai yra buferis, užtikrinantis, kad kiekvienas aliarmas įsijungtų, kai reikia). Jei žadintuvas turi išsijungti, paleisime muziką, šviesos diodų juostą,… Mes nuolat skaitome jėgai jautrų rezistorių ir kai vertė nukrenta žemiau 1000 (skaitykite, kad paspaustas fsr) Mes įjungiame signalą ir atnaujiname aliarmą duomenų bazę. Mes nustatėme datą, kai žadintuvas paskutinį kartą skambėjo, iki dabartinės datos.

statusLight

Šis metodas skleidžia LED juostos vertę ir prireikus įjungia LED juostą.

lichtAanpassen

Tai papildomas būdas užtikrinti, kad šviesos diodų juosta ir žadintuvo lemputė nesuderintų.

6 žingsnis: atvejis

Byla
Byla
Byla
Byla
Byla
Byla

Nuorodą į mano failus rasite čia:

Korpusui spausdinti naudojau 3D spausdintuvą. Jis atspausdintas 4 skirtingomis dalimis:

  1. Priekinė plokštė su skylėmis garsiakalbiui ir kai kurios sienos 7 segmentų ekranui
  2. Išorinis LED juostos žiedas permatomoje PETG.
  3. Vidurinė dalis
  4. Galinė plokštė su skyle LCD ekranui ir anga kabeliams.

Pradiniame modelyje 7 segmentų ekranui nebuvo skylės, tačiau to reikia, nes kitaip 7 segmentų ekrano šviesa nešviečia.

Kaip matote įdėję visus komponentus, aš naudoju vinilo lipdukus su medine išvaizda, kad galutinis rezultatas atrodytų geriau. Laikrodžio ekranas šviečia per lipduką, kuris sukuria labai gražiai atrodantį efektą.

Rekomenduojamas: