Mục lục:

Giá đỡ phím giắc cắm ghi-ta Arduino với nhận dạng giắc cắm & OLED: 7 bước
Giá đỡ phím giắc cắm ghi-ta Arduino với nhận dạng giắc cắm & OLED: 7 bước

Video: Giá đỡ phím giắc cắm ghi-ta Arduino với nhận dạng giắc cắm & OLED: 7 bước

Video: Giá đỡ phím giắc cắm ghi-ta Arduino với nhận dạng giắc cắm & OLED: 7 bước
Video: [#Ntk_Lab] || Hướng dẫn làm trạm hàn Hakko 907 dùng Arduino Hakko 907 soldering station with arduino 2024, Tháng bảy
Anonim
Image
Image
Giá đỡ phím giắc cắm ghi-ta Arduino có nhận dạng giắc cắm & OLED
Giá đỡ phím giắc cắm ghi-ta Arduino có nhận dạng giắc cắm & OLED

Giới thiệu:

Tài liệu hướng dẫn này sẽ trình bày chi tiết về cách xây dựng giá đỡ khóa plugin Guitar Jack dựa trên Arduino của tôi

Đây là lần hướng dẫn đầu tiên của tôi, vì vậy hãy chịu khó vì tôi có thể thực hiện các thay đổi / cập nhật trong quá trình này

Bước 1: Bộ phận & Công cụ

Bộ phận & Công cụ
Bộ phận & Công cụ
Bộ phận & Công cụ
Bộ phận & Công cụ
Bộ phận & Công cụ
Bộ phận & Công cụ

Hầu hết các bộ phận tôi đã mua từ Amazon.co.uk hoặc eBay, một số bộ phận tôi đã mua sẵn - Đây là danh sách những thứ bạn sẽ cần.

Các liên kết Amazon đều là liên kết Liên kết, bạn có thể tìm thấy giá rẻ hơn ở những nơi khác - Tôi sử dụng Amazon Prime rất nhiều, vì vậy Amazon tình cờ trở thành mục tiêu của tôi.

Tôi muốn giữ cho bản dựng này khá rẻ và thân thiện với ngân sách. Bạn có thể sử dụng màn hình TFT lớn hơn nếu bạn muốn, cũng như một Arduino khác. Không sử dụng NANO, vì nó sẽ bị hỏng do sử dụng nhiều bộ nhớ. Mã sử dụng khoảng 72% RAM của Pro Micro và ổn định, nhưng từ thử nghiệm, NANO sẽ gặp sự cố và đóng băng.

(Chi tiết hơn trong bước Mã.)

CÁC BỘ PHẬN

1x Arduino Pro Micro -

OLED 1x 0,96 "với màn hình màu vàng & xanh lam -

4x WS2812 'pixel' -

1x DS3231 RTC -

4x 1/4 Mono Jack (Hoặc bao nhiêu tùy thích) - Amazon (Vàng) hoặc Amazon (Bạc) hoặc eBay.co.uk

1x Gói điện trở hỗn hợp -

Giắc cắm ghi-ta 4x 1/4 -

1x Cáp mở rộng Micro USB -

Vít 4x M3

DỤNG CỤ & VẬT LIỆU

- Sắt hàn (Đây là cái tôi đã mua - TS100 - vì nó đi kèm với các mẹo bổ sung

- Hàn

- Súng bắn keo nóng (https://amzn.to/2UTd9PN)

- Dây (https://amzn.to/2VK2ILU)

- Máy cắt dây / máy thoát y (https://amzn.to/2KzqUzp)

- Máy in 3D hoặc dịch vụ In 3D

TÙY CHỌN - Các mục này là tùy chọn, tùy thuộc vào cách bạn chọn để kết nối mọi thứ

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

- Đầu nối thiết bị đầu cuối trục vít (2 cực | 3 cực | 4 cực)

- Tiêu đề PCB (https://amzn.to/2X7RjWf)

Bước 2: In 3D vỏ máy

In 3D trường hợp
In 3D trường hợp
In 3D trường hợp
In 3D trường hợp
In 3D trường hợp
In 3D trường hợp
In 3D trường hợp
In 3D trường hợp

Tôi đã in của tôi trên Creality CR-10S của mình, sử dụng Black PLA + (https://amzn.to/2X2SDtE)

Tôi đã in ở độ cao 0,2 lớp, với 25% mực in.

Bước 3: Kết hợp tất cả lại với nhau + Sơ đồ

Đặt tất cả lại với nhau + Sơ đồ
Đặt tất cả lại với nhau + Sơ đồ
Đặt tất cả lại với nhau + Sơ đồ
Đặt tất cả lại với nhau + Sơ đồ
Đặt tất cả lại với nhau + Sơ đồ
Đặt tất cả lại với nhau + Sơ đồ
Đặt tất cả lại với nhau + Sơ đồ
Đặt tất cả lại với nhau + Sơ đồ

Bạn chọn cách kết nối Arduino của mình như thế nào là hoàn toàn tùy thuộc vào bạn - cá nhân tôi đã chọn làm cho mình một "lá chắn" để nói như vậy. Để làm tấm chắn, tôi đã hàn các tiêu đề nữ vào bảng mạch để phù hợp với Pro Micro, sau đó tôi thêm một thanh ray + 5v và GND, ở hai đầu đối diện. Tôi đã sử dụng dây jumper để kết nối + 5v với 'đường sắt' 5v hiện tại của tôi và đã làm tương tự cho GND. Sau đó, tôi đã thêm các điện trở 4x 100k của mình, một đầu được kết nối với + 5v cho tất cả chúng và sau đó đầu kia kết nối với A0, A1, A2 & A3 tương ứng. Sau đó, tôi đã thêm các đầu nối vít vào các chân analog A0, A1, A2 & A3 và cả các Chân 2 (SDA), 3 (SCL) & 4

Đo hệ thống dây điện của bạn và cắt theo độ dài thích hợp. Đầu tiên tôi bắt đầu với đèn LED WS2812 Pixel - LED WS2812 ĐẦU TIÊN kết nối với + 5v từ Arduino, GND từ Arduino và DIN kết nối với Pin 4. Sau đó, 3 đèn còn lại được liên kết với nhau, chuỗi tất cả các 5v> 5v, GND> GND chân và DOUT từ một Pixel, kết nối với DIN của Pixel tiếp theo. Sau khi được hàn, hãy ấn nhẹ những thứ này vào các lỗ vuông ở trên cùng và keo nóng vào đúng vị trí và cũng để bảo vệ mặt sau khỏi bất kỳ mối liên hệ ngẫu nhiên hoặc quần ngắn nào.

Sau khi các đèn LED, sau đó tôi vặn các ổ cắm Ghi-ta Jack cắm. Một chân của mỗi loại kết nối với GND, sau đó chân thứ 2 của mỗi chân kết nối với A0, A1, A2 & A3 tương ứng. Vì vậy, đó là Socket 1, A0, Socket 2 đến A1, Socket 3 đến A2 và Socket 4 đến A3.

Tiếp theo, tôi hàn 4 dây vào các kết nối OLED và cắt bớt phần hàn thừa càng nhiều càng tốt. Bạn muốn gắn dây từ phía sau màn hình, vì vậy bạn đang hàn vào mặt trước của màn hình.

Chú ý đến các ghim! Một số OLED có GND ở bên ngoài, sau đó là VCC, một số có VCC ở bên ngoài, và sau đó là GND

Sau khi hàn và bạn đã cắt hoặc làm phẳng kết nối hàn càng nhiều càng tốt, hãy ấn nhẹ màn hình vào vị trí của nó. Thiết kế hơi chật chội một chút, nhưng hãy lưu ý rằng dung sai in khác nhau có thể ảnh hưởng đến điều này và vì vậy bạn có thể phải thực hiện một số xử lý hậu kỳ nhỏ để làm cho nó vừa vặn. Khi đã vào vị trí, hãy đặt một ít keo nóng khắp 4 góc để giữ cố định.

Kết nối mọi thứ để khớp với Sơ đồ và hình ảnh, và sau khi hài lòng, bạn có thể dán keo nóng Pro Micro và Đồng hồ RTC vào vị trí, sau đó kết nối phần mở rộng USB với Pro Micro.

Tôi đã sử dụng tiện ích mở rộng micro USB để a) USB có thể được sử dụng để cung cấp năng lượng, nhưng còn hơn thế nữa, b) để có thể lập trình lại Pro Micro nếu cần mà không phải tách mọi thứ ra

Sau khi hài lòng, hãy vặn vỏ lại với nhau bằng 4 con vít

Bước 4: Phích cắm

Các phích cắm!
Các phích cắm!
Các phích cắm!
Các phích cắm!
Các phích cắm!
Các phích cắm!

Cách thức hoạt động của nó là, đối với tất cả các mục đích và mục đích, một phần của thiết kế hoạt động như một "ohmmeter". Ôm kế là một dụng cụ để đo điện trở. Hầu hết các Đồng hồ vạn năng đều có chức năng này, theo đó bạn chọn thang đo và sau đó đo điện trở để tìm giá trị của nó. Nguyên tắc hoạt động là bạn kết nối một điện trở BIẾT với + ve, sau đó được kết nối với điện trở KHÔNG BIẾT, kết nối với -ve. Phần nối giữa 2 điện trở kết nối với chân analog của Arduino để nó có thể đọc điện áp và tính toán điện trở.

Nó hoạt động giống như một bộ chia điện áp và tính toán điện trở của điện trở chưa biết.

Là một mạng phân áp gồm các điện trở R1 và R2, Vout = Vin * R2 / (R1 + R2) - Chúng tôi đang sử dụng 100k cho điện trở (R1) đã biết của chúng tôi. Điều này cho chúng ta biết "điện áp rơi"

Từ đó, bây giờ chúng ta có thể tính ra điện trở của điện trở (R2) chưa biết, R2 = Vout * R1 / (Vin - Vout) - trong đó R1 là điện trở 100k (100, 000 ohm) của chúng tôi

Bằng cách sử dụng một điện trở khác nhau trong mỗi giắc cắm mà bạn muốn sử dụng, sau đó bạn có thể điều chỉnh mã cho phù hợp tùy thuộc vào giắc cắm đang sử dụng.

Tôi đang sử dụng 4 giắc cắm. Tôi đã chọn sử dụng:

Điện trở đã biết (x4) - 100k

Jack cắm 1 - 5.6k

Jack cắm 2 - 10k

Jack cắm 3 - 22k

Jack cắm 4 - 39k

Tất nhiên, bạn có thể mở rộng điều này và viết mã bao nhiêu tùy ý.

Bước 5: Mã

Mật mã
Mật mã

Đầu tiên, bạn sẽ cần Arduino IDE, có sẵn tại đây:

Bạn cũng sẽ cần đảm bảo rằng bạn cũng có một vài Thư viện Arduino:

Adafruit NeoPixel:

u8g2:

Adafruit RTCLib:

Adafruit SleepyDog (Tùy chọn):

Một lưu ý về việc chọn đúng board "Arduino". Ban đầu, tôi bắt đầu dự án này với Arduino Nano, vì chúng siêu rẻ khoảng £ 3 - £ 4 ở Vương quốc Anh, hoặc ít nhất là £ 1,50 nếu bạn mua từ AliExpress (nhưng đừng bận tâm đến 30-50 ngày chờ đợi). Vấn đề với Nano là SRAM của nó là 2 KB (2048 byte). Bản phác thảo này sử dụng 1728 byte bộ nhớ động với Biến toàn cục. Đó là 84% SRAM, chỉ để lại 320 byte trống cho các biến cục bộ. Điều này không đủ và sẽ khiến Nano bị khóa và đóng băng.

Pro Micro (Leonardo) có 2,5K SRAM (2560 byte), có nghĩa là có 694 byte trống cho các biến cục bộ (Bản phác thảo sử dụng 72% SRAM của Pro Micro). Cho đến nay điều này đã được chứng minh là hoàn toàn phù hợp và ổn định cho việc sử dụng của tôi. Nếu bạn có ý định sử dụng nhiều giắc cắm, thì bạn có thể cân nhắc sử dụng thứ gì đó có nhiều SRAM hơn.

Liên quan đến bộ nhớ Flash, bản phác thảo này sử dụng 88% (25252 byte) của 30k (ATMega328p [Nano] và ATMega32u4 [Pro Micro] đều có 32k, nhưng 2k được dành riêng cho bộ nạp khởi động)

Tôi đã viết hàng trăm bản phác thảo Arduino trong nhiều năm, nhưng tôi là một người có sở thích - vì vậy hãy nhớ rằng một số phần của mã có thể không hiệu quả hoặc có thể có các tình huống "cách tốt hơn để thực hiện điều này". Điều đó đang được nói, nó hoạt động hoàn hảo cho tôi và tôi hài lòng với nó. Tôi đã sử dụng các thư viện NÊN hoạt động trên hầu hết các bảng, cho dù đó là AVR (hầu hết các Arduino cơ bản) hay SAMD21 (Tôi có một số thiết bị Cortex M0)

Tôi cũng muốn hiển thị một đồ họa khác dựa trên giắc cắm được sử dụng. Nếu bạn muốn tự tạo, đây là hướng dẫn đơn giản tuyệt vời về cách tạo Mảng C cho hình ảnh được sử dụng với màn hình này:

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

Đảm bảo sử dụng PROGMEM cho đồ họa của bạn. Ví dụ:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = {}

Theo thiết kế, màn hình sẽ "hết giờ" sau 5 giây và trở lại hiển thị thời gian.

Hầu hết các Cài đặt có thể được tìm thấy trong Cài đặt.h, đặc biệt, tên của các phích cắm giắc cắm liên quan được mã hóa ở đây:

#define PLUG1 "PHÍM"

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

Ngoài ra còn có một số phần mã quan trọng bên trong Variables.h

float R1 = 96700.0;

float R2 = 96300.0; float R3 = 96500.0; float R4 = 96300.0;

Đây là các giá trị điện trở BIẾT, tính bằng ohm, của mỗi điện trở trong số 4 điện trở.

R1 kết nối với A0, R2 với A1, R3 với A2 và R4 với A3.

Bạn nên đo điện trở 100k của bạn bằng đồng hồ vạn năng và sử dụng giá trị chính xác của điện trở. Thực hiện phép đo điện trở khi mọi thứ được kết nối với nhau. (Nhưng không bật nguồn).

Khi chọn điện trở cho phích cắm giắc cắm của bạn, hãy đảm bảo có khoảng cách ohm tốt giữa chúng và khi mã hóa chúng, hãy tạo cho mình một phạm vi thấp hơn và cao hơn điện trở bạn đã chọn. Đây là những gì tôi đã sử dụng trong mã của mình:

float P1_MIN = 4000.0, P1_MAX = 7000.0; // 5,6 nghìn

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

Lý do cho điều này là để giải thích cho việc đọc tương tự và các dao động điện áp nhỏ, v.v.

Vì vậy, điều gì xảy ra là, nếu điện trở được phát hiện là từ 4000 ohms đến 7000 ohms, chúng tôi cho rằng bạn đã sử dụng điện trở 5,6k và do đó mã sẽ thấy đây là Jack cắm 1. Nếu điện trở đo được là từ 8000 ohms và 12000 ohms, giả định rằng đó là một điện trở 10k và là Jack cắm 2, v.v.

Nếu bạn cần thực hiện một số gỡ lỗi (Đừng bỏ ghi chú trong 'sản xuất' vì gỡ lỗi nối tiếp sử dụng bộ nhớ RAM quý giá), chỉ cần bỏ ghi chú các dòng bạn yêu cầu ở đầu Cài đặt.h

// # xác định SERIAL_DEBUG

// # xác định WAIT_FOR_SERIAL

Để bỏ ghi chú, chỉ cần xóa //…. để chú thích dòng lùi ra ngoài, thêm lại // vào đầu dòng.

SERIAL_DEBUG cho phép gỡ lỗi nối tiếp và sử dụng những thứ như (ví dụ)

Serial.println (F ("xin chào thế giới"));

WAIT_FOR_SERIAL là một bước bổ sung, có nghĩa là, cho đến khi bạn mở Serial Monitor, mã sẽ không tiếp tục. Điều này giúp đảm bảo bạn không bỏ lỡ bất kỳ tin nhắn nối tiếp quan trọng nào. - KHÔNG BAO GIỜ ĐỂ LẠI ĐIỀU NÀY ĐƯỢC BẬT

Nếu bạn vẫn bật WAIT_FOR_SERIAL, bạn sẽ không thể sử dụng ngăn chứa chìa khóa của mình trong bất kỳ môi trường "thế giới thực" nào vì nó sẽ bị kẹt khi chờ màn hình Arduino IDE Serial trước khi nó có thể tiếp tục vào vòng lặp chính của bản phác thảo. Khi bạn đã hoàn thành việc gỡ lỗi, hãy đảm bảo rằng bạn bỏ ghi chú lại dòng này và tải lên lại bản phác thảo của bạn để sản xuất / hoàn thành.

Khi sử dụng tùy chọn SERIAL_DEBUG, mã của tôi chứa những điều sau:

#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 ("Cắm vào ổ cắm")); Serial.print (socket + 1); Serial.print (F ("co ten goi:")); Serial.println (kháng); } #endif

Dòng Serial.print cuối cùng sẽ cho bạn biết điện trở của giắc cắm cuối cùng được đưa vào là bao nhiêu. Vì vậy, bạn cũng có thể sử dụng bản phác thảo này như một loại ohmmeter để kiểm tra điện trở của phích cắm giắc cắm.

Bước 6: Ghi chú

Tôi nghĩ rằng tôi đã đề cập đến mọi thứ, nhưng hãy bình luận và tôi sẽ cố gắng hết sức để đọc và trả lời khi tôi có thể:)

Xin lỗi vì video hơi kém - tôi không có giá ba chân, thiết lập mã hóa hoặc không gian làm việc thích hợp để nói chuyện nên đoạn phim này đã được quay (thật tệ) khi cầm điện thoại bằng một tay và cố gắng demo bằng tay kia.

Cảm ơn vì đã đọc.

Đề xuất: