Innholdsfortegnelse:

Oled vekkerklokke: 8 trinn (med bilder)
Oled vekkerklokke: 8 trinn (med bilder)

Video: Oled vekkerklokke: 8 trinn (med bilder)

Video: Oled vekkerklokke: 8 trinn (med bilder)
Video: СВИСТОК СМЕРТИ ночью НА КЛАДБИЩЕ / Призрак ребёнка в видео / Aztec Death Whistle 2024, Juli
Anonim
Oled vekkerklokke
Oled vekkerklokke

Det er mange arduino/ESP32 -klokker som går rundt, men bruker de de fine og skarpe OLED -ene?

Jeg har eksperimentert med arduinos og ESP32 en stund nå, men jeg kom aldri til et ferdig produkt. Jeg har laget en vekkerklokke med 4 1,3 tommers monokrome OLED -er. Klokken har også en dimbar nattlampe og en USB -ladeport (ingen har ekstra uttak ved siden av sengen). OLED -ene er også dimbare. Dette ble lagt til i siste øyeblikk etter at prosjektet mitt ble truet av kjæresten min. Skulle dim ikke være -in kjærester stemme- dim nok, kan jeg også gi en versjon av koden der 3 skjermer er slått på mellom bestemte timer. Målet var å lage en lett brukbar klokke, med et blikk utover "prototypen". Mens jeg lagde klokken, opplevde jeg noen vanskeligheter jeg måtte løse, og derfor synes jeg dette er verdt å dele. Klokken kan lages med små verktøy, jeg liker ikke "og for neste trinn brukte jeg mine 10.000 €/$ CNC mill" opplæringsprogrammer.

Noen ting som vil bli forklart i denne instruerbare (in-structable-ception):

- Hvordan bruke/koble en I2C OLED -skjerm med arduino/ESP32

- Hvordan bruke flere I2C -objekter med en arduino/ESP32

- Hvordan lage en "rullbar" meny ved hjelp av en roterende encoder (+ hvordan du bruker en encoder med en ESP32/arduino)

- Hvordan designe og bestille en tilpasset PCB ved hjelp av fritzing.

- Klokken bruker også en RTC (sanntidsklokke), ledd driver, nedtrappen spenningsmodul … Jeg kommer egentlig ikke inn på disse fordi det virkelig er mye informasjon tilgjengelig for disse modulene.

Jeg vil merke at jeg ikke er en profesjonell programmerer. Målet med min instruerbare er å forklare punktene jeg nevnte ovenfor. Hvordan jeg setter alt sammen til sluttproduktet mitt er kanskje ikke den reneste måten. Det er måten som tillot meg å holde styr på alt.

Rekvisita

Når jeg handler forsyninger prøver jeg alltid å avveie viktigheten av kvalitet/dokumentasjon kontra pris. Rekvisitaene mine er en blanding av A-merker og billigere kinesiske deler. Mouser er en flott leverandør hvis kvalitet er viktig, jeg bestiller fra Banggood/Aliexpress for de billigere delene.

- Et ESP32 -kort, jeg brukte Huzzah32 fra adafruit, men det er mange andre (billigere) alternativer. Jeg valgte Huzzah32 fordi den er veldig godt dokumentert.

- 4 1,3 tommers I2C OLED -skjermer (128x64, med SH1106 -driveren), 0,96 "er mer vanlige, men for dette prosjektet foretrekker jeg de 1,3"

- Sparkfun femtobuck driver for å kjøre lysdioden

- RTC -klokke, jeg brukte en med litiumcelle

- Arduino nano

-USB 2.0-port for kvinner (jeg brukte: SS-52200-002 fra Stewart Connector)

- Kvinne DC -kontakt (jeg brukte: L722A fra Switchcraft)

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

- Tilpasset kretskort, valgfritt, men dette gjør prosjektet mye mer kompakt og lett å betjene hvis en del dør + mer pålitelighet fordi færre ledninger (jlcpcb.com)

- M3 skruer og bolter

- M3 messinginnsatser

- 12V til 5V trinn ned modul fra Pololu (DF24V22F5)

- 3 watt drevet med kjøleribbe

- Jumper ledninger

- summer

- I2C multiplexer (TCA9548A fra adafruit)

- 2 roterende kodere (jeg har prøvd noen, ikke alle fungerer med koden min. Den fra "DFrobot" fungerer, og det samme gjør den fra med rund PCB fra "DIYmore". Koden min virker ikke for trykknappen av KY-040-typen. Min vekkerklokke bruker den fra DIYmore fordi de er veldig enkle å montere på panelet (ingen ekstra skruer/hull er nødvendig).

- Sortiment av kvinnelige overskrifter (valgfritt)

- Tre for rammen: 18mmx18mmx2400mm

- Sporepapir

Jeg brukte også noen verktøy (loddejern, 3. hånd, sag …), men ingenting eksotisk.

Trinn 1: Bruke en Oled

Ved hjelp av en Oled
Ved hjelp av en Oled
Ved hjelp av en Oled
Ved hjelp av en Oled
Ved hjelp av en Oled
Ved hjelp av en Oled

For å bruke OLED må du installere et bibliotek. Jeg bruker U8G2lib fra Oli Kraus, den er veldig forståelig og har en referanseguide med klare eksempler.

For å koble til brettet ditt (ESP eller arduino) må du finne SDA- og SCL -pinner. Disse pinnene er I2C -kommunikasjonspinnene. Google for "pinout" på ditt spesifikke bord hvis du ikke finner dem.

Jeg har lagt til noen eksempler på kode. Koden fungerer for både arduino og ESP32, men det er mindre sannsynlig at ESP32 går tom for minne. Alle oleds jeg har prøvd så langt fungerer med både 3.3v (ESP32) og 5V.

Trinn 2: Flere OLED -er

Flere OLED -er
Flere OLED -er

Det er her prosjektet mitt begynner å skille seg fra mange andre vekkerklokker. De fleste arduinos/ESP -er har bare en eller to I2C -pinner. Denne typen begrenser bruken av I2C -deler. Hva om jeg har 4 I2C -sensorer og vil vise avlesningen på en I2C -skjerm? Skriv inn multiplexeren. Muliplexeren lar deg adressere 7 forskjellige I2C -deler. Dette gjør at ESP32 kan bruke en I2C sanntidsklokke, og vise tiden ved å bruke I2C igjen over de 4 skjermene (eller mer, ikke la meg stoppe deg).

Jeg har lagt til noen eksempler på kode for ESP32, herfra er jeg ikke sikker på at arduinoen kan følge med. Eksemplet bruker bare skjermer, det kan også være andre ting som I2C -sensorer osv. Prinsippet er alltid det samme, du kaller den riktige kanalen med "tcaselect (#);" funksjon, utfører du den koden som er nødvendig for ditt I2C -objekt.

Trinn 3: Opprette en rullbar meny med en roterende koder

Opprette en rullbar meny med en roterende koder
Opprette en rullbar meny med en roterende koder
Opprette en rullbar meny med en roterende koder
Opprette en rullbar meny med en roterende koder
Opprette en rullbar meny med en roterende koder
Opprette en rullbar meny med en roterende koder

Først, test testkoderne dine. Jeg har lagt til noen kode for å teste kodermodulene dine. Som det fremgår av rekvisita: Jeg har bare testet koden min med de roterende kodermodulene fra DF -roboten og modulen med den runde PCB -en fra DIYmore. Se bildene ovenfor for de riktige koderne.

Biblioteket jeg brukte er dette:

PDF -filen jeg har lagt til, hjelper forhåpentligvis med menystrukturen jeg har brukt til klokken min.

Å få koderen til å fungere var den vanskeligste delen for meg i dette prosjektet. Det er mange forskjellige kodere og mange forskjellige biblioteker som ikke alltid er kompatible med ESP32. Men jeg tror en (fungerende) roterende encoder er en elegant løsning hvis du vil legge inn noe. Skulle jeg bare ha brukt knapper, ville jeg trengt mer enn 1, og det ville ta mange trykk å stille inn tiden.

Trinn 4: Sette den forrige koden Togetther

Sette den forrige koden Togetther
Sette den forrige koden Togetther

Tittelen oppsummerer litt hva jeg gjorde. Jeg prøvde del for del, og så satte jeg alt sammen. Men fordi ingenting er lett, måtte jeg endre noen ting. Seriekommunikasjonen er en treg prosess. Dette kommer i veien for å lese koderen ordentlig. For å overvinne dette la jeg til avbrudd i pinnene på koderen. Koden for å lese koderen blir deretter umiddelbart kalt hvis du skyver eller vrir på giveren.

Når du forstår hvordan menyen er bygd opp, vil du oppdage at det er veldig enkelt å legge til eller fjerne funksjoner etter eget ønske. Kanskje du vil hente gjeldende vær eller tid fra internett og vise det?

Jeg har utelatt mange slike ideer fordi jeg fremfor alt ønsket en pålitelig tid-fred. En som ikke gjør noe automatisk. Jeg jobber veldig rare timer i sommertid. Hver gang timen endres, er jeg nervøs for å sove. Vil telefonen min automatisk endre timen? Vil klokken min? Klokken min vil ikke, med mindre jeg endrer den selv. Men kanskje du vil sette klokken på kjøkkenet? Ulike scenarier, legg til funksjoner til minnet er tomt!

Trinn 5: Tilpasset PCB med Fritzing + skjematisk

Tilpasset PCB med Fritzing + skjematisk
Tilpasset PCB med Fritzing + skjematisk
Tilpasset PCB med Fritzing + skjematisk
Tilpasset PCB med Fritzing + skjematisk
Tilpasset PCB med Fritzing + skjematisk
Tilpasset PCB med Fritzing + skjematisk

Oppmerksomhet: Adafruit påpeker at mens du kan drive huzzah32 via USB -pinnen, må du være forsiktig så du ikke bruker mikro -USB -strøminntaket samtidig. Min PCB drives av nedtrappingsbukk, som deretter driver huzzahen via USB -pinnen. Så koble alltid fra ekstern strøm/fjern huzzah fra brettet når du laster opp.

Jeg bestemte meg for å lodde kvinnelige overskrifter på kretskortet fordi det gjør det lettere å bytte ut en del, eller for eksempel legge til en ekstra I2C -sensor. Dette lar meg også enkelt fjerne nano eller ESP32 for å laste inn programmene.

Jeg har lagt til Frizting -filen, jeg kan skrive en roman her, men jeg synes eksemplet snakker best. Jeg begynte med skjematikken over hele oppsettet. Selv om Fritzing har mange deler i søppelbøttene, er ikke alt der. Noen ganger kan du finne Fritzing -delen på internett, noen ganger kan du ikke. Delene jeg ikke fant, erstattet jeg ganske enkelt av en kvinnelig topptekstdel. Hvis du høyreklikker på den, kan du redigere overskriften til mengden pins du vil ha, og tilordne en pinout til den. Jeg gjorde dette med hver del jeg ikke fant. Siden nesten alle moduler bruker samme stigning på 0,1in (2,54mm), vil dette gi deg riktig avstand for delen.

Deretter bytter du til PCB -visningen til fritzing -appen. Et PCB settes på plass. Hvis du klikker på det, kan du angi størrelsen og velge et enkelt eller dobbelt lag PCB. Min bruker 2 lag. Fritzing vil foreslå forbindelsene du har gjort i skjematisk visning. Programmet har et autoroute -alternativ, men jeg bruker det aldri. Jeg liker å organisere tilkoblingene mine manuelt. I PCB -visningen er de gule forbindelsene i det øverste laget, de oransje er i det nederste laget. Igjen, hvis du klikker på tilkoblingen, kan du velge dens egenskaper.

For å lage selve PCB -en må du eksportere den som en gerber -fil. Før du gjør dette, under fanen "ruting" kan du sjekke designreglene. Hvis alt sjekker ut, kan du klikke på "eksporter for PCB". De fleste produsenter vil be om gerber -fil, så velg eksport til gerber.

Jeg bestilte min PCB fra JLCPCB, jeg liker at de umiddelbart gir deg en pris. Det er selvfølgelig mange andre alternativer.

Om skjematisk: det er 2 spenninger som brukes. LED og femtobuck drives direkte av 12V -forsyningen. Resten drives via nedtrappingsbukk med 5 volt.

Trinn 6: Design + Laserskærer

Design + Laserskærer
Design + Laserskærer
Design + Laserskærer
Design + Laserskærer

For mitt første design prøvde jeg å bruke massiv eik (jeg følger trearbeidstimer), men det ble raskt klart at dette ikke var ideelt. Treverket er for tykt, noe som gjør det vanskelig å passe på delene dine. 3 mm bjørkmultiplex gir enklere måter å feste kodere og skjermer på.

Jeg fant en online lasercut -tjeneste, snijlab.nl, tilgjengelig for hobbyfolk i Rotterdam (de sender til Belgia, Nederland og Tyskland). På nettstedet deres kan du laste opp tegningene dine, og de oppgir umiddelbart prisen din. Jeg brukte Autocad, som jeg har på jobb, men programvaren spiller egentlig ingen rolle. Det må bare være en vektortegning (Vectr, Illustrator, Inkscape …). De fleste butikker bruker farger for å avgjøre om du vil klippe eller gravere.

Noen ting å huske på:

- Maks. dimensjoner på laserskjæreren (jeg tegnet en ramme rundt delene mine)

- Min. avstanden mellom kuttene

- Pass på at du ikke tegner noen doble linjer, laseren vil gjøre et ekstra pass, som koster deg mer.

- Når du plotter til PDF, må du plotte 1: 1. Du vil ikke skalere eller passe til papir.

Trinn 7: Montering

montering
montering
montering
montering
montering
montering

Jeg bygde klokken rundt en treramme, panelene holdes på plass med M3 -skruer og innsatser i rammen. Skulle jeg noen gang bygge en versjon 2, ville jeg brukt "L" -profiler i aluminium for å feste panelene til. Det var veldig vanskelig å nøyaktig bore hullene for messinginnsatsene. Det tok meg veldig lang tid, for bare et akseptabelt resultat. Dette vil selvfølgelig bety at laserkutttegningen må revideres. Jeg tror at med aluminiumsprofiler og bare muttere og bolter ville du få et bedre resultat.

For å spre lyset bedre har jeg limt sporingspapir på innsiden av perforeringene. Dette gir lyset en fin glød.

Trinn 8: Ikke stopp her

Ikke stopp her
Ikke stopp her
Ikke stopp her
Ikke stopp her
Ikke stopp her
Ikke stopp her

Prosjektet sentrerer rundt en ESP32, jeg har knapt brukt det. Soverommet mitt lys kan for øyeblikket fjernstyres med blynk. Å kontrollere dem med klokken er bare et lite skritt videre. Kanskje du vil ha noen ekstra skjermer som viser deg temperaturen rundt huset ditt? Eller noen lokale sensorer (det er fortsatt ledige I2C -tilkoblinger på den multiplekseren!). Kanskje stille klokkeslett/alarm via en app og bluetooth?

Gi meg beskjed om hva du endret, hva du ville endre, hva jeg burde endre …

Anbefalt: