Mục lục:

Những câu chuyện có thể nghe được để chèo thuyền: 11 bước
Những câu chuyện có thể nghe được để chèo thuyền: 11 bước

Video: Những câu chuyện có thể nghe được để chèo thuyền: 11 bước

Video: Những câu chuyện có thể nghe được để chèo thuyền: 11 bước
Video: 8 câu đố khó, nghĩ cả năm chưa ra đáp án 2024, Tháng bảy
Anonim
Image
Image
Phần cứng Telltale
Phần cứng Telltale

Telltales là những đoạn dây được sử dụng trong chèo thuyền để chỉ ra liệu có dòng chảy hỗn loạn hoặc cuộn ngang trên cánh buồm. Tuy nhiên, những mảnh sợi có màu sắc khác nhau được gắn vào mỗi bên của cánh buồm hoàn toàn là chỉ thị trực quan. Những câu chuyện bằng âm thanh này là một thiết bị hỗ trợ nhằm mục đích truyền đạt thông tin thị giác dưới dạng thính giác cho cả thủy thủ khiếm thị và khiếm thị, chẳng hạn như Pauline.

Thiết bị bao gồm một hệ thống đầu vào, đọc chuyển động của câu chuyện và một hệ thống đầu ra, phát ra một loạt tiếng bíp truyền tải thông tin về luồng không khí.

Cần có quyền truy cập vào thiết bị hàn và máy in 3D trong quá trình chế tạo thiết bị này.

Bước 1: Hóa đơn nguyên vật liệu

BOM với các liên kết và giá cả

Lưu ý: bạn sẽ cần 2 bộ tất cả những thứ sau.

Hệ thống đầu vào

  • Arduino Nano
  • Adafruit perma-proto một nửa kích thước breadboard PCB
  • Mô-đun thu phát không dây nRF24L01
  • Interrupter hình ảnh
  • Bảng phân tích ngắt chương trình ảnh Sparkfun
  • Bộ pin 9V tương thích Arduino
  • Pin 9V
  • Một số chiều dài của dây 22 Gauge
  • Sợi
  • Nam châm Neodymium
  • Epoxy

Hệ thống đầu ra

  • Arduino Nano
  • Adafruit perma-proto một nửa kích thước breadboard PCB
  • Mô-đun thu phát không dây nRF24L01
  • Bộ pin 9V tương thích Arduino
  • Chiết áp 1K Ohm
  • Điện trở 120 Ohm
  • Bóng bán dẫn 2N3904
  • Tụ điện 0,1 uF
  • Loa tương thích Arduino

Tệp GitHub

  • Bạn có thể tìm thấy tất cả mã và tệp STL cần thiết để xây dựng những câu chuyện này trong kho lưu trữ GitHub này.
  • Bạn sẽ cần hai bộ vỏ và một trong các vỏ loa.

Bước 2: Công cụ / Máy móc / Yêu cầu phần mềm

Để lập trình Arduino, bạn cần tải xuống Arduino IDE. Liên kết tải xuống có thể được tìm thấy ở đây.

Để lập trình mô-đun nRF24L01, bạn sẽ cần tải xuống thư viện của nó thông qua Arduino IDE. Công cụ> Quản lý thư viện…> cài đặt thư viện RF24

Để lắp ráp các linh kiện điện tử, cần có quyền truy cập vào các công cụ hàn cơ bản. Bơm khử ẩm cũng có thể hữu ích nhưng không cần thiết.

Để tạo khung kể chuyện và vỏ loa, bạn sẽ cần truy cập vào máy in 3D.

Bước 3: Phần cứng Telltale

Phần cứng Telltale
Phần cứng Telltale
Phần cứng Telltale
Phần cứng Telltale

Lắp ráp mạch điện theo các sơ đồ trên. Arduino Nano phải được căn chỉnh với phần trên của bảng điều khiển. Điều này cho phép bạn có quyền truy cập vào cổng USB ngay cả sau khi tất cả các thiết bị điện tử được gắn vào.

Để tránh làm chập các thiết bị điện tử, hãy đảm bảo cắt các dấu vết của protoboard trên các hàng mà nRF24 sẽ chiếm như thể hiện trong hình trên.

Nếu không, bạn sẽ cần cáp jumper để kết nối nRF24 với bảng điều khiển.

Kết nối điện trở, GND và dây 5V với bộ ngắt ảnh không được mô tả. Nối dây cho bộ ngắt ảnh như được chỉ ra trên bảng đột phá của nó. Một hình ảnh của bảng đột phá được bao gồm.

Các mạch cho câu chuyện Bên phải và Bên trái hoàn toàn giống nhau.

Bước 4: Phần mềm Telltale

Đây là mã cho câu chuyện đúng. Kết nối nano của Right Telltale với máy tính của bạn, mở Arduino IDE, sao chép và dán mã này vào đó rồi tải lên bảng.

/ ** Chương trình sử dụng photogate để kiểm tra câu chuyện

* / #include #include #include #include RF24 radio (9, 10); // Địa chỉ byte CE, CSN const [6] = "00010"; // --- chương trình liên kết --- // thời gian const int string_check_time = 1; const int flow_check_time = 30; const int base_delay = 5; const int flow_check_delay = 0; const int GATE_PIN = 6; const int GATE_PIN_2 = 7; const int max_when_testing = flow_check_time * 0.6; // đặt var ở trên dựa trên các thử nghiệm thực nghiệm của riêng bạn const int max_in_flow = min (max_when_testing, int (flow_check_time / string_check_time)); const int msg_max_val = 9; // const int string_thresh = 20; #define STRING_THRESH 0.2 // --- chương trình vars --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serial); // cho hệ thực vật // delay (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // để gỡ lỗi radio.begin (); radio.openWritingPipe (địa chỉ); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// đặt mã chính của bạn ở đây, để chạy lặp lại: if (num_loops% string_check_time == 0) {// kiểm tra trạng thái chuỗi check_string (); } if (num_loops == flow_check_time) {// kiểm tra luồng //Serial.println(num_string_seen); int flow_num = Exam_flow (); // gửi các giá trị send_out (flow_num); // đặt lại vars num_string_seen = 0; num_loops = 0; delay (flow_check_delay); } num_loops ++; delay (base_delay); } / * * Phương thức kiểm tra xem chuỗi có qua cổng không * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

if (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print(" Chuỗi đếm truyền: "); //Serial.println(num_string_seen); trở lại; } / * * Phương pháp phân tích phần thời gian nào của chuỗi bao phủ cổng * / int exam_flow () {doubleerc_seen = double (num_string_seen) / max_in_flow; Serial.print ("Phần trăm được bao phủ:"); printDouble (phần trăm_seen, 100); // chia tỷ lệ giá trị thành tỷ lệ giao tiếp int scaled_flow = int (erc_seen * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * precision; else frac = (int (val) - val) * precision; Serial.println (frac, DEC); }

Đây là mã cho câu chuyện bên trái. Thực hiện theo các bước tương tự như trên cho Câu chuyện bên trái. Như bạn có thể thấy, sự khác biệt duy nhất là địa chỉ mà câu chuyện gửi kết quả của nó.

/ ** Chương trình sử dụng photogate để kiểm tra câu chuyện

* / #include #include #include #include RF24 radio (9, 10); // Địa chỉ byte CE, CSN const [6] = "00001"; // --- chương trình liên kết --- // thời gian const int string_check_time = 1; const int flow_check_time = 30; const int base_delay = 5; const int flow_check_delay = 0; const int GATE_PIN = 6; const int GATE_PIN_2 = 7; const int max_when_testing = flow_check_time * 0.6; // đặt var ở trên dựa trên các thử nghiệm thực nghiệm của riêng bạn const int max_in_flow = min (max_when_testing, int (flow_check_time / string_check_time)); const int msg_max_val = 9; // const int string_thresh = 20; #define STRING_THRESH 0.2 // --- chương trình vars --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serial); // cho hệ thực vật // delay (500); num_string_seen = 0; num_loops = 0;

pinMode (GATE_PIN, INPUT);

pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // để gỡ lỗi radio.begin (); radio.openWritingPipe (địa chỉ); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// đặt mã chính của bạn ở đây, để chạy lặp lại: if (num_loops% string_check_time == 0) {// kiểm tra trạng thái chuỗi check_string (); } if (num_loops == flow_check_time) {// kiểm tra luồng //Serial.println(num_string_seen); int flow_num = Exam_flow (); // gửi các giá trị send_out (flow_num); // đặt lại vars num_string_seen = 0; num_loops = 0; delay (flow_check_delay); } num_loops ++; delay (base_delay); } / * * Phương thức kiểm tra xem chuỗi có qua cổng không * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

if (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print(" Chuỗi đếm truyền: "); //Serial.println(num_string_seen); trở lại; } / * * Phương pháp phân tích phần thời gian nào của chuỗi bao phủ cổng * / int exam_flow () {doubleerc_seen = double (num_string_seen) / max_in_flow; Serial.print ("Phần trăm được bao phủ:"); printDouble (phần trăm_seen, 100); // chia tỷ lệ giá trị thành tỷ lệ giao tiếp int scaled_flow = int (erc_seen * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * precision; else frac = (int (val) - val) * precision; Serial.println (frac, DEC); }

Bước 5: Telltale Assembly

Telltale Assembly
Telltale Assembly

Từng phần

  • Khung kể chuyện
  • Sợi
  • Mạch kể chuyện được xây dựng
  • Bộ pin
  • Băng điện
  • Epoxy hoặc keo

STL cho các thành phần kể chuyện in 3D

  • STL cho khung kể chuyện: trái, phải
  • STL cho hộp điện tử: trên cùng, dưới cùng

Hướng dẫn lắp ráp

  1. Đặt nam châm thanh vào các khe của khung kể chuyện in 3D. Đảm bảo các nam châm thẳng hàng đúng cách giữa khung bên phải và khung bên trái, sau đó sử dụng epoxy (hoặc keo) để cố định nam châm vào khung. Để epoxy (hoặc keo) đông kết hoàn toàn.
  2. Đặt bộ ngắt ảnh ở các khe trên cùng và dưới cùng ở phía sau khung. Cẩn thận sơn epoxy (hoặc keo) các bảng xen kẽ ảnh vào khung. Để epoxy (hoặc keo) đông kết hoàn toàn
  3. Cắt sợi mảnh ~ 7. Buộc một đầu của sợi vào vết khía của thanh dọc thứ nhất. Cắt một đoạn băng dính điện nhỏ và quấn băng dính điện trên phần sợi sẽ nằm trong vùng của bộ ngắt ảnh. Luồn sợi qua khung sao cho nó đi qua khe hở của cổng chuyển ảnh.
  4. Đặt nam châm thanh vào các khe của đáy hộp điện tử in 3D. Đảm bảo các nam châm xếp đúng hàng giữa hộp bên phải và hộp bên trái, sau đó sử dụng epoxy (hoặc keo) để cố định nam châm vào khung. Để epoxy (hoặc keo) đông kết hoàn toàn.
  5. Đặt mạch kể từ đã xây dựng vào hộp điện tử, căn chỉnh các thành phần khác nhau vào các khe cắm của chúng. Đóng hộp với mặt trên hộp điện tử in 3D. Epoxy (hoặc keo) bộ pin vào đầu hộp để công tắc tiếp xúc.

Bước 6: Phần cứng loa

Phần cứng loa
Phần cứng loa
Phần cứng loa
Phần cứng loa
Phần cứng loa
Phần cứng loa

Hệ thống đầu ra bao gồm hai mạch loa, một cho mỗi câu chuyện, được trang bị giao tiếp không dây và một núm điều chỉnh âm lượng. Đầu tiên, chuẩn bị các bảng mạch để sử dụng với các mô-đun nRF24L01 giống như chúng tôi đã làm cho các mạch kể chuyện bằng cách cắt các dây dẫn ngăn cách hai hàng chân nơi bảng sẽ được đặt.

Sau đó, lắp ráp mạch điện như trong sơ đồ trên trong khi tham khảo hình ảnh của các mạch điện đã hoàn thành.

Hướng dẫn hội đồng quản trị

Để xếp các bảng trong thùng loa, các thành phần chính phải được đặt ở những khu vực nhất định của bảng. Trong hướng dẫn sau, tôi sẽ đề cập đến hệ tọa độ được sử dụng để biểu thị các hàng và cột trên bảng protofruit Adafruit:

  1. Arduino Nano phải được đặt dựa vào cạnh trên của bảng ở trung tâm sao cho chân Vin được định vị tại G16. Điều này sẽ cho phép dễ dàng lập trình lại Arduino Nano sau khi mạch đã được lắp ráp.
  2. Bảng nRF24L01 phải được đặt ở góc dưới bên phải của bảng kéo dài tám vị trí từ C1 đến D5. Điều này sẽ khiến nRF24L01 bị treo khỏi protoboard để cho phép giao tiếp không dây tốt hơn.
  3. Bộ pin cho hệ thống loa cung cấp năng lượng cho cả hai bo mạch chủ, vì vậy hãy đảm bảo kết nối hai thanh ray / chân GND và chân Vin của Arduino Nano với nguồn điện.
  4. Đối với mạch 'dưới cùng', chiết áp phải được đặt trên đỉnh của bảng hướng ra ngoài sao cho các chân của nó được đặt ở các vị trí J2, J4 và J6

    1. J2 ↔ Đầu ra Arduino Nano từ chân số 3 (D3)
    2. Chân cơ sở J4 ↔ của bóng bán dẫn 2N3904
    3. J6 ↔ không được kết nối
  5. Đối với mạch 'trên cùng', chiết áp phải được đặt ở dưới cùng của bảng hướng ra ngoài sao cho các chân của nó được đặt ở các vị trí J9, J11 và J13

    1. J13 ↔ Đầu ra Arduino Nano từ chân số 3 (D3)
    2. Chân cơ sở J11 ↔ của bóng bán dẫn 2N3904
    3. J9 ↔ không được kết nối

Bước 7: Phần mềm loa

Đây là mã để người nói giao tiếp với Câu chuyện bên trái. Kết nối Arduino Nano trên bảng loa phía dưới với máy tính của bạn, mở Arduino IDE, sao chép và dán mã này vào đó rồi tải lên bảng.

#bao gồm

#include #include RF24 radio (7, 8); // CE, CSN // câu chuyện bên trái, bảng loa trên cùng địa chỉ byte const [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int loa = 3; const int delay_gain = 100; trạng thái int = 0; int cur_delay = 0; char đọc [2]; void setup () {pinMode (loa, OUTPUT); Serial.begin (115200); Serial.println ("Bắt đầu giao tiếp không dây…"); radio.begin (); radio.openReadingPipe (0, địa chỉ); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (read [0] - '0'); Serial.print ("Đã nhận:"); Serial.println (trạng thái); cur_delay = delay_gain * trạng thái; } if (cur_delay) {tone (loa, cao độ, độ_bão_hình); độ trễ (cur_delay + pitch_duration); Serial.println ("Bíp!"); }}

Đây là mã để người nói giao tiếp với câu chuyện phù hợp. Kết nối Arduino Nano trên bảng loa trên cùng với máy tính của bạn, mở Arduino IDE, sao chép và dán mã này vào đó rồi tải lên bảng.

#bao gồm

#include #include RF24 radio (7, 8); // CE, CSN // câu chuyện bên phải, bảng loa dưới cùng địa chỉ byte const [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int loa = 3; const int delay_gain = 100; trạng thái int = 0; int cur_delay = 0; char đọc [2]; void setup () {pinMode (loa, OUTPUT); Serial.begin (115200); Serial.println ("Bắt đầu giao tiếp không dây…"); radio.begin (); radio.openReadingPipe (0, địa chỉ); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (read [0] - '0'); Serial.print ("Đã nhận:"); Serial.println (trạng thái); cur_delay = delay_gain * trạng thái; } if (cur_delay) {tone (loa, cao độ, độ cao_ độ bão hòa); độ trễ (cur_delay + pitch_duration); Serial.println ("Bíp!"); }}

Bước 8: Lắp ráp loa

Từng phần

  • 2 mạch loa cấu tạo
  • 2 loa
  • 1 bộ pin

STL để in 3D

  • Đầu hộp
  • Đáy hộp

Hướng dẫn lắp ráp vật lý

  1. Cẩn thận đặt các mạch loa vào đáy hộp, bảng này chồng lên bảng mạch kia sao cho các nút âm lượng nằm cạnh nhau và luồn vào các lỗ. Các chip giao tiếp nên được để lộ ở mặt sau của hộp.
  2. Đặt các loa ở bên trái và bên phải của bảng mạch, đảm bảo các loa tương ứng với các mặt câu chuyện chính xác. Căn chỉnh loa vào các khe ở các cạnh của hộp.
  3. Luồn dây của bộ pin qua lỗ nhỏ ở phía sau hộp. Epoxy (hoặc keo) bộ pin vào mặt sau của hộp sao cho công tắc tiếp xúc.
  4. Đặt hộp in 3D lên trên đáy hộp để chứa mọi thứ.

Bước 9: Thiết lập / Gắn kết

Thiết lập / Gắn kết
Thiết lập / Gắn kết
  1. Bật tính năng kể chuyện bằng cách gạt công tắc trên bộ pin sang vị trí 'BẬT'. Làm tương tự đối với cụm loa để bật hệ thống đầu ra.
  2. Việc kết nối các câu chuyện nghe được dễ dàng nhất được thực hiện với hai người, nhưng có thể được thực hiện với một người. Để gắn trên một cần trục không có lông, các câu chuyện sẽ dễ dàng nhất được đưa vào trước khi treo buồm.
  3. Để đảm bảo khung kể chuyện được định hướng chính xác, hãy nhìn vào vết khía trên một trong các thanh dọc. Khi giữ khung thẳng đứng, phần khía phải hướng về phía trên. Mặt của khung với thanh đó cũng phải hướng về phía trước của thuyền.
  4. Đặt một trong những câu chuyện kể ở độ cao và vị trí mong muốn trên cánh buồm. Nó nên được đặt sao cho sợi ở đúng vị trí của nó nếu nó là một phần của một câu chuyện truyền thống.
  5. Khi bạn đã có một câu chuyện kể ở vị trí mong muốn. Đặt câu chuyện kể còn lại ở phía bên kia của cánh buồm, đối diện hoàn toàn với chiếc đầu tiên bạn đã đặt, sao cho các nam châm thẳng hàng. Xếp các nam châm của vỏ thiết bị điện tử, cho mỗi chiếc kể chuyện ở hai bên của cánh buồm, sao cho chúng cũng kết nối với nhau.
  6. Nếu bạn nhận thấy rằng khi chuỗi chảy thẳng trở lại, nó không bắt chéo trước cổng trên cùng, hãy xoay khung kể chuyện sao cho nửa sau của khung hướng xuống dưới. Xoay khung cho đến khi chuỗi đi qua bộ ngắt ảnh trên cùng khi sợi chảy thẳng trở lại.

Bước 10: Khắc phục sự cố

Tất cả các đoạn mã đều có câu lệnh in gỡ lỗi để chỉ ra rằng chúng đang gửi, nhận và xử lý dữ liệu. Mở cổng COM bằng Arduino IDE với một trong các hệ thống con Arduino Nano được cắm vào máy tính sẽ cho phép bạn xem các thông báo trạng thái này.

Nếu hệ thống hoạt động không bình thường, hãy bật công tắc trên tất cả các thành phần.

Bước 11: Các bước tiếp theo có thể xảy ra

  • Chống thấm
  • Giao tiếp tầm xa hơn. WiFi là một lựa chọn đầy hứa hẹn.
  • Thiết lập hiện tại của chúng tôi hiện sử dụng 2 trình ngắt ảnh cho mỗi câu chuyện. Thêm nhiều trình ngắt ảnh vào hệ thống có thể thú vị để thử.

Đề xuất: