Isi kandungan:
- Langkah 1: Bahagian & Alat
- Langkah 2: 3D Mencetak Sarung
- Langkah 3: Menggabungkan Semuanya + Skematik
- Langkah 4: Palamnya
- Langkah 5: Kod
- Langkah 6: Catatan
- Langkah 7: Changelog
Video: Arduino Guitar Jack Pemegang Kunci Dengan Pengiktirafan Jack & OLED: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Pengenalan:
Petunjuk ini akan memperincikan pembangunan pemegang kunci pemalam Guitar Jack berasaskan Arduino saya
Ini adalah arahan pertama saya, jadi tolong ikuti saya kerana saya mungkin membuat perubahan / kemas kini
Langkah 1: Bahagian & Alat
Sebilangan besar bahagian yang saya beli dari Amazon.co.uk atau eBay, ada yang sudah saya baca - Berikut adalah senarai perkara yang anda perlukan.
Pautan Amazon adalah semua pautan Gabungan, anda mungkin dapat mencari yang lebih murah di tempat lain - Saya banyak menggunakan Amazon Prime, jadi Amazon kebetulan menjadi tempat saya pergi.
Saya mahu mengekalkan binaan ini dengan kos rendah dan mesra bajet. Anda boleh menggunakan skrin TFT yang lebih besar seperti yang anda mahukan, serta Arduino yang lain. Jangan gunakan NANO, kerana ia akan rosak kerana penggunaan memori yang tinggi. Kod menggunakan sekitar 72% RAM Pro Micro dan stabil, tetapi dari pengujian, NANO akan hancur dan membeku.
(Maklumat lebih terperinci dalam langkah Kod.)
BAHAGIAN
1x Arduino Pro Micro -
OLED 1x 0,96 "dengan Paparan Kuning & Biru -
4x WS2812 'Pixel' -
1x DS3231 RTC -
Jack Mono 4x 1/4 (Atau seberapa banyak yang anda mahukan) - Amazon (Emas) atau Amazon (Perak) atau eBay.co.uk
Pek Resistor Campuran 1x -
Jacket 4x 1/4 -
1x Kabel Sambungan Kabel USB Mikro -
Skru 4x M3
ALAT & BAHAN
- Soldering Iron (Inilah yang saya beli - TS100 - kerana ia dilengkapi dengan petua tambahan
- Pateri
- Hot Glue Gun (https://amzn.to/2UTd9PN)
- Kawat (https://amzn.to/2VK2ILU)
- Pemotong / pelucut wayar (https://amzn.to/2KzqUzp)
- Perkhidmatan Pencetak 3D atau Percetakan 3D
PILIHAN - Item ini adalah pilihan, bergantung pada bagaimana anda memilih untuk menghubungkan semuanya
- Papan kenyataan / Papan Keranjang (https://amzn.to/2KzMFPE)
- Penyambung Terminal Skru (2 Tiang | 3 Tiang | 4 Tiang)
- Pengepala PCB (https://amzn.to/2X7RjWf)
Langkah 2: 3D Mencetak Sarung
Saya mencetak tambang di Creality CR-10S saya, menggunakan Black PLA + (https://amzn.to/2X2SDtE)
Saya mencetak pada ketinggian 0.2 lapisan, dengan 25% pengisian.
Langkah 3: Menggabungkan Semuanya + Skematik
Cara anda memilih untuk menyambungkan Arduino sepenuhnya bergantung pada anda - saya secara peribadi memilih untuk menjadikan diri saya sebagai "perisai". Untuk membuat perisai, saya telah memasangkan header wanita ke papan kenyataan agar sesuai dengan Pro Micro, saya kemudian menambah rel + 5v dan GND, di hujung yang berlawanan. Saya telah menggunakan wayar jumper untuk menyambungkan + 5v ke 'rel' 5v saya sekarang, dan melakukan perkara yang sama untuk GND. Saya kemudian menambah perintang 4x 100k saya, satu hujung disambungkan ke + 5v untuk kesemuanya, dan kemudian sisi lain masing-masing menghubungkan ke A0, A1, A2 & A3. Saya kemudian menambah terminal skru ke pin analog A0, A1, A2 & A3 dan juga Pin 2 (SDA), 3 (SCL) & 4
Ukur pendawaian anda dan potong dengan panjang yang sesuai. Saya mulakan dengan LED WS2812 Pixel pertama - LED WS2812 PERTAMA menyambung ke + 5v dari Arduino, GND dari Arduino, dan DIN menyambung ke Pin 4. Selepas ini, 3 baki yang lain dirantai bersama, merantai semua 5v> 5v, GND> pin GND dan DOUT dari satu Pixel, menghubungkan ke DIN yang seterusnya. Setelah disolder, tekan perlahan-lahan ke lubang persegi di bahagian atas, dan tempelkan panas di tempatnya dan juga untuk melindungi bahagian belakang dari sebarang sambungan atau seluar pendek yang tidak disengajakan.
Selepas LED, saya kemudian memasukkan Guitar Jack Sockets. Satu pin masing-masing menghubungkan ke GND, dan kemudian pin 2 masing-masing menghubungkan ke A0, A1, A2 & A3 dengan sewajarnya. Jadi itu Socket 1, ke A0, Socket 2 hingga A1, Socket 3 hingga A2, dan Socket 4 hingga A3.
Seterusnya saya menyolder 4 wayar ke sambungan OLED, dan mengurangkan lebihan solder sebanyak mungkin. Anda ingin memasang kabel anda dari bahagian belakang skrin, jadi anda menyolder ke bahagian depan skrin.
Perhatikan pin! Sebilangan OLED mempunyai GND di luar, kemudian VCC, beberapa mempunyai VCC di luar, dan kemudian GND
Setelah disolder dan anda telah memotong atau melekatkan sambungan solder sebanyak mungkin, tekan perlahan skrin ke lokasi itu. Reka bentuknya agak ketat, tetapi ketahuilah bahawa toleransi cetakan yang berbeza boleh mempengaruhi ini dan oleh itu anda mungkin perlu melakukan beberapa proses pasca pemprosesan kecil agar sesuai. Setelah di tempat, letakkan sedikit gam panas di setiap 4 sudut untuk menahannya di tempat.
Sambungkan semuanya agar sepadan dengan Skema dan gambar, dan setelah senang, anda kemudian boleh melekatkan Jam Pro Micro dan RTC juga di tempatnya, dan kemudian sambungkan sambungan USB ke Pro Micro.
Saya menggunakan sambungan USB mikro sehingga a) USB dapat digunakan untuk memberi tenaga, tetapi lebih-lebih lagi, b) sehingga dapat memprogramkan semula Pro Micro jika diperlukan tanpa melepaskan semuanya
Setelah senang, pasangkan sarung bersama-sama menggunakan 4 skru
Langkah 4: Palamnya
Cara kerjanya, adalah, untuk semua maksud dan tujuan, sebahagian reka bentuk berfungsi sebagai "ohmmeter". Ohmmeter adalah alat untuk mengukur rintangan elektrik. Kebanyakan Multimeter mempunyai fungsi di mana anda memilih skala dan kemudian mengukur perintang untuk mencari nilainya. Prinsip kerja adalah anda menyambungkan perintang KNOWN ke + ve, yang kemudian disambungkan ke perintang UNKNOWN, yang menghubungkan ke -ve. Sambungan antara 2 perintang menyambung ke pin analog Arduino sehingga dapat membaca voltan dan mengira rintangan.
Ia berfungsi seperti pembahagi voltan dan mengira rintangan perintang yang tidak diketahui.
Sebagai rangkaian pembahagi voltan perintang R1 dan R2, Vout = Vin * R2 / (R1 + R2) - Kami menggunakan 100k untuk perintang (R1) kami yang diketahui. Ini memberi kita "penurunan voltan"
Dari ini, kita sekarang dapat menyelesaikan rintangan perintang (R2) yang tidak diketahui, R2 = Vout * R1 / (Vin - Vout) - di mana R1 adalah perintang 100k (100, 000 ohm) kami
Dengan menggunakan perintang yang berbeza di setiap soket palam yang ingin anda gunakan, anda kemudian dapat menyesuaikan kodnya bergantung pada bicu yang digunakan.
Saya menggunakan 4 palam bicu. Saya memilih untuk menggunakan:
Perintang Terkenal (x4) - 100k
Palam Jack 1 - 5.6k
Palam Jack 2 - 10k
Palam Jack 3 - 22k
Palam Jack 4 - 39k
Anda tentu saja boleh mengembangkannya, dan kodkan seberapa banyak yang anda mahukan.
Langkah 5: Kod
Pertama, anda memerlukan Arduino IDE, tersedia dari sini:
Anda juga perlu memastikan anda mempunyai beberapa Perpustakaan Arduino:
Adafruit NeoPixel:
u8g2:
Adafruit RTCLib:
Adafruit SleepyDog (Pilihan):
Catatan mengenai memilih papan "Arduino" yang betul. Pada mulanya saya memulakan projek ini dengan Arduino Nano, kerana harganya sangat murah dengan harga sekitar £ 3- £ 4 di UK, atau hanya £ 1.50 jika anda membeli dari AliExpress (tetapi tidak keberatan dengan penantian 30-50 hari). Masalah dengan Nano ialah SRAM adalah 2 KB (2048 bait). Lakaran ini menggunakan 1728 byte memori dinamik dengan Pembolehubah Global. Itu adalah 84% SRAM, membiarkan hanya 320 bait percuma untuk pemboleh ubah tempatan. Ini tidak mencukupi dan akan menyebabkan Nano terkunci dan membeku.
Pro Micro (Leonardo) mempunyai 2.5K SRAM (2560 byte), yang bermaksud ada 694 byte percuma untuk pemboleh ubah tempatan (Sketsa menggunakan 72% SRAM Pro Micro). Setakat ini, ini terbukti cukup dan stabil untuk penggunaan saya. Sekiranya anda berhasrat menggunakan banyak palam bicu, maka anda boleh mempertimbangkan untuk menggunakan sesuatu dengan lebih banyak SRAM.
Sejauh storan Flash, sketsa ini menggunakan 88% (25252 bait) dari 30k (ATMega328p [Nano] dan ATMega32u4 [Pro Micro] kedua-duanya mempunyai 32k, tetapi 2k disediakan untuk pemuat but)
Saya telah menulis beratus-ratus sketsa Arduino selama bertahun-tahun, tetapi saya peminatnya - jadi ingatlah bahawa beberapa bahagian kod mungkin tidak cekap atau mungkin ada senario "cara yang lebih baik untuk melakukan ini". Oleh itu, ia berfungsi dengan sempurna untuk saya dan saya gembira dengannya. Saya menggunakan perpustakaan yang HARUS berfungsi di kebanyakan papan, sama ada AVR (Arduino paling asas) atau SAMD21 (Saya mempunyai segelintir peranti Cortex M0)
Saya mahu memaparkan grafik yang berbeza berdasarkan bicu yang digunakan juga. Sekiranya anda ingin membuat sendiri, ini adalah panduan ringkas yang bernas tentang cara membuat C Array agar gambar dapat digunakan dengan paparan ini:
sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/
Pastikan menggunakan PROGMEM untuk grafik anda. Cth:
stat statik tidak ditandatangani char YOUR_IMAGE_NAME PROGMEM = {}
Dengan reka bentuk, layar akan "timeout" setelah 5 saat dan kembali ke paparan waktu.
Sebilangan besar Tetapan boleh didapati di Tetapan.h, secara khusus, nama palam bicu yang berkaitan dikodkan di sini:
#tentukan PLUG1 "KUNCI"
#define PLUG2 "P2" #define PLUG3 "P3" #define PLUG4 "P4" #define GENERIK "NA"
Terdapat juga beberapa bahagian penting kod di dalam Variables.h
apungan R1 = 96700.0;
apungan R2 = 96300.0; apungan R3 = 96500.0; apungan R4 = 96300.0;
Ini adalah nilai ketahanan yang TAHU, dalam ohm, bagi setiap 4 perintang.
R1 disambungkan ke A0, R2 ke A1, R3 ke A2, dan R4 ke A3.
Sebaiknya ukur perintang 100k anda menggunakan multimeter dan gunakan nilai perintang yang tepat. Lakukan pengukuran perintang setelah semuanya tersambung. (Tetapi tidak dihidupkan).
Semasa memilih perintang untuk palam bicu anda, pastikan terdapat jurang ohm yang baik di antara mereka, dan semasa mengkodkannya, berikan julat yang bagus lebih rendah dan lebih tinggi daripada perintang yang anda pilih. Inilah yang saya gunakan dalam kod saya:
terapung P1_MIN = 4000.0, P1_MAX = 7000.0; // 5.6K
terapung P2_MIN = 8000.0, P2_MAX = 12000.0; // apungan 10K P3_MIN = 20000.0, P3_MAX = 24000.0; // 22K apungan P4_MIN = 36000.0, P4_MAX = 42000.0; // 39K
Sebabnya adalah untuk mengambil kira bacaan analog dan turun naik voltan kecil dll
Jadi apa yang berlaku adalah, jika rintangan yang dikesan antara 4000 ohm dan 7000 ohm, kami menganggap anda telah menggunakan perintang 5.6k dan dengan demikian kod akan melihatnya sebagai Jack Plug 1. Sekiranya rintangan yang diukur adalah antara 8000 ohm dan 12000 ohm, anggapannya ialah perintang 10k dan Jack Plug 2 dan seterusnya.
Sekiranya anda perlu melakukan penyahpepijatan (Jangan tinggalkan 'produksi' tanpa kompromi kerana penyahpepijatan bersiri menggunakan ram berharga), hanya melepaskan baris yang anda perlukan di bahagian atas Tetapan.h
// # tentukan SERIAL_DEBUG
// # tentukan WAIT_FOR_SERIAL
Untuk tidak berpuas hati, hapus //…. untuk mengulas garis keluar, tambahkan semula // ke bahagian depan baris.
SERIAL_DEBUG membolehkan penyahpepijatan bersiri dan penggunaan perkara seperti (contohnya)
Serial.println (F ("hello world"));
WAIT_FOR_SERIAL adalah langkah tambahan, ini bermaksud, sehingga anda membuka Serial Monitor, kodnya tidak akan diteruskan. Ini membantu memastikan anda tidak terlepas sebarang pesanan bersiri yang penting. - JANGAN PERNAH MENINGGALKAN INI
Sekiranya anda membiarkan WAIT_FOR_SERIAL diaktifkan, anda tidak akan dapat menggunakan pemegang kunci anda di mana-mana persekitaran "dunia nyata" kerana ia akan macet menunggu monitor Arduino IDE Serial sebelum dapat terus memasuki gelung utama lakaran. Setelah menyelesaikan proses debug, pastikan anda melepaskan baris ini lagi, dan muat naik semula lakaran anda untuk pengeluaran / penyelesaian.
Semasa menggunakan pilihan SERIAL_DEBUG, kod saya mengandungi yang berikut:
#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]); untuk (int i = 0; i <len; i ++) {Serial.print (F ("SOCKET_1234_HAS_PLUGTYPE_X [")); Cetakan bersiri (i); Serial.print (F ("] =")); Serial.println (SOCKET_1234_HAS_PLUGTYPE_X ); } Bersiri.println (); if (INSERTED [socket]) {Serial.print (F ("Pasangkan soket")); Serial.print (soket + 1); Serial.print (F ("mempunyai resitance:")); Serial.println (rintangan); } #endif
Garis Serial.print yang terakhir akan memberitahu anda apakah rintangan, dalam ohm, pada bicu yang terakhir dimasukkan. Oleh itu, anda juga boleh menggunakan lakaran ini sebagai jenis ohmeter untuk memeriksa ketahanan palam bicu.
Langkah 6: Catatan
Saya rasa saya telah membahas semuanya, tetapi sila beri komen dan saya akan berusaha sebaik mungkin untuk membaca dan membalasnya apabila saya dapat:)
Minta maaf atas video yang agak buruk - saya tidak mempunyai tripod, penyusunan semula pengkodan atau ruang kerja yang sesuai untuk bercakap, jadi ini difilmkan (teruk) memegang telefon di satu tangan dan cuba menunjuknya dengan yang lain.
Terima kasih untuk membaca.
Disyorkan:
Pengesanan, Latihan dan Pengiktirafan Wajah Opencv: 3 Langkah
Opencv Face Detection, Training and Recognition: OpenCV adalah pustaka penglihatan komputer sumber terbuka yang sangat popular untuk melakukan tugas pemprosesan gambar asas seperti pengaburan, pencampuran gambar, peningkatan gambar serta kualiti video, ambang dll. Selain pemprosesan gambar, ia membuktikan
Pengiktirafan Bintang Menggunakan Penglihatan Komputer (OpenCV): 11 Langkah (dengan Gambar)
Pengiktirafan Bintang Menggunakan Penglihatan Komputer (OpenCV): Instruksional ini akan menerangkan kepada anda bagaimana membuat program penglihatan komputer untuk mengenal pasti corak bintang dalam gambar secara automatik. Kaedah ini menggunakan perpustakaan OpenCV (Open-Source Computer Vision) untuk membuat satu set lata HAAR terlatih yang dapat
Sensor Pengiktirafan Gerakan DF Hari Baru: 5 Langkah
Sensor Pengiktirafan Gerakan DF Hari Baru: Beberapa hari yang lalu, saya mendapat sensor pengenalan isyarat, seperti yang ditunjukkan dalam gambar. Menggunakannya selama beberapa hari, saya cukup yakin bahawa Gravity: Gesture & Touch Sensor adalah karya klasik! Pengiktirafan Gerak isyarat, yang selalu dilengkapi dengan sains, hebat
Kunci / Buka Kunci PC Windows Menggunakan RFID .: 7 Langkah (dengan Gambar)
Kunci / Buka Kunci PC Windows Menggunakan RFID: Hai! Berapa kerap anda merasa letih untuk menaip kata laluan untuk membuka kunci komputer / komputer riba anda setiap kali ia terkunci? Saya terbiasa menguncinya beberapa kali, setiap hari, dan tidak ada yang lebih menjengkelkan daripada menaip kata laluan / pin over dan ove
Pemegang Pemacu Kilat Pemacu Jempol USB-MEMBUAT PEMEGANG BELTCLIP: 5 Langkah
Pemegang Pemacu Kilat Pemacu Jempol USB-MEMBUAT PEMEGANG BELTCLIP: Bosan mempunyai pemacu ibu jari Usb di leher anda sepanjang masa? Jadilah Bergaya dengan membuat PEMEGANG BELTCLIP dari pemantik rokok sukan