Daftar Isi:

Tanda yang Dapat Didengar untuk Berlayar: 11 Langkah
Tanda yang Dapat Didengar untuk Berlayar: 11 Langkah

Video: Tanda yang Dapat Didengar untuk Berlayar: 11 Langkah

Video: Tanda yang Dapat Didengar untuk Berlayar: 11 Langkah
Video: Yura Yunita - Dunia Tipu-Tipu (Official Music Video) 2024, Juli
Anonim
Image
Image
Perangkat Keras Telltale
Perangkat Keras Telltale

Telltales adalah potongan tali yang digunakan dalam berlayar untuk menunjukkan apakah ada aliran turbulen atau laminar di layar. Namun, potongan benang berwarna berbeda yang menempel di setiap sisi layar adalah indikator visual murni. Tanda-tanda yang dapat didengar ini adalah alat bantu yang bertujuan untuk mengomunikasikan informasi visual dalam bentuk pendengaran untuk pelaut yang memiliki penglihatan dan tunanetra, seperti Pauline.

Perangkat ini terdiri dari sistem input, yang membaca gerakan tanda, dan sistem output, yang mengeluarkan serangkaian bunyi bip yang menyampaikan informasi aliran udara.

Akses ke peralatan solder dan printer 3D diperlukan dalam pembuatan perangkat ini.

Langkah 1: Daftar Bahan

BOM dengan tautan dan harga

Catatan: Anda memerlukan 2 set dari semua hal berikut.

Sistem Masukan

  • Arduino Nano
  • PCB papan tempat memotong roti setengah ukuran adafruit perma-proto
  • Modul Transceiver Nirkabel nRF24L01
  • Pengganggu Foto
  • Papan Breakout Interrupter Foto Sparkfun
  • Paket baterai 9V yang Kompatibel dengan Arduino
  • Baterai 9V
  • Beberapa panjang 22 Gauge wire
  • Benang
  • Magnet Neodymium
  • Epoksi

Sistem Keluaran

  • Arduino Nano
  • PCB papan tempat memotong roti setengah ukuran adafruit perma-proto
  • Modul Transceiver Nirkabel nRF24L01
  • Paket baterai 9V yang Kompatibel dengan Arduino
  • Potensiometer 1K Ohm
  • Resistor 120 Ohm
  • 2N3904 transistor
  • kapasitor 0,1 uF
  • Speaker yang kompatibel dengan Arduino

File GitHub

  • Semua kode dan file STL yang diperlukan untuk membangun telltales ini dapat ditemukan di repo GitHub ini.
  • Anda akan membutuhkan dua set enklosur, dan salah satu rumah speaker.

Langkah 2: Persyaratan Alat/Mesin/Perangkat Lunak

Untuk memprogram Arduino, Anda harus mengunduh Arduino IDE. Tautan unduhan dapat ditemukan di sini.

Untuk memprogram modul nRF24L01, Anda perlu mengunduh pustakanya melalui Arduino IDE. Alat > Kelola Perpustakaan… > instal perpustakaan RF24

Untuk merakit komponen elektronik, akses ke alat solder dasar diperlukan. Pompa pematrian mungkin juga berguna tetapi tidak diperlukan.

Untuk membuat rangka dan kotak speaker, Anda memerlukan akses ke printer 3D.

Langkah 3: Perangkat Keras Telltale

Perangkat Keras Telltale
Perangkat Keras Telltale
Perangkat Keras Telltale
Perangkat Keras Telltale

Susun rangkaian sesuai dengan diagram di atas. Arduino Nano harus sejajar dengan bagian atas protoboard. Ini memungkinkan Anda untuk memiliki akses ke port USB bahkan setelah semua perangkat elektronik terpasang.

Untuk menghindari korsleting elektronik, pastikan untuk memotong jejak protoboard pada baris yang akan ditempati nRF24 seperti yang ditunjukkan pada gambar di atas.

Jika tidak, Anda memerlukan kabel jumper untuk menghubungkan nRF24 ke protoboard.

Sambungan resistor, kabel GND, dan 5V ke pemutus foto tidak digambarkan. Pasang penginterupsi foto seperti yang ditunjukkan pada papan breakout-nya. Gambar papan breakout disertakan.

Sirkuit untuk tanda Kanan dan Kiri persis sama.

Langkah 4: Perangkat Lunak Telltale

Berikut adalah kode untuk tanda Kanan. Hubungkan nano Telltale Kanan ke komputer Anda, buka Arduino IDE, salin dan tempel kode ini ke dalamnya, dan unggah ke board.

/** Program yang menggunakan photogate untuk memeriksa cerita

*/ #include #include #include #include radio RF24 (9, 10); // CE, CSN const byte address[6] = "00010"; //---program consts--- //time 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; //set var di atas berdasarkan percobaan eksperimental Anda sendiri 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 //---program vars--- int num_string_seen = 0; int jumlah_loop = 0; void setup() { //sementara(!Serial); // untuk flora //delay(500); jumlah_string_terlihat = 0; jumlah_loop = 0; pinMode(GATE_PIN, INPUT); pinMode(GATE_PIN_2, INPUT); Serial.begin(115200); // untuk debug radio.begin(); radio.openWritingPipe(alamat); radio.setPALevel(RF24_PA_MIN); radio.stopListening(); } void loop() { // letakkan kode utama Anda di sini, untuk dijalankan berulang kali: if(num_loops % string_check_time == 0){ //periksa status string check_string(); } if(num_loops == flow_check_time){ //memeriksa aliran //Serial.println(num_string_seen); int flow_num = periksa_aliran(); //kirim nilai send_out(flow_num); //reset vars num_string_seen = 0; jumlah_loop = 0; penundaan(flow_check_delay); } jumlah_loop++; penundaan(base_delay); } /* *Metode untuk memeriksa apakah string melewati gerbang */ void check_string(){ int string_state = digitalRead(GATE_PIN); //Serial.println(string_state); if (string_state == 0){ num_string_seen++; //Serial.println("Melihat string!"); }

int bot_state = digitalRead(GATE_PIN_2);

if (bot_state == 0){ num_string_seen--; //Serial.println("string di bawah!"); } //Serial.print("Menghitung string yang lewat: "); //Serial.println(num_string_seen); kembali; } /* * Metode untuk menganalisis berapa fraksi waktu string yang menutupi gerbang */ int exam_flow(){ double persen_seen = double(num_string_seen)/max_in_flow; Serial.print("Persen yang tercakup: "); printDouble(persen_dilihat, 100); //skala nilai ke skala komunikasi int scaled_flow = int(percent_seen * msg_max_val); if(scaled_flow > msg_max_val){ scaled_flow = msg_max_val; } if(scaled_flow = 0) frac = (val - int(val)) * presisi; else frac = (int(val)- val) * presisi; Serial.println(frac, DEC); }

Berikut adalah kode untuk tanda Kiri. Ikuti langkah yang sama seperti di atas untuk tanda Kiri. Seperti yang Anda lihat, satu-satunya perbedaan adalah alamat tujuan pengiriman hasil.

/** Program yang menggunakan photogate untuk memeriksa cerita

*/ #include #include #include #include radio RF24 (9, 10); // CE, CSN const byte address[6] = "00001"; //---program consts--- //time 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; //set var di atas berdasarkan percobaan eksperimental Anda sendiri 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 //---program vars--- int num_string_seen = 0; int jumlah_loop = 0; void setup() { //sementara(!Serial); // untuk flora //delay(500); jumlah_string_terlihat = 0; jumlah_loop = 0;

pinMode(GATE_PIN, INPUT);

pinMode(GATE_PIN_2, INPUT); Serial.begin(115200); // untuk debug radio.begin(); radio.openWritingPipe(alamat); radio.setPALevel(RF24_PA_MIN); radio.stopListening(); }void loop() { // letakkan kode utama Anda di sini, untuk dijalankan berulang kali: if(num_loops % string_check_time == 0){ //periksa status string check_string(); } if(num_loops == flow_check_time){ //memeriksa aliran //Serial.println(num_string_seen); int flow_num = periksa_aliran(); //kirim nilai send_out(flow_num); //reset vars num_string_seen = 0; jumlah_loop = 0; penundaan(flow_check_delay); } jumlah_loop++; penundaan(base_delay); } /* *Metode untuk memeriksa apakah string melewati gerbang */ void check_string(){ int string_state = digitalRead(GATE_PIN); //Serial.println(string_state); if (string_state == 0){ num_string_seen++; //Serial.println("Melihat string!"); }

int bot_state = digitalRead(GATE_PIN_2);

if (bot_state == 0){ num_string_seen--; //Serial.println("string di bawah!"); } //Serial.print("Menghitung string yang lewat: "); //Serial.println(num_string_seen); kembali; } /* * Metode untuk menganalisis berapa fraksi waktu string yang menutupi gerbang */ int exam_flow(){ double persen_seen = double(num_string_seen)/max_in_flow; Serial.print("Persen yang tercakup: "); printDouble(persen_dilihat, 100); //skala nilai ke skala komunikasi int scaled_flow = int(percent_seen * msg_max_val); if(scaled_flow > msg_max_val){ scaled_flow = msg_max_val; } if(scaled_flow = 0) frac = (val - int(val)) * presisi; else frac = (int(val)- val) * presisi; Serial.println(frac, DEC); }

Langkah 5: Perakitan Telltale

Majelis Telltale
Majelis Telltale

Bagian individu

  • Bingkai cerita
  • Benang
  • Sirkuit tanda yang dibangun
  • Baterai
  • Pita listrik
  • Epoxy atau lem

STL untuk komponen tanda pencetakan 3D

  • STL untuk bingkai tanda: kiri, kanan
  • STL untuk kotak elektronik: atas, bawah

Petunjuk perakitan

  1. Tempatkan magnet batang di slot bingkai tanda cetak 3D. Pastikan magnet berbaris dengan benar di antara bingkai kanan dan bingkai kiri, lalu gunakan epoksi (atau lem) untuk mengencangkan magnet ke bingkai. Biarkan epoksi (atau lem) mengeras sepenuhnya.
  2. Tempatkan pengganggu foto di slot atas dan bawah di bagian belakang bingkai. Epoxy (atau rekatkan) papan pengganggu foto dengan hati-hati ke bingkai. Biarkan epoksi (atau lem) menempel sepenuhnya
  3. Potong ~7 dalam seutas benang. Ikat salah satu ujung benang pada takik batang vertikal pertama. Potong sepotong kecil pita listrik dan bungkus pita listrik di atas bagian benang yang akan berada di wilayah interupsi foto. Masukkan benang melalui bingkai sehingga melewati celah gerbang pemutus foto.
  4. Tempatkan magnet batang di slot bagian bawah kotak elektronik cetak 3D. Pastikan magnet berbaris dengan benar di antara kotak kanan dan kotak kiri, lalu gunakan epoksi (atau lem) untuk mengencangkan magnet ke bingkai. Biarkan epoksi (atau lem) mengeras sepenuhnya.
  5. Tempatkan rangkaian tanda yang dibangun di dalam kotak elektronik, sejajarkan komponen yang berbeda ke slotnya. Tutup kotak dengan bagian atas kotak elektronik cetak 3D. Epoxy (atau lem) baterai ke bagian atas kotak sehingga sakelar terbuka.

Langkah 6: Perangkat Keras Pembicara

Perangkat keras pengeras suara
Perangkat keras pengeras suara
Perangkat keras pengeras suara
Perangkat keras pengeras suara
Perangkat keras pengeras suara
Perangkat keras pengeras suara

Sistem output terdiri dari dua sirkuit speaker, satu untuk setiap tanda, dilengkapi dengan komunikasi nirkabel dan tombol penyesuaian volume. Pertama, siapkan protoboard untuk digunakan dengan modul nRF24L01 seperti yang kita lakukan untuk rangkaian tanda dengan memotong kabel yang memisahkan dua baris pin tempat papan akan ditempatkan.

Kemudian, rakit sirkuit seperti yang ditunjukkan pada diagram di atas sambil mengacu pada foto-foto sirkuit yang sudah selesai.

Instruksi Majelis Dewan

Untuk menumpuk papan di penutup speaker, komponen utama harus ditempatkan di area papan tertentu. Dalam instruksi berikut, saya akan mengacu pada sistem koordinat yang digunakan untuk menunjukkan baris dan kolom pada protoboard Adafruit:

  1. Arduino Nano harus ditempatkan di tepi atas papan di tengah sehingga pin Vin diposisikan di G16. Ini akan memungkinkan pemrograman ulang Arduino Nano dengan mudah setelah rangkaian dirakit.
  2. Papan nRF24L01 harus ditempatkan di sudut kanan bawah papan yang mencakup delapan posisi dari C1 hingga D5. Ini akan membuat nRF24L01 menggantung dari protoboard untuk memungkinkan komunikasi nirkabel yang lebih baik.
  3. Paket baterai untuk sistem speaker memberi daya pada kedua protoboard, jadi pastikan untuk menghubungkan dua rel/pin GND Arduino Nano dan pin Vin ke catu daya.
  4. Untuk rangkaian 'bawah', potensiometer harus diletakkan di bagian atas papan menghadap ke luar sehingga pinnya ditempatkan pada posisi J2, J4, dan J6

    1. J2 Keluaran Arduino Nano dari pin digital 3 (D3)
    2. J4 pin dasar transistor 2N3904
    3. J6 tidak terhubung
  5. Untuk rangkaian 'atas', potensiometer harus diletakkan di bagian bawah papan menghadap ke luar sehingga pinnya ditempatkan pada posisi J9, J11, dan J13

    1. J13 Keluaran Arduino Nano dari pin digital 3 (D3)
    2. J11 pin dasar transistor 2N3904
    3. J9 tidak terhubung

Langkah 7: Perangkat Lunak Pembicara

Berikut adalah kode untuk pembicara berkomunikasi dengan tanda Kiri. Hubungkan Arduino Nano di papan speaker bawah ke komputer Anda, buka Arduino IDE, salin dan tempel kode ini ke dalamnya, dan unggah ke papan.

#termasuk

#sertakan #sertakan radio RF24(7, 8); // CE, CSN // tanda kiri, alamat byte const papan speaker atas[6] = "00001"; const int nada = 2000; const int pitch_duration = 200; const int pembicara = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char baca [2]; void setup() { pinMode(speaker, OUTPUT); Serial.begin(115200); Serial.println("Memulai komunikasi nirkabel…"); radio.mulai(); radio.openReadingPipe(0, alamat); radio.setPALevel(RF24_PA_MIN); radio.startListening(); } void loop() { if(radio.available()) { radio.read(&read, sizeof(read)); status = (int)(baca[0]-'0'); Serial.print("Diterima: "); Serial.println(status); cur_delay = delay_gain*status; } if (cur_delay) { nada(speaker, pitch, pitch_duration); delay(cur_delay + pitch_duration); Serial.println("Bip!"); } }

Berikut adalah kode untuk pembicara berkomunikasi dengan tanda yang tepat. Hubungkan Arduino Nano di papan speaker atas ke komputer Anda, buka Arduino IDE, salin dan tempel kode ini ke dalamnya, dan unggah ke papan.

#termasuk

#sertakan #sertakan radio RF24(7, 8); // CE, CSN //tanda kanan, alamat byte papan speaker bawah[6] = "00010"; const int nada = 1500; const int pitch_duration = 200; const int pembicara = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char baca [2]; void setup() { pinMode(speaker, OUTPUT); Serial.begin(115200); Serial.println("Memulai komunikasi nirkabel…"); radio.mulai(); radio.openReadingPipe(0, alamat); radio.setPALevel(RF24_PA_MIN); radio.startListening(); } void loop() { if (radio.available()) { radio.read(&read, sizeof(read)); status = (int)(baca[0]-'0'); Serial.print("Diterima: "); Serial.println(status); cur_delay = delay_gain*status; } if (cur_delay) { nada(speaker, pitch, pitch_duration); delay(cur_delay+pitch_duration); Serial.println("Bip!"); } }

Langkah 8: Majelis Pembicara

Bagian individu

  • 2 sirkuit speaker yang dibangun
  • 2 pembicara
  • 1 paket baterai

STL untuk pencetakan 3D

  • Atasan kotak
  • Bawah kotak

Instruksi Perakitan Fisik

  1. Tempatkan sirkuit speaker dengan hati-hati ke bagian bawah kotak, satu papan di atas yang lain sedemikian rupa sehingga kenop volume bersebelahan dan masuk ke dalam lubang. Chip komunikasi harus terbuka di bagian belakang kotak.
  2. Tempatkan speaker di kiri dan kanan papan sirkuit, pastikan speaker sesuai dengan sisi yang benar. Sejajarkan speaker ke slot di sisi kotak.
  3. Masukkan kabel paket baterai melalui lubang kecil di bagian belakang kotak. Epoxy (atau lem) baterai ke bagian belakang kotak sehingga sakelarnya terbuka.
  4. Tempatkan bagian atas kotak yang dicetak 3D di atas bagian bawah kotak untuk menampung semuanya.

Langkah 9: Pengaturan/Pemasangan

Pengaturan/Pemasangan
Pengaturan/Pemasangan
  1. Nyalakan tanda dengan membalik sakelar pada kemasan baterai ke posisi 'ON'. Lakukan hal yang sama untuk unit speaker untuk mengaktifkan sistem output.
  2. Memasang tanda yang dapat didengar paling mudah dilakukan dengan dua orang, tetapi dapat dilakukan dengan satu orang. Untuk pemasangan pada jib non-menggulung, tanda akan paling mudah dipasang sebelum mengangkat layar.
  3. Untuk memastikan bingkai cerita diorientasikan dengan benar, lihat takik di salah satu batang vertikal. Saat memegang bingkai tegak, takik harus mengarah ke atas. Sisi bingkai dengan palang itu juga harus menghadap ke depan perahu.
  4. Tempatkan salah satu dongeng pada ketinggian dan posisi yang diinginkan di layar. Itu harus ditempatkan sedemikian rupa sehingga benang berada di tempat yang sama jika itu adalah bagian dari cerita tradisional.
  5. Setelah Anda memiliki satu cerita di posisi yang diinginkan. Tempatkan cerita lain di sisi lain layar, persis di seberang yang pertama Anda tempatkan, sehingga magnet berbaris. Setelah magnet membuat sambungan, mereka harus menahan bingkai dengan aman ke layar. Sejajarkan magnet penutup elektronik, untuk masing-masing menceritakan kisah di kedua sisi layar, sehingga mereka terhubung juga.
  6. Jika Anda perhatikan bahwa ketika tali mengalir lurus ke belakang, tali itu tidak menyilang di depan gerbang atas, putar bingkai cerita sedemikian rupa sehingga setengah bagian belakang bingkai mengarah ke bawah. Putar bingkai sampai tali melewati pemutus foto atas saat benang mengalir lurus ke belakang.

Langkah 10: Pemecahan Masalah

Semua potongan kode memiliki pernyataan cetak debug untuk menunjukkan bahwa mereka mengirim, menerima, dan memproses data. Membuka port COM menggunakan Arduino IDE dengan salah satu subsistem Arduino Nano yang dicolokkan ke komputer akan memungkinkan Anda untuk melihat pesan status ini.

Jika sistem tidak beroperasi dengan benar, alihkan sakelar ke semua komponen.

Langkah 11: Kemungkinan Langkah Selanjutnya

  • Tahan air
  • Komunikasi jarak jauh. WiFi menjadi pilihan yang menjanjikan.
  • Pengaturan kami saat ini menggunakan 2 interupsi foto per tanda. Menambahkan lebih banyak pengganggu foto ke sistem mungkin menarik untuk dicoba.

Direkomendasikan: