Turinys:

Pozicija pagrįstas daugiafunkcis kubo laikrodis: 5 žingsniai (su nuotraukomis)
Pozicija pagrįstas daugiafunkcis kubo laikrodis: 5 žingsniai (su nuotraukomis)

Video: Pozicija pagrįstas daugiafunkcis kubo laikrodis: 5 žingsniai (su nuotraukomis)

Video: Pozicija pagrįstas daugiafunkcis kubo laikrodis: 5 žingsniai (su nuotraukomis)
Video: Informacinis seminaras mažos apimties partnerysčių (KA210) paraiškų teikėjams 2024, Rugsėjis
Anonim
Image
Image
Pozicija pagrįstas daugiafunkcis kubo laikrodis
Pozicija pagrįstas daugiafunkcis kubo laikrodis
Pozicija pagrįstas daugiafunkcis kubo laikrodis
Pozicija pagrįstas daugiafunkcis kubo laikrodis

„Fusion 360“projektai »

Tai „Arduino“laikrodis su OLED ekranu, kuris veikia kaip laikrodis su data, kaip snaudimo laikmatis ir kaip naktinė lemputė. Skirtingos „funkcijos“valdomos akselerometru ir parenkamos sukant kubo laikrodį.

Norėjau naujo naktinio staliuko laikrodžio, bet nenorėjau išleisti pinigų išgalvotam laikrodžiui, turinčiam daugybę funkcijų, kurių nenaudosiu. Be to, aš kolekcionavau komponentus ir jutiklius, kurie buvo tik aplink, todėl nusprendžiau juos panaudoti savo laikrodžiui gaminti!

Šiam projektui turėjau kelis tikslus:

  1. Rodykite tą laiką su galimybe išjungti
  2. Įtraukite naktinio apšvietimo funkciją
  3. Įtraukite 15 minučių miego laikmatį su žadintuvu
  4. Galėti rodyti datą

Prekės

  • „Arduino Pro Mini 5V“
  • ADXL335 3 ašių akselerometras
  • DS3231 AT24C32 IIC tikslumo realiojo laiko laikrodis
  • Mini garsiakalbis
  • OLED ekranas SSD1306 IIC 0,96 colio
  • 5 V nuolatinės srovės maitinimo šaltinis
  • Šviesos diodas x 2
  • Rezistoriai 220 omų x 2
  • DC statinės lizdas
  • Viela
  • Įrankiai

    • Vielos pjaustytuvai/nuėmikliai
    • Lituoklis/lituoklis
    • 3D spausdintuvas (neprivaloma)
    • FTDI programuotojas, skirtas sąsajai tarp „Pro mini“ir „Arduino IDE“

1 žingsnis: Prototipas ir grandinės testavimas

Prototipas ir išbandykite grandinę
Prototipas ir išbandykite grandinę
Prototipas ir išbandykite grandinę
Prototipas ir išbandykite grandinę
Prototipas ir išbandykite grandinę
Prototipas ir išbandykite grandinę

Prijunkite komponentus prie „Arduino“. Duonos lentos išdėstymas arba schema parodyta aukščiau. RTC ir OLED naudoja I2C protokolą sąsajai su „Arduino“ir naudoti A4 ir A5 kaiščius. Akselerometras naudoja 3 analoginius kaiščius. Aš naudoju A0, A1, A2. Šviesos diodai ir pjezo gali naudoti bet kurį skaitmeninį kaištį, aš naudoju atitinkamai 4 ir 8.

Sąsaja su kiekvienu komponentu. Turėjau įdiegti kai kurias „Arduino“bibliotekas, kad būtų galima sąsaja su kiekvienu komponentu. Jie parodyti aukščiau esančiame paveikslėlyje.

Kodas naudojant „Arduino IDE“. Aš peržiūrėjau keletą pavyzdžių eskizų, kuriuos pateikė kiekviena biblioteka, kad išsiaiškinčiau tinkamą kiekvieno komponento sintaksę, atsižvelgdama į tai, ko aš norėjau. Aš sugalvojau kiekvieno komponento eskizą, kad galėčiau juos išbandyti atskirai. Jie pateikiami žemiau. Pradėjau nuo pjezo garsiakalbio, nes jis buvo lengviausias. Tam iš tikrųjų nereikėjo specialios bibliotekos, tik tam tikros funkcijos, nustatančios dažnį ir garsą. Norint, kad šviesos diodai veiktų, reikėjo ištraukti vieną iš skaitmeninių kaiščių aukštai ir žemai. Tada persikėliau į OLED ir tai buvo gana paprasta nustatyti. Žemiau eskizas yra „Adafruit“demonstracinė versija, peržiūrinti visas animacijas/tekstus, kuriuos galima rodyti. Tada aš bandžiau priversti RTC veikti. Pateiktas eskizas buvo pavyzdys bibliotekoje, kuris gauna dabartinį laiką ir spausdina jį į serijinį monitorių. Galiausiai aš panaudojau pateiktą pavyzdį, norėdamas išbandyti akselerometrą. Kiekvienos ašies išėjimai spausdinami serijiniame monitoriuje.

Dabar laikas viską sudėti!

2 žingsnis: Pagrindinė programa

Pagrindinė programa
Pagrindinė programa
Pagrindinė programa
Pagrindinė programa

Dabar, kai žinau, kad viskas veikia individualiai, galiu pradėti rengti programą, kuri sujungtų viską. Toliau aptarsiu savo programos rašymo procesą, tačiau nedvejodami atsisiųskite visą žemiau esantį kodą, kad galėtumėte jį naudoti savo projektui. Bandžiau palikti konkrečius komentarus, kad galėtumėte patys peržvelgti kodą.

Man reikėjo OLED rodyti laiką ir datą, o tai buvo gana paprasta. Aš tiesiog turėjau spausdinti dabartinį laiką ekrane, o ne serijinį monitorių. Turėjau atsižvelgti į keletą formatavimo dalykų, kad būtų rodomas 12 valandų formatas, o ne 24, ir pridėti/pašalinti 0, kur jie buvo tinkami. Data buvo panaši, pridėjus mėnesį ir dieną ekrane nubrėžtais stačiakampiais. Naudojau įdėtą FOR kilpą, kad sukurtų laikmatį, o pasibaigus ciklui įsijungiau pjezo. Nusprendžiau priversti ekraną mirksėti, kai skambėjo garsinis signalas, o tai buvo pagrindinė animacija, paimta iš „Adafruit“demonstracinės versijos. Pasukęs kubą atgal į laikrodžio padėtį, vienintelis būdas išjungti garso signalą. Galiausiai norėjau būdo, kaip išjungti ekraną, o tai buvo pasiekta tiesiog išvalydami ekraną. Dabar man reikėjo, kad visos šios funkcijos veiktų pagal akselerometro išėjimus. Aš naudoju „Accel_Test“scenarijų, kad nustatyčiau kiekvienos padėties ašių koordinates, kurias norėjau vykdyti. Aš rankiniu būdu perkėliau akselerometro lustą ir užfiksavau rodmenis serijiniame monitoriuje. Aukščiau pateiktoje diagramoje pateikiamos kiekvienos pilkos padėties išėjimo koordinatės. RED koordinatės yra ribos tarp kiekvienos pozicijos, ir aš naudoju šiuos skaičius savo programai. 4 ekrano padėtyse reikia tik X ir Y ašių koordinačių. Penktoje naktinio apšvietimo padėtyje naudojama Z ašis. Prieš kiekvieną funkcijų bloką pagreičio matuoklio padėtims naudojau paprastus IF teiginius. Jei naudojate kitą akselerometrą, šios koordinatės gali skirtis ir jas reikės koreguoti programoje.

3 žingsnis: 3D kubo spausdinimas

3D spausdinimas kubo
3D spausdinimas kubo
3D kubo spausdinimas
3D kubo spausdinimas
3D kubo spausdinimas
3D kubo spausdinimas

Aš supratau, kad kubas būtų geriausias dizainas, kuris atitiktų tai, kaip norėjau, kad laikrodis veiktų. Modelio gamybai naudojau „fusion360“. Man reikėjo iškirpti OLED ir statinės lizdą. Aš taip pat norėjau, kad viskas būtų prijungta, kad būtų galima lengvai pakeisti RTC elemento bateriją. Man reikėjo lizdo, kad „Arduino“būtų tokioje padėtyje, kurią prireikus būtų lengva perprogramuoti. Be to, gaubtas turėjo būti lengvai nuimamas, kad galėčiau pasiekti „Arduino“. Aukščiau galite pamatyti CAD modelį, o žemiau - STL failus.

Korpusą atspausdinau juodu PLA su 20% užpildu, 0,2 mm skiriamąja geba.

Korpusas arba įvorė buvo atspausdinti lanksčiu „Solutech“siūlu su 100% užpildu, 0,3 mm skiriamąja geba. Aš naudoju šią medžiagą, nes ji turi tam tikrą lankstumą, todėl buvo lengva ištempti kūną. Sukant laikrodį jis taip pat jaučiasi minkštesnis. Galiausiai pasirinkau skaidrų siūlą, kad naktinių žibintų šviesos diodai šviestų.

4 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Viską sujungiau naudodama schemą iš 1 veiksmo. Visus įprastus laidus prijungiau nedideliu gabalu plokštės, kad nereikėtų lituoti kelių laidų prie vieno „Arduino“kaiščio. Karšti klijai buvo naudojami viskam pritvirtinti savo vietoje, išskyrus „Arduino“. Jis buvo tiesiog įstumtas į jam skirtą angą. Įsitikinau, kad akselerometro plokštė yra statmena ir lygi kūno apačioje, kad nereikėtų keisti kodo koordinačių.

5 veiksmas: įkelkite ir viskas

Įkelkite ir baigsite!
Įkelkite ir baigsite!
Įkelkite ir baigsite!
Įkelkite ir baigsite!
Įkelkite ir baigsite!
Įkelkite ir baigsite!
Įkelkite ir baigsite!
Įkelkite ir baigsite!

Dabar galutinę programą galima įkelti į laikrodį, kad būtų nustatytas tinkamas laikas. Akumuliatoriaus baterija turėtų išlaikyti laiką net tada, kai maitinimas yra atjungtas. Pastumkite 3D spausdintą rankovę virš kūno, kad paslėptumėte visus komponentus, ir jūs turite pilną kubo laikrodį!

Tikiuosi, kad jums patiks kurti šį projektą ir jis bus toks pat naudingas kaip ir aš. Graži šio projekto dalis yra tai, kad jį labai galima pritaikyti. Nesivaržykite pridėti savo įvairių funkcijų, tokių kaip aliarmo funkcija, naudokite skirtingus komponentus, pvz., Didesnį OLED, FM radijo imtuvą ir pan.

Rekomenduojamas: