Sadržaj:

Arduino držač ključeva za gitaru s prepoznavanjem utičnice i OLED: 7 koraka
Arduino držač ključeva za gitaru s prepoznavanjem utičnice i OLED: 7 koraka

Video: Arduino držač ključeva za gitaru s prepoznavanjem utičnice i OLED: 7 koraka

Video: Arduino držač ključeva za gitaru s prepoznavanjem utičnice i OLED: 7 koraka
Video: CS50 2013 - Week 9 2024, Srpanj
Anonim
Image
Image
Arduino držač ključa za gitaru s prepoznavanjem utičnice i OLED -om
Arduino držač ključa za gitaru s prepoznavanjem utičnice i OLED -om

Uvod:

Ovo uputstvo će detaljno opisati izradu mog držača ključeva za dodatke sa gitarom zasnovanog na Arduinu

Ovo je moje prvo uputstvo, pa me podnesite jer ću usput možda unijeti promjene / nadogradnje

Korak 1: Dijelovi i alati

Dijelovi i alati
Dijelovi i alati
Dijelovi i alati
Dijelovi i alati
Dijelovi i alati
Dijelovi i alati

Većinu dijelova koje sam kupio na Amazon.co.uk ili eBay, neke sam već razbacao - evo popisa onoga što će vam trebati.

Amazonske veze su sve partnerske veze, možda ćete drugdje moći pronaći jeftinije - često koristim Amazon Prime, pa je Amazon slučajno bio moj posjet.

Htio sam zadržati ovu izgradnju prilično jeftinom i proračunskom. Mogli biste koristiti veći TFT zaslon ako želite, kao i drugi Arduino. Nemojte koristiti NANO jer će se srušiti zbog velike upotrebe memorije. Kod koristi oko 72% RAM -a Pro Micro -a i stabilan je, ali nakon testiranja NANO će se srušiti i zamrznuti.

(Više detalja u koraku Code.)

DIJELOVI

1x Arduino Pro Micro -

1x 0,96 OLED sa žuto -plavim zaslonom -

4x WS2812 'Pikseli' -

1x DS3231 RTC -

4x 1/4 mono utičnica (ili koliko god želite) - Amazon (zlato) ili Amazon (srebro) ili eBay.rs

1x paket mješovitih otpornika -

4x 1/4 utičnice za gitaru -

1x produžni kabel za mikro USB kabel -

4x M3 vijci

ALATI I MATERIJALI

- Lemilica (ovo je ono što sam kupio - TS100 - kako je stiglo s dodatnim savjetima

- Lemilo

- Pištolj za vruće ljepilo (https://amzn.to/2UTd9PN)

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

- Rezači/skidači žice (https://amzn.to/2KzqUzp)

- 3D pisač ili usluga 3D ispisa

NEOBVEZNO - Ove stavke su izborne, ovisno o tome kako ste odlučili sve spojiti

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

- Konektori s vijčanim stezaljkama (2 pola | 3 pola | 4 pola)

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

Korak 2: 3D ispis kućišta

3D ispis kućišta
3D ispis kućišta
3D ispis kućišta
3D ispis kućišta
3D ispis kućišta
3D ispis kućišta
3D ispis kućišta
3D ispis kućišta

Ja sam svoj ispisao na svom Creality CR-10S, koristeći Black PLA+ (https://amzn.to/2X2SDtE)

Tiskao sam na 0,2 sloja visine, s ispunom od 25%.

Korak 3: Spajanje svega + shema

Spajanje svega + shema
Spajanje svega + shema
Spajanje svega + shema
Spajanje svega + shema
Spajanje svega + shema
Spajanje svega + shema
Spajanje svega + shema
Spajanje svega + shema

Kako ćete odlučiti spojiti svoj Arduino, u potpunosti ovisi o vama - osobno sam se odlučio tako reći "štit". Za izradu štita lemio sam ženska zaglavlja na veroboard kako bi odgovarao Pro Micro -u, zatim sam dodao šinu od +5v i GND na suprotnim krajevima. Koristio sam kratkospojnik za spajanje +5v na moju sada 5v 'šinu', a isto sam učinio i za GND. Zatim sam dodao svoje 4x 100k otpornike, jedan kraj spojen na +5v za sve njih, a zatim se druga strana spaja na A0, A1, A2 i A3. Zatim sam dodao vijčane stezaljke analognim pinovima A0, A1, A2 i A3, a također i pinovima 2 (SDA), 3 (SCL) & 4

Izmjerite ožičenje i izrežite ga na odgovarajuće duljine. Prvo sam počeo s pikselnim LED diodama WS2812 - PRVI LED WS2812 spaja se na +5v iz Arduina, GND iz Arduina, a DIN se spaja na pin 4. Nakon toga, preostala 3 su lancem spojena, povezujući svih 5v> 5v, GND> GND pinovi i DOUT s jednog piksela, povezuje se s DIN sljedećeg. Nakon što ih zalemite, lagano ih utisnite u četvrtaste rupe na vrhu i vruće ljepilo na mjestu, a također i za zaštitu stražnje strane od slučajnih spojeva ili kratkih hlača.

Nakon LED dioda, zatim sam ušrafio utičnice za gitaru. Svaki pin svaki se spaja na GND, a zatim se drugi pin svakog povezuje na A0, A1, A2 i A3 u skladu s tim. Dakle, to je utičnica 1, na A0, utičnica 2 na A1, utičnica 3 na A2 i utičnica 4 na A3.

Zatim sam lemio 4 žice na OLED priključke i skinuo višak lemljenja što je više moguće. Želite spojiti svoje žice sa stražnje strane zaslona, pa lemite na prednji dio zaslona.

Obratite pažnju na pribadače! Neki OLED -ovi imaju GND izvana, zatim VCC, neki imaju VCC izvana, a zatim GND

Nakon što ste zalemljeni, a vi ste obrezali ili spljoštili priključak za lemljenje što je više moguće, nježno pritisnite zaslon na njegovo mjesto. Dizajn je malo usko uklopljen, ali imajte na umu da različite tolerancije ispisa mogu utjecati na to pa ćete možda morati obaviti manju naknadnu obradu kako biste ga prilagodili. Nakon što postavite na mjesto, stavite vruće ljepilo preko svakog od 4 ugla kako biste ga držali na mjestu.

Spojite sve kako bi odgovaralo shemi i slikama. Nakon što ste sretni, možete vruće zalijepiti Pro Micro i RTC sat na mjesto, a zatim priključiti USB produžetak na Pro Micro.

Koristio sam mikro USB proširenje tako da se a) USB može koristiti za napajanje, ali više, b) tako da je bilo moguće reprogramirati Pro Micro ako je potrebno, a da se sve ne razdvoji

Kad ste sretni, pričvrstite kućište pomoću 4 vijka

Korak 4: Utikači

Utikači!
Utikači!
Utikači!
Utikači!
Utikači!
Utikači!

Način na koji to radi je da, za sve namjere i svrhe, dio dizajna radi kao "ohmmetar". Ohmmetar je instrument za mjerenje električnog otpora. Većina multimetra ima ovu funkciju pri čemu odabirete ljestvicu, a zatim mjerite otpornik kako biste pronašli njegovu vrijednost. Glavni princip rada je da spojite ZNATI otpornik na +ve, koji je zatim spojen na NEPOZNATI otpornik, koji se spaja na -ve. Spoj između 2 otpornika povezuje se s analognim pinom Arduino tako da može očitati napon i izračunati otpor.

Radi kao djelitelj napona i izračunava otpor nepoznatog otpornika.

Kao mreža razdjelnika napona otpornika R1 i R2, Vout = Vin * R2 / (R1 + R2) - Koristimo 100 k za naš poznati (R1) otpornik. To nam daje "pad napona"

Iz ovoga sada možemo izračunati otpor nepoznatog (R2) otpornika, R2 = Vout * R1 / (Vin - Vout) - gdje je R1 naš otpornik od 100 k (100 000 ohma)

Koristeći različiti otpornik u svakoj utičnici koju želite koristiti, tada možete prilagoditi kôd ovisno o utičnici koja se koristi.

Koristim 4 utikača. Odlučio sam se za korištenje:

Poznati otpornik (x4) - 100k

Jack utikač 1 - 5.6k

Jack utikač 2 - 10k

Jack Plug 3 - 22k

Jack utikač 4 - 39k

Naravno, mogli biste ovo proširiti i kodirati u koliko god želite.

Korak 5: Kôd

Kod
Kod

Prvo će vam trebati Arduino IDE, dostupan ovdje:

Također ćete se morati pobrinuti da imate i nekoliko Arduino knjižnica:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (izborno):

Napomena o odabiru prave "Arduino" ploče. Prvotno sam započeo ovaj projekt s Arduino Nano, jer su super jeftini po cijeni od £ 3 u Velikoj Britaniji ili samo 1,50 £ ako kupujete na AliExpressu (ali nemojte imati ništa protiv čekanja od 30 do 50 dana)). Problem s Nanoom je što je njegov SRAM 2 KB (2048 bajtova). Ova skica koristi 1728 bajtova dinamičke memorije s globalnim varijablama. To je 84% SRAM -a, ostavljajući samo 320 bajtova slobodnim za lokalne varijable. To nije bilo dovoljno i uzrokovalo bi da se Nano zaključa i zamrzne.

Pro Micro (Leonardo) ima 2.5K SRAM (2560 bajtova), što znači da ima 694 bajta slobodnih za lokalne varijable (skica koristi 72% SRAM -a Pro Micro -a). Do sada se ovo pokazalo savršeno prikladnim i stabilnim za moju upotrebu. Ako namjeravate koristiti mnoge utičnice, razmislite o upotrebi nečega s više SRAM -a.

Što se tiče Flash pohrane, ova skica koristi 88% (25252 bajta) od 30k (ATMega328p [Nano] i ATMega32u4 [Pro Micro] imaju 32k, ali 2k je rezervirano za bootloader)

Napisao sam stotine Arduino skica tijekom godina, ali sam hobist - pa imajte na umu da neki dijelovi koda mogu biti neučinkoviti ili postoje "bolji načini za to" scenarije. Rečeno je da mi savršeno radi i zadovoljan sam s tim. Koristio sam knjižnice koje bi TREBALE raditi na većini ploča, bilo da se radi o AVR -u (najosnovnijem Arduinu) ili SAMD21 (imam pregršt Cortex M0 uređaja)

Htio sam prikazati drugačiju grafiku na temelju korištene utičnice. Ako želite napraviti vlastiti, ovo je briljantan jednostavan vodič o tome kako stvoriti C niz za slike koje će se koristiti s ovim zaslonom:

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

Za grafiku koristite PROGMEM. Npr:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Po dizajnu, zaslon će "isteći" nakon 5 sekundi i vratiti se na prikaz vremena.

Većina postavki može se pronaći u Settings.h, točnije ovdje su kodirani nazivi pridruženih utičnica:

#define PLUG1 "KLJUČOVI"

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

Unutar Variables.h postoje i neki važni dijelovi koda.h

plovak R1 = 96700,0;

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

Ovo su ZNANJE vrijednosti otpora, u ohmima, svakog od 4 otpornika.

R1 spojen na A0, R2 na A1, R3 na A2 i R4 na A3.

Preporučljivo je izmjeriti vaše 100k otpornike pomoću multimetra i upotrijebiti točnu vrijednost otpornika. Izmjerite otpornik nakon što je sve spojeno. (Ali nije uključeno).

Prilikom odabira otpornika za vaše utičnice, pobrinite se da postoji dobar ohmski razmak između njih, a kad ih kodirate, dajte sebi lijep raspon niži i veći od odabranog otpornika. Evo što sam koristio u svom kodu:

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

plovak P2_MIN = 8000.0, P2_MAX = 12000.0; // 10K plovak P3_MIN = 20000.0, P3_MAX = 24000.0; // 22K plovak P4_MIN = 36000.0, P4_MAX = 42000.0; // 39K

Razlog za to je uzimanje u obzir analognog očitanja i manjih fluktuacija napona itd

Dakle, događa se sljedeće: ako je otkriveni otpor između 4000 oma i 7000 oma, pretpostavljamo da ste koristili otpornik od 5,6 k, pa će kôd to vidjeti kao utikač za utičnicu 1. Ako je izmjereni otpor između 8000 ohma i 12000 ohma, pretpostavka je da se radi o 10k otporniku i da je Jack Plug 2 i tako dalje.

Ako trebate napraviti neke pogreške (Ne ostavljajte bez komentara u 'produkciji' jer serijsko otklanjanje pogrešaka koristi dragocjeni RAM) jednostavno uklonite komentare iz redaka koje trebate na vrhu Postavki.h

//#definirati SERIAL_DEBUG

//#definirati WAIT_FOR_SERIAL

Da biste komentirali, jednostavno uklonite //…. da biste komentirali redak, ponovno dodajte // na prednji dio retka.

SERIAL_DEBUG omogućuje serijsko otklanjanje pogrešaka i upotrebu stvari kao što su (na primjer)

Serial.println (F ("hello world"));

WAIT_FOR_SERIAL je dodatni korak, što znači da se kôd neće nastaviti sve dok ne otvorite serijski monitor. To pomaže da ne propustite važne serijske poruke. - OVO NIKADA NE OSTAVLJAJTE Omogućeno

Ako ostavite omogućen WAIT_FOR_SERIAL, nećete moći koristiti svoj držač ključa u bilo kojem okruženju "stvarnog svijeta" jer će zaglaviti čekajući Arduino IDE serijski monitor prije nego što nastavi u glavnu petlju skice. Nakon što ste dovršili ispravljanje pogrešaka, pobrinite se da ponovo uklonite komentar s ovog retka, te ponovo prenesite svoju skicu za produkciju/završetak.

Kada koristim opciju SERIAL_DEBUG, moj kôd sadrži sljedeće:

#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 [")); Serijski.ispis (i); Serijski.ispis (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Serial.println (); if (INSERTED [utičnica]) {Serial.print (F ("Uključite utičnicu")); Serijski.ispis (utičnica+1); Serial.print (F ("ima otpor:")); Serial.println (otpor); } #završi ako

Posljednja linija Serial.print reći će vam koliki je otpor, u ohmima, posljednje umetnute utičnice. Tako da ovu skicu možete koristiti i kao svojevrsni ohmmetar za provjeru otpora utikača.

Korak 6: Bilješke

Mislim da sam sve pokrio, ali komentirajte pa ću se potruditi pročitati i odgovoriti kad god mogu:)

Isprike zbog pomalo lošeg videa - nemam stativ, postavke za ponovno snimanje ili odgovarajući radni prostor, da tako kažem, pa je ovo snimljeno (loše) držeći telefon u jednoj ruci i pokušavajući ga demonstrirati drugom.

Hvala na čitanju.

Preporučeni: