Talaan ng mga Nilalaman:

Wake Me Up - isang Smart Alarm Clock: 6 Hakbang
Wake Me Up - isang Smart Alarm Clock: 6 Hakbang

Video: Wake Me Up - isang Smart Alarm Clock: 6 Hakbang

Video: Wake Me Up - isang Smart Alarm Clock: 6 Hakbang
Video: What Do Cats Do At Night? Part 1 2024, Nobyembre
Anonim
Wake Me Up - isang Smart Alarm Clock
Wake Me Up - isang Smart Alarm Clock

Ang Wake up up ay isang smart alarm clock na maaari ding magamit bilang isang smart light.

Ang built-in na ledstrip ay tumutulad sa natural na ilaw na papasok sa iyong silid. Nagbibigay-daan ito sa isang kalmado, natural na paraan upang masimulan ang iyong araw.

Ang alarm clock ay nilagyan din ng isang 4 * 7 segment na display para sa pagbabasa ng oras, mga speaker para sa paggising sa iyong paboritong musika, isang touchbutton, isang ldr para sa pagbagay sa ningning ng ledstrip at isang sensor ng temperatura na magagamit mo upang matingnan ang temperatura ng iyong silid.

Mga gamit

Ang isang listahan ng eksaktong mga bayad na binayaran ko ay matatagpuan dito:

Mga Microcontroller at computer:

Ginamit ko ang raspberry pi 4 4GB subalit, ang anumang modelo ng raspberry pi na 3+ ay dapat na maging maayos

Arduino Uno

Ginagamit ang arduino upang makontrol ang pagpapakita ng 4 * 7 na segment ng orasan.

Mga Sensor:

  • TMP36: sensor ng temperatura
  • LDR: Banayad na nakasalalay na risistor

Mga Actuator:

  • WS2801: Indibidwal na adressable ledstrip
  • LCD display: Isang 16 * 2 LCD display.
  • 4 * 7 segment na display ng orasan

IC's:

  • 74HC595: Shiftregister para sa lcd display
  • MCP3008: 8-bit Analog sa digital converter
  • Converter ng antas ng lohika: Ginagamit upang makipag-usap sa pagitan ng raspi at arduino

Iba pang mga bagay-bagay:

  • Isang adafruit MAX9744 amplifier upang mapagana ang mga speaker
  • Anumang tagapagsalita, gumamit ako ng Visaton 4Ohm 8Watt full range speaker (Art. No. 2240)
  • Isang supply ng kuryente na 9volt upang paandarin ang amplifier
  • Isang supply ng kuryente na 5volt upang maibigay ang ledstrip at iba pang mga bahagi. Tandaan na ang bawat pinangunahan sa ledstrip ay maaaring makapag-antok ng 60mA kaya tiyaking sapat ang iyong supply ng kuryente.
  • Ilang resistors ng 220Ohm
  • Isang maliit na breadboard upang ilagay sa iyong kaso.

Mga tool:

  • Isang bakal na bakal.
  • Isang bagay upang gawin ang kaso (Gumamit ako ng isang 3d printer na may PLA at PETG at ilang mga sticker ng vinyl upang makuha ang gawa sa kahoy.)

Hakbang 1: Pag-set up ng Raspberry Pi

Ang raspberry pi ay ang aming pangunahing micro controller.

Nagpapatakbo ang raspberry pi ng aming lokal na webserver, database, kinokontrol ang ledstrip, speaker,…

Bahagi 1: Pag-install ng Raspbian

Gamitin ang tutorial na ito upang mai-install ang raspbian:

Tiyaking pinagana ang SSH

Bahagi 2: Pagkonekta

Upang makakonekta sa internet, kailangan mong makakuha ng mga acces sa terminal ng iyong raspberry pi. Inirerekumenda ko ang paggamit ng masilya. Sa uri ng terminal:

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

Ang "YourNetwork" ay ang pangalan ng iyong wifi network at ang "YourSSID" ay ang password ng network.

Kapag naidagdag mo na ang network subukang i-reboot ang Raspberry Pi.

Mag-type sa utos na 'ping 8.8.8.8' magpapadala ito ng isang packet sa mga server ng google kung makakakuha ka ng tugon na ang iyong network ay na-set up at gumagana!

Bahagi 3: I-install ang mga kinakailangang programa

Kakailanganin namin ng ilang pag-install ng ilang labis na mga programa upang mai-andar ang proyektong ito.

Bago kami magsimula patakbuhin ang 2 utos na ito upang matiyak na na-upgrade ang lahat.

sudo apt update

sudo apt mag-upgrade

Maaaring magtagal ito.

Apache

sudo apt i-install ang apache2 -y

sudo apt i-install ang php libapache2-mod-php -y

MariaDB

sudo apt i-install ang mariadb-server mariadb-client -y

sudo apt i-install ang php-MySQL -y

PHPMyAdmin

sudo apt install phpmyadmin -y

Python pip

Kailangan naming mag-install ng pip upang paganahin ang ilang mga library ng sawa

pip3 i-install ang MySQL-Connector-Python

pip3 i-install ang flask-socketio

pip3 i-install ang flask-cors

pip3 i-install ang gevent

pip3 i-install ang gevent-websocket

Hakbang 2: Pagkonekta sa Electronics

Pagkonekta sa Electronics
Pagkonekta sa Electronics
Pagkonekta sa Electronics
Pagkonekta sa Electronics

Nagdagdag ako ng 2 mga scheme, ang 1 ay isang scheme ng breadboard para sa mga layunin sa pagsubok. Inirerekumenda ko ang pagbuo ng unang pamamaraan at sinusubukan na gumana ang code.

Naidagdag ko ang mga fritzing file sa ibaba.

Hakbang 3: Disenyo ng Database

Disenyo ng Database
Disenyo ng Database

Ito ang database scheme na ginawa ko. Ang mga salita ay nasa dutch ngunit ipapaliwanag ko nang detalyado ang bawat talahanayan.

Talahanayan 1: tblMuziek

Ito ay isang medyo pangunahing talahanayan. Sine-save nito ang pangalan ng artist, pangalan ng kanta at filename ng isang kanta.

Talahanayan 2: tblLedstrip

Sinusubaybayan ng talahanayan na ito ang kasalukuyang estado ng ledstrip na nai-save nito ang estado ng ledstrip. Kailangan namin ito para sa pagpapaandar ng smartlight.

Talahanayan 3: tblSensoren

Sinusubaybayan ng talahanayan na ito ang mga sensor sa aming alarma. Inimbak namin ang pangalan ng sensor at channel ng MCP3008

Talahanayan 4: tblMeting

Iniimbak ng talahanayan na ito ang mga halaga ng aming mga sensor kasama ang kanilang oras.

Talahanayan 5: tblWekker

Iniimbak ng talahanayan na ito ang password at pangalan ng iyong alarm clock (hal. Silid-tulugan) Ang talahanayan na ito ay hindi sapilitan ngunit idinagdag ko ito dahil ipinapalagay kong magkakaroon ka ng higit sa 1 alarm clock sa iyong bahay.

Talahanayan 6: tblAlarm

Marahil ito ang pinakamahalagang mesa. Sinusubaybayan nito ang mga itinakda mong alarma at kung ano ang kailangang gawin ng orasan (kung aling kanta ang tutugtog, na humantong sa pagkakasunud-sunod, Sa anong mga araw dapat itong patayin, …). Napaka-import upang subaybayan ang 2 mga petsa. Ginagamit ang 1 petsa upang maiimbak kung anong oras dapat patayin ang alarma. Sinusubaybayan ng isa pa ang huling oras na napatay ang alarma. Upang malaman kung anong araw ng linggo dapat itong patayin Gumamit ako ng isang varchar na naglalaman ng isang bilang ng 7 mga digit. Ang unang digit ay Lunes, ang pangalawang Martes, … Kung ito ay 1 pagkatapos dapat itong patayin, kung ito ay 0 hindi dapat. Halimbawa: 1111100 nangangahulugan ito na ang alarma na ito ay dapat na patayin sa Lunes, Martes, Miyerkules, Huwebes at Biyernes.

Hakbang 4: Arduino Setup

Napakadali ng hakbang na ito. Magkakaroon ng isang link sa aking github sa susunod na hakbang kung saan maaari mong i-download ang arduino file.

Ano ang ginagawa ng programa?

Naghihintay ang programa para sa serial data na dumating mula sa pi.

Sa sandaling natanggap ang data ay ini-parse nito ang string at nagpapadala ng isang kumpirmasyon sa pi.

Ang string ay magiging katulad nito: '1201' nangangahulugan ito na 12:01. Gumamit ako ng isang karaniwang display ng anode 7segment nangangahulugan ito na ang Digit ay dapat na mataas at ang A, B, C, D, E, F, G at DP ay dapat na mababa upang buksan ang mga ito. Kung gumagamit ka ng isang karaniwang cathode dapat mo lamang baguhin ang TAAS sa LOW & LOW to HIGH.

Narito ang isang link na may maraming impormasyon tungkol sa kung paano gumagana ang 7 segment. (gamit ang library):

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

Narito ang isang link tungkol sa 7 mga ipinapakitang segment nang hindi ginagamit ang isang library:

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

Hakbang 5: Raspberry Pi Backend

Raspberry Pi Backend
Raspberry Pi Backend

Maaari mong i-download ang aking code gamit ang Github. (https://github.com/VanHevelNico/WakeMeUp)

Paano i-install ang programa:

Ang backend ay nakasulat sa sawa gamit ang flask. Maaari kang gumawa ng isang serbisyo na awtomatikong nagsisimula sa program na ito (app.py).

Dapat mong ilagay ang frontend code sa html file ng apache server na na-download namin kanina. (/ var / html)

Paano gumagana ang programa?

Kapag naka-on ang alarm clock pumunta sa ip adress ng iyong orasan (ipapakita ito sa lcd)

Sa sandaling pumunta ka sa ip adress na iyon sa iyong browser ang iyong computer ay magpapadala ng isang socket.io na hiling sa backend na nagsasabing kumonekta ang isang kliyente. Kapag natanggap ng backend ito ang ilang mga thread ay magsisimula na ipapaliwanag ko sa ibaba.

Pag-set up

Pinag-intialize nito ang lahat ng mga bagay na kinakailangan.

GetTemp

Binabasa nito ang mcp3008 channel 0 at binago ang binary data sa aktwal na temperatura at inilalagay ito sa database gamit ang kasalukuyang petsa at oras.

GetTempGrafiek

Nakukuha nito ang nakaraang 20 halaga ng sensor ng temperatura at inilalabas ito sa frontend.

tijd_sturen

Nakukuha ng pamamaraang ito ang kasalukuyang oras at sinusuri kung ang minuto ay nagbago. Kung binago nito ang programa ay nagpapadala ng bagong oras sa arduino gamit ang serial na komunikasyon

checkAlarmen

Ito ang pinakamahalagang pamamaraan. Nakukuha nito ang lahat ng mga alarma na naka-on at susuriin kung alinman sa mga alarma na ito ang kailangang puntahan sa pagitan ngayon at 5 minuto na ang nakakaraan (ito ay isang buffer upang matiyak na napupunta ang bawat alarma kapag kinakailangan nito). Kung ang alarma ay dapat na patayin sisimulan namin ang musika, ang ledstrip, … Basahin namin ang lakas na resistor na sensitibo nang tuluy-tuloy at kapag ang halaga ay bumaba sa ibaba 1000 (basahin ang fsr ay pinindot) Binabaling namin ang alarma at ina-update ang alarm sa database. Itinakda namin ang petsa na ang alarma ay nagpunta para sa huling oras sa kasalukuyang petsa.

statusLight

Ang pamamaraang ito ay nagpapalabas ng halaga ng ledstrip at binubuksan ang ledstrip kung kinakailangan.

lichtAanpassen

Ito ay isang labis na pamamaraan upang matiyak na hindi magkasalungat ang ledstrip at ilaw ng alarma.

Hakbang 6: Kaso

Kaso
Kaso
Kaso
Kaso
Kaso
Kaso

Ang link sa aking mga file ay matatagpuan dito:

Gumamit ako ng isang 3d printer upang mai-print ang pambalot. Naka-print ito sa 4 na magkakaibang bahagi:

  1. Ang plato sa harap na may mga butas para sa speaker at ilang mga pader para sa 7 segment na pagpapakita
  2. Ang panlabas na singsing para sa ledstrip sa transparant PETG.
  3. Ang gitnang bahagi
  4. Ang backplate na may isang butas para sa lcd at isang butas para sa mga kable.

Sa orihinal na modelo walang butas para sa pagpapakita ng 7 segment subalit kinakailangan ito dahil kung hindi man ang ilaw ng 7 segment na pagpapakita ay hindi lumiwanag.

Tulad ng nakikita mo pagkatapos ilagay ang lahat ng mga bahagi sa ginamit ko ang mga sticker ng vinyl na may isang kahoy na hitsura upang gawing mas mahusay ang resulta ng pagtatapos. Ang display ng orasan ay kumikinang sa sticker na lumilikha ng napakagandang hitsura na epekto.

Inirerekumendang: