Sadržaj:

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

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

Video: Arduino držač ključeva za gitaru sa prepoznavanjem utičnice i OLED -om: 7 koraka
Video: It Became Unliveable! ~ Abandoned Home Of The Spenser's In The USA 2024, Juli
Anonim
Image
Image
Arduino držač ključeva za gitaru sa prepoznavanjem utičnice i OLED -om
Arduino držač ključeva za gitaru sa prepoznavanjem utičnice i OLED -om

Uvod:

Ovo uputstvo će detaljno opisati izradu mog držača za ključeve dodataka 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ć već razbacao - evo popisa onoga što će vam trebati.

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

Htio sam zadržati ovu gradnju prilično jeftinom i budžetskom. Mogli biste koristiti veći TFT ekran ako želite, kao i drugačiji 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 ekranom -

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 štampač ili usluga 3D štampanja

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

- 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 štampanje kućišta

3D štampanje kućišta
3D štampanje kućišta
3D štampanje kućišta
3D štampanje kućišta
3D štampanje kućišta
3D štampanje kućišta
3D štampanje kućišta
3D štampanje kućišta

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

Štampao sam na 0,2 sloja visine, sa 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 - ja sam lično odabrao da si napravim "štit" da tako kažem. Da bih napravio štit, 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 pikselom LED WS2812 - PRVA LED žarulja WS2812 spaja se na +5v iz Arduina, GND iz Arduina, a DIN se povezuje s kontaktom 4. Nakon toga, preostale 3 su lancem povezane, povezujući svih 5v> 5v, GND> GND pinovi i DOUT iz jednog piksela, povezuje se sa 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 ekrana, pa lemite na prednju stranu ekrana.

Obratite pažnju na igle! 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, lagano pritisnite ekran 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 uklopili. 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, a kad budete sretni, tada možete vruće zalijepiti Pro Micro i RTC sat na mjesto, a zatim spojiti USB nastavak na Pro Micro.

Koristio sam mikro USB nastavak 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

The Plugs!
The Plugs!
The Plugs!
The Plugs!
The Plugs!
The Plugs!

Način na koji ovo funkcionira 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 kojoj birate skalu, a zatim mjerite otpornik kako biste pronašli njegovu vrijednost. Glavni princip rada je da spojite ZNATI otpornik na +ve, koji se zatim poveže sa NEPOZNATIM otpornikom, koji se spaja na -ve. Spoj između 2 otpornika povezuje se s Arduino analognim pinom 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)

Korištenjem različitog otpornika u svakoj utičnici koju želite koristiti, tada možete prilagoditi kôd ovisno o utičnici koja se koristi.

Koristim 4 utičnice. Odlučio sam se za korištenje:

Poznati otpornik (x4) - 100k

Jack Plug 1 - 5.6k

Jack Plug 2 - 10k

Jack Plug 3 - 22k

Jack Plug 4 - 39k

Naravno, ovo možete proširiti i kodirati u koliko god želite.

Korak 5: Kôd

Kodeks
Kodeks

Prvo će vam trebati Arduino IDE, dostupan ovdje:

Također ćete se morati pobrinuti da imate i nekoliko Arduino biblioteka:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (nije obavezno):

Napomena o odabiru prave "Arduino" ploče. Prvobitno 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 sa Nano -om 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 mnogo utičnica, 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 tokom godina, ali sam hobist - pa imajte na umu da neki dijelovi koda mogu biti neučinkoviti ili možda postoje "bolji načini za to". Rečeno je da mi savršeno radi i zadovoljan sam s tim. Koristio sam biblioteke 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 osnovu korištenog priključka. 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, konkretno, naziv pridruženih utikača je kodiran ovdje:

#define PLUG1 "KEYS"

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

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

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 kada ih kodirate, dajte sebi lijep raspon niži i veći od vašeg otpornika. Evo šta 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 plutajući P3_MIN = 20000.0, P3_MAX = 24000.0; // 22K plovak P4_MIN = 36000.0, P4_MAX = 42000.0; // 39K

Razlog za to je uzeti u obzir analogno očitanje i manje fluktuacije 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 ovo vidjeti kao utikač priključka 1. Ako je izmjereni otpor između 8000 oma i 12000 ohma, pretpostavka je da je to 10k otpornik i da je Jack Plug 2 i tako dalje.

Ako trebate napraviti neke otklanjanje grešaka (Ne ostavljajte bez komentara u 'produkciji' jer serijsko ispravljanje grešaka koristi dragocjenu memoriju) jednostavno uklonite komentare iz redova koje trebate na vrhu Postavki. H

//#definirati SERIAL_DEBUG

//#definiraj WAIT_FOR_SERIAL

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

SERIAL_DEBUG omogućava serijsko otklanjanje greš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. Ovo pomaže da ne propustite važne serijske poruke. - OVO NIKADA NE OSTAVLJAJTE Omogućeno

Ako ostavite WAIT_FOR_SERIAL omogućenim, nećete moći koristiti 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 završite sa otklanjanjem grešaka, provjerite da li ponovo komentirate ovu liniju i ponovo otpremite 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 [")); 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 (socket+1); Serial.print (F ("ima otpornost na:")); Serial.println (otpor); } #endif

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: Napomene

Mislim da sam sve pokrio, ali ostavite komentar i potrudit ću se da pročitam i odgovorim kad budem mogao:)

Isprike zbog pomalo lošeg videa - nemam stativ, postavke za 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čuje se: