Turinys:

„Arduino“gitaros lizdo raktų laikiklis su lizdo atpažinimu ir OLED: 7 žingsniai
„Arduino“gitaros lizdo raktų laikiklis su lizdo atpažinimu ir OLED: 7 žingsniai

Video: „Arduino“gitaros lizdo raktų laikiklis su lizdo atpažinimu ir OLED: 7 žingsniai

Video: „Arduino“gitaros lizdo raktų laikiklis su lizdo atpažinimu ir OLED: 7 žingsniai
Video: ESP8266 Беспроводной ЧМИ Nextion || Внешний ПЛК Arduino 2024, Liepa
Anonim
Image
Image
„Arduino“gitaros lizdo raktų laikiklis su lizdo atpažinimu ir OLED
„Arduino“gitaros lizdo raktų laikiklis su lizdo atpažinimu ir OLED

Įvadas:

Šioje instrukcijoje bus išsamiai aprašyta mano „Arduino“pagrindu sukurto „Guitar Jack“papildinio raktų laikiklio konstrukcija

Tai pirmas mano pamokomas dalykas, todėl prašau pakęsti, nes pakeliui galiu atlikti pakeitimų / atnaujinimų

1 žingsnis: dalys ir įrankiai

Dalys ir įrankiai
Dalys ir įrankiai
Dalys ir įrankiai
Dalys ir įrankiai
Dalys ir įrankiai
Dalys ir įrankiai

Daugumą dalių, kurias įsigijau iš „Amazon.co.uk“arba „eBay“, kai kurias jau turėjau - čia yra sąrašas, ko jums reikės.

„Amazon“nuorodos yra visos „Affiliate“nuorodos, galbūt galėsite rasti pigiau kitur - aš daug naudoju „Amazon Prime“, todėl „Amazon“tiesiog buvo mano pasirinkimas.

Norėjau, kad ši konstrukcija būtų gana nebrangi ir nebrangi. Jei norite, galite naudoti didesnį TFT ekraną, taip pat kitą „Arduino“. Nenaudokite NANO, nes dėl didelio atminties naudojimo jis sudužs. Kodas naudoja apie 72% „Pro Micro“operatyviosios atminties ir yra stabilus, tačiau bandymų metu NANO suduš ir užšąla.

(Daugiau informacijos rasite kodo veiksme.)

DALYS

1x „Arduino Pro Micro“-

1x 0,96 colio OLED su geltonu ir mėlynu ekranu -

4x WS2812 „Pikseliai“-

1x DS3231 RTC -

4x 1/4 "mono lizdas (arba tiek, kiek norite) -" Amazon "(auksas) arba" Amazon "(sidabras) arba eBay.co.uk

1x mišrus rezistorių paketas -

4x 1/4 gitaros lizdai -

1x „Micro USB“kabelio prailginimo kabelis -

4x M3 varžtai

ĮRANKIAI IR MEDŽIAGOS

- Lituoklis (tai aš nusipirkau - TS100 - nes buvo pridėta papildomų patarimų

- Lituoklis

- Karštas klijų pistoletas (https://amzn.to/2UTd9PN)

- Viela (https://amzn.to/2VK2ILU)

- Vielos pjaustytuvai/nuėmikliai (https://amzn.to/2KzqUzp)

- 3D spausdintuvo arba 3D spausdinimo paslauga

PASIRENKAMA - šie elementai yra neprivalomi, atsižvelgiant į tai, kaip pasirinksite viską prijungti

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

- Sraigtinės gnybtų jungtys (2 polių | 3 polių | 4 polių)

- PCB antraštės (https://amzn.to/2X7RjWf)

2 žingsnis: 3D spausdinimas

3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas

Aš atspausdinau savo „Creality CR-10S“, naudodamas „Black PLA+“(https://amzn.to/2X2SDtE)

Spausdinau 0,2 sluoksnio aukštyje, užpildydamas 25%.

3 žingsnis: sudėkite viską kartu + schema

Viską sudėti + schema
Viską sudėti + schema
Viską sudėti + schema
Viską sudėti + schema
Viską sudėti + schema
Viską sudėti + schema
Viską sudėti + schema
Viską sudėti + schema

Tai, kaip pasirinksite prijungti „Arduino“, priklauso tik nuo jūsų - aš asmeniškai nusprendžiau padaryti sau „skydą“. Norėdami pagaminti skydą, aš lituodavau moterų antraštes į „Veroboard“, kad jos atitiktų „Pro Micro“, tada priešinguose galuose pridėjau +5v ir GND bėgelį. Aš naudoju jungiamąjį laidą, kad prijungčiau +5 V prie mano dabar 5 V „bėgio“, ir tą patį padariau su GND. Tada pridėjau savo 4x 100k rezistorius, kurių vienas galas buvo prijungtas prie +5v visiems, o kita pusė prijungta prie atitinkamai A0, A1, A2 ir A3. Tada pridėjau varžtus prie analoginių kaiščių A0, A1, A2 ir A3, taip pat kaiščius 2 (SDA), 3 (SCL) ir 4

Išmatuokite savo laidus ir nukirpkite iki reikiamo ilgio. Pirmiausia pradėjau nuo „WS2812 Pixel“šviesos diodų - PIRMAS „WS2812“šviesos diodas jungiasi prie „ +5v“iš „Arduino“, GND iš „Arduino“, o DIN jungiasi prie kaiščio 4. Po to likusieji 3 yra sujungti grandine, sujungiant visus 5v> 5v, GND> GND kaiščiai ir DOUT iš vieno pikselio, jungiasi prie kito DIN. Lituodami švelniai įspauskite juos į kvadratines skyles viršuje ir įklijuokite karštus klijus, taip pat apsaugokite galinę dalį nuo atsitiktinių jungčių ar šortų.

Po šviesos diodų įsukau „Guitar Jack“lizdus. Vienas kaištis prijungiamas prie GND, o antrasis - prie A0, A1, A2 ir A3. Taigi tai yra lizdas 1, A0, lizdas 2 - A1, lizdas 3 - A2 ir lizdas 4 - A3.

Tada lituodavau 4 laidus prie OLED jungčių ir kiek įmanoma sumažindavau lituoklio perteklių. Norite prijungti laidus iš ekrano galo, todėl lituojate prie ekrano priekio.

Atkreipkite dėmesį į kaiščius! Kai kurie OLED turi GND išorėje, tada VCC, kai kurie turi VCC išorėje, o tada GND

Lituodami ir kiek įmanoma nukirpę arba prilipdę litavimo jungtį, švelniai paspauskite ekraną į jo vietą. Tai šiek tiek griežtai priglunda, tačiau atminkite, kad skirtingi spausdinimo nuokrypiai gali tai paveikti, todėl gali tekti atlikti nedidelį papildomą apdorojimą, kad jis būtų tinkamas. Uždėję karštą klijų ant kiekvieno iš 4 kampų, laikykite juos vietoje.

Prijunkite viską, kad atitiktų schemą ir paveikslėlius, ir kai būsite laimingi, galėsite karštuoju būdu priklijuoti „Pro Micro“ir „RTC Clock“ir prijungti USB plėtinį prie „Pro Micro“.

Aš naudoju „micro USB“plėtinį, kad a) USB būtų galima naudoti energijai tiekti, bet tuo labiau, b) kad būtų galima perprogramuoti „Pro Micro“, jei reikia, neištraukiant visų dalykų

Kai būsite laimingi, prisukite dėklą 4 varžtais

4 žingsnis: kištukai

Kištukai!
Kištukai!
Kištukai!
Kištukai!
Kištukai!
Kištukai!

Tai veikia taip, kad visais atžvilgiais dalis dizaino veikia kaip „ommetras“. Omometras yra prietaisas elektros varžai matuoti. Dauguma multimetrų turi šią funkciją, kai pasirenkate skalę ir matuojate rezistorių, kad nustatytumėte jo vertę. Pagrindinis principas yra tas, kad prie +ve prijungiate ŽINOMĄ rezistorių, kuris vėliau prijungiamas prie NEMOKAMO rezistoriaus, kuris jungiasi prie -ve. Sujungimas tarp 2 rezistorių jungiamas prie „Arduino“analoginio kaiščio, kad jis galėtų nuskaityti įtampą ir apskaičiuoti varžą.

Jis veikia kaip įtampos daliklis ir apskaičiuoja nežinomo rezistoriaus varžą.

Kaip rezistorių R1 ir R2 įtampos daliklio tinklas, Vout = Vin * R2 / (R1 + R2) - žinomam (R1) rezistoriui naudojame 100k. Tai suteikia mums „įtampos kritimą“

Iš to dabar galime išsiaiškinti nežinomo (R2) rezistoriaus atsparumą, R2 = Vout * R1 / (Vin - Vout) - kur R1 yra mūsų 100k (100 000 omų) rezistorius

Naudodami skirtingą rezistorių kiekviename kištukiniame lizde, kurį norite naudoti, galite atitinkamai koreguoti kodą, priklausomai nuo naudojamo lizdo.

Aš naudoju 4 kištukus. Aš nusprendžiau naudoti:

Žinomas rezistorius (x4) - 100k

„Jack Plug 1“- 5,6 tūkst

„Jack Plug“2–10 tūkst

„Jack Plug“3–22 tūkst

„Jack Plug“4 - 39 tūkst

Žinoma, galite tai išplėsti ir koduoti tiek, kiek norite.

5 žingsnis: Kodas

Kodas
Kodas

Pirma, jums reikės „Arduino IDE“, kurį rasite čia:

Taip pat turėsite įsitikinti, kad turite keletą „Arduino“bibliotekų:

„Adafruit NeoPixel“:

u8g2:

„Adafruit RTCLib“:

„Adafruit SleepyDog“(neprivaloma):

Pastaba apie tinkamos „Arduino“lentos pasirinkimą. Iš pradžių šį projektą pradėjau su „Arduino Nano“, nes JK jie yra labai pigūs-apie 3–4 svarus sterlingų Jungtinėje Karalystėje arba vos 1,50 svaro sterlingų, jei perkate iš „AliExpress“(tačiau nesijaudinkite dėl 30–50 dienų laukimo).). „Nano“problema yra ta, kad jo SRAM yra 2 KB (2048 baitai). Šis eskizas naudoja 1728 baitus dinaminės atminties su visuotiniais kintamaisiais. Tai yra 84% SRAM, paliekant tik 320 baitų vietos kintamiesiems. To nepakako, todėl „Nano“užrakino ir užšaldė.

„Pro Micro“(„Leonardo“) turi 2,5K SRAM (2560 baitų), o tai reiškia, kad vietiniams kintamiesiems yra laisvi 694 baitai (eskizas naudoja 72% „Pro Micro“SRAM). Iki šiol tai pasirodė visiškai tinkama ir stabili mano naudojimui. Jei ketinate naudoti daug kištukinių kištukų, galbūt norėsite naudoti kažką su daugiau SRAM.

Kalbant apie „Flash“saugyklą, šis eskizas naudoja 88% (25252 baitus) 30 tūkst.

Per daugelį metų parašiau šimtus „Arduino“eskizų, tačiau esu mėgėjas - todėl atminkite, kad kai kurios kodo dalys gali būti neveiksmingos arba gali būti „geresnių būdų tai padaryti“. Tai sakant, man tai puikiai tinka ir aš tuo džiaugiuosi. Naudojau bibliotekas, kurios TURĖTŲ veikti daugelyje plokščių, nesvarbu, ar tai būtų AVR (paprasčiausias „Arduino“), ar SAMD21 (turiu keletą „Cortex M0“įrenginių)

Norėjau parodyti ir kitokią grafiką pagal naudojamą lizdą. Jei norite sukurti savo, tai puikus paprastas vadovas, kaip sukurti C masyvą vaizdams, naudojamiems su šiuo ekranu:

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

Grafikai būtinai naudokite PROGMEM. Pvz.:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Pagal dizainą ekranas „baigsis skirtuoju laiku“po 5 sekundžių ir vėl bus rodomas laikas.

Daugumą nustatymų rasite nustatymuose. H, konkrečiai, susijusių kodų kištukų pavadinimas yra užkoduotas čia:

#define PLUG1 "RAKTAI"

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

Kintamųjų viduje taip pat yra keletas svarbių kodo dalių.h

plūdė R1 = 96700,0;

plūdė R2 = 96300,0; plūdė R3 = 96500,0; plūdė R4 = 96300,0;

Tai yra žinomos kiekvieno iš 4 rezistorių varžos vertės omais.

R1 prijungtas prie A0, R2 - A1, R3 - A2 ir R4 - A3.

Patartina išmatuoti savo 100 000 rezistorių naudojant multimetrą ir naudoti tikslią rezistoriaus vertę. Išmatuokite rezistorių, kai viskas bus prijungta. (Bet neįjungtas).

Rinkdamiesi lizdų rezistorius, įsitikinkite, kad tarp jų yra geras omų tarpas, o juos koduojant, nustatykite sau mažesnį ir aukštesnį diapazoną nei pasirinktas rezistorius. Štai ką naudojau savo kode:

plūdė P1_MIN = 4000,0, P1_MAX = 7000,0; // 5,6 tūkst

plūdė P2_MIN = 8000,0, P2_MAX = 12000,0; // 10K plūdė P3_MIN = 20000,0, P3_MAX = 24000,0; // 22K plūdė P4_MIN = 36000,0, P4_MAX = 42000,0; // 39 tūkst

Taip yra dėl analoginio rodmens ir nedidelių įtampos svyravimų ir pan

Taigi, kas atsitiks, jei aptiktas pasipriešinimas yra nuo 4000 omų iki 7000 omų, manome, kad naudojote 5,6 k rezistorių, todėl kodas matys tai kaip „Jack Plug 1“. Jei išmatuota varža yra tarp 8000 omų ir 12000 omų, daroma prielaida, kad tai 10k rezistorius ir yra „Jack Plug 2“ir pan.

Jei jums reikia atlikti derinimą (nepalikite be komentarų „gamyboje“, nes nuoseklus derinimas sunaudoja brangųjį RAM), tiesiog pašalinkite reikiamas eilutes „Nustatymų“viršuje. H

//#define SERIAL_DEBUG

//#define WAIT_FOR_SERIAL

Norėdami atšaukti komentarą, tiesiog pašalinkite //…. norėdami pakomentuoti eilutę, iš naujo pridėkite // prie eilutės priekio.

SERIAL_DEBUG įgalina nuoseklų derinimą ir naudoti tokius dalykus kaip (pvz.)

Serial.println (F („labas pasaulis“));

WAIT_FOR_SERIAL yra papildomas veiksmas, tai reiškia, kad kol neatidarysite serijinio monitoriaus, kodas nebus tęsiamas. Tai padeda užtikrinti, kad nepraleisite svarbių serijinių pranešimų. - NIEKADA NEPALIKITE ŠIO ĮGALIOJOTO

Jei paliksite įjungtą „WAIT_FOR_SERIAL“, negalėsite naudoti rakto laikiklio jokioje „realaus pasaulio“aplinkoje, nes jis bus įstrigęs laukdamas „Arduino IDE Serial“monitoriaus, kad galėtų tęstis į pagrindinę eskizo kilpą. Baigę derinimą, būtinai dar kartą atšaukite šios eilutės komentarą ir iš naujo įkelkite eskizą gamybai/užbaigimui.

Kai naudoju SERIAL_DEBUG parinktį, mano kodas yra toks:

#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]); už (int i = 0; i <len; i ++) {Serial.print (F ("SOCKET_1234_HAS_PLUGTYPE_X [")); Serijinis atspaudas (i); Serijos.spaudas (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Serial.println (); if (INSERTED [socket]) {Serial.print (F ("Plug in socket")); Serial.print (lizdas+1); Serial.print (F ("turi rezidenciją:")); Serial.println (atsparumas); } #endif

Paskutinė „Serial.print“eilutė parodys, koks yra paskutinio įdėto lizdo atsparumas, omais. Taigi šį eskizą taip pat galite naudoti kaip ommetrą, kad patikrintumėte lizdo kištuko atsparumą.

6 žingsnis: pastabos

Manau, kad viską aprašiau, bet prašau pakomentuoti ir aš padarysiu viską, ką galėsiu, kad galėčiau perskaityti ir atsakyti:)

Atsiprašau už šiek tiek prastą vaizdo įrašą - neturiu trikojo, perkodavimo sąrankos ar taip sakant tinkamos darbo vietos, todėl tai buvo nufilmuota (blogai) laikant telefoną vienoje rankoje ir bandant jį demonstruoti kita.

Ačiū, kad perskaitėte.

Rekomenduojamas: