Isi kandungan:
- Langkah 1: Bil Bahan
- Langkah 2: Keperluan Alat / Mesin / Perisian
- Langkah 3: Perkakasan Telltale
- Langkah 4: Perisian Telltale
- Langkah 5: Perhimpunan Telltale
- Langkah 6: Perkakasan Pembesar suara
- Langkah 7: Perisian Pembesar suara
- Langkah 8: Majlis Speaker
- Langkah 9: Persediaan / Pemasangan
- Langkah 10: Penyelesaian masalah
- Langkah 11: Langkah Selanjutnya yang Mungkin
Video: Cerita yang boleh didengar untuk Pelayaran: 11 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Telltales adalah potongan tali yang digunakan dalam pelayaran untuk menunjukkan sama ada terdapat aliran bergelora atau lamina melintasi layar. Walau bagaimanapun, kepingan benang berwarna yang melekat pada setiap sisi layar adalah petunjuk visual semata-mata. Cerita yang didengar ini adalah alat bantu yang bertujuan untuk menyampaikan maklumat visual dalam bentuk pendengaran untuk pelayar penglihatan dan penglihatan, seperti Pauline.
Peranti ini terdiri dari sistem input, yang membaca gerakan cerita, dan sistem output, yang memancarkan serangkaian bunyi bip yang menyampaikan maklumat aliran udara.
Akses ke peralatan pematerian dan pencetak 3D diperlukan dalam pembuatan peranti ini.
Langkah 1: Bil Bahan
BOM dengan pautan dan harga
Catatan: anda memerlukan 2 set semua perkara berikut.
Sistem Input
- Arduino Nano
- Adafruit perma-proto separuh saiz papan PCB
- Modul Pemancar Tanpa Wayar nRF24L01
- Pengganggu Foto
- Sparkfun Photo Interrupter Breakout Board
- Pek bateri serasi 9V Arduino
- Bateri 9V
- Beberapa wayar 22 Gauge panjang
- Benang
- Magnet Neodymium
- Epoksi
Sistem Keluaran
- Arduino Nano
- Adafruit perma-proto separuh saiz papan PCB
- Modul Pemancar Tanpa Wayar nRF24L01
- Pek bateri 9V Arduino yang serasi
- Potensiometer 1K Ohm
- Perintang 120 Ohm
- Transistor 2N3904
- Kapasitor 0.1 uF
- Pembesar suara serasi dengan Arduino
Fail GitHub
- Semua fail kod dan STL yang diperlukan untuk membina kisah ini boleh didapati di repo GitHub ini.
- Anda memerlukan dua set kandang, dan satu dari tempat pembesar suara.
Langkah 2: Keperluan Alat / Mesin / Perisian
Untuk memprogram Arduino, anda perlu memuat turun Arduino IDE. Pautan muat turun boleh didapati di sini.
Untuk memprogram modul nRF24L01, anda perlu memuat turun perpustakaannya melalui Arduino IDE. Alat> Urus Perpustakaan…> pasang perpustakaan RF24
Untuk memasang komponen elektronik, akses ke alat pematerian asas diperlukan. Pam desoldering juga berguna tetapi tidak diperlukan.
Untuk membina rangka dan beg pembesar suara, anda memerlukan akses ke pencetak 3D.
Langkah 3: Perkakasan Telltale
Pasang litar mengikut rajah di atas. Arduino Nano harus sejajar dengan bahagian atas protoboard. Ini membolehkan anda mendapat akses ke port USB walaupun setelah semua elektronik terpasang.
Untuk mengelakkan pemendekan elektronik, pastikan untuk memotong jejak protoboard pada baris yang akan ditempati nRF24 seperti yang ditunjukkan pada gambar di atas.
Jika tidak, anda memerlukan kabel pelompat untuk menyambungkan nRF24 ke protoboard.
Sambungan perintang, kabel GND, dan 5V ke interupter foto tidak digambarkan. Pasang penyekat foto seperti yang ditunjukkan pada papan pelariannya. Gambar papan pelarian disertakan.
Litar untuk cerpen Kanan dan Kiri sama persis.
Langkah 4: Perisian Telltale
Inilah kod untuk kisah yang betul. Sambungkan nano kisah yang betul ke komputer anda, buka Arduino IDE, salin dan tampal kod ini ke dalamnya, dan muat naik ke papan tulis.
/ ** Program yang menggunakan photogate untuk memeriksa kisah
* / #include #include #include #include radio RF24 (9, 10); // CE, alamat bait const CSN [6] = "00010"; // --- const const --- // 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; // tetapkan var di atas berdasarkan percubaan percubaan anda sendiri int 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; #tentukan STRING_THRESH 0.2 // --- vars program --- int num_string_seen = 0; int num_loops = 0; batal persediaan () {// sementara (! bersiri); // untuk flora // kelewatan (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // untuk menyahpepijat radio.begin (); radio.openWritingPipe (alamat); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } gelung void () {// letakkan kod utama anda di sini, untuk dijalankan berulang kali: if (num_loops% string_check_time == 0) {// check string state check_string (); } jika (num_loops == flow_check_time) {// memeriksa aliran //Serial.println(num_string_seen); int flow_num = exam_flow (); // hantar nilai send_out (flow_num); // tetapkan semula vars num_string_seen = 0; num_loops = 0; kelewatan (flow_check_delay); } num_loops ++; kelewatan (base_delay); } / * * Kaedah untuk memeriksa apakah rentetan melintasi gerbang * / batal check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); jika (string_state == 0) {num_string_seen ++; //Serial.println("Lihat rentetan! "); }
int bot_state = digitalRead (GATE_PIN_2);
jika (bot_state == 0) {num_string_seen--; //Serial.println("string di bawah! "); } //Serial.print("Counting string pass: "); //Serial.println(num_string_seen); kembali; } / * * Kaedah untuk menganalisis pecahan rentetan masa yang meliputi gerbang * / int exam_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Peratus diliputi:"); printDouble (peratus_seas, 100); // skala nilai ke skala komunikasi int scaled_flow = int (percent_seen * msg_max_val); jika (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } jika (skala_flow = 0) frac = (val - int (val)) * ketepatan; lain-lain frac = (int (val) - val) * ketepatan; Serial.println (frac, DEC); }
Berikut adalah kod untuk kisah kiri. Ikuti langkah yang sama seperti di atas untuk kisah kiri. Seperti yang anda lihat, satu-satunya perbezaan adalah alamat yang memberitahu hasilnya.
/ ** Program yang menggunakan photogate untuk memeriksa kisah
* / #include #include #include #include RF24 radio (9, 10); // CE, alamat byte const CSN [6] = "00001"; // --- const const --- // 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; // tetapkan var di atas berdasarkan percubaan percubaan anda sendiri int 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; #tentukan STRING_THRESH 0.2 // --- vars program --- int num_string_seen = 0; int num_loops = 0; batal persediaan () {// sementara (! bersiri); // untuk flora // kelewatan (500); num_string_seen = 0; num_loops = 0;
pinMode (GATE_PIN, INPUT);
pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // untuk menyahpepijat radio.begin (); radio.openWritingPipe (alamat); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } gelung void () {// letakkan kod utama anda di sini, untuk dijalankan berulang kali: if (num_loops% string_check_time == 0) {// check string state check_string (); } jika (num_loops == flow_check_time) {// memeriksa aliran //Serial.println(num_string_seen); int flow_num = exam_flow (); // hantar nilai send_out (flow_num); // tetapkan semula vars num_string_seen = 0; num_loops = 0; kelewatan (flow_check_delay); } num_loops ++; kelewatan (base_delay); } / * * Kaedah untuk memeriksa apakah rentetan melintasi gerbang * / batal check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); jika (string_state == 0) {num_string_seen ++; //Serial.println("Lihat rentetan! "); }
int bot_state = digitalRead (GATE_PIN_2);
jika (bot_state == 0) {num_string_seen--; //Serial.println("string di bawah! "); } //Serial.print("Counting string pass: "); //Serial.println(num_string_seen); kembali; } / * * Kaedah untuk menganalisis pecahan rentetan masa yang meliputi gerbang * / int exam_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Peratus diliputi:"); printDouble (peratus_seas, 100); // skala nilai ke skala komunikasi int scaled_flow = int (percent_seen * msg_max_val); jika (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } jika (skala_flow = 0) frac = (val - int (val)) * ketepatan; lain-lain frac = (int (val) - val) * ketepatan; Serial.println (frac, DEC); }
Langkah 5: Perhimpunan Telltale
Bahagian Individu
- Rangka cerita
- Benang
- Litar bercerita yang dibina
- Pek bateri
- Pita elektrik
- Epoksi atau gam
STL untuk komponen percetakan 3D
- STL untuk bingkai kisah: kiri, kanan
- STL untuk kotak elektronik: atas, bawah
Arahan Perhimpunan
- Letakkan magnet bar di slot bingkai bercerita 3D. Pastikan magnet berbaris dengan betul antara bingkai kanan dan bingkai kiri, kemudian gunakan epoksi (atau gam) untuk menahan magnet ke bingkai. Benarkan epoksi (atau gam) sepenuhnya.
- Letakkan penyekat foto di slot atas dan bawah di bahagian belakang bingkai. Epoxy (atau gam) dengan berhati-hati papan penyekat foto ke bingkai. Benarkan epoksi (atau gam) sepenuhnya
- Potong benang ~ 7 keping. Ikat satu hujung benang pada takaran bar menegak pertama. Potong sekeping kecil pita elektrik dan bungkus pita elektrik di atas bahagian benang yang akan berada di kawasan interupsi foto. Benang benang melalui bingkai sehingga melewati celah gerbang penyekat foto.
- Letakkan magnet bar di slot bahagian bawah kotak elektronik bercetak 3D. Pastikan magnet berbaris dengan betul antara kotak kanan dan kotak kiri, kemudian gunakan epoksi (atau gam) untuk mengikat magnet ke bingkai. Benarkan epoksi (atau gam) sepenuhnya.
- Letakkan litar bercerita yang dibina di dalam kotak elektronik, sejajarkan komponen yang berbeza dengan slotnya. Tutup kotak dengan bahagian atas kotak elektronik bercetak 3D. Epoksi (atau gam) pek bateri ke bahagian atas kotak sehingga suis terkena.
Langkah 6: Perkakasan Pembesar suara
Sistem output terdiri daripada dua litar pembesar suara, satu untuk setiap kisah, dilengkapi dengan komunikasi tanpa wayar dan tombol penyesuaian kelantangan. Pertama, sediakan protoboard untuk digunakan dengan modul nRF24L01 seperti yang kami lakukan untuk rangkaian ceritanya dengan memotong petunjuk yang memisahkan dua baris pin di mana papan akan diletakkan.
Kemudian, pasangkan litar seperti yang ditunjukkan dalam rajah di atas sambil merujuk kepada gambar litar yang telah siap.
Arahan Majlis Papan
Untuk meletakkan papan pada penutup speaker, komponen utama mesti diletakkan di kawasan papan tertentu. Dalam arahan berikut, saya akan merujuk kepada sistem koordinat yang digunakan untuk menunjukkan baris dan lajur pada protoboard Adafruit:
- Arduino Nano mesti diletakkan di tepi papan atas di tengah supaya pin Vin diletakkan di G16. Ini akan memudahkan pengaturcaraan semula Arduino Nano setelah rangkaian dipasang.
- Papan nRF24L01 mesti diletakkan di sudut kanan bawah papan yang merangkumi lapan kedudukan dari C1 hingga D5. Ini akan membiarkan nRF24L01 tergantung dari protoboard untuk membolehkan komunikasi tanpa wayar lebih baik.
- Pek bateri untuk sistem pembesar suara memberi kuasa kepada kedua-dua protoboard, jadi pastikan untuk menyambungkan dua rel / pin GND Arduino Nano dan pin Vin ke bekalan kuasa.
-
Untuk litar ‘bawah’, potensiometer harus diletakkan di bahagian atas papan menghadap ke luar sehingga pinnya diletakkan di posisi J2, J4, dan J6
- J2 output Arduino Nano output dari pin digital 3 (D3)
- Pin asas J4 of transistor 2N3904
- J6 ↔ tidak bersambung
-
Untuk litar ‘atas’, potensiometer harus diletakkan di bahagian bawah papan menghadap ke luar sehingga pinnya diletakkan di posisi J9, J11, dan J13
- J13 output Output Arduino Nano dari pin digital 3 (D3)
- J11 pin pin asas transistor 2N3904
- J9 ↔ tidak bersambung
Langkah 7: Perisian Pembesar suara
Berikut adalah kod untuk pembicara yang berkomunikasi dengan kisah kiri. Sambungkan Arduino Nano di papan pembesar suara bawah ke komputer anda, buka Arduino IDE, salin dan tampal kod ini ke dalamnya, dan muat naik ke papan.
#sertakan
#masuk #masuk radio RF24 (7, 8); // CE, CSN // cerita kiri, alamat bait papan pembesar suara atas [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int speaker = 3; const int delay_gain = 100; status int = 0; int cur_delay = 0; char baca [2]; batal persediaan () {pinMode (pembesar suara, OUTPUT); Serial.begin (115200); Serial.println ("Memulakan komunikasi tanpa wayar …"); radio.begin (); radio.openReadingPipe (0, alamat); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } gelung void () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (baca [0] - '0'); Serial.print ("Diterima:"); Serial.println (status); cur_delay = status delay_gain *; } if (cur_delay) {nada (pembesar suara, nada, jangka masa_ nada); kelewatan (cur_delay + pitch_duration); Serial.println ("Bunyi!"); }}
Berikut adalah kod untuk pembicara berkomunikasi dengan kisah yang betul. Sambungkan Arduino Nano di papan pembesar suara atas ke komputer anda, buka Arduino IDE, salin dan tampal kod ini ke dalamnya, dan muat naik ke papan.
#sertakan
#masuk #masuk radio RF24 (7, 8); // CE, CSN // kisah tepat, papan penunjuk bawah bait alamat [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int speaker = 3; const int delay_gain = 100; status int = 0; int cur_delay = 0; char baca [2]; batal persediaan () {pinMode (pembesar suara, OUTPUT); Serial.begin (115200); Serial.println ("Memulakan komunikasi tanpa wayar …"); radio.begin (); radio.openReadingPipe (0, alamat); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } gelung void () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (baca [0] - '0'); Serial.print ("Diterima:"); Serial.println (status); cur_delay = status delay_gain *; } if (cur_delay) {nada (pembesar suara, nada, jangka masa_ nada); kelewatan (cur_delay + pitch_duration); Serial.println ("Bunyi!"); }}
Langkah 8: Majlis Speaker
Bahagian Individu
- 2 litar pembesar suara yang dibina
- 2 pembesar suara
- 1 pek bateri
STL untuk percetakan 3D
- Bahagian atas kotak
- Bahagian bawah kotak
Arahan Pemasangan Fizikal
- Letakkan litar pembesar suara dengan hati-hati ke bahagian bawah kotak, satu papan di atas yang lain sehingga tombol volume bersebelahan dan tergelincir ke dalam lubang. Cip komunikasi harus terpapar di bahagian belakang kotak.
- Letakkan pembesar suara di kiri dan kanan papan litar, pastikan pembesar suara sesuai dengan sisi ceritera yang betul. Sejajarkan pembesar suara dengan slot di sisi kotak.
- Masukkan kabel pek bateri melalui lubang kecil di bahagian belakang kotak. Epoksi (atau gam) pek bateri ke bahagian belakang kotak sehingga suis terkena.
- Letakkan bahagian atas kotak bercetak 3D di atas bahagian bawah kotak untuk memuat semuanya.
Langkah 9: Persediaan / Pemasangan
- Nyalakan cerita dengan mengalihkan suis pada pek bateri ke kedudukan 'ON'. Lakukan perkara yang sama untuk pemasangan pembesar suara untuk menghidupkan sistem output.
- Pemasangan ceritera yang didengar paling mudah dilakukan dengan dua orang, tetapi boleh dilakukan dengan satu orang. Untuk memasang jib yang tidak berbulu, ceritanya paling senang dipakai sebelum mengangkat layar.
- Untuk memastikan bingkai dongeng berorientasi dengan betul, lihat takik pada salah satu bar menegak. Semasa memegang bingkai tegak, takik harus berada di atas. Bahagian bingkai dengan palang itu juga harus menghadap ke arah depan kapal.
- Letakkan salah satu cerita di ketinggian dan kedudukan yang dikehendaki di layar. Ia harus diletakkan sedemikian rupa sehingga benang berada di tempat yang sama seperti jika itu adalah bagian dari kisah tradisional.
- Sebaik sahaja anda mempunyai satu kisah dalam kedudukan yang diingini. Letakkan kisah yang lain di sisi lain layar, betul-betul bertentangan dengan yang pertama yang anda letakkan, sehingga magnet berbaris. Sebaik sahaja magnet membuat sambungan, mereka harus memegang bingkai dengan selamat ke layar. Sejajarkan magnet kandang elektronik, untuk setiap kisah dongeng di kedua-dua belah layar, sehingga mereka bersambung juga.
- Sekiranya anda menyedari bahawa ketika tali mengalir lurus ke belakang, ia tidak melintang di depan gerbang atas, putar bingkai kisah sehingga separuh belakang bingkai menuju ke bawah. Putar bingkai sehingga tali melewati interupter foto atas ketika benang mengalir lurus ke belakang.
Langkah 10: Penyelesaian masalah
Semua potongan kod mempunyai penyata cetak debug untuk menunjukkan bahawa mereka menghantar, menerima, dan memproses data. Membuka port COM menggunakan Arduino IDE dengan salah satu subsistem Arduino Nano yang dipasang ke komputer akan membolehkan anda melihat mesej status ini.
Sekiranya sistem tidak beroperasi dengan betul, alihkan suis pada semua komponen.
Langkah 11: Langkah Selanjutnya yang Mungkin
- Kalis air
- Komunikasi jarak jauh. WiFi menjadi pilihan yang menjanjikan.
- Penyediaan kami sekarang menggunakan 2 interupsi foto per kisah. Menambah lebih banyak penyekat foto ke sistem mungkin menarik untuk dicuba.
Disyorkan:
Nikmati Musim Panas Anda yang Sejuk Dengan Kipas M5StickC ESP32 - Kelajuan yang Boleh Diselaraskan: 8 Langkah
Nikmati Musim Panas Anda yang Keren Dengan Kipas M5StickC ESP32 - Kelajuan yang Boleh Diselaraskan: Dalam projek ini kami akan belajar bagaimana mengawal kelajuan FAN menggunakan papan M5StickC ESP32 dan modul kipas L9110
Interaktif Cerita (Permainan Gores): 8 Langkah
Story Interactive (Scratch Game): Ini akan menjadi tutorial bagaimana membuat permainan di awal dengan dialog, dan sprite. Ini juga akan mengajar anda untuk menambahkan klip ke dalam permainan anda, dan masa, termasuk siaran dan banyak lagi
GRaCE- Kacamata yang boleh dilepas dan boleh klip Glowing: 5 Langkah
GRaCE- Glowing Removable and Clipable Eyewear: GRaCe (atau Glowing Removable and Clipable Eyewear) adalah prototaip yang saya buat untuk mereka yang sangat aktif dengan tangan mereka di dalam persekitaran yang gelap, seperti menara komputer atau objek dengan sedikit cahaya sekitar dalam. GRaCE dirancang dengan
Cara Memperbaiki Lampu suluh yang boleh dicas semula yang rosak !!!!!!: 3 Langkah
Cara Memperbaiki Lampu suluh yang Boleh Diisi Semula Pecah !!!!!!: Saya budak kelas tujuh dari Monterrey, Mexico, dan saya ingin memperbaiki lampu suluh yang rosak dan menjadikannya lebih baik kerana saya fikir jika sesuatu pecah, anda tidak boleh membuangnya , dan, sebaliknya, anda harus berusaha memperbaikinya dan menjadikannya lebih baik. Saya tahu banyak pe
Naik taraf - Tablet 7 "Dipasang dalam Pelayaran My '14: 6 Langkah
Naik taraf - Tablet 7 "Dipasang di My '14 Cruze: Ini adalah bangunan tutorial berdasarkan arahan yang diberikan oleh pengguna torpee dalam utas ini di laman forum Cruze Talk. Jelas sekali, tutorial ini berkisar pada siri kenderaan tertentu. Walau bagaimanapun, saya menulis ini sebagai panduan untuk sesiapa sahaja yang berusaha