Kazalo:

Arduino držalo za ključe za kitaro s prepoznavanjem vtičnice in OLED: 7 korakov
Arduino držalo za ključe za kitaro s prepoznavanjem vtičnice in OLED: 7 korakov

Video: Arduino držalo za ključe za kitaro s prepoznavanjem vtičnice in OLED: 7 korakov

Video: Arduino držalo za ključe za kitaro s prepoznavanjem vtičnice in OLED: 7 korakov
Video: Книга - Моя первая схема ArduMikron 2024, Julij
Anonim
Image
Image
Arduino držalo za ključe za kitarsko vtičnico s priznanjem Jack & OLED
Arduino držalo za ključe za kitarsko vtičnico s priznanjem Jack & OLED

Uvod:

Ta navodila bodo podrobno opisala izdelavo mojega nosilca ključev vtičnika Guitar Jack na osnovi Arduina

To je moj prvi pouk, zato vas prosim, da me spremljate, saj bom morda na poti spremenil / posodobil

Korak: Deli in orodja

Deli in orodja
Deli in orodja
Deli in orodja
Deli in orodja
Deli in orodja
Deli in orodja

Večino delov, ki sem jih kupil na Amazon.co.uk ali eBay, nekatere sem že imel na voljo - tukaj je seznam, kar potrebujete.

Povezave Amazon so vse povezave Affiliate, morda jih boste našli kje drugje - veliko uporabljam Amazon Prime, zato me je Amazon slučajno obiskal.

Želel sem ohraniti to gradnjo dokaj poceni in proračunu prijazno. Lahko bi uporabili večji zaslon TFT, kot si želite, pa tudi drugačen Arduino. Ne uporabljajte NANO, ker se bo zaradi velike porabe pomnilnika zrušil. Koda uporablja približno 72% RAM -a Pro Micro in je stabilna, vendar se bo NANO zaradi testiranja zrušil in zamrznil.

(Več podrobnosti v koraku Koda.)

DELI

1x Arduino Pro Micro -

1x 0,96 OLED z rumeno -modrim zaslonom -

4x WS2812 'Pixels' -

1x DS3231 RTC -

4x 1/4 Mono Jack (Ali kolikor želite) - Amazon (zlato) ali Amazon (srebro) ali eBay.si

1x paket mešanih uporov -

4x 1/4 priključki za kitaro -

1x podaljšek kabla Micro USB -

4x vijaki M3

ORODJA IN MATERIALI

- Spajkalnik (to je tisto, ki sem ga kupil - TS100 - kot priloženo z dodatnimi nasveti

- spajkanje

- Pištola za vroče lepilo (https://amzn.to/2UTd9PN)

- Žica (https://amzn.to/2VK2ILU)

- Rezalniki/odstranjevalci žice (https://amzn.to/2KzqUzp)

- 3D tiskalnik ali storitev 3D tiskanja

NEOBVEZNO - Ti elementi so neobvezni, odvisno od tega, kako se odločite, da vse povežete

- Veroboard/Stripboard (https://amzn.to/2KzMFPE)

- Vijačni spojni priključki (2 pola | 3 pola | 4 pola)

- glave PCB (https://amzn.to/2X7RjWf)

2. korak: 3D tiskanje ohišja

3D tiskanje ohišja
3D tiskanje ohišja
3D tiskanje ohišja
3D tiskanje ohišja
3D tiskanje ohišja
3D tiskanje ohišja
3D tiskanje ohišja
3D tiskanje ohišja

Jaz sem svojega natisnil na svojem Creality CR-10S z uporabo črnega PLA+ (https://amzn.to/2X2SDtE)

Tiskala sem na višini 0,2 sloja, s 25% polnilom.

3. korak: Združite vse skupaj + shemo

Združevanje + shema
Združevanje + shema
Združevanje + shema
Združevanje + shema
Združevanje + shema
Združevanje + shema
Združevanje + shema
Združevanje + shema

Kako se boste odločili povezati svoj Arduino, je v celoti odvisno od vas - osebno sem se odločil, da si tako rekoč naredim "ščit". Za izdelavo ščita sem spajal ženske glave na veroboard, da ustreza Pro Micro, nato sem na nasprotnih koncih dodal tirnico +5v in GND. Uporabil sem mostično žico za priključitev +5v na mojo 5 -voltno "tirnico" in enako naredil za GND. Nato sem dodal svoje 4x 100k upore, en konec priključen na +5v za vse, nato pa se druga stran poveže z A0, A1, A2 in A3. Nato sem analognim zatičem A0, A1, A2 in A3 in zatičem 2 (SDA), 3 (SCL) & 4 dodal še vijačne sponke

Izmerite ožičenje in ga prerežite na ustrezne dolžine. Najprej sem začel z LED diodami WS2812 Pixel - PRVA LED WS2812 se poveže na +5v iz Arduina, GND iz Arduina, DIN pa se poveže z Pin 4. Nato se preostale 3 povežejo v verige, pri čemer se povežejo vse 5v> 5v, GND> zatiči GND in DOUT iz ene slikovne pike se poveže z DIN naslednjega. Ko jih spajkate, jih nežno potisnite v kvadratne luknje na vrhu in vroče lepilo namestite ter tudi za zaščito zadnjega dela pred kakršnimi koli nenamernimi povezavami ali kratkimi hlačami.

Po LED diodah sem nato privijal vtičnice za kitaro. Vsak pin vsakega se poveže z GND, nato pa se drugi 2. pin vsakega ustrezno poveže z A0, A1, A2 in A3. To je torej vtičnica 1 do A0, vtičnica 2 do A1, vtičnica 3 do A2 in vtičnica 4 do A3.

Nato sem spajal 4 žice na povezave OLED in kolikor je mogoče skrajšal odvečno spajkanje. Žice želite pritrditi z zadnje strani zaslona, zato jih spajkate na sprednji del zaslona.

Bodite pozorni na zatiče! Nekateri OLED -ji imajo GND na zunanji strani, nato VCC, nekateri imajo VCC zunaj, nato pa GND

Ko spajkate in čim bolj obrežete ali zravnate spajkalno povezavo, zaslon nežno pritisnite na njegovo mesto. Zasnova je nekoliko tesna, vendar se zavedajte, da na to lahko vplivajo različne tolerance tiskanja, zato boste morda morali narediti nekaj manjše naknadne obdelave, da bo primerna. Ko je na mestu, na vsakega od štirih vogalov položite nekaj vročega lepila, da ga držite na mestu.

Povežite vse, da se ujema s shemo in slikami. Ko boste zadovoljni, lahko vroče prilepite tudi uro Pro Micro in RTC, nato pa priključek USB priključite na Pro Micro.

Uporabil sem razširitev mikro USB, tako da a) USB lahko uporabimo za napajanje, vendar bolj, b) tako, da je bilo mogoče po potrebi ponovno programirati Pro Micro, ne da bi vse raztrgali

Ko ste srečni, ohišje privijte skupaj s 4 vijaki

4. korak: Vtiči

Vtiči!
Vtiči!
Vtiči!
Vtiči!
Vtiči!
Vtiči!

To deluje tako, da del zasnove za vse namene deluje kot "ohmmeter". Ohmmeter je instrument za merjenje električnega upora. Večina multimetrov ima to funkcijo, pri kateri izberete lestvico in nato izmerite upor, da ugotovite njegovo vrednost. Delovni princip je, da na +ve priključite ZNANI upor, ki je nato priključen na NEPOZNATI upor, ki se poveže z -ve. Spoj med 2 uporoma se poveže z analognim zatičem Arduino, tako da lahko odčita napetost in izračuna upor.

Deluje kot delilnik napetosti in izračuna upor neznanega upora.

Kot omrežje razdelilnikov napetosti uporov R1 in R2, Vout = Vin * R2 / (R1 + R2) - Za naš znani (R1) upor uporabljamo 100k. To nam daje "padec napetosti"

Iz tega lahko zdaj izračunamo upor neznanega upora (R2), R2 = Vout * R1 / (Vin - Vout) - kjer je R1 naš 100k (100, 000 ohm) upor

Z uporabo drugega upora v vsakem vtiču, ki ga želite uporabiti, lahko kodo ustrezno prilagodite glede na uporabljeno vtičnico.

Uporabljam 4 vtičnice. Odločil sem se za uporabo:

Znani upor (x4) - 100k

Jack Plug 1 - 5,6 k

Vtič 2 - 10k

Jack Plug 3 - 22k

Jack Plug 4 - 39k

Seveda bi to lahko razširili in kodirali, kolikor želite.

5. korak: Koda

Kodeks
Kodeks

Najprej boste potrebovali Arduino IDE, ki je na voljo tukaj:

Poskrbeti boste morali tudi za nekaj knjižnic Arduino:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (izbirno):

Opomba o izbiri prave plošče "Arduino". Prvotno sem ta projekt začel z Arduino Nano, ker so v Združenem kraljestvu zelo poceni pri približno 3 £ 4 £ ali pa pri 1,50 £, če kupujete pri AliExpressu (vendar vas ne moti čakanje 30-50 dni). Težava pri Nano je, da ima SRAM 2 KB (2048 bajtov). Ta skica uporablja 1728 bajtov dinamičnega pomnilnika z globalnimi spremenljivkami. To je 84% SRAM -a, pri čemer je za lokalne spremenljivke na voljo le 320 bajtov. To je bilo premalo in bi povzročilo, da se Nano zaklene in zamrzne.

Pro Micro (Leonardo) ima 2,5K SRAM (2560 bajtov), kar pomeni, da je za lokalne spremenljivke na voljo 694 bajtov (skica uporablja 72% SRAM -a Pro Micro). Doslej se je to izkazalo za popolnoma primerno in stabilno za mojo uporabo. Če nameravate uporabiti veliko vtičnic, razmislite o uporabi nečesa z več SRAM -a.

Kar zadeva pomnilnik Flash, ta skica uporablja 88% (25252 bajtov) 30k (ATMega328p [Nano] in ATMega32u4 [Pro Micro] imata 32k, 2k pa je rezervirano za zagonski nalagalnik)

V preteklih letih sem napisal na stotine skic Arduina, vendar sem hobist - zato upoštevajte, da so nekateri deli kode morda neučinkoviti ali pa obstajajo scenariji "boljših načinov za to". Se pravi, da mi odlično deluje in sem s tem zadovoljen. Uporabil sem knjižnice, ki bi morale delovati na večini plošč, pa naj bo to AVR (najosnovnejši Arduino) ali SAMD21 (imam nekaj naprav Cortex M0)

Želel sem prikazati drugačno grafiko na podlagi uporabljenega priključka. Če želite ustvariti svoje, je to briljanten preprost vodnik, kako ustvariti matriko C za slike, ki bodo uporabljene s tem zaslonom:

sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/

Za grafiko uporabite PROGMEM. Npr:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Zaslon bo po 5 sekundah "prekinil" in se vrnil na prikaz časa.

Večino nastavitev najdete v Settings.h, natančneje, imena povezanih vtičnic so kodirana tukaj:

#define PLUG1 "KLJUČI"

#define PLUG2 "P2" #define PLUG3 "P3" #define PLUG4 "P4" #define GENERIC "NA"

V Variables.h je tudi nekaj pomembnih delov kode

plovec R1 = 96700,0;

plovec R2 = 96300,0; plovec R3 = 96500,0; plovec R4 = 96300,0;

To so znane vrednosti upora, v ohmih, vsakega od 4 uporov.

R1 priključen na A0, R2 na A1, R3 na A2 in R4 na A3.

Priporočljivo je, da izmerite svoje 100k upore z multimetrom in uporabite natančno vrednost upora. Izmerite upor, ko je vse povezano. (Vendar ni vklopljen).

Pri izbiri uporov za vtičnice se prepričajte, da je med njima dobra ohmska vrzel, pri kodiranju pa si zagotovite lep razpon, nižji in višji od izbranega upora. Tukaj je tisto, kar sem uporabil v svoji kodi:

plovec P1_MIN = 4000,0, P1_MAX = 7000,0; // 5,6K

plovec P2_MIN = 8000,0, P2_MAX = 12000,0; // 10K plavajoče P3_MIN = 20000.0, P3_MAX = 24000.0; // 22K plovec P4_MIN = 36000.0, P4_MAX = 42000.0; // 39K

Razlog za to je v analognem odčitku in manjših nihanjih napetosti itd

Torej, če se odkrije upor med 4000 ohmov in 7000 ohmov, predvidevamo, da ste uporabili 5,6 k upor, zato bo koda to videla kot Jack Plug 1. Če je izmerjeni upor med 8000 ohmov in 12000 ohmov, predpostavka je, da gre za 10k upor in je Jack Plug 2 itd.

Če morate narediti nekaj odpravljanja napak (ne puščajte komentarjev v "produkciji", ker serijsko odpravljanje napak porabi dragocen ram), preprosto komentirajte vrstice, ki jih potrebujete na vrhu nastavitev. H

//#definiraj SERIAL_DEBUG

//#definiraj WAIT_FOR_SERIAL

Če želite komentirati, preprosto odstranite //…. če želite komentirati vrstico, znova dodajte // na sprednjo stran vrstice.

SERIAL_DEBUG omogoča serijsko odpravljanje napak in uporabo stvari, kot so (na primer)

Serial.println (F ("pozdravljen svet"));

WAIT_FOR_SERIAL je dodaten korak, kar pomeni, da se koda ne odpre, dokler ne odprete serijskega monitorja. Tako boste zagotovili, da ne boste zamudili pomembnih serijskih sporočil. - NIKOLI NE PUSTITE TEGA Omogočenega

Če pustite WAIT_FOR_SERIAL omogočeno, imetnika ključa ne boste mogli uporabiti v nobenem okolju "resničnega sveta", saj bo obtičal in čakal na serijski monitor Arduino IDE, preden bo lahko nadaljeval v glavno zanko skice. Ko dokončate odpravljanje napak, znova razkomentirajte to vrstico in znova naložite skico za izdelavo/dokončanje.

Ko uporabljam možnost SERIAL_DEBUG, moja koda vsebuje naslednje:

#ifdef SERIAL_DEBUG

Serial.print (F ("ACTIVE JACK =")); Serial.println (ACTIVE_JACK); int len = sizeof (SOCKET_1234_HAS_PLUGTYPE_X)/sizeof (SOCKET_1234_HAS_PLUGTYPE_X [0]); for (int i = 0; i <len; i ++) {Serial.print (F ("SOCKET_1234_HAS_PLUGTYPE_X [")); Serial.print (i); Serial.print (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Serial.println (); if (INSERTED [socket]) {Serial.print (F ("Plug in socket")); Serial.print (vtičnica+1); Serial.print (F ("ima upornost:")); Serial.println (odpornost); } #endif

Zadnja vrstica Serial.print vam bo povedala, kakšen je upor v ohmih zadnje vstavljene vtičnice. Tako lahko to skico uporabite tudi kot neke vrste ohmmeter za preverjanje upora vtiča.

6. korak: Opombe

Mislim, da sem vse pokril, vendar komentirajte in potrudil se bom, da bom prebral in odgovoril, ko bom lahko:)

Se opravičujem za nekoliko slab videoposnetek - nimam stativa, nastavitve za kodiranje ali primernega delovnega prostora, tako da je bilo to posneto (slabo), ko je telefon držal v eni roki in ga poskušal demonstrirati z drugo.

Hvala za branje.

Priporočena: