Mündəricat:

Yelkənli Səsli Xəbərlər: 11 addım
Yelkənli Səsli Xəbərlər: 11 addım

Video: Yelkənli Səsli Xəbərlər: 11 addım

Video: Yelkənli Səsli Xəbərlər: 11 addım
Video: Heydər Əliyev və Həyat yoldaşını Birdə belə görün #azerbaijan #president #prezident #xeberler #xeber 2024, Iyul
Anonim
Image
Image
Telltale Avadanlıq
Telltale Avadanlıq

Telltales, yelkən boyunca turbulent və ya laminar axının olub olmadığını göstərmək üçün üzgüçülükdə istifadə olunan ip parçalarıdır. Ancaq yelkənin hər tərəfinə yapışdırılmış müxtəlif rəngli iplik parçaları sırf vizual göstəricilərdir. Bu səsli teletlər, Pauline kimi həm görmə qabiliyyətli, həm də görmə qüsurlu dənizçilər üçün vizual məlumatları eşitmə formasında çatdırmağı hədəfləyən köməkçi bir cihazdır.

Cihaz, xəbərin hərəkətini oxuyan bir giriş sistemindən və hava axını məlumatlarını ötürən bir sıra səs siqnalı verən bir çıxış sistemindən ibarətdir.

Bu cihazın istehsalında lehimləmə avadanlıqlarına və 3D printerə giriş tələb olunur.

Addım 1: Materiallar Bill

Əlaqələri və qiymətləri olan BOM

Qeyd: Aşağıdakıların hamısından 2 dəstə ehtiyacınız olacaq.

Giriş Sistemi

  • Arduino Nano
  • Adafruit perma-proto yarım ölçülü çörək taxtası PCB
  • nRF24L01 Simsiz Telsiz Modulu
  • Foto kəsici
  • Sparkfun Şəkil kəsən kəsmə lövhəsi
  • Arduino Uyğun 9V batareya paketi
  • 9V batareya
  • 22 ölçü telinin bir neçə uzunluğu
  • İplik
  • Neodim maqnitləri
  • Epoksi

Çıxış Sistemi

  • Arduino Nano
  • Adafruit perma-proto yarı ölçülü çörək taxtası PCB
  • nRF24L01 Simsiz Telsiz Modulu
  • Arduino Uyğun 9V batareya paketi
  • 1K Ohm potensiometr
  • 120 Ohm müqavimət
  • 2N3904 tranzistor
  • 0.1 uF kondansatör
  • Arduino ilə uyğun dinamik

GitHub Faylları

  • Bu nağılları qurmaq üçün lazım olan bütün kod və STL sənədlərini bu GitHub repo -da tapa bilərsiniz.
  • İki dəst korpusa və dinamik yuvasına ehtiyacınız olacaq.

Addım 2: Alətlər/Maşınlar/Proqram Tələbləri

Arduino proqramlaşdırmaq üçün Arduino IDE -ni yükləməlisiniz. Yükləmə linki burada tapa bilərsiniz.

NRF24L01 modulunu proqramlaşdırmaq üçün kitabxanasını Arduino IDE vasitəsilə yükləməlisiniz. Alətlər> Kitabxanaları İdarə et …> RF24 kitabxanasını quraşdırın

Elektron komponentləri yığmaq üçün əsas lehimləmə vasitələrinə giriş tələb olunur. Sökmə nasosu da faydalı ola bilər, lakin lazım deyil.

Nağıl çərçivəsi və dinamik qutusu qurmaq üçün 3D printerə girişiniz lazımdır.

Addım 3: Telltale Hardware

Telltale Avadanlıq
Telltale Avadanlıq
Telltale Avadanlıq
Telltale Avadanlıq

Dövrəni yuxarıdakı diaqramlara uyğun olaraq yığın. Arduino Nano protoboardın üst tərəfinə uyğunlaşdırılmalıdır. Bu, bütün elektronikalar bağlandıqdan sonra da USB portuna daxil olmağa imkan verir.

Elektronikanı qısaltmamaq üçün, yuxarıdakı şəkildə göstərildiyi kimi nRF24 -ün tutacağı sətirlərdə protoboardın izlərini kəsdiyinizə əmin olun.

Əks təqdirdə, nRF24 -ü protoboya bağlamaq üçün keçid kabellərinə ehtiyacınız olacaq.

Rezistor bağlantısı, GND və 5V telləri fotoşəkil kəsiciyə təsvir edilmir. Fotoşəkil kəsicisini qırılma lövhəsində göstərildiyi kimi bağlayın. Qırılma lövhəsinin bir görüntüsü daxil edilmişdir.

Sağ və Sol danışma sxemləri tam eynidır.

Addım 4: Telltale Proqramı

Budur sağ nağılın kodu. Right telltale -in nanosunu kompüterinizə qoşun, Arduino IDE -ni açın, bu kodu kopyalayıb yapışdırın və lövhəyə yükləyin.

/** Nağılları araşdırmaq üçün fotogat istifadə edən proqram

*/ #include #include #include #include RF24 radiosu (9, 10); // CE, CSN const bayt ünvanı [6] = "00010"; // --- proqram 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; // yuxarıdakı var -ı öz eksperimental sınaqlarına əsaslanaraq 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 num_loops = 0; void setup () {// while (! Serial); // flora üçün // gecikmə (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, GİRİŞ); pinMode (GATE_PIN_2, GİRİŞ); Serial.begin (115200); // radio.begin () ayıklama üçün; radio.openWritingPipe (ünvan); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// əsas kodunuzu bura qoyun, təkrar işləsin: if (num_loops % string_check_time == 0) {// string status check_string (); } if (num_loops == flow_check_time) {// axını yoxlayın //Serial.println(num_string_seen); int flow_num = examine_flow (); // göndərmə dəyərləri send_out (flow_num); // sıfırla vars_sayt_seen = 0; num_loops = 0; gecikmə (flow_check_delay); } num_loops ++; gecikmə (baza gecikməsi); } / * *Stringin qapıdan keçib keçmədiyini yoxlamaq üsulu * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); əgər (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

əgər (bot_state == 0) {num_string_seen--; //Serial.println("solda sim! "); } //Serial.print("Sayt xətti keçir: "); //Serial.println(num_string_seen); qayıtmaq; }/ * * Vaxtın hansı hissəsinin darvazanı əhatə etdiyini təhlil etmək üsulu */int examine_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Yüzdə əhatə:"); printDouble (yüzdə_görünən, 100); // dəyərin ünsiyyət miqyasına qədər ölçülməsi int scaled_flow = int (yüzde_görünən * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * dəqiqlik; else frac = (int (val)- val) * dəqiqlik; Serial.println (frac, DEC); }

Sol sözün kodu budur. Sol danışma üçün yuxarıdakılarla eyni addımları izləyin. Gördüyünüz kimi, yeganə fərq, xəbərin nəticələrini göndərdiyi ünvandır.

/** Nağılları araşdırmaq üçün fotogat istifadə edən proqram

*/ #include #include #include #include RF24 radiosu (9, 10); // CE, CSN const bayt ünvanı [6] = "00001"; // --- proqram 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; // yuxarıdakı var -ı öz eksperimental sınaqlarına əsaslanaraq 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 num_loops = 0; void setup () {// while (! Serial); // flora üçün // gecikmə (500); num_string_seen = 0; num_loops = 0;

pinMode (GATE_PIN, GİRİŞ);

pinMode (GATE_PIN_2, GİRİŞ); Serial.begin (115200); // radio.begin () ayıklama üçün; radio.openWritingPipe (ünvan); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// təkrar etmək üçün əsas kodunuzu bura qoyun: if (num_loops % string_check_time == 0) {// string status check_string (); } if (num_loops == flow_check_time) {// axını yoxlayın //Serial.println(num_string_seen); int flow_num = examine_flow (); // göndərmə dəyərləri send_out (flow_num); // sıfırla vars_sayt_seen = 0; num_loops = 0; gecikmə (flow_check_delay); } num_loops ++; gecikmə (baza gecikməsi); } / * *Stringin qapıdan keçib keçmədiyini yoxlamaq üsulu * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); əgər (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

əgər (bot_state == 0) {num_string_seen--; //Serial.println("solda sim! "); } //Serial.print("Sayt xətti keçir: "); //Serial.println(num_string_seen); qayıtmaq; }/ * * Vaxtın hansı hissəsinin darvazanı əhatə etdiyini təhlil etmək üsulu */int examine_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Yüzdə əhatə:"); printDouble (yüzdə_görünən, 100); // dəyərin ünsiyyət miqyasına qədər ölçülməsi int scaled_flow = int (yüzde_görünən * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * dəqiqlik; else frac = (int (val)- val) * dəqiqlik; Serial.println (frac, DEC); }

Addım 5: Telltale Assambleyası

Nağıl Məclisi
Nağıl Məclisi

Fərdi hissələr

  • Nağıl çərçivəsi
  • İplik
  • Qurulmuş bir xəbər dövrəsi
  • Batareya paketi
  • Elektrik lenti
  • Epoksi və ya yapışqan

3D çap üçün məlumat verən komponentlər üçün STL -lər

  • Anlaşılan çərçivə üçün STL: sol, sağ
  • Elektron qutu üçün STL -lər: yuxarı, aşağı

Montaj Təlimatları

  1. Çubuq maqnitlərini 3D çaplı danışma çərçivəsinin yuvalarına yerləşdirin. Maqnitlərin sağ çərçivə ilə sol çərçivə arasında düzgün bir şəkildə hizalandığından əmin olun, sonra maqnitləri çərçivəyə bağlamaq üçün epoksi (və ya yapışqan) istifadə edin. Epoksi (və ya yapışqan) tamamilə bərkiməsinə icazə verin.
  2. Foto kəsiciləri çərçivənin arxasındakı yuxarı və aşağı yuvalara yerləşdirin. Foto kəsici lövhələri çərçivəyə diqqətlə epoksi (və ya yapışdırıcı) ilə yapışdırın. Epoksi (və ya yapışqan) tamamilə bərkiməsinə icazə verin
  3. ~ 7 iplik kəsin. İpliyin bir ucunu ilk şaquli çubuğun çuxuruna bağlayın. Kiçik bir elektrik lenti kəsin və elektrik lentini fotoşəkil kəsicilərin bölgəsində olacaq iplik hissəsinin üzərinə sarın. İpliyi foto kəsici qapısının boşluğundan keçməsi üçün çərçivədən keçirin.
  4. Çubuq mıknatısları, 3D çaplı elektronika qutusunun altındakı yuvalara yerləşdirin. Maqnitlərin sağ qutu ilə sol qutu arasında düzgün bir şəkildə yerləşdiyinə əmin olun, sonra maqnitləri çərçivəyə bağlamaq üçün epoksi (və ya yapışqan) istifadə edin. Epoksi (və ya yapışqan) tamamilə bərkiməsinə icazə verin.
  5. Fərqli komponentləri yuvalarına uyğunlaşdıraraq qurulmuş nağıl sxemini elektronika qutusuna yerləşdirin. 3D çaplı elektronika qutusunun üstü olan qutunu bağlayın. Batareyanı epoksi (və ya yapışqan) ilə bağlayın ki, açar açılsın.

Addım 6: Dinamik Donanımı

Dinamik Donanımı
Dinamik Donanımı
Dinamik Donanımı
Dinamik Donanımı
Dinamik Donanımı
Dinamik Donanımı

Çıxış sistemi simsiz rabitə və səs tənzimləmə düyməsi ilə təchiz edilmiş hər bir danışma üçün iki dinamik sxemdən ibarətdir. Birincisi, lövhənin yerləşdiriləcəyi iki sıra sancağı ayıran telləri kəsərək nağıl sxemləri üçün etdiyimiz kimi nRF24L01 modulları ilə istifadə üçün protoboardları hazırlayın.

Sonra, tamamlanmış sxemlərin fotoşəkillərinə istinad edərkən, yuxarıdakı diaqramda göstərildiyi kimi dövrə yığın.

İdarə Heyətinin Quraşdırılması Təlimatları

Lövhələri hoparlör qutusuna yığmaq üçün əsas komponentlər lövhənin müəyyən sahələrinə yerləşdirilməlidir. Aşağıdakı təlimatlarda, Adafruit protoboardındakı satır və sütunları ifadə etmək üçün istifadə olunan koordinat sisteminə istinad edəcəyəm:

  1. Arduino Nano, taxtanın yuxarı kənarına ortada yerləşdirilməlidir ki, Vin pimi G16 -da yerləşdirilsin. Bu, dövrə yığıldıqdan sonra Arduino Nanonun asanlıqla yenidən proqramlaşdırılmasına imkan verəcəkdir.
  2. NRF24L01 lövhəsi, C1 -dən D5 -ə qədər səkkiz mövqeyi əhatə edən lövhənin sağ alt küncünə yerləşdirilməlidir. Bu, nRF24L01 -in daha yaxşı simsiz ünsiyyətə imkan yaratmaq üçün protobolda asılmasını tərk edəcək.
  3. Dinamik sistemi üçün batareya paketi hər iki protoboya da güc verir, buna görə də iki Arduino Nanonun GND raylarını/pinlərini və Vin pinlərini enerji təchizatına bağladığınızdan əmin olun.
  4. "Alt" dövrə üçün, potensiometr lövhənin yuxarı tərəfinə baxmalı və pinləri J2, J4 və J6 mövqelərinə yerləşdirilməlidir.

    1. J2, rəqəmsal pin 3 -dən Arduino Nano çıxışı (D3)
    2. 2N3904 tranzistorlu J4 ↔ əsas pin
    3. J6 - əlaqəsiz
  5. "Üst" dövrə üçün, potensiometr lövhənin dibinə çölə baxaraq yerləşdirilməlidir ki, pinləri J9, J11 və J13 mövqelərinə yerləşdirilsin.

    1. J13 digital Arduino Nano rəqəmsal pin 3 -dən çıxışı (D3)
    2. J11 ↔ 2N3904 tranzistorlu əsas pin
    3. J9 - əlaqəsiz

Addım 7: Dinamik Proqramı

Sol nağılla danışan natiqin kodu budur. Alt dinamik panelindəki Arduino Nano'yu kompüterinizə bağlayın, Arduino IDE -ni açın, bu kodu kopyalayıb yapışdırın və lövhəyə yükləyin.

#daxil edin

#include #include RF24 radiosu (7, 8); // CE, CSN // sol nağıl, üst dinamik lövhəsi const bayt ünvanı [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int dinamik = 3; const int delay_gain = 100; int statusu = 0; int cur_delay = 0; char oxu [2]; boş quraşdırma () {pinMode (dinamik, ÇIXIŞ); Serial.begin (115200); Serial.println ("Simsiz ünsiyyətə başlanır …"); radio.begin (); radio.openReadingPipe (0, ünvan); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& oxumaq, sizeof (oxumaq)); status = (int) (oxuyun [0]-'0'); Serial.print ("Alındı:"); Serial.println (status); cur_delay = delay_gain*statusu; } if (cur_delay) {ton (dinamik, pitch, pitch_duration); gecikmə (cur_delay + pitch_duration); Serial.println ("Beep!"); }}

Doğru nağılla əlaqə quran natiqin kodu budur. Üst dinamik panelindəki Arduino Nano'yu kompüterinizə qoşun, Arduino IDE -ni açın, bu kodu kopyalayıb yapışdırın və lövhəyə yükləyin.

#daxil edin

#include #include RF24 radiosu (7, 8); // CE, CSN // sağ nağıl, alt dinamik panelinin const bayt ünvanı [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int dinamik = 3; const int delay_gain = 100; int statusu = 0; int cur_delay = 0; char oxu [2]; boş quraşdırma () {pinMode (dinamik, ÇIXIŞ); Serial.begin (115200); Serial.println ("Simsiz ünsiyyətə başlanır …"); radio.begin (); radio.openReadingPipe (0, ünvan); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& oxumaq, sizeof (oxumaq)); status = (int) (oxuyun [0]-'0'); Serial.print ("Alındı:"); Serial.println (status); cur_delay = delay_gain*statusu; } if (cur_delay) {ton (dinamik, pitch, pitch_duration); gecikmə (cur_delay+pitch_duration); Serial.println ("Bip!"); }}

Addım 8: Dinamiklər Məclisi

Fərdi hissələr

  • 2 qurulmuş dinamik dövrəsi
  • 2 dinamik
  • 1 ədəd batareya paketi

3D çap üçün STL -lər

  • Qutunun üstü
  • Alt qutu

Fiziki Quraşdırma Təlimatları

  1. Dinamik sxemlərini diqqətlə qutunun altına qoyun, bir lövhəni digərinin üstünə qoyun ki, səs düymələri bir -birinin yanında olsun və deliklərə sürüşsün. Rabitə çipləri qutunun arxasında görünməlidir.
  2. Dinamikləri düzgün lövhənin tərəflərinə uyğun olduğundan əmin olaraq, onları elektron kartın soluna və sağına yerləşdirin. Dinamikləri qutunun yan tərəfindəki yuvalara uyğunlaşdırın.
  3. Batareya paketinin tellərini qutunun arxasındakı kiçik çuxurdan keçirin. Batareyanı qutunun arxasındakı epoksi (və ya yapışqan) ilə açarın açılması üçün.
  4. Hər şeyi ehtiva etmək üçün 3D çap qutusunu qutunun altına qoyun.

Addım 9: Quraşdırma/Montaj

Quraşdırma/Quraşdırma
Quraşdırma/Quraşdırma
  1. Batareya paketlərindəki açarları "ON" vəziyyətinə çevirərək bildirişləri yandırın. Çıxış sistemini açmaq üçün hoparlör qurğusu üçün də eyni şeyi edin.
  2. Səsli teleskopların quraşdırılması ən asan iki nəfərlə edilir, ancaq bir nəfərlə edilə bilər. Qıvrımsız bir çubuğa montaj etmək üçün, yelkən qaldırılmadan əvvəl teletlər asanlıqla bağlanırdı.
  3. Nağıl çərçivəsinin düzgün istiqamətləndirildiyindən əmin olmaq üçün şaquli çubuqlardan birindəki çentikə baxın. Çərçivəni dik tutarkən çentik yuxarıya doğru olmalıdır. Bu çubuğu olan çərçivənin tərəfi də gəminin ön tərəfinə baxmalıdır.
  4. Nağıllardan birini istədiyiniz yüksəkliyə və yelkənə qoyun. İplik, ənənəvi bir nağılın bir hissəsi olsaydı, olduğu yerdə qalacaq şəkildə yerləşdirilməlidir.
  5. İstədiyiniz mövqedə bir nağıl danışdıqdan sonra. Başqa bir nağıl yelkənin digər tərəfinə qoyun, birincisinin tam əksinə, maqnitlər düzülür. Maqnitlər bir əlaqə qurduqdan sonra çərçivəni yelkənə möhkəm tutmalıdırlar. Yelkənin hər iki tərəfindəki hər bir nağıl üçün elektronika qutularının maqnitlərini sıralayın ki, onlar da birləşsinlər.
  6. İp düz geri dönəndə üst qapının qarşısından keçmədiyini görürsünüzsə, nağıl çərçivəsini elə çevirin ki, çərçivənin arxa yarısı aşağıya doğru baş çəksin. İplik düz geriyə axdıqda ip üst foto kəsicidən keçənə qədər çərçivəni döndərin.

Addım 10: Problemlərin aradan qaldırılması

Bütün kod parçaları, məlumatların göndərildiyini, qəbul edildiyini və işləndiyini ifadə etmək üçün debug çap ifadələrinə malikdir. Kompüterə qoşulmuş Arduino Nano alt sistemlərindən biri ilə Arduino IDE -dən istifadə edərək COM portunu açmaq, bu status mesajlarını görməyə imkan verəcəkdir.

Sistem düzgün işləmirsə, bütün komponentlərin açarlarını dəyişdirin.

Addım 11: Mümkün Növbəti Adımlar

  • Su yalıtımı
  • Daha uzun ünsiyyət. WiFi perspektivli bir seçimdir.
  • Mövcud qurğumuz hazırda hər bir xəbər üçün 2 şəkil kəsəndən istifadə edir. Sistemə daha çox şəkil kəsənlər əlavə etmək cəhd etmək maraqlı ola bilər.

Tövsiyə: