Isi kandungan:

Cerita yang boleh didengar untuk Pelayaran: 11 Langkah
Cerita yang boleh didengar untuk Pelayaran: 11 Langkah

Video: Cerita yang boleh didengar untuk Pelayaran: 11 Langkah

Video: Cerita yang boleh didengar untuk Pelayaran: 11 Langkah
Video: JANGAN TERTIPU DENGAN 5 TIPE ORANG BERBAHAYA INI I Motivasi Merry | Merry Riana 2024, Julai
Anonim
Image
Image
Perkakasan Telltale
Perkakasan Telltale

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

Perkakasan Telltale
Perkakasan Telltale
Perkakasan Telltale
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

Perhimpunan Telltale
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

  1. 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.
  2. 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
  3. 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.
  4. 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.
  5. 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

Perkakasan Pembesar suara
Perkakasan Pembesar suara
Perkakasan Pembesar suara
Perkakasan Pembesar suara
Perkakasan Pembesar suara
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:

  1. 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.
  2. 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.
  3. 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.
  4. Untuk litar ‘bawah’, potensiometer harus diletakkan di bahagian atas papan menghadap ke luar sehingga pinnya diletakkan di posisi J2, J4, dan J6

    1. J2 output Arduino Nano output dari pin digital 3 (D3)
    2. Pin asas J4 of transistor 2N3904
    3. J6 ↔ tidak bersambung
  5. Untuk litar ‘atas’, potensiometer harus diletakkan di bahagian bawah papan menghadap ke luar sehingga pinnya diletakkan di posisi J9, J11, dan J13

    1. J13 output Output Arduino Nano dari pin digital 3 (D3)
    2. J11 pin pin asas transistor 2N3904
    3. 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

  1. 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.
  2. 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.
  3. Masukkan kabel pek bateri melalui lubang kecil di bahagian belakang kotak. Epoksi (atau gam) pek bateri ke bahagian belakang kotak sehingga suis terkena.
  4. Letakkan bahagian atas kotak bercetak 3D di atas bahagian bawah kotak untuk memuat semuanya.

Langkah 9: Persediaan / Pemasangan

Persediaan / Pemasangan
Persediaan / Pemasangan
  1. Nyalakan cerita dengan mengalihkan suis pada pek bateri ke kedudukan 'ON'. Lakukan perkara yang sama untuk pemasangan pembesar suara untuk menghidupkan sistem output.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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: