Indholdsfortegnelse:

Oled vækkeur: 8 trin (med billeder)
Oled vækkeur: 8 trin (med billeder)

Video: Oled vækkeur: 8 trin (med billeder)

Video: Oled vækkeur: 8 trin (med billeder)
Video: KOGT ÆG I 8 TIMER. KHAMIN I KAZAN 10, 12, 24 TIMERS TILBEREDNING. OPSKRIFT 2024, Juli
Anonim
Oled vækkeur
Oled vækkeur

Der går mange arduino/ESP32 ure rundt, men bruger de de flotte og sprøde OLED'er?

Jeg har eksperimenteret med arduinos og ESP32'er i et stykke tid nu, men jeg nåede aldrig frem til et færdigt produkt. Jeg har lavet et vækkeur med 4 1,3 tommer monokrome OLED'er. Uret har også en dæmpbar sengelampe og en USB -opladningsport (ingen har ekstra stikkontakter ved siden af sin seng). OLED'erne er også dæmpbare, dette blev tilføjet i sidste øjeblik, efter at mit projekt blev truet af min kæreste. Skulle dim ikke være -in veninder stemme- dæmpet nok, kan jeg også levere en version af koden, hvor 3 skærme er tændt mellem bestemte timer. Målet var at lave et let brugbart ur, med et kig ud over "prototype". Mens jeg lavede mit ur, stødte jeg på nogle vanskeligheder, jeg var nødt til at løse, og derfor synes jeg, at dette instruktivt er værd at dele. Uret kan laves med små værktøjer, jeg kan ikke lide "og til det næste trin brugte jeg mine 10.000 €/$ CNC mølle" tutorials.

Nogle ting, der vil blive forklaret i denne instruerbare (in-structable-ception):

- Sådan bruges/ledes en I2C OLED -skærm med arduino/ESP32

- Sådan bruges flere I2C -objekter med en arduino/ESP32

- Sådan laver du en "scroll-stand" menu ved hjælp af en roterende encoder (+ hvordan man bruger en encoder med en ESP32/arduino)

- Sådan designes og bestilles et brugerdefineret printkort med fritzing.

- Uret bruger også en RTC (real -time ur), led driver, trin ned spændingsmodul … Jeg vil ikke rigtig komme ind på disse, fordi der virkelig er mange oplysninger let tilgængelige for disse moduler.

Jeg vil gerne bemærke, at jeg ikke er en professionel programmør. Målet med min instruerbare er at forklare de punkter, jeg nævnte ovenfor. Hvordan jeg sammensætter det hele til mit slutprodukt, er måske ikke den reneste måde. Det er den måde, der tillod mig at holde styr på det hele.

Forbrugsvarer

Når jeg køber forbrugsvarer, forsøger jeg altid at afveje betydningen af kvalitet/dokumentation kontra pris. Mine forsyninger er en blanding af A-mærker og billigere kinesiske dele. Mouser er en fantastisk leverandør, hvis kvaliteten er vigtig, jeg bestiller fra Banggood/Aliexpress til de billigere dele.

- Et ESP32 -kort, jeg brugte Huzzah32 fra adafruit, men der er masser af andre (billigere) muligheder. Jeg valgte Huzzah32, fordi den er meget veldokumenteret.

- 4 1,3 tommer I2C OLED -skærme (128x64, med SH1106 -driveren), de 0,96 "er mere almindelige, men for dette projekt foretrækker jeg de 1,3" dem

- Sparkfun femtobuck driver til at køre LED'en

- RTC -ur, jeg brugte et med en lithiumcelle

- Arduino nano

-USB 2.0-port til kvinder (jeg brugte: SS-52200-002 fra Stewart Connector)

- Kvinde DC -stik (jeg brugte: L722A fra Switchcraft)

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

- Tilpasset printkort, valgfrit, men dette gør projektet meget mere kompakt og let at betjene, hvis en del dør + mere pålidelighed, fordi færre ledninger (jlcpcb.com)

- M3 skruer og bolte

- M3 messingindsatser

- 12V til 5V nedtrapningsmodul fra Pololu (DF24V22F5)

- 3 watt drevet med kølelegeme

- Jumper ledninger

- summer

- I2C multiplexer (TCA9548A fra adafruit)

- 2 roterende encodere (jeg har prøvet nogle, ikke alle fungerer med min kode. Den fra "DFrobot" virker, og det samme gør den fra med det runde printkort fra "DIYmore". Min kode virker ikke til trykknappen af typen KY-040. Mit vækkeur bruger det fra DIYmore, fordi de er meget nemme at montere på panelet (ingen ekstra skruer/huller er nødvendige).

- Sortiment af kvindelige overskrifter (valgfrit)

- Træ til rammen: 18mmx18mmx2400mm

- Sporepapir

Jeg brugte også nogle værktøjer (loddejern, 3. hånd, sav …), men intet virkelig eksotisk.

Trin 1: Brug af en Oled

Brug af en Oled
Brug af en Oled
Brug af en Oled
Brug af en Oled
Brug af en Oled
Brug af en Oled

For at bruge OLED'erne skal du installere et bibliotek. Jeg bruger U8G2lib fra Oli Kraus, det er meget forståeligt og har en referencevejledning med klare eksempler.

For at tilslutte dit bord (ESP eller arduino) skal du finde SDA- og SCL -ben. Disse ben er I2C kommunikationsnåle. Google til "pinout" på dit specifikke bord, hvis du ikke kan finde dem.

Jeg har tilføjet nogle eksempler på kode. Koden fungerer for både arduino og ESP32, men det er mindre sandsynligt, at ESP32 løber tør for hukommelse. Alle oleds, jeg hidtil har prøvet, fungerer med både 3.3v (ESP32) og 5V.

Trin 2: Flere OLED'er

Flere OLED'er
Flere OLED'er

Det er her mit projekt begynder at adskille sig fra mange andre vækkeure. De fleste arduinos/ESP'er har kun en eller to I2C -stifter. Denne form for begrænsning af brugen af I2C dele. Hvad hvis jeg har 4 I2C -sensorer og vil vise deres aflæsninger på et I2C -display? Indtast multiplexeren. Muliplexeren giver dig mulighed for at adressere 7 forskellige I2C -dele. Dette gør det muligt for min ESP32 at bruge et I2C real -time ur og vise tiden ved hjælp af I2C igen over de 4 skærme (eller mere, lad mig ikke stoppe dig).

Jeg har tilføjet en eksempelkode til ESP32, herfra er jeg ikke sikker på, at arduinoen kan følge med. Eksemplet bruger kun displays, det kan også være andre ting som I2C -sensorer osv. Princippet er altid det samme, du kalder den rigtige kanal med "tcaselect (#);" funktion, så udfører du den kode, der er nødvendig for dit I2C -objekt.

Trin 3: Oprettelse af en rullbar menu med en roterende encoder

Oprettelse af en rullbar menu med en roterende encoder
Oprettelse af en rullbar menu med en roterende encoder
Oprettelse af en rullbar menu med en roterende encoder
Oprettelse af en rullbar menu med en roterende encoder
Oprettelse af en rullbar menu med en roterende encoder
Oprettelse af en rullbar menu med en roterende encoder

Første ting først, test dine encodere. Jeg har tilføjet en kode for at teste dine encoder -moduler. Som det fremgår af forsyningerne: Jeg har kun succesfuldt testet min kode med de roterende encodermoduler fra DF robot og modulet med det runde print fra DIYmore. Se billederne ovenfor for de rigtige encodere.

Det bibliotek, jeg brugte, er dette:

Den PDF -fil, jeg har tilføjet, hjælper forhåbentlig med den menustruktur, jeg har brugt til mit ur.

At få encoderen til at fungere var den sværeste del for mig i dette projekt. Der er mange forskellige encodere og mange forskellige biblioteker, der ikke altid er kompatible med ESP32. Men jeg tror, at en (fungerende) roterende encoder er en elegant løsning, hvis du vil indtaste noget. Skulle jeg kun have brugt knapper, havde jeg haft brug for mere end 1, og indstilling af tiden ville tage mange tryk.

Trin 4: Indsætning af den forrige kode Togetther

Indsætter den tidligere kode Togetther
Indsætter den tidligere kode Togetther

Titlen opsummerer lidt, hvad jeg gjorde. Jeg prøvede del for del, og derefter satte jeg alt sammen. Men fordi intet nogensinde er let, måtte jeg ændre nogle ting. Den serielle kommunikation er en langsom proces. Dette kommer i vejen for at læse encoderen korrekt. For at overvinde dette tilføjede jeg afbrydelser til koderne. Koden til læsning af encoderen kaldes derefter straks, hvis du skubber eller drejer på encoderen.

Når du forstår, hvordan menuerne er opbygget, vil du opdage, at det er meget let at tilføje eller fjerne funktioner til din egen smag. Måske vil du gerne hente det aktuelle vejr eller den aktuelle tid fra internettet og vise det?

Jeg har udeladt mange sådanne ideer, fordi jeg frem for alt ønskede en pålidelig tidsfred. En der ikke gør noget automatisk. Jeg arbejder meget ulige timer i en sommertid. Hver gang timen ændres, er jeg nervøs for at sove. Ændrer min telefon automatisk timen? Vil mit ur? Mit ur vil ikke, medmindre jeg selv ændrer det. Men måske vil du sætte dit ur i køkkenet? Anderledes scenario, tilføj funktioner, indtil hukommelsen er ude!

Trin 5: Tilpasset print med Fritzing + skematisk

Brugerdefineret print med Fritzing + skematisk
Brugerdefineret print med Fritzing + skematisk
Brugerdefineret print med Fritzing + skematisk
Brugerdefineret print med Fritzing + skematisk
Brugerdefineret print med Fritzing + skematisk
Brugerdefineret print med Fritzing + skematisk

Opmærksomhed: Adafruit påpeger, at mens du kan forsyne huzzah32 via USB -stiften, skal du være forsigtig med ikke at bruge mikro -USB -strømindgangen samtidigt. Mit printkort forsynes via step down -bukken, som derefter driver huzzahen via USB -stiften. Så tag altid den eksterne strøm ud/fjern huzzah'en fra kortet, når du uploader.

Jeg besluttede at lodde kvindelige overskrifter på printkortet, fordi det gør det lettere at skifte en del ud eller tilføje f.eks. En ekstra I2C -sensor. Dette giver mig også mulighed for nemt at fjerne nano eller ESP32 for at indlæse programmerne.

Jeg har tilføjet Frizting -filen, jeg kan skrive en roman her, men jeg synes, at eksemplet taler bedst. Jeg startede med skematikken over hele opsætningen. Mens Fritzing har mange dele i skraldespandene, er der ikke alt der. Nogle gange kan du finde Fritzing -delen på internettet, nogle gange kan du ikke. De dele, som jeg ikke kunne finde, erstattede jeg simpelthen af en kvindelig overskriftsdel. Hvis du højreklikker på den, kan du redigere overskriften til den mængde pins, du ønsker, og tildele den en pinout. Jeg gjorde dette med hver del, jeg ikke kunne finde. Da næsten alle moduler bruger den samme stigning på 0,1in (2,54 mm), giver dette dig den korrekte afstand til delen.

Derefter skifter du til PCB -visningen af fritzing -appen. Et PCB sættes på plads, hvis du klikker på det, kan du indstille dets størrelse og vælge et enkelt eller dobbelt lag PCB. Min bruger 2 lag. Fritzing vil foreslå de forbindelser, du har lavet i den skematiske visning. Programmet har en autoroute -indstilling, men jeg bruger det aldrig. Jeg kan godt lide at organisere mine forbindelser manuelt. I printkortvisningen er de gule forbindelser i det øverste lag, den orange er i det nederste lag. Igen, hvis du klikker på forbindelsen, kan du vælge dens egenskaber.

For at lave det egentlige printkort skal du eksportere det som en gerber -fil. Inden du gør dette, under fanen "routing" kan du kontrollere designreglerne. Hvis alt tjekker ud, kan du klikke på "eksporter til PCB". De fleste producenter vil bede om gerber -fil, så vælg eksport til gerber.

Jeg bestilte mit printkort fra JLCPCB, jeg kan godt lide, at de straks citerer dig en pris. Der er selvfølgelig mange andre muligheder.

Om skematisk: der bruges 2 spændinger. LED og femtobuck drives direkte af 12V forsyningen. Resten drives via step-down bukken med 5 volt.

Trin 6: Design + Laserskærer

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

Til mit første design forsøgte jeg at bruge massiv eg (jeg følger træarbejde), men det blev hurtigt klart, at dette ikke var ideelt. Træet er for tykt, hvilket gør det svært at passe dine dele. 3 mm birkemultiplex muliggør lettere måder at fastgøre encodere og displays på.

Jeg fandt en online lasercut -service, snijlab.nl, tilgængelig for hobbyfolk i Rotterdam (de sender til Belgien, Holland og Tyskland). På deres hjemmeside kan du uploade dine tegninger, og de angiver straks din pris. Jeg brugte Autocad, som jeg har på arbejde, men softwaren er ikke ligegyldig. Det skal bare være en vektortegning (Vectr, Illustrator, Inkscape …). De fleste butikker bruger farver til at afgøre, om du vil klippe eller gravere.

Nogle ting at huske på:

- Maks. mål på laserskæreren (jeg tegnede en ramme omkring mine dele)

- Min. afstand mellem snit

- Sørg for, at du ikke tegner dobbeltlinjer, laseren laver et ekstra pas og koster dig mere.

- Når du plotter til PDF, skal du sørge for at plotte 1: 1. Du vil ikke nedskalere eller passe til papir.

Trin 7: Montering

montage
montage
montage
montage
montage
montage

Jeg byggede uret omkring en træramme, panelerne holdes på plads med M3 skruer og skær i rammen. Skulle jeg nogensinde bygge en version 2, ville jeg bruge aluminium "L" -profiler til at fastgøre panelerne til. Det var meget svært at præcist bore hullerne til messingindsatserne. Det tog mig meget lang tid, for bare et acceptabelt resultat. Dette ville naturligvis betyde, at laserskæretegningen skal revideres. Jeg tror, at med aluminiumsprofiler og bare møtrikker og bolte ville du få et bedre resultat.

For at sprede lyset bedre har jeg limet papir på indersiden af perforeringerne. Dette giver lyset en dejlig glød.

Trin 8: Stop ikke her

Stop ikke her
Stop ikke her
Stop ikke her
Stop ikke her
Stop ikke her
Stop ikke her

Projektet er centreret omkring en ESP32, jeg har næsten ikke brugt det. Mit soveværelse lys kan i øjeblikket fjernbetjenes ved hjælp af blynk. At kontrollere dem med uret er kun et lille skridt videre. Måske vil du have nogle ekstra displays, der viser dig temperaturen omkring dit hus? Eller nogle lokale sensorer (der er stadig ekstra I2C -forbindelser på den multiplexer!). Måske indstille tid/alarm via en app og bluetooth?

Lad mig vide, hvad du ændrede, hvad du ville ændre, hvad jeg skulle ændre …

Anbefalede: