İçindekiler:

Yelken için Sesli Anlatımlar: 11 Adım
Yelken için Sesli Anlatımlar: 11 Adım

Video: Yelken için Sesli Anlatımlar: 11 Adım

Video: Yelken için Sesli Anlatımlar: 11 Adım
Video: Kağıttan Gemi Yapımı (A4 kağıt) 2024, Temmuz
Anonim
Image
Image
Telltale Donanımı
Telltale Donanımı

Telltales, yelken boyunca türbülanslı veya laminer akış olup olmadığını belirtmek için yelkende kullanılan ip parçalarıdır. Ancak yelkenin her iki yanına yapıştırılan farklı renkteki iplikler tamamen görsel göstergelerdir. Bu sesli anlatımlar, Pauline gibi hem gören hem de görme engelli denizciler için görsel bilgiyi işitsel bir biçimde iletmeyi amaçlayan yardımcı bir cihazdır.

Cihaz, göstergenin hareketini okuyan bir giriş sisteminden ve hava akışı bilgisini ileten bir dizi bip sesi çıkaran bir çıkış sisteminden oluşur.

Bu cihazın imalatında lehimleme ekipmanına ve bir 3D yazıcıya erişim gereklidir.

Adım 1: Malzeme Listesi

Bağlantılar ve fiyatlar içeren ürün reçetesi

Not: Aşağıdakilerin hepsinden 2 sete ihtiyacınız olacak.

Giriş Sistemi

  • Arduino Nano
  • Adafruit perma-proto yarım boyutlu devre kartı PCB
  • nRF24L01 Kablosuz Alıcı-Verici Modülü
  • Fotoğraf Kesici
  • Sparkfun Fotoğraf Kesici Koparma Kartı
  • Arduino Uyumlu 9V pil takımı
  • 9V pil
  • 22 Gauge telin birkaç uzunluğu
  • İplik
  • Neodim mıknatıslar
  • Epoksi

Çıkış Sistemi

  • Arduino Nano
  • Adafruit perma-proto yarım boyutlu devre kartı PCB
  • nRF24L01 Kablosuz Alıcı-Verici Modülü
  • Arduino Uyumlu 9V pil takımı
  • 1K Ohm potansiyometre
  • 120 Ohm direnç
  • 2N3904 transistör
  • 0.1 uF kapasitör
  • Arduino uyumlu Hoparlör

GitHub Dosyaları

  • Bu anlatıları oluşturmak için gereken tüm kod ve STL dosyaları bu GitHub deposunda bulunabilir.
  • İki set muhafazaya ve bir hoparlör muhafazasına ihtiyacınız olacak.

2. Adım: Araçlar/Makineler/Yazılım Gereksinimleri

Arduino'yu programlamak için Arduino IDE'yi indirmeniz gerekir. İndirme bağlantısı burada bulunabilir.

nRF24L01 modülünü programlamak için kütüphanesini Arduino IDE üzerinden indirmeniz gerekecektir. Araçlar > Kitaplıkları Yönet… > RF24 kitaplığını kur

Elektronik bileşenleri monte etmek için temel lehimleme araçlarına erişim gereklidir. Bir lehim sökme pompası da faydalı olabilir ancak gerekli değildir.

Anlatım çerçevesini ve hoparlör kutusunu oluşturmak için bir 3D yazıcıya erişmeniz gerekir.

3. Adım: Telltale Donanımı

Telltale Donanımı
Telltale Donanımı
Telltale Donanımı
Telltale Donanımı

Devreyi yukarıdaki şemalara göre kurunuz. Arduino Nano, protokolün üst kısmı ile hizalanmalıdır. Bu, tüm elektronik aksamlar takıldıktan sonra bile USB bağlantı noktasına erişmenizi sağlar.

Elektroniğin kısa devre yapmasını önlemek için, yukarıdaki resimde gösterildiği gibi, nRF24'ün kaplayacağı satırlarda protoboard izlerini kestiğinizden emin olun.

Aksi takdirde, nRF24'ü protokole bağlamak için atlama kablolarına ihtiyacınız olacaktır.

Foto kesiciye giden direnç bağlantısı, GND ve 5V kabloları gösterilmemiştir. Foto kesiciyi, devre kartında belirtildiği şekilde bağlayın. Ara panosunun bir görüntüsü dahildir.

Sağ ve Sol anlatıların devreleri tamamen aynıdır.

4. Adım: Telltale Yazılımı

İşte Doğru anlatımın kodu. Doğru anlatımın nano'sunu bilgisayarınıza bağlayın, Arduino IDE'yi açın, bu kodu kopyalayıp içine yapıştırın ve panoya yükleyin.

/** Anlatımı incelemek için fotoğraf geçidini kullanan program

*/ #include #include #include #include RF24 telsiz(9, 10); // CE, CSN sabit bayt adresi[6] = "00010"; //---program sabitleri--- //zaman sabiti int string_check_time = 1; const int akış_kontrol_zamanı = 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; //yukarıdaki değişkeni kendi deneysel denemelerinize göre ayarlayın 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 değişkenleri--- int num_string_seen = 0; int sayı_döngüleri = 0; void setup() { //while(!Serial); // flora için //gecikme(500); num_string_seen = 0; sayı_döngüleri = 0; pinMode(GATE_PIN, GİRİŞ); pinMode(GATE_PIN_2, GİRİŞ); Seri.başla(115200); // hata ayıklamak için radio.begin(); radio.openWritingPipe(adres); radio.setPALevel(RF24_PA_MIN); radyo.stopListening(); } void loop() { // tekrar tekrar çalıştırmak için ana kodunuzu buraya koyun: if(num_loops % string_check_time == 0){ //kontrol string state check_string(); } if(num_loops == flow_check_time){ //akışı inceleyin //Serial.println(num_string_seen); int akış_sayısı = inceleme_akış(); //değerleri gönder send_out(flow_num); //değişkenleri sıfırla num_string_seen = 0; sayı_döngüleri = 0; gecikme(flow_check_delay); } sayı_döngüleri++; gecikme (temel_gecikme); } /* *Dizenin geçitten geçip geçmediğini kontrol etme yöntemi */ void check_string(){ int string_state = digitalRead(GATE_PIN); //Serial.println(string_state); if (string_state == 0){ num_string_seen++; //Serial.println("Dize gördüm!"); }

int bot_state = digitalRead(GATE_PIN_2);

if (bot_state == 0){ num_string_seen--; //Serial.println("alttaki dize!"); } //Serial.print("Geçişleri sayma: "); //Serial.println(num_string_seen); dönüş; } /* * Zaman dizisinin geçidi hangi oranda kapsadığını analiz etme yöntemi */ int inceleme_akış(){ double yüzde_seen = double(num_string_seen)/max_in_flow; Serial.print("Kapsam yüzdesi: "); printDouble(yüzde_görülen, 100); // değeri iletişim ölçeğine göre ölçeklendir 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)) * kesinlik; else frac = (int(val)- val) * kesinlik; Serial.println(frac, DEC); }

İşte Sol anlatımın kodu. Sol anlatım için yukarıdaki adımların aynısını izleyin. Gördüğünüz gibi, tek fark, anlatımın sonuçlarını gönderdiği adrestir.

/** Anlatımı incelemek için fotoğraf geçidini kullanan program

*/ #include #include #include #include RF24 telsiz(9, 10); // CE, CSN sabit bayt adresi[6] = "00001"; //---program consts--- //zaman 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; //yukarıdaki değişkeni kendi deneysel denemelerinize göre ayarlayın 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 değişkenleri--- int num_string_seen = 0; int sayı_döngüler = 0; void setup() { //while(!Serial); // flora için //gecikme(500); num_string_seen = 0; sayı_döngüleri = 0;

pinMode(GATE_PIN, GİRİŞ);

pinMode(GATE_PIN_2, GİRİŞ); Seri.başla(115200); // hata ayıklamak için radio.begin(); radio.openWritingPipe(adres); radio.setPALevel(RF24_PA_MIN); radyo.stopListening(); }void loop() { // tekrar tekrar çalıştırmak için ana kodunuzu buraya koyun: if(num_loops % string_check_time == 0){ //kontrol string state check_string(); } if(num_loops == flow_check_time){ //akışı inceleyin //Serial.println(num_string_seen); int akış_sayısı = inceleme_akış(); //değerleri gönder send_out(akış_num); //değişkenleri sıfırla num_string_seen = 0; sayı_döngüleri = 0; gecikme(flow_check_delay); } sayı_döngüleri++; gecikme (temel_gecikme); } /* *Dizenin geçitten geçip geçmediğini kontrol etme yöntemi */ void check_string(){ int string_state = digitalRead(GATE_PIN); //Serial.println(string_state); if (string_state == 0){ num_string_seen++; //Serial.println("Dize gördüm!"); }

int bot_state = digitalRead(GATE_PIN_2);

if (bot_state == 0){ num_string_seen--; //Serial.println("alttaki dize!"); } //Serial.print("Geçişleri sayma: "); //Serial.println(num_string_seen); dönüş; } /* * Zaman dizisinin geçidin hangi kısmını kapsadığını analiz etme yöntemi */ int Exam_flow(){ double yüzde_seen = double(num_string_seen)/max_in_flow; Serial.print("Kapsam yüzdesi: "); printDouble(yüzde_görülen, 100); // değeri iletişim ölçeğine göre ölçeklendir 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)) * kesinlik; else frac = (int(val)- val) * kesinlik; Serial.println(frac, DEC); }

Adım 5: Telltale Montajı

Telltale Meclisi
Telltale Meclisi

Bireysel Parçalar

  • anlatı çerçevesi
  • İplik
  • İnşa edilmiş anlatım devresi
  • Pil paketi
  • Elektrik bandı
  • epoksi veya yapıştırıcı

3D baskı anlatı bileşenleri için STL'ler

  • Anlatım çerçevesi için STL: sol, sağ
  • Elektronik kutusu için STL'ler: üst, alt

Montaj Talimatları

  1. Çubuk mıknatısları 3D baskılı gösterge çerçevesinin yuvalarına yerleştirin. Mıknatısların sağ çerçeve ile sol çerçeve arasında düzgün bir şekilde hizalandığından emin olun, ardından mıknatısları çerçeveye sabitlemek için epoksi (veya yapıştırıcı) kullanın. Epoksinin (veya yapıştırıcının) tamamen yerleşmesine izin verin.
  2. Fotoğraf kesicileri çerçevenin arkasındaki üst ve alt yuvalara yerleştirin. Fotoğraf kesme panolarını çerçeveye dikkatlice epoksi (veya yapıştırın). Epoksinin (veya yapıştırıcının) tamamen yerleşmesine izin verin
  3. İplik parçasında ~ 7 kesin. İpliğin bir ucunu ilk dikey çubuğun çentiğine bağlayın. Küçük bir elektrik bandı parçası kesin ve elektrik bandını ipliğin foto kesiciler bölgesinde olacak kısmı üzerine sarın. İpliği, fotoğraf kesici kapısının boşluğundan geçecek şekilde çerçeveden geçirin.
  4. Çubuk mıknatısları, 3D baskılı elektronik kutusunun altındaki yuvalara yerleştirin. Mıknatısların sağ kutu ile sol kutu arasında düzgün bir şekilde hizalandığından emin olun, ardından mıknatısları çerçeveye sabitlemek için epoksi (veya yapıştırıcı) kullanın. Epoksinin (veya yapıştırıcının) tamamen yerleşmesine izin verin.
  5. Farklı bileşenleri yuvalarına hizalayarak, inşa edilmiş gösterge devresini elektronik kutuya yerleştirin. Kutuyu 3D baskılı elektronik kutu üstü ile kapatın. Anahtarın açıkta kalması için pil takımını kutunun üstüne epoksi (veya yapıştırın) yapın.

Adım 6: Hoparlör Donanımı

Hoparlör Donanımı
Hoparlör Donanımı
Hoparlör Donanımı
Hoparlör Donanımı
Hoparlör Donanımı
Hoparlör Donanımı

Çıkış sistemi, kablosuz iletişim ve ses ayar düğmesi ile donatılmış, her biri için bir tane olmak üzere iki hoparlör devresinden oluşur. İlk olarak, kartın yerleştirileceği iki sıra pini ayıran kabloları keserek, anlatı devrelerinde yaptığımız gibi, protoboardları nRF24L01 modülleri ile kullanıma hazırlayın.

Ardından, tamamlanmış devrelerin fotoğraflarına bakarak devreyi yukarıdaki şemada gösterildiği gibi monte edin.

Pano Montaj Talimatları

Panoları hoparlör kasasına yerleştirmek için ana bileşenlerin panonun belirli alanlarına yerleştirilmesi gerekir. Aşağıdaki talimatlarda Adafruit protoboardunda satırları ve sütunları belirtmek için kullanılan koordinat sisteminden bahsedeceğim:

  1. Arduino Nano, Vin pininin G16'da konumlandırılması için ortada kartın üst kenarına yerleştirilmelidir. Bu, devre monte edildikten sonra Arduino Nano'nun kolayca yeniden programlanmasını sağlayacaktır.
  2. nRF24L01 kartı, C1'den D5'e kadar sekiz konumu kapsayan kartın sağ alt köşesine yerleştirilmelidir. Bu, daha iyi kablosuz iletişime izin vermek için nRF24L01'in protokolden asılı kalmasına neden olacaktır.
  3. Hoparlör sisteminin pil takımı her iki protokol kartına da güç sağlar, bu nedenle iki Arduino Nano'nun GND raylarını/pinlerini ve Vin pinlerini güç kaynağına bağladığınızdan emin olun.
  4. 'Alt' devre için, potansiyometre, pinleri J2, J4 ve J6 konumlarına yerleştirilecek şekilde kartın üst kısmına dışa bakacak şekilde yerleştirilmelidir.

    1. J2 ↔ Dijital pin 3'ten (D3) Arduino Nano çıkışı
    2. J4 ↔ 2N3904 transistörün taban pimi
    3. J6 ↔ bağlı değil
  5. 'Üst' devre için, potansiyometre, pinleri J9, J11 ve J13 konumlarına yerleştirilecek şekilde kartın alt kısmına dışa bakacak şekilde yerleştirilmelidir.

    1. J13 ↔ Dijital pin 3'ten (D3) Arduino Nano çıkışı
    2. J11 ↔ 2N3904 transistörün taban pimi
    3. J9 ↔ bağlı değil

7. Adım: Hoparlör Yazılımı

Sol anlatı ile iletişim kuran konuşmacının kodu burada. Alt hoparlör kartındaki Arduino Nano'yu bilgisayarınıza bağlayın, Arduino IDE'yi açın, bu kodu kopyalayıp içine yapıştırın ve panoya yükleyin.

#Dahil etmek

#include #include RF24 radyo(7, 8); // CE, CSN //sol anlatım, üst hoparlör kartı sabit bayt adresi[6] = "00001"; const int adım = 2000; const int pitch_duration = 200; const int konuşmacı = 3; const int gecikme_kazanç = 100; int durum = 0; int cur_delay = 0; karakter okuma[2]; void setup() { pinMode(hoparlör, ÇIKIŞ); Seri.başla(115200); Serial.println("Kablosuz iletişim başlatılıyor…"); radyo.begin(); radio.openReadingPipe(0, adres); radio.setPALevel(RF24_PA_MIN); radio.startListening(); } void loop() { if(radio.available()) { radio.read(&read, sizeof(read)); durum = (int)(oku[0]-'0'); Serial.print("Alınan: "); Serial.println(durum); cur_delay = delay_gain*status; } if (cur_delay) { tone(hoparlör, perde, perde_duration); gecikme(cur_delay + pitch_duration); Serial.println("Bip!"); } }

İşte doğru anlatımla iletişim kuran konuşmacının kodu. Üst hoparlör kartındaki Arduino Nano'yu bilgisayarınıza bağlayın, Arduino IDE'yi açın, bu kodu kopyalayıp içine yapıştırın ve panoya yükleyin.

#Dahil etmek

#include #include RF24 radyo(7, 8); // CE, CSN //sağ gösterge, alt hoparlör kartı sabit bayt adresi[6] = "00010"; const int adım = 1500; const int pitch_duration = 200; const int konuşmacı = 3; const int gecikme_kazanç = 100; int durum = 0; int cur_delay = 0; karakter okuma[2]; void setup() { pinMode(hoparlör, ÇIKIŞ); Seri.başla(115200); Serial.println("Kablosuz iletişim başlatılıyor…"); radyo.begin(); radio.openReadingPipe(0, adres); radio.setPALevel(RF24_PA_MIN); radio.startListening(); } void loop() { if (radio.available()) { radio.read(&read, sizeof(read)); durum = (int)(oku[0]-'0'); Serial.print("Alınan: "); Serial.println(durum); cur_delay = delay_gain*status; } if (cur_delay) { tone(hoparlör, perde, perde_duration); gecikme(cur_delay+pitch_duration); Serial.println("Bip!"); } }

Adım 8: Hoparlör Montajı

Bireysel Parçalar

  • 2 inşa edilmiş hoparlör devresi
  • 2 hoparlör
  • 1 pil takımı

3D baskı için STL'ler

  • Kutu üstü
  • kutu alt

Fiziksel Montaj Talimatları

  1. Hoparlör devrelerini dikkatlice kutunun altına, bir kart diğerinin üzerine, ses düğmeleri yan yana gelecek ve deliklere girecek şekilde dikkatlice yerleştirin. İletişim çipleri kutunun arkasında açıkta kalmalıdır.
  2. Hoparlörleri devre kartının soluna ve sağına yerleştirin, hoparlörlerin doğru yan taraflara karşılık geldiğinden emin olun. Hoparlörleri kutunun yanlarındaki yuvalara hizalayın.
  3. Pil takımı kablolarını kutunun arkasındaki küçük delikten geçirin. Anahtar açıkta kalacak şekilde pil takımını kutunun arkasına epoksileyin (veya yapıştırın).
  4. Her şeyi içermesi için 3D baskılı kutuyu kutunun altına yerleştirin.

Adım 9: Kurulum/Montaj

Kurulum/Montaj
Kurulum/Montaj
  1. Pil paketlerindeki anahtarları 'AÇIK' konuma çevirerek uyarıları açın. Çıkış sistemini açmak için hoparlör düzeneği için de aynısını yapın.
  2. Sesli anlatımların montajı en kolay iki kişiyle yapılır, ancak bir kişiyle de yapılabilir. Sarılmayan bir flok üzerine monte etmek için, en kolay şekilde yelkeni kaldırmadan önce uyarılar takılabilir.
  3. Anlatım çerçevesinin doğru yönlendirildiğinden emin olmak için dikey çubuklardan birindeki çentiğe bakın. Çerçeveyi dik tutarken çentik üste doğru olmalıdır. Çerçevenin bu çubuğa sahip tarafı da teknenin önüne bakmalıdır.
  4. Masallardan birini yelken üzerinde istenilen yüksekliğe ve konuma yerleştirin. İplik, geleneksel bir masalın parçası olsaydı olacağı yerde olacak şekilde yerleştirilmelidir.
  5. İstediğiniz pozisyonda bir hikayeniz olduğunda. Mıknatıslar aynı hizada olacak şekilde, diğerini yelkenin diğer tarafına, ilk yerleştirdiğinizin tam karşısına yerleştirin. Mıknatıslar bir kez bağlantı kurduktan sonra çerçeveyi yelkene sağlam bir şekilde tutmalıdır. Elektronik muhafazaların mıknatıslarını, yelkenin her iki tarafındaki her bir hikaye için, aynı zamanda bağlanacakları şekilde hizalayın.
  6. İp dümdüz geri akarken üst kapının önünden geçmediğini fark ederseniz, çerçeveyi, çerçevenin arka yarısı aşağı gelecek şekilde çevirin. İplik düz geri akarken, ip üst foto kesiciden geçene kadar çerçeveyi döndürün.

Adım 10: Sorun Giderme

Tüm kod parçaları, veri gönderdiklerini, aldıklarını ve işlediklerini belirtmek için hata ayıklama yazdırma ifadelerine sahiptir. Bir bilgisayara takılı Arduino Nano alt sistemlerinden biri ile Arduino IDE kullanarak COM portunu açmak, bu durum mesajlarını görmenizi sağlayacaktır.

Sistem düzgün çalışmıyorsa, tüm bileşenlerin anahtarlarını değiştirin.

11. Adım: Olası Sonraki Adımlar

  • su yalıtımı
  • Daha uzun menzilli iletişim. WiFi umut verici bir seçenek olabilir.
  • Mevcut kurulumumuz şu anda her bir anlatım için 2 fotoğraf kesici kullanıyor. Sisteme daha fazla fotoğraf kesici eklemek ilginç olabilir.

Önerilen: