Съдържание:

Звукови сигнали за плаване: 11 стъпки
Звукови сигнали за плаване: 11 стъпки

Видео: Звукови сигнали за плаване: 11 стъпки

Видео: Звукови сигнали за плаване: 11 стъпки
Видео: Металотърсач Tianxun TX-850, LCD екран, Откриване на злато и сребро, Земен баланс, Бобина 11'' 2024, Ноември
Anonim
Image
Image
Telltale хардуер
Telltale хардуер

Контейнерите са въжета, използвани при плаване, за да се посочи дали има платно или бурно течение по платното. Различните цветни парчета прежда, прикрепени към всяка страна на платното, са чисто визуални индикатори. Тези звукови сигнали са помощно устройство, което има за цел да предаде визуалната информация в слухова форма както за зрящи, така и за хора с увредено зрение, като Полин.

Устройството се състои от система за въвеждане, която чете движението на сигнализатора, и система за изход, която излъчва поредица от звукови сигнали, предаващи информация за въздушния поток.

При производството на това устройство е необходим достъп до оборудване за запояване и 3D принтер.

Стъпка 1: Сметка на материалите

BOM с връзки и цени

Забележка: ще ви трябват 2 комплекта от всичко по -долу.

Входна система

  • Arduino Nano
  • Адаптурова перма-прото платка с половин размер за платка
  • nRF24L01 безжичен трансийвър модул
  • Фото прекъсвач
  • Sparkfun Photo Interrupter Breakout Board
  • Съвместима с Arduino батерия 9V
  • 9V батерия
  • Няколко дължини на тел 22 Gauge
  • Прежди
  • Неодимови магнити
  • Епоксидна смола

Изходна система

  • Arduino Nano
  • Адаптурова перма-прото платка с половин размер за платка
  • nRF24L01 безжичен трансийвър модул
  • Съвместима с Arduino батерия 9V
  • Потенциометър 1K Ohm
  • Резистор 120 ома
  • 2N3904 транзистор
  • 0,1 uF кондензатор
  • Съвместим с Arduino високоговорител

GitHub файлове

  • Всички кодови и STL файлове, необходими за конструирането на тези контролни сигнали, могат да бъдат намерени в това репо GitHub.
  • Ще ви трябват два комплекта корпус и един от корпуса на високоговорителите.

Стъпка 2: Изисквания за инструменти/машини/софтуер

За да програмирате Arduino, ще трябва да изтеглите Arduino IDE. Връзката за изтегляне може да се намери тук.

За да програмирате модула nRF24L01, ще трябва да изтеглите неговата библиотека чрез IDE на Arduino. Инструменти> Управление на библиотеки …> инсталиране на библиотека RF24

За сглобяването на електронните компоненти е необходим достъп до основни инструменти за запояване. Помпата за разпаяване също може да бъде полезна, но не е задължителна.

За да конструирате сигналната рамка и корпуса на високоговорителите, ще ви е необходим достъп до 3D принтер.

Стъпка 3: Telltale хардуер

Telltale хардуер
Telltale хардуер
Telltale хардуер
Telltale хардуер

Сглобете веригата съгласно схемите по -горе. Arduino Nano трябва да бъде подравнен с горната част на протоборда. Това ви позволява да имате достъп до USB порта дори след като цялата електроника е свързана.

За да избегнете късо съединение на електрониката, не забравяйте да изрежете следите от протоборда върху редовете, които nRF24 ще заема, както е показано на изображението по -горе.

В противен случай ще ви трябват джъмперни кабели, за да свържете nRF24 към протоборда.

Резисторната връзка, GND и 5V проводниците към фотопрекъсвача не са изобразени. Свържете прекъсвача за снимки, както е посочено на неговата табла. Включено е изображение на пробивната дъска.

Веригите за дясната и лявата сигнализатори са абсолютно еднакви.

Стъпка 4: Софтуер Telltale

Ето кода за дясната сигнализация. Свържете Nano на Right Telltale към вашия компютър, отворете Arduino IDE, копирайте и поставете този код в него и го качете на дъската.

/** Програма, която използва photogate за изследване на сигнала

*/ #include #include #include #include RF24 радио (9, 10); // CE, CSN const байт адрес [6] = "00010"; // --- програма consts --- // време 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; // задайте по -горе var въз основа на вашите собствени експериментални опити 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 // --- променливи на програмата --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serial); // за флора // забавяне (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // за отстраняване на грешки radio.begin (); radio.openWritingPipe (адрес); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// поставете основния си код тук, за да се изпълнява многократно: if (num_loops % string_check_time == 0) {// проверете състоянието на низа check_string (); } if (num_loops == flow_check_time) {// изследване на потока //Serial.println(num_string_seen); int поток_нум = преглед_поток (); // изпраща стойности send_out (flow_num); // нулиране на vars num_string_seen = 0; num_loops = 0; забавяне (flow_check_delay); } num_loops ++; забавяне (base_delay); } / * *Метод за проверка дали низът пресича порта * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

if (bot_state == 0) {num_string_seen--; //Serial.println(" низ на дъното! "); } //Serial.print("Counting string pass: "); //Serial.println(num_string_seen); връщане; }/ * * Метод за анализ на каква част от времевия низ обхваща порта */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Процент покрит:"); printDouble (percent_seen, 100); // мащабира стойността до комуникационна скала int scaled_flow = int (процент_видян * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * прецизност; else frac = (int (val)- val) * прецизност; Serial.println (фрактура, DEC); }

Ето кода за лявата сигнализация. Следвайте същите стъпки, както по -горе за лявата сигнализация. Както можете да видите, единствената разлика е адресът, на който сигнализаторът изпраща резултатите си.

/** Програма, която използва photogate за изследване на сигнала

*/ #include #include #include #include RF24 радио (9, 10); // CE, CSN const байт адрес [6] = "00001"; // --- програма consts --- // време 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; // задайте по -горе var въз основа на вашите собствени експериментални опити 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 // --- променливи на програмата --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serial); // за флора // забавяне (500); num_string_seen = 0; num_loops = 0;

pinMode (GATE_PIN, INPUT);

pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // за отстраняване на грешки radio.begin (); radio.openWritingPipe (адрес); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// поставете основния си код тук, за да се изпълнява многократно: if (num_loops % string_check_time == 0) {// проверете състоянието на низа check_string (); } if (num_loops == flow_check_time) {// изследване на потока //Serial.println(num_string_seen); int поток_нум = преглед_поток (); // изпраща стойности send_out (flow_num); // нулиране на vars num_string_seen = 0; num_loops = 0; забавяне (flow_check_delay); } num_loops ++; забавяне (base_delay); } / * *Метод за проверка дали низът пресича порта * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

if (bot_state == 0) {num_string_seen--; //Serial.println(" низ на дъното! "); } //Serial.print("Counting string pass: "); //Serial.println(num_string_seen); връщане; }/ * * Метод за анализ на каква част от времевия низ обхваща порта */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Процент покрит:"); printDouble (percent_seen, 100); // мащабира стойността до комуникационна скала int scaled_flow = int (процент_видян * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * прецизност; else frac = (int (val)- val) * прецизност; Serial.println (фрактура, DEC); }

Стъпка 5: Контролно събрание

Контролна асамблея
Контролна асамблея

Отделни части

  • Контролна рамка
  • Прежди
  • Изградена сигнална верига
  • Батерия
  • Електрическо тиксо
  • Епоксидна смола или лепило

STL за триизмерни печатни компоненти

  • STL за сигнална рамка: ляво, дясно
  • STL за кутия за електроника: отгоре, отдолу

Инструкции за сглобяване

  1. Поставете лентови магнити в слотовете на 3D отпечатаната сигнална рамка. Уверете се, че магнитите се подреждат правилно между дясната рамка и лявата рамка, след това използвайте епоксидна смола (или лепило), за да закрепите магнитите към рамката. Оставете епоксидната смола (или лепилото) да стегне напълно.
  2. Поставете прекъсвачите за снимки в горния и долния слот в задната част на рамката. Внимателно епоксидна (или залепена) дъска за фото прекъсвачи към рамката. Оставете епоксидната смола (или лепилото) да стегне напълно
  3. Изрежете ~ 7 на парче прежда. Завържете единия край на преждата в прореза на първата вертикална лента. Изрежете малко парче електрическа лента и увийте електрическата лента върху участъка от преждата, който ще бъде в областта на фото прекъсвачите. Прокарайте преждата през рамката, така че да премине през пролуката на портата за прекъсване на снимки.
  4. Поставете лентови магнити в слотовете на дъното на кутията за електроника с 3D печат. Уверете се, че магнитите се подреждат правилно между дясната и лявата кутия, след това използвайте епоксидна смола (или лепило), за да закрепите магнитите към рамката. Оставете епоксидната смола (или лепилото) да стегне напълно.
  5. Поставете изградената сигнална верига в кутията за електроника, като подравните различните компоненти към техните слотове. Затворете кутията с 3D печатна електроника отгоре. Епоксидна (или лепило) батерията към горната част на кутията, така че превключвателят да е открит.

Стъпка 6: Хардуер на високоговорителите

Хардуер за високоговорители
Хардуер за високоговорители
Хардуер за високоговорители
Хардуер за високоговорители
Хардуер за високоговорители
Хардуер за високоговорители

Изходната система се състои от две вериги за високоговорители, по една за всяка сигнализация, оборудвани с безжична комуникация и копче за регулиране на силата на звука. Първо, подгответе протобордовете за използване с модулите nRF24L01, както направихме за контролните вериги, като изрежете проводниците, разделящи двата реда щифтове, където ще бъде поставена платката.

След това сглобете веригата, както е показано на диаграмата по -горе, като се позовавате на снимките на завършените вериги.

Инструкции за сглобяване на борда

За да подреждате платките в корпуса на високоговорителите, основните компоненти трябва да бъдат поставени в определени области на платката. В следващите инструкции ще имам предвид координатната система, използвана за обозначаване на редове и колони на протоборда Adafruit:

  1. Arduino Nano трябва да бъде поставен срещу горния ръб на дъската в центъра, така че щифтът Vin да е позициониран в G16. Това ще позволи лесно препрограмиране на Arduino Nano след сглобяването на веригата.
  2. Платката nRF24L01 трябва да бъде поставена в долния десен ъгъл на дъската, обхващаща осемте позиции от C1 до D5. Това ще остави nRF24L01 да виси на протоборда, за да позволи по -добра безжична комуникация.
  3. Батерията за акустичната система захранва и двете протобордове, така че не забравяйте да свържете двете GND релси/щифтове на Arduino Nano и щифтове Vin към захранването.
  4. За „долната“верига потенциометърът трябва да бъде поставен в горната част на платката с лице към външната страна, така че щифтовете му да са поставени в позиции J2, J4 и J6

    1. J2, Arduino Nano изход от цифров извод 3 (D3)
    2. J4 ↔ основен щифт на 2N3904 транзистор
    3. J6 ↔ несвързан
  5. За „горната“верига потенциометърът трябва да бъде поставен в долната част на платката с лице към външната страна, така че щифтовете му да са поставени в позиции J9, J11 и J13

    1. J13 output Arduino Nano изход от цифров извод 3 (D3)
    2. J11 ↔ основен щифт на 2N3904 транзистор
    3. J9 ↔ несвързан

Стъпка 7: Софтуер за високоговорители

Ето кода за високоговорителя, който комуникира с лявата сигнализация. Свържете Arduino Nano на дъното на високоговорителя към вашия компютър, отворете Arduino IDE, копирайте и поставете този код в него и го качете на дъската.

#включва

#включване #включване на радиостанция RF24 (7, 8); // CE, CSN // ляв индикатор, горния панел на високоговорителя const байт адрес [6] = "00001"; const int стъпка = 2000; const int pitch_duration = 200; const int високоговорител = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char четене [2]; void setup () {pinMode (високоговорител, OUTPUT); Serial.begin (115200); Serial.println ("Стартиране на безжична комуникация …"); radio.begin (); radio.openReadingPipe (0, адрес); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (прочетете [0]-'0'); Serial.print ("Получено:"); Serial.println (статус); cur_delay = забавяне_получаване*статус; } if (cur_delay) {тон (говорител, височина, височина на височината); забавяне (cur_delay + pitch_duration); Serial.println ("Бийп!"); }}

Ето кода за високоговорителя, който комуникира с десния контролер. Свържете Arduino Nano на горната платка с високоговорители към вашия компютър, отворете Arduino IDE, копирайте и поставете този код в него и го качете на дъската.

#включва

#включване #включване на радиостанция RF24 (7, 8); // CE, CSN // десен индикатор, долен байтов адрес на дъската на високоговорителя [6] = "00010"; const int стъпка = 1500; const int pitch_duration = 200; const int високоговорител = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char четене [2]; void setup () {pinMode (високоговорител, OUTPUT); Serial.begin (115200); Serial.println ("Стартиране на безжична комуникация …"); radio.begin (); radio.openReadingPipe (0, адрес); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (прочетете [0]-'0'); Serial.print ("Получено:"); Serial.println (статус); cur_delay = забавяне_получаване*статус; } if (cur_delay) {тон (говорител, височина, височина на височината); забавяне (cur_delay+pitch_duration); Serial.println ("Бийп!"); }}

Стъпка 8: Монтаж на високоговорителите

Отделни части

  • 2 изградени вериги за високоговорители
  • 2 високоговорителя
  • 1 пакет батерии

STL за 3D печат

  • Кутия отгоре
  • Дъното на кутията

Инструкции за физическо сглобяване

  1. Внимателно поставете схемите на високоговорителите в долната част на кутията, една платка една върху друга, така че копчетата за сила на звука да са една до друга и да се плъзгат в отворите. Комуникационните чипове трябва да бъдат изложени в задната част на кутията.
  2. Поставете високоговорителите отляво и отдясно на печатната платка, като се уверите, че високоговорителите отговарят на правилните страни. Подравнете високоговорителите към слотовете отстрани на кутията.
  3. Прокарайте проводниците на батерията през малкия отвор на гърба на кутията. Епоксидна (или лепило) батерия в задната част на кутията, така че превключвателят да е открит.
  4. Поставете 3D печатна кутия отгоре над дъното на кутията, за да съдържа всичко.

Стъпка 9: Настройка/Монтиране

Настройка/Монтаж
Настройка/Монтаж
  1. Включете контролните устройства, като завъртите превключвателите на батериите в положение „ON“. Направете същото за монтажа на високоговорителите, за да включите изходната система.
  2. Монтирането на звукови сигнални сигнали се извършва най -лесно с двама души, но може и с един. За монтиране на стрела без дръжки, контролните устройства най-лесно ще се поставят преди да се вдигне платното.
  3. За да сте сигурни, че рамката за разказване е ориентирана правилно, погледнете прореза на една от вертикалните ленти. Когато държите рамката изправена, прорезът трябва да е отгоре. Страната на рамката с тази шина също трябва да гледа към предната част на лодката.
  4. Поставете една от разказвачите на желаната височина и позиция на платното. Тя трябва да бъде поставена така, че преждата да е на същото място, на което би била, ако е част от традиционна приказка.
  5. След като имате една приказка на желаната позиция. Поставете другата приказка от другата страна на платното, точно срещу първата, която сте поставили, така че магнитите да се подреждат. След като магнитите направят връзка, те трябва да държат рамката здраво към платното. Подредете магнитите на кутиите за електроника, за всеки разказ от двете страни на платното, така че да се свържат и те.
  6. Ако забележите, че когато низът тече право назад, той не пресича пред горната порта, завъртете рамката на разказа, така че задната половина на рамката да се насочи надолу. Завъртете рамката, докато низът премине през горния прекъсвач на снимката, когато преждата тече право назад.

Стъпка 10: Отстраняване на неизправности

Всички части от кода имат декларации за печат за отстраняване на грешки, които показват, че изпращат, получават и обработват данни. Отварянето на COM порта с помощта на Arduino IDE с една от подсистемите Arduino Nano, включена в компютър, ще ви позволи да видите тези съобщения за състоянието.

Ако системата не работи правилно, включете превключвателите на всички компоненти.

Стъпка 11: Възможни следващи стъпки

  • Хидроизолация
  • Комуникация с по -голям обхват. WiFi е обещаващ вариант.
  • Нашата текуща настройка понастоящем използва 2 прекъсвача за снимки на контролен указател. Добавянето на още фото прекъсвачи към системата може да бъде интересно да се опита.

Препоръчано: