Innehållsförteckning:

Oled väckarklocka: 8 steg (med bilder)
Oled väckarklocka: 8 steg (med bilder)

Video: Oled väckarklocka: 8 steg (med bilder)

Video: Oled väckarklocka: 8 steg (med bilder)
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, Juli
Anonim
Oled väckarklocka
Oled väckarklocka

Det är många arduino/ESP32 -klockor som går runt, men använder de de fina och skarpa OLED: erna?

Jag har experimenterat med arduinos och ESP32 ett tag nu, men jag kom aldrig fram till en färdig produkt. Jag har gjort en väckarklocka med 4 1,3 tum monokroma OLED. Klockan har också en dimbar sänglampa och en USB -laddningsport (ingen har extra uttag bredvid sin säng). OLED: erna kan också dimmas, detta tillkom i sista minuten efter att mitt projekt hotades av min flickvän. Skulle dim inte vara -in flickvänner röst- dimma nog, kan jag också tillhandahålla en version av koden där 3 skärmar drivs mellan vissa timmar. Målet var att göra en lätt fungerande klocka, med en titt bortom "prototyp". När jag gjorde min klocka stötte jag på några svårigheter som jag var tvungen att lösa, varför jag tycker att den här instruerbara är värd att dela. Klockan kan göras med små verktyg, jag gillar inte "och för nästa steg använde jag mina 10.000 €/$ CNC -kvarn" självstudier.

Några saker som kommer att förklaras i denna instruerbara (in-structable-ception):

- Hur man använder/kopplar en I2C OLED -skärm med arduino/ESP32

- Hur man använder flera I2C -objekt med en arduino/ESP32

- Hur man gör en "rullningsbar" meny med en roterande kodare (+ hur man använder en kodare med en ESP32/arduino)

- Hur man designar och beställer ett anpassat kretskort med fritzing.

- Klockan använder också en RTC (realtidsklocka), leddrivrutin, trappspänningsmodul … Jag kommer inte riktigt in på dessa eftersom det verkligen finns mycket information tillgänglig för dessa moduler.

Jag vill notera att jag inte är en professionell programmerare. Målet med min instruerbara är att förklara de punkter jag nämnde ovan. Hur jag lägger ihop allt för min slutprodukt är kanske inte det renaste sättet. Det var så som gjorde att jag kunde hålla koll på allt.

Tillbehör

När jag handlar förnödenheter försöker jag alltid väga vikten av kvalitet/dokumentation kontra pris. Mina förnödenheter är en blandning av A-märken och billigare kinesiska delar. Mouser är en bra leverantör om kvalitet är viktigt, jag beställer från Banggood/Aliexpress för de billigare delarna.

- Ett ESP32 -kort, jag använde Huzzah32 från adafruit, men det finns många andra (billigare) alternativ. Jag valde Huzzah32 eftersom den är mycket väl dokumenterad.

- 4 1,3 tums I2C OLED -skärmar (128x64, med SH1106 -drivrutinen), 0,96 "är vanligare men för detta projekt föredrar jag 1,3"

- Sparkfun femtobuck -drivrutin för att driva lysdioden

- RTC -klocka, jag använde en med litiumcell

- Arduino nano

-Kvinnlig USB 2.0-port (jag använde: SS-52200-002 från Stewart Connector)

- Kvinnlig DC -kontakt (jag använde: L722A från Switchcraft)

- 12V 3A DC-adapter (GST36E12-P1J från Mean Well)

- Anpassat kretskort, valfritt men detta gör projektet mycket mer kompakt och lätt att underhålla om en del dör + mer tillförlitlighet eftersom mindre ledningar (jlcpcb.com)

- M3 skruvar och bultar

- M3 mässingsinsatser

- 12V till 5V steg ned modul från Pololu (DF24V22F5)

- 3 watt drivs med kylfläns

- Tröjor

- summer

- I2C multiplexer (TCA9548A från adafruit)

- 2 roterande pulsgivare (jag har provat några, inte alla fungerar med min kod. Den från "DFrobot" fungerar och det gör den från med den runda kretskorten från "DIYmore". Min kod verkar inte fungera för tryckknappen av KY-040-typen. Min väckarklocka använder den från DIYmore eftersom de är mycket enkla att montera på panelen (inga extra skruvar/hål behövs).

- Sortiment av kvinnliga rubriker (valfritt)

- Trä för ramen: 18mmx18mmx2400mm

- Kalkerpapper

Jag använde också några verktyg (lödkolv, 3: e hand, såg …), men inget riktigt exotiskt.

Steg 1: Använda en Oled

Med hjälp av en Oled
Med hjälp av en Oled
Med hjälp av en Oled
Med hjälp av en Oled
Med hjälp av en Oled
Med hjälp av en Oled

För att använda OLED måste du installera ett bibliotek. Jag använder U8G2lib från Oli Kraus, det är mycket begripligt och har en referensguide med tydliga exempel.

För att ansluta din bräda (ESP eller arduino) måste du hitta SDA- och SCL -stift. Dessa stift är I2C -kommunikationsnålarna. Google för "pinout" på ditt specifika kort om du inte kan hitta dem.

Jag har lagt till en exempelkod. Koden fungerar för både arduino och ESP32, men det är mindre troligt att ESP32 tar slut på minne. Alla oleds som jag har provat hittills fungerar med både 3.3v (ESP32) och 5V.

Steg 2: Flera OLED

Flera OLED
Flera OLED

Det är här mitt projekt börjar skilja sig från många andra väckarklockor. De flesta arduinos/ESP har bara en eller två I2C -stift. Denna typ begränsar användningen av I2C -delar. Vad händer om jag har 4 I2C -sensorer och vill visa sina avläsningar på en I2C -display? Ange multiplexern. Med multiplexern kan du adressera 7 olika I2C -delar. Detta gör att min ESP32 kan använda en I2C -realtidsklocka och att visa tiden med I2C igen över de fyra skärmarna (eller fler, låt mig inte stoppa dig).

Jag har lagt till en exempelkod för ESP32, härifrån är jag inte säker på att arduino kan hänga med. Exemplet använder bara skärmar, det kan också vara andra saker som I2C -sensorer osv. Principen är alltid densamma, du ringer rätt kanal med "tcaselect (#);" funktion, då kör du vilken kod som är nödvändig för ditt I2C -objekt.

Steg 3: Skapa en rullningsbar meny med en roterande kodare

Skapa en rullbar meny med en roterande kodare
Skapa en rullbar meny med en roterande kodare
Skapa en rullbar meny med en roterande kodare
Skapa en rullbar meny med en roterande kodare
Skapa en rullningsbar meny med en roterande kodare
Skapa en rullningsbar meny med en roterande kodare

Först och främst, testa dina kodare. Jag har lagt till lite kod för att testa dina kodningsmoduler. Som anges i leveranserna: Jag har bara framgångsrikt testat min kod med de roterande kodningsmodulerna från DF -roboten och modulen med det runda kretskortet från DIYmore. Se bilderna ovan för de rätta kodarna.

Biblioteket jag använde är det här:

Den PDF -fil jag har lagt till hjälper förhoppningsvis till menystrukturen jag har använt för min klocka.

Att få kodaren att fungera var den svåraste delen för mig i det här projektet. Det finns många olika kodare och många olika bibliotek som inte alltid är kompatibla med ESP32. Men jag tror att en (fungerande) roterande kodare är en elegant lösning om du vill mata in något. Skulle jag bara ha använt knappar skulle jag behövt mer än 1 och att ställa in tiden skulle ta många tryck.

Steg 4: Sätta den tidigare koden Togetther

Sätter den tidigare koden Togetther
Sätter den tidigare koden Togetther

Titeln sammanfattar typ vad jag gjorde. Jag försökte del för del och sedan satte jag ihop allt. Men eftersom ingenting någonsin är lätt, var jag tvungen att ändra vissa saker. Seriekommunikationen är en långsam process. Detta hindrar läsaren av kodaren ordentligt. För att övervinna detta lade jag till avbrott i pinnarna på kodaren. Koden för att läsa kodaren anropas sedan omedelbart om du trycker på eller vrider på pulsgivaren.

När du väl förstår hur menyerna är uppbyggda kommer du att upptäcka att det är väldigt enkelt att lägga till eller ta bort funktioner efter eget tycke. Kanske skulle du vilja hämta aktuellt väder eller tid från internet och visa det?

Jag har utelämnat många sådana idéer eftersom jag framför allt ville ha en pålitlig tidsfrid. En som inte gör någonting automatiskt. Jag arbetar väldigt udda timmar i en sommartid. Varje gång timmen ändras är jag nervös för att sova. Kommer telefonen automatiskt att ändra timmen? Kommer min klocka? Tja, min klocka kommer inte, om jag inte ändrar den själv. Men du kanske vill sätta din klocka i köket? Annat scenario, lägg till funktioner tills minnet är slut!

Steg 5: Anpassat kretskort med Fritzing + Schematisk

Anpassad kretskort med Fritzing + schematisk
Anpassad kretskort med Fritzing + schematisk
Anpassad kretskort med Fritzing + schematisk
Anpassad kretskort med Fritzing + schematisk
Anpassad kretskort med Fritzing + schematisk
Anpassad kretskort med Fritzing + schematisk

Uppmärksamhet: Adafruit påpekar att även om du kan driva huzzah32 via USB -stiftet, måste du vara försiktig så att du inte använder mikro -USB -strömuttaget samtidigt. Mitt kretskort drivs via steg ner, som sedan driver huzzah via USB -stiftet. Så koppla alltid bort den externa strömmen/ta bort huzzah från kortet när du laddar upp.

Jag bestämde mig för att löda kvinnliga rubriker på kretskortet eftersom det gör det lättare att byta ut en del, eller lägga till exempelvis en extra I2C -sensor. Detta låter mig också enkelt ta bort nano eller ESP32 för att ladda programmen.

Jag har lagt till Frizting -filen, jag kan skriva en roman här, men jag tycker att exemplet talar bäst. Jag började med schemat över hela upplägget. Medan Fritzing har många delar i soptunnorna, finns inte allt där. Ibland kan du hitta Fritzing -delen på internet, ibland kan du inte. Delarna som jag inte kunde hitta, ersatte jag helt enkelt med en kvinnlig huvuddel. Om du högerklickar på den kan du redigera rubriken till antalet nålar du vill ha och tilldela den en pinout. Jag gjorde detta med varje del jag inte kunde hitta. Eftersom nästan alla moduler använder samma delning på 0,1 tum (2,54 mm) ger detta dig rätt avstånd för delen.

Därefter växlar du till PCB -vyn för fritzing -appen. Ett kretskort sätts på plats, om du klickar på det kan du ställa in dess storlek och välja ett enkel- eller dubbelskiktskort. Min använder 2 lager. Fritzing föreslår de anslutningar du har gjort i den schematiska vyn. Programmet har ett autoroute -alternativ, men jag använder det aldrig. Jag gillar att organisera mina anslutningar manuellt. I PCB -vyn finns de gula anslutningarna i det översta lagret, de orange finns i det nedre lagret. Återigen, om du klickar på anslutningen kan du välja dess egenskaper.

För att göra själva PCB måste du exportera det som en gerber -fil. Innan du gör detta, under fliken "routing" kan du kontrollera designreglerna. Om allt går igenom kan du klicka på "exportera för PCB". De flesta tillverkare kommer att be om gerber -fil, så välj export till gerber.

Jag beställde min PCB från JLCPCB, jag gillar att de omedelbart citerar dig ett pris. Det finns naturligtvis många andra alternativ.

Om schemat: det finns 2 spänningar som används. Lysdioden och femtobuck drivs direkt av 12V -matningen. Resten drivs via nedtrappningsbocken med 5 volt.

Steg 6: Design + Laserskärare

Design + Laserskärare
Design + Laserskärare
Design + Laserskärare
Design + Laserskärare

För min första design försökte jag använda massiv ek (jag följer träbearbetningskurser), men det blev snabbt klart att detta inte var idealiskt. Träet är för tjockt, vilket gör det svårt att montera dina delar. 3 mm björkmultiplex möjliggör enklare sätt att fästa givare och skärmar.

Jag hittade en online lasercut -tjänst, snijlab.nl, tillgänglig för amatörer i Rotterdam (de skickar till Belgien, Nederländerna och Tyskland). På deras webbplats kan du ladda upp dina ritningar och de citerar omedelbart ditt pris. Jag använde Autocad, som jag har på jobbet, men programvaran spelar egentligen ingen roll. Det måste bara vara en vektorteckning (Vectr, Illustrator, Inkscape …). De flesta butiker använder färger för att avgöra om du vill klippa eller gravera.

Några saker att tänka på:

- Max. mått på laserskäraren (jag ritade en ram runt mina delar)

- Min. avståndet mellan snitt

- Se till att du inte ritar några dubbla linjer, lasern gör ett extra pass och kostar dig mer.

- När du planerar till PDF, se till att du plottar 1: 1. Du vill inte skala ner eller passa på papper.

Steg 7: Montering

hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning

Jag byggde klockan runt en träram, panelerna hålls på plats med M3 -skruvar och skär i ramen. Skulle jag någonsin bygga en version 2 skulle jag använda "L" -profiler i aluminium för att fästa panelerna på. Det var mycket svårt att exakt borra hålen för mässingsinsatserna. Det tog mig väldigt lång tid, för bara ett acceptabelt resultat. Detta skulle naturligtvis innebära att laserskärningsritningen måste revideras. Jag tror att med aluminiumprofiler och bara muttrar och bultar skulle du få ett bättre resultat.

För att sprida ljuset bättre har jag limmat spårpapper på insidan av perforeringarna. Detta ger ljuset en fin lyster.

Steg 8: Stanna inte här

Stanna inte här
Stanna inte här
Stanna inte här
Stanna inte här
Stanna inte här
Stanna inte här

Projektet centreras kring en ESP32, jag har knappt använt det. Mina sovrumslampor kan för närvarande fjärrstyras med blynk. Att styra dem med klockan är bara ett litet steg längre. Kanske vill du ha några extra displayer som visar temperaturen runt ditt hus? Eller några lokala sensorer (det finns fortfarande lediga I2C -anslutningar på den multiplexorn!). Kanske ställa in tid/larm via en app och bluetooth?

Låt mig veta vad du ändrade, vad du skulle ändra, vad jag borde ändra …

Rekommenderad: