Daftar Isi:
- Langkah 1: Daftar Bahan
- Langkah 2: Persyaratan Alat/Mesin/Perangkat Lunak
- Langkah 3: Perangkat Keras Telltale
- Langkah 4: Perangkat Lunak Telltale
- Langkah 5: Perakitan Telltale
- Langkah 6: Perangkat Keras Pembicara
- Langkah 7: Perangkat Lunak Pembicara
- Langkah 8: Majelis Pembicara
- Langkah 9: Pengaturan/Pemasangan
- Langkah 10: Pemecahan Masalah
- Langkah 11: Kemungkinan Langkah Selanjutnya
Video: Tanda yang Dapat Didengar untuk Berlayar: 11 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
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
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
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
- 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.
- 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
- 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.
- 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.
- 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
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:
- 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.
- 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.
- 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.
-
Untuk rangkaian 'bawah', potensiometer harus diletakkan di bagian atas papan menghadap ke luar sehingga pinnya ditempatkan pada posisi J2, J4, dan J6
- J2 Keluaran Arduino Nano dari pin digital 3 (D3)
- J4 pin dasar transistor 2N3904
- J6 tidak terhubung
-
Untuk rangkaian 'atas', potensiometer harus diletakkan di bagian bawah papan menghadap ke luar sehingga pinnya ditempatkan pada posisi J9, J11, dan J13
- J13 Keluaran Arduino Nano dari pin digital 3 (D3)
- J11 pin dasar transistor 2N3904
- 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
- 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.
- Tempatkan speaker di kiri dan kanan papan sirkuit, pastikan speaker sesuai dengan sisi yang benar. Sejajarkan speaker ke slot di sisi kotak.
- Masukkan kabel paket baterai melalui lubang kecil di bagian belakang kotak. Epoxy (atau lem) baterai ke bagian belakang kotak sehingga sakelarnya terbuka.
- Tempatkan bagian atas kotak yang dicetak 3D di atas bagian bawah kotak untuk menampung semuanya.
Langkah 9: Pengaturan/Pemasangan
- Nyalakan tanda dengan membalik sakelar pada kemasan baterai ke posisi 'ON'. Lakukan hal yang sama untuk unit speaker untuk mengaktifkan sistem output.
- 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.
- 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.
- 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.
- 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.
- 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:
Benar-benar Menyala - Tanda Akrilik LED RGB yang Dapat Diprogram: 3 Langkah (dengan Gambar)
Benar-benar Menyala - Tanda Akrilik LED RGB yang Dapat Diprogram: Telah bermain-main dengan pemotong/pengukir laser, dan benar-benar jatuh cinta dengan pengukiran pada akrilik bening dan menyinari sumber cahaya dari tepi. Ketebalan akrilik yang digunakan adalah a.25" lembar, yang dipotong dengan sangat rapi oleh l
Seni 2D Dengan LED yang Dapat Diprogram dan Basis dan Logo yang Dapat Disesuaikan: 5 Langkah (dengan Gambar)
Seni 2D Dengan LED yang Dapat Diprogram dan Basis dan Logo yang Dapat Disesuaikan: Selamat datang di instruksi! Hari ini, saya akan menunjukkan cara membuat Proyek Seni 2D dengan logo dan desain keseluruhan pilihan Anda. Saya membuat proyek ini karena dapat mengajarkan orang banyak keterampilan seperti pemrograman, pengkabelan, pemodelan 3D, dan lainnya. Ini
Penguat Pengunci Miniatur yang Dapat Dipakai (dan Sistem Sonar untuk Perangkat yang Dapat Dipakai, Dll.): 7 Langkah
Penguat Penguncian Miniatur yang Dapat Dipakai (dan Sistem Sonar untuk Perangkat yang Dapat Dikenakan, Dll.): Bangun penguat pengunci mini murah yang dapat disematkan dalam bingkai kacamata dan untuk membuat sistem penglihatan sonar untuk orang buta, atau ultrasound sederhana mesin yang terus memantau jantung Anda dan menggunakan Pembelajaran Mesin Manusia untuk memperingatkan p
Dokumen yang dapat disesuaikan secara mikro (non) - Kamera untuk Ruang Kelas yang "kurang sumber daya": 10 Langkah
Micro-adjustable Document (non) - Kamera untuk Ruang Kelas "kurang sumber daya": Halo teman-teman dan rekan-rekan pendidik,Nama saya Aamir Fidai dan saya seorang guru Matematika. Dua hal yang perlu dijelaskan sebelum kita melangkah lebih jauh, saya bukan seorang insinyur dan ini hanyalah sebuah prototipe dari upaya menyediakan guru di kelas yang kekurangan sumber daya
Perbaikan yang Tidak Dapat Dihancurkan untuk Engsel & Casing Laptop HP DV 9000 yang Rusak: 18 Langkah
Perbaikan yang Tidak Dapat Dihancurkan untuk Engsel & Casing Laptop HP DV 9000 Rusak: Perbaikan ini berfungsi untuk bagian # 3JAT9HATP05 dan 3JAT9HATP21. Tapi mungkin bisa bekerja untuk model lain. Yah seperti orang lain yang telah membeli laptop HP DV9000, engsel kiri saya retak dan dengan demikian, juga mematahkan mur pengunci yang tertanam di L atas