Obsah:

Budík Oled: 8 kroků (s obrázky)
Budík Oled: 8 kroků (s obrázky)

Video: Budík Oled: 8 kroků (s obrázky)

Video: Budík Oled: 8 kroků (s obrázky)
Video: Adel ukazala prso 2024, Červenec
Anonim
Budík Oled
Budík Oled

Kolem běží hodně hodin arduino/ESP32, ale používají ty pěkné a ostré OLED?

Nějakou dobu jsem experimentoval s arduiny a ESP32, ale nikdy jsem se nedostal k hotovému produktu. Vyrobil jsem budík se 4 1,3palcovými monochromatickými OLED. Hodiny mají také stmívatelnou noční lampu a nabíjecí port USB (nikdo nemá náhradní zásuvky vedle postele). OLED jsou také stmívatelné, to bylo přidáno na poslední chvíli poté, co můj projekt ohrozila moje přítelkyně. Pokud by dim nebyl dostatečně hluboký - u přítelkyň hlasově tlumený, mohu také poskytnout verzi kódu, kde jsou mezi určitými hodinami napájeny 3 displeje. Cílem bylo vytvořit snadno opravitelné hodiny s pohledem nad rámec „prototypu“. Při výrobě hodin jsem narazil na určité potíže, které jsem musel vyřešit, a proto si myslím, že tento návod stojí za sdílení. Hodiny lze vyrobit pomocí malých nástrojů, nemám rád „a pro další krok jsem použil své návody na CNC frézu 10 000 EUR/$“.

Některé věci, které budou vysvětleny v tomto instructable (in-structable-ception):

- Jak používat/zapojit I2C OLED displej s Arduino/ESP32

- Jak používat více I2C objektů s jedním arduino/ESP32

- Jak vytvořit "posuvnou" nabídku pomocí rotačního kodéru (+ jak používat kodér s ESP32/arduino)

- Jak navrhnout a objednat vlastní desku plošných spojů pomocí fritování.

- Hodiny také používají RTC (hodiny v reálném čase), LED ovladač, modul snižujícího napětí … K těm se opravdu nedostanu, protože pro tyto moduly je opravdu připraveno mnoho informací.

Chtěl bych poznamenat, že nejsem profesionální programátor. Cílem mého pokynu je vysvětlit body, které jsem zmínil výše. Jak jsem to dal dohromady pro svůj konečný produkt, nemusí být nejčistší způsob. Je to způsob, který mi umožnil sledovat to všechno.

Zásoby

Při nákupu zboží se vždy snažím zvážit důležitost kvality/dokumentace vs ceny. Moje zásoby jsou mixem značek A a levnějších čínských dílů. Mouser je skvělý dodavatel, pokud je důležitá kvalita, objednávám u Banggood/Aliexpress levnější díly.

- Deska ESP32, použil jsem Huzzah32 od adafruit, ale existuje spousta dalších (levnějších) možností. Vybral jsem Huzzah32, protože je velmi dobře zdokumentovaný.

- 4 1,3palcové I2C OLED displeje (128x64, s ovladačem SH1106), 0,96 "jsou běžnější, ale pro tento projekt dávám přednost 1,3"

- Sparkfun řidič femtobucku pro ovládání LED

- Hodiny RTC, použil jsem jedny s lithiovým článkem

- Arduino nano

-Zásuvka USB 2.0 (použil jsem: SS-52200-002 z konektoru Stewart)

- Zásuvka DC (používal jsem: L722A od Switchcraft)

- 12V 3A DC adaptér (GST36E12-P1J od Mean Well)

- Vlastní deska plošných spojů, volitelná, ale díky tomu je projekt mnohem kompaktnější a snadno opravitelný, pokud součást zemře + větší spolehlivost, protože méně vodičů (jlcpcb.com)

- Šrouby a šrouby M3

- Mosazné vložky M3

- 12V až 5V krokový modul od Pololu (DF24V22F5)

- 3 watty napájené chladičem

- Propojovací vodiče

- Bzučák

- multiplexor I2C (TCA9548A od adafruit)

- 2 rotační kodéry (vyzkoušel jsem některé, ne všechny pracují s mým kódem. Ten z "DFrobot" funguje a stejně tak ten z kulatého PCB od "DIYmore". Můj kód nevypadá, že by fungoval pro tlačítko typu KY-040. Můj budík používá ten od DIYmore, protože se velmi snadno montuje na panel (nejsou potřeba žádné další šrouby/otvory).

- Sortiment hlaviček (volitelně)

- Dřevo pro rám: 18 mm x 18 mm x 2400 mm

- Pauzovací papír

Použil jsem také nějaké nástroje (páječka, 3. ruka, pila …), ale nic opravdu exotického.

Krok 1: Použití Oled

Použití Oleda
Použití Oleda
Použití Oleda
Použití Oleda
Použití Oleda
Použití Oleda

Chcete -li používat OLED, musíte si nainstalovat knihovnu. Používám U8G2lib od Oli Kraus, je velmi srozumitelný a má referenční příručku s jasnými příklady.

Chcete -li připojit desku (ESP nebo arduino), musíte najít piny SDA a SCL. Tyto piny jsou komunikační piny I2C. Vyhledejte „pinout“vaší konkrétní desky, pokud je nemůžete najít.

Přidal jsem nějaký ukázkový kód. Kód funguje pro arduino i ESP32, ale u ESP32 je méně pravděpodobné, že dojde paměť. Všechny dosud vyzkoušené oledy fungují jak s 3.3v (ESP32), tak s 5V.

Krok 2: Více OLED

Několik OLED
Několik OLED

Zde se můj projekt začíná lišit od mnoha jiných budíků. Většina arduinos/ESP má pouze jeden nebo dva piny I2C. Tento druh omezuje použití částí I2C. Co když mám 4 senzory I2C a chci zobrazit jejich hodnoty na displeji I2C? Zadejte multiplexer. Muliplexer vám umožňuje adresovat 7 různých I2C částí. To umožňuje mému ESP32 používat hodiny reálného času I2C a zobrazovat čas pomocí I2C znovu na 4 displejích (nebo více, nenechte mě zastavit).

Přidal jsem nějaký ukázkový kód pro ESP32, odtud si nejsem jistý, zda arduino dokáže držet krok. Příklad používá pouze displeje, mohou to být i jiné věci, například senzory I2C atd. Princip je vždy stejný, pravý kanál zavoláte pomocí „tcaselect (#);“funkci, pak spustíte jakýkoli kód nezbytný pro váš objekt I2C.

Krok 3: Vytvoření rolovací nabídky pomocí rotačního kodéru

Vytvoření rolovací nabídky pomocí rotačního kodéru
Vytvoření rolovací nabídky pomocí rotačního kodéru
Vytvoření rolovací nabídky pomocí rotačního kodéru
Vytvoření rolovací nabídky pomocí rotačního kodéru
Vytvoření rolovací nabídky pomocí rotačního kodéru
Vytvoření rolovací nabídky pomocí rotačního kodéru

Nejprve si nejprve vyzkoušejte kodéry. Přidal jsem nějaký kód k otestování vašich modulů kodéru. Jak je uvedeno v dodávkách: Svůj kód jsem úspěšně otestoval pouze pomocí modulů rotačních kodérů od robota DF a modulu s kulatou deskou plošných spojů od firmy DIYmore. Správné kodéry najdete na obrázcích výše.

Knihovna, kterou jsem použil, je tato:

PDF, které jsem přidal, snad pomáhá se strukturou nabídky, kterou jsem použil pro své hodiny.

Zprovoznění kodéru bylo pro mě v tomto projektu nejtěžší. Existuje mnoho různých kodérů a spousta různých knihoven, které nejsou vždy kompatibilní s ESP32. Ale myslím, že (pracovní) rotační kodér je elegantní řešení, pokud chcete něco zadat. Pokud bych použil pouze tlačítka, potřeboval bych více než 1 a nastavení času by vyžadovalo mnoho stisknutí.

Krok 4: Vložení předchozího kódu do druhého

Uvedení předchozího kódu Togetther
Uvedení předchozího kódu Togetther

Název titulu shrnuje, co jsem udělal. Zkoušel jsem část na část a pak jsem dal všechno dohromady. Ale protože nikdy není nic jednoduchého, musel jsem některé věci změnit. Sériová komunikace je pomalý proces. To překáží správnému čtení kodéru. Abych to překonal, přidal jsem na piny kodéru přerušení. Kód pro čtení kodéru je poté okamžitě vyvolán, pokud kodér stisknete nebo otočíte.

Jakmile pochopíte, jak jsou nabídky sestaveny, zjistíte, že je velmi snadné přidávat nebo odebírat funkce podle vlastních představ. Možná byste chtěli načíst aktuální počasí nebo čas z internetu a zobrazit ho?

Mnoho takových nápadů jsem vynechal, protože jsem chtěl především spolehlivý časový klid. Takový, který nedělá nic automaticky. Pracuji velmi liché hodiny v zóně letního času. Pokaždé, když se změní hodina, jsem nervózní zaspat. Změní můj telefon automaticky hodinu? Budou moje hodinky? Moje hodiny nebudou, pokud si je sám nevyměním. Ale možná byste chtěli dát své hodiny do kuchyně? Jiný scénář, přidávejte funkce, dokud není paměť!

Krok 5: Vlastní PCB s Fritzing + Schematic

Vlastní PCB se schématem Fritzing +
Vlastní PCB se schématem Fritzing +
Vlastní PCB se schématem Fritzing +
Vlastní PCB se schématem Fritzing +
Vlastní PCB se schématem Fritzing +
Vlastní PCB se schématem Fritzing +

Bod pozornosti: Adafruit poukazuje na to, že zatímco můžete huzzah32 napájet přes USB pin, musíte dávat pozor, abyste současně nepoužívali napájecí konektor micro USB. Moje deska plošných spojů je napájena přes krok dolů, který pak napájí huzzah přes USB pin. Při nahrávání tedy vždy odpojte externí napájení/vyjměte huzzah z desky.

Rozhodl jsem se pájet samičí záhlaví na desce plošných spojů, protože to usnadňuje výměnu součásti nebo přidání například dalšího senzoru I2C. To mi také umožňuje snadno odebrat nano nebo ESP32 a načíst programy.

Přidal jsem soubor Frizting, mohu zde napsat román, ale myslím, že příklad mluví nejlépe. Začal jsem schématem celého nastavení. Zatímco Fritzing má v zásobnících spoustu dílů, není tam všechno. Někdy najdete část Fritzing na internetu, někdy nemůžete. Části, které jsem nemohl najít, jsem jednoduše nahradil částí ženské hlavičky. Pokud na něj kliknete pravým tlačítkem, můžete upravit záhlaví na požadovaný počet pinů a přiřadit mu pin. Dělal jsem to s každou částí, kterou jsem nemohl najít. Jelikož téměř všechny moduly používají stejnou rozteč 0,1 palce (2,54 mm), získáte správné rozestupy pro součást.

Dále přepnete na pohled PCB na fritzingovou aplikaci. Bude nainstalována deska plošných spojů, pokud na ni kliknete, můžete nastavit její velikost a zvolit jednovrstvou nebo dvouvrstvou desku plošných spojů. Můj používá 2 vrstvy. Fritzing navrhne připojení, která jste vytvořili ve schematickém zobrazení. Program má možnost automatického spouštění, ale nikdy jej nepoužívám. Rád ručně organizuji svá připojení. V zobrazení DPS jsou žluté spoje v horní vrstvě, oranžové ve spodní vrstvě. Opět pokud kliknete na připojení, můžete zvolit jeho vlastnosti.

Chcete -li vytvořit skutečnou desku plošných spojů, musíte ji exportovat jako soubor Gerber. Než to uděláte, na kartě „směrování“můžete zkontrolovat pravidla návrhu. Pokud se vše zapíše, můžete kliknout na „export pro PCB“. Většina výrobců požádá o soubor gerber, takže vyberte export do gerberu.

Objednal jsem si desku plošných spojů z JLCPCB, líbí se mi, že vám okamžitě nabídnou cenu. Samozřejmě existuje mnoho dalších možností.

O schématu: používají se 2 napětí. LED a femtobuck jsou napájeny přímo napájením 12V. Zbytek je napájen prostřednictvím snižujícího se napětí s 5 volty.

Krok 6: Design + Lasercutter

Design + Lasercutter
Design + Lasercutter
Design + Lasercutter
Design + Lasercutter

Pro svůj první návrh jsem zkusil použít masivní dub (sleduji kurzy zpracování dřeva), ale rychle se ukázalo, že to nebylo ideální. Dřevo je příliš silné, takže je obtížné namontovat vaše díly. 3 mm březový multiplex umožňuje snadnější způsoby upevnění kodérů a displejů.

Našel jsem online službu lasercut, snijlab.nl, dostupnou pro fandy v Rotterdamu (dodávají do Belgie, Nizozemska a Německa). Na jejich webové stránky můžete nahrát své kresby a oni okamžitě citují vaši cenu. Použil jsem Autocad, který mám v práci, ale na softwaru vlastně nezáleží. Musí to být vektorová kresba (Vectr, Illustrator, Inkscape…). Většina obchodů pomocí barev určuje, zda chcete řezat nebo gravírovat.

Několik věcí, které je třeba mít na paměti:

- Max. rozměry laserového řezače (kolem svých částí jsem nakreslil rámeček)

- Min. vzdálenost mezi řezy

- Ujistěte se, že nenakreslíte žádné dvojité čáry, laser udělá další průchod, což vás bude stát více.

- Při vykreslování do PDF se ujistěte, že vykreslujete 1: 1. Nechcete zmenšovat nebo pasovat na papír.

Krok 7: Sestavení

Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění

Hodiny jsem postavil kolem dřevěného rámu, panely jsou na místě drženy šrouby M3 a vložkami v rámu. Pokud bych někdy postavil verzi 2, použil bych k připevnění panelů hliníkové profily „L“. Bylo velmi obtížné přesně vyvrtat otvory pro mosazné vložky. Trvalo mi to velmi dlouho, jen přijatelný výsledek. To by samozřejmě znamenalo, že výkres laserového řezání musí být revidován. Myslím, že s hliníkovými profily a pouhými maticemi a šrouby získáte lepší výsledek.

Abych lépe rozptýlil světlo, nalepil jsem na vnitřní stranu perforací pauzovací papír. To dává světlu příjemnou záři.

Krok 8: Nezastavujte se zde

Nezastavujte se zde
Nezastavujte se zde
Nezastavujte se zde
Nezastavujte se zde
Nezastavujte se zde
Nezastavujte se zde

Projekt se točí kolem ESP32, sotva jsem ho používal. Světla mé ložnice lze aktuálně dálkově ovládat pomocí blynku. Jejich ovládání hodinami je jen malý krok dále. Možná chcete nějaké další displeje, které vám ukazují teplotu kolem vašeho domu? Nebo nějaké lokální senzory (na tom multiplexeru jsou ještě náhradní I2C připojení!). Je možné nastavit čas/alarm pomocí aplikace a bluetooth?

Dejte mi vědět, co jste změnili, co byste změnili, co bych měl změnit …

Doporučuje: