Talaan ng mga Nilalaman:

Oled Alarm Clock: 8 Hakbang (na may Mga Larawan)
Oled Alarm Clock: 8 Hakbang (na may Mga Larawan)

Video: Oled Alarm Clock: 8 Hakbang (na may Mga Larawan)

Video: Oled Alarm Clock: 8 Hakbang (na may Mga Larawan)
Video: Nursing Student's Last Moments Recorded On Video - The Murder of Michelle Le | DEEP DIVE 2024, Hulyo
Anonim
Oled Alarm Clock
Oled Alarm Clock

Mayroong maraming mga arduino / ESP32 na orasan na nag-iikot, ngunit ginagamit nila ang mga magagandang at malulutong na OLED?

Nag-eksperimento ako sa mga arduinos at ESP32's para sa isang sandali ngayon, ngunit hindi ko ito nakuha sa isang natapos na produkto. Gumawa ako ng alarm clock na may 4 1.3 inch monochrome OLEDs. Nagtatampok din ang orasan ng isang hindi masusunog na lampara sa bedside at isang USB singilin na port (walang sinumang may ekstrang outlet sa tabi ng kanyang kama). Ang mga OLED ay dimmable din, ito ay naidagdag huling minuto matapos na ang aking proyekto ay banta ng aking kasintahan. Hindi dapat maging malabo sa isang kasintahan na sapat ang boses, maaari rin akong magbigay ng isang bersyon ng code kung saan ang 3 pagpapakita ay pinalakas sa pagitan ng ilang mga oras. Ang layunin ay upang makagawa ng isang madaling magamit na orasan, na may isang hitsura na lampas sa "prototype". Habang ginagawa ang aking orasan ay nakatagpo ako ng ilang mga paghihirap na kailangan kong malutas, na kung bakit sa palagay ko ito natuturo ay nagkakahalaga ng pagbabahagi. Ang orasan ay maaaring gawin sa mga maliliit na tool, hindi ko gusto ang "at para sa susunod na hakbang na ginamit ko ang aking 10.000 € / $ CNC mill" na mga tutorial.

Ang ilang mga bagay na ipapaliwanag sa itinuturo na ito (in-istraktura-ception):

- Paano gamitin / kawad ang isang I2C OLED display na may arduino / ESP32

- Paano gumamit ng maraming mga bagay na I2C na may isang arduino / ESP32

- Paano gumawa ng isang menu na "mag-scroll" gamit ang isang rotary encoder (+ kung paano gumamit ng isang encoder na may isang ESP32 / arduino)

- Paano mag-disenyo at mag-order ng isang pasadyang PCB gamit ang fritzing.

- Gumagamit din ang orasan ng isang RTC (real time na orasan), pinangunahan ang driver, bumaba ang boltahe na module … Hindi talaga ako makakapunta sa mga ito dahil talagang maraming magagamit na impormasyon para sa mga modyul na ito.

Nais kong tandaan na hindi ako isang propesyonal na programmer. Ang layunin ng aking itinuturo ay ipaliwanag ang mga puntong nabanggit ko sa itaas. Kung paano ko pinagsama-sama ang lahat para sa aking panghuling produkto ay maaaring hindi ang pinakamalinis na paraan. Ito ang paraan na pinapayagan akong subaybayan ang lahat ng ito.

Mga gamit

Kapag namimili ng mga panustos ay palaging sinusubukan kong timbangin para sa kahalagahan ng kalidad / dokumentasyon kumpara sa presyo. Ang aking mga supply ay isang halo ng mga A-brand at mas murang mga bahagi ng Intsik. Ang Mouser ay isang mahusay na tagapagtustos kung ang kalidad ay mahalaga, umorder ako mula sa Banggood / Aliexpress para sa mas murang mga bahagi.

- Isang board ng ESP32, ginamit ko ang Huzzah32 mula sa adafruit, ngunit maraming iba pang mga (mas murang) mga pagpipilian. Pinili ko ang Huzzah32 dahil napakahusay na dokumentado.

- 4 1.3 pulgada I2C OLED ay nagpapakita (128x64, kasama ang driver ng SH1106), ang 0.96 "ay mas karaniwan ngunit para sa proyektong ito mas gusto ko ang 1.3"

- Sparkfun femtobuck driver upang himukin ang LED

- RTC na orasan, gumamit ako ng isa na may isang lithium cell

- Arduino nano

- Babae USB 2.0 port (ginamit ko: SS-52200-002 mula sa Stewart Connector)

- Babae DC jack (Ginamit ko: L722A mula sa Switchcraft)

- 12V 3A DC adapter (GST36E12-P1J mula sa Mean Well)

- Pasadyang PCB, opsyonal ngunit ginagawang mas siksik ang proyekto at madaling magamit kung ang isang bahagi ay namatay + higit na pagiging maaasahan dahil mas mababa ang mga wire (jlcpcb.com)

- M3 screws at bolts

- pagsingit ng M3 tanso

- 12V hanggang 5V step down module mula sa Pololu (DF24V22F5)

- 3 watts na pinapagana ng heatsink

- Mga Jumper wires

- Buzzer

- I2C multiplexer (TCA9548A mula sa adafruit)

- 2 Rotary encoder (Nasubukan ko ang ilan, hindi lahat gumagana sa aking code. Gumagana ang isa mula sa "DFrobot" at gayundin ang mula sa bilog na PCB mula sa "DIYmore". Ang aking code ay tila hindi gumagana para sa pushbutton ng uri ng KY-040. Ang aking alarm clock ay gumagamit ng isa mula sa DIYmore dahil napakadali nilang i-mount ang panel (walang kailangan ng mga karagdagang tornilyo / butas).

- Assortment ng mga babaeng header (opsyonal)

- Kahoy para sa frame: 18mmx18mmx2400mm

- Pagsubaybay sa papel

Gumamit ako ng ilang mga tool (panghinang na bakal, ika-3 kamay, nakita…) pati na rin, ngunit wala talagang exotic.

Hakbang 1: Paggamit ng isang Oled

Paggamit ng isang Oled
Paggamit ng isang Oled
Paggamit ng isang Oled
Paggamit ng isang Oled
Paggamit ng isang Oled
Paggamit ng isang Oled

Upang magamit ang mga OLED kailangan mong mag-install ng isang silid-aklatan. Ginagamit ko ang U8G2lib mula sa Oli Kraus, ito ay napaka naiintindihan at may isang gabay sa sanggunian na may malinaw na mga halimbawa.

Upang mai-hook ang iyong board (ESP o arduino) kailangan mong hanapin ang mga pin ng SDA at SCL. Ang mga pin na ito ay ang mga pin ng komunikasyon ng I2C. Ang Google para sa "pinout" ng iyong tukoy na board kung hindi mo mahahanap ang mga ito.

Nagdagdag ako ng ilang halimbawa ng code. Gumagana ang code para sa parehong arduino at ESP32, ngunit ang ESP32 ay mas malamang na maubusan ng memorya. Ang lahat ng mga oleds na sinubukan ko sa ngayon ay gumagana sa parehong 3.3v (ESP32) at 5V.

Hakbang 2: Maramihang mga OLED

Maramihang mga OLED
Maramihang mga OLED

Dito nagsisimulang magkakaiba ang aking proyekto mula sa iba pang mga alarm clock. Karamihan sa mga arduino / ESP ay mayroon lamang isa o dalawang mga I2C na pin. Ang ganitong uri ng nililimitahan ang paggamit ng mga bahagi ng I2C. Paano kung mayroon akong 4 I2C sensor at nais na ipakita ang kanilang mga pagbabasa sa isang I2C display? Ipasok ang multiplexer. Pinapayagan ka ng muliplexer na tugunan ang 7 magkakaibang mga bahagi ng I2C. Pinapayagan ang aking ESP32 na gumamit ng isang I2C real time na orasan, at upang ipakita ang oras gamit muli ang I2C sa loob ng 4 na ipinapakita (o higit pa, huwag mo akong pahintuin).

Nagdagdag ako ng ilang halimbawa ng code para sa ESP32, mula dito hindi ako sigurado na ang arduino ay maaaring makasabay. Ang halimbawa ay gumagamit lamang ng mga ipinapakita, maaari itong maging iba pang mga bagay tulad ng I2C sensor atbp din. Ang prinsipyo ay palaging pareho, tumatawag ka sa tamang channel gamit ang "tcaselect (#);" pagpapaandar, pagkatapos ay isagawa mo ang anumang code na kinakailangan para sa iyo ng I2C object.

Hakbang 3: Lumilikha ng isang Scrollable Menu Na may isang Rotary Encoder

Lumilikha ng isang Scrollable Menu Sa Isang Rotary Encoder
Lumilikha ng isang Scrollable Menu Sa Isang Rotary Encoder
Lumilikha ng isang Scrollable Menu Sa Isang Rotary Encoder
Lumilikha ng isang Scrollable Menu Sa Isang Rotary Encoder
Lumilikha ng isang Scrollable Menu Sa Isang Rotary Encoder
Lumilikha ng isang Scrollable Menu Sa Isang Rotary Encoder

Una muna, subukan ang iyong mga encoder. Nagdagdag ako ng ilang code upang subukan ang iyong mga module ng encoder. Tulad ng nakasaad sa mga supply: Matagumpay ko lamang nasubukan ang aking code sa mga umiikot na mga module ng encoder mula sa DF robot at ang module na may bilog na PCB mula sa DIYmore. Tingnan ang mga larawan sa itaas para sa tamang mga encoder.

Ang ginamit kong library ay ang isang ito:

Ang PDF na idinagdag ko sana ay makakatulong sa istraktura ng menu na ginamit ko para sa aking orasan.

Ang paggawa ng encoder na gumagana, ay ang pinaka mahirap na bahagi para sa akin sa proyektong ito. Mayroong maraming iba't ibang mga encoder, at maraming iba't ibang mga aklatan na hindi palaging tugma sa ESP32. Ngunit sa palagay ko ang isang (gumaganang) rotary encoder ay isang matikas na solusyon kung nais mong maglagay ng isang bagay. Kung dapat gumamit lamang ako ng mga pindutan, kakailanganin ko ng higit sa 1 at ang pagtatakda ng oras ay aabutin ng maraming mga pagpindot.

Hakbang 4: Paglalagay ng Nakaraang Code ng Togetther

Paglalagay ng Nakaraang Code ng Togetther
Paglalagay ng Nakaraang Code ng Togetther

Ang pamagat na uri ng buod ng aking ginawa. Sinubukan ko ang bahagi para sa bahagi at pagkatapos ay pinagsama ko ang lahat. Ngunit dahil wala namang madali, kailangan kong baguhin ang ilang mga bagay. Ang serial na komunikasyon ay isang mabagal na proseso. Nakakaapekto ito sa pagbabasa nang maayos sa encoder. Upang mapagtagumpayan ito nagdagdag ako ng mga nakakagambala sa mga pin ng encoder. Ang code upang basahin ang encoder ay agad na tinawag kung itulak o i-on ang encoder.

Kapag naintindihan mo kung paano binuo ang menu, mahahanap mo na napakadaling magdagdag o mag-alis ng mga tampok ayon sa gusto mo. Marahil nais mong kunin ang kasalukuyang panahon o oras mula sa internet at ipakita ito?

Iniwan ko ang maraming mga ganitong ideya dahil nais ko higit sa lahat ang isang maaasahang kapayapaan sa oras. Isa na walang awtomatikong gumagawa. Nagtatrabaho ako ng napaka kakaibang oras sa isang daylight save zone. Sa tuwing binabago ang oras kinakabahan ako sa sobrang pagtulog. Awtomatiko bang babaguhin ng aking telepono ang oras? Ang relo ko ba? Sa gayon, ang aking orasan ay hindi, maliban kung palitan ko ito mismo. Ngunit marahil nais mong ilagay ang iyong orasan sa kusina? Iba't ibang mga sitwasyon, magdagdag ng mga tampok hanggang sa ang memorya ay nawala!

Hakbang 5: Pasadyang PCB Sa Fritzing + Schematic

Pasadyang PCB Sa Fritzing + Schematic
Pasadyang PCB Sa Fritzing + Schematic
Pasadyang PCB Sa Fritzing + Schematic
Pasadyang PCB Sa Fritzing + Schematic
Pasadyang PCB Sa Fritzing + Schematic
Pasadyang PCB Sa Fritzing + Schematic

Punto ng pansin: Itinuturo ng Adafruit na habang maaari mong paganahin ang huzzah32 sa pamamagitan ng USB pin, dapat kang mag-ingat na hindi sabay na gamitin ang micro USB power inlet. Ang aking PCB ay pinalakas sa pamamagitan ng step down buck, na kung saan ay pinapagana ang huzzah sa pamamagitan ng USB pin. Kaya palaging i-unplug ang panlabas na lakas / alisin ang huzzah mula sa board kapag nag-a-upload.

Napagpasyahan kong maghinang ng mga babaeng header sa PCB sapagkat ginagawang mas madali ang pagpapalitan ng isang bahagi, o pagdaragdag halimbawa ng isang sobrang I2C sensor. Pinapayagan din akong mabilis na alisin ang nano o ang ESP32 upang mai-load ang mga programa.

Naidagdag ko ang Frizting file, maaari akong mag-type ng isang nobela dito, ngunit sa palagay ko ang halimbawa ay pinakamahusay na nagsasalita. Sinimulan ko ng sa eskematiko ng buong pag-setup. Habang ang Fritzing ay may maraming mga bahagi sa mga bins, hindi lahat ay naroroon. Minsan mahahanap mo ang bahagi ng Fritzing sa internet, minsan hindi mo magawa. Ang mga piyesa na hindi ko makita, pinalitan ko lamang ng isang babaeng header na bahagi. Kung tama mong i-click ito, maaari mong i-edit ang header sa dami ng mga pin na gusto mo, at magtalaga ng isang pinout dito. Ginawa ko ito sa bawat bahagi na hindi ko makita. Tulad ng halos lahat ng mga module ay gumagamit ng parehong pitch ng 0.1in (2.54mm) bibigyan ka nito ng tamang spacing para sa bahagi.

Susunod na lumipat ka sa view ng PCB ng fritzing app. Ang isang PCB ay ilalagay, kung i-click mo ito, maaari mong itakda ang laki nito at pumili ng isang solong o dobleng layer ng PCB. Ang minahan ay gumagamit ng 2 layer. Imumungkahi ng Fritzing ang mga koneksyon na iyong nagawa sa iskematikong pagtingin. Ang programa ay may pagpipilian na autoroute, ngunit hindi ko ito kailanman ginamit. Gusto kong manu-manong ayusin ang aking mga koneksyon. Sa view ng PCB ang mga dilaw na koneksyon ay nasa tuktok na layer, ang orange ay nasa ilalim na layer. Muli kung nag-click ka sa koneksyon maaari kang pumili ng mga katangian nito.

Upang magawa ang tunay na PCB, kailangan mong i-export ito bilang isang gerber file. Bago mo ito gawin, sa ilalim ng tab na "pagruruta" maaari mong suriin ang mga patakaran sa disenyo. Kung ang lahat ay nag-check out maaari kang mag-click sa "export para sa PCB". Karamihan sa mga tagagawa ay hihilingin para sa gerber file, kaya piliin ang i-export sa gerber.

Nag-order ako ng aking PCB mula sa JLCPCB, gusto ko na agad silang quote sa iyo ng isang presyo. Mayroong syempre maraming iba pang mga pagpipilian.

Tungkol sa eskematiko: mayroong 2 boltahe na ginamit. Ang LED at femtobuck ay direktang pinalakas ng supply ng 12V. Ang natitira ay pinalakas sa pamamagitan ng step-down buck na may 5 volts.

Hakbang 6: Disenyo + Lasercutter

Disenyo + Lasercutter
Disenyo + Lasercutter
Disenyo + Lasercutter
Disenyo + Lasercutter

Para sa aking unang disenyo sinubukan kong gumamit ng solidong oak (Sumusunod ako sa mga klase sa paggawa ng kahoy), ngunit mabilis na naging malinaw na ito ay hindi perpekto. Ang kahoy ay masyadong makapal, na ginagawang mahirap upang magkasya sa iyong mga bahagi. Pinapayagan ng 3mm birch multiplex para sa mas madaling paraan upang ikabit ang mga encoder at ipinapakita.

Natagpuan ko ang isang online na serbisyo ng lasercut, snijlab.nl, magagamit para sa mga libangan na matatagpuan sa Rotterdam (ipinadala nila sa Belgique, Netherlands at Alemanya). Sa kanilang website maaari kang mag-upload ng iyong mga guhit at agad nilang quote ang iyong presyo. Gumamit ako ng Autocad, na mayroon ako sa trabaho, ngunit ang software ay hindi talaga mahalaga. Kailangan lamang itong maging isang pagguhit ng vector (Vectr, Illustrator, Inkscape…). Karamihan sa mga tindahan ay gumagamit ng mga kulay upang matukoy kung nais mong gupitin o inukit.

Ilang bagay na dapat tandaan:

- Max. sukat ng lasercutter (gumuhit ako ng isang frame sa paligid ng aking mga bahagi)

- Min. distansya sa pagitan ng pagbawas

- Siguraduhin na hindi ka gumuhit ng anumang mga dobleng linya, ang laser ay gagawa ng isang dagdag na pass, na nagkakahalaga sa iyo ng higit pa.

- Kapag nagpaplano sa PDF, tiyaking nagplano ka ng 1: 1. Hindi mo nais na sukatin pababa o magkasya sa papel.

Hakbang 7: Assembly

Assembly
Assembly
Assembly
Assembly
Assembly
Assembly

Itinayo ko ang orasan sa paligid ng isang kahoy na frame, ang mga panel ay itinatago sa lugar na may mga M3 na turnilyo at pagsingit sa frame. Dapat ba akong bumuo ng isang bersyon 2, gagamit ako ng mga profile na "L" na aluminyo upang ikabit ang mga panel. Napakahirap na tiyak na mag-drill ng mga butas para sa mga pagsingit ng tanso. Napakatagal ng panahon sa akin, para lamang sa isang katanggap-tanggap na resulta. Mangangahulugan ito ng kurso na ang pagguhit ng lasercut ay dapat na baguhin. Sa palagay ko sa mga profile ng aluminyo at mga nut at bolt lamang makakakuha ka ng isang mas mahusay na resulta.

Upang mas mahusay na maikalat ang ilaw, idinikit ko ang bakas ng papel sa loob ng mga butas. Ito ay nagbibigay sa ilaw ng isang magandang glow dito.

Hakbang 8: Huwag Huminto Dito

Huwag Tumigil Dito
Huwag Tumigil Dito
Huwag Tumigil Dito
Huwag Tumigil Dito
Huwag Tumigil Dito
Huwag Tumigil Dito

Ang mga sentro ng proyekto sa paligid ng isang ESP32, bahagya kong nagamit ito. Ang mga ilaw ng aking silid-tulugan ay maaaring kasalukuyang kontrolado ng malayo gamit ang blynk. Ang pagkontrol sa kanila sa orasan ay isang maliit na hakbang lamang. Marahil ay nais mo ang ilang mga karagdagang pagpapakita na nagpapakita sa iyo ng temperatura sa paligid ng iyong bahay? O ilang mga lokal na sensor (mayroon pa ring ekstrang mga koneksyon sa I2C sa multiplexer na iyon!). Siguro itakda ang oras / alarma sa pamamagitan ng isang app at bluetooth?

Ipaalam sa akin kung ano ang binago mo, kung ano ang babaguhin mo, kung ano ang dapat kong baguhin …

Inirerekumendang: