Съдържание:
- Стъпка 1: Сметка на материалите
- Стъпка 2: Изисквания за инструменти/машини/софтуер
- Стъпка 3: Telltale хардуер
- Стъпка 4: Софтуер Telltale
- Стъпка 5: Контролно събрание
- Стъпка 6: Хардуер на високоговорителите
- Стъпка 7: Софтуер за високоговорители
- Стъпка 8: Монтаж на високоговорителите
- Стъпка 9: Настройка/Монтиране
- Стъпка 10: Отстраняване на неизправности
- Стъпка 11: Възможни следващи стъпки
Видео: Звукови сигнали за плаване: 11 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Контейнерите са въжета, използвани при плаване, за да се посочи дали има платно или бурно течение по платното. Различните цветни парчета прежда, прикрепени към всяка страна на платното, са чисто визуални индикатори. Тези звукови сигнали са помощно устройство, което има за цел да предаде визуалната информация в слухова форма както за зрящи, така и за хора с увредено зрение, като Полин.
Устройството се състои от система за въвеждане, която чете движението на сигнализатора, и система за изход, която излъчва поредица от звукови сигнали, предаващи информация за въздушния поток.
При производството на това устройство е необходим достъп до оборудване за запояване и 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 хардуер
Сглобете веригата съгласно схемите по -горе. 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 за кутия за електроника: отгоре, отдолу
Инструкции за сглобяване
- Поставете лентови магнити в слотовете на 3D отпечатаната сигнална рамка. Уверете се, че магнитите се подреждат правилно между дясната рамка и лявата рамка, след това използвайте епоксидна смола (или лепило), за да закрепите магнитите към рамката. Оставете епоксидната смола (или лепилото) да стегне напълно.
- Поставете прекъсвачите за снимки в горния и долния слот в задната част на рамката. Внимателно епоксидна (или залепена) дъска за фото прекъсвачи към рамката. Оставете епоксидната смола (или лепилото) да стегне напълно
- Изрежете ~ 7 на парче прежда. Завържете единия край на преждата в прореза на първата вертикална лента. Изрежете малко парче електрическа лента и увийте електрическата лента върху участъка от преждата, който ще бъде в областта на фото прекъсвачите. Прокарайте преждата през рамката, така че да премине през пролуката на портата за прекъсване на снимки.
- Поставете лентови магнити в слотовете на дъното на кутията за електроника с 3D печат. Уверете се, че магнитите се подреждат правилно между дясната и лявата кутия, след това използвайте епоксидна смола (или лепило), за да закрепите магнитите към рамката. Оставете епоксидната смола (или лепилото) да стегне напълно.
- Поставете изградената сигнална верига в кутията за електроника, като подравните различните компоненти към техните слотове. Затворете кутията с 3D печатна електроника отгоре. Епоксидна (или лепило) батерията към горната част на кутията, така че превключвателят да е открит.
Стъпка 6: Хардуер на високоговорителите
Изходната система се състои от две вериги за високоговорители, по една за всяка сигнализация, оборудвани с безжична комуникация и копче за регулиране на силата на звука. Първо, подгответе протобордовете за използване с модулите nRF24L01, както направихме за контролните вериги, като изрежете проводниците, разделящи двата реда щифтове, където ще бъде поставена платката.
След това сглобете веригата, както е показано на диаграмата по -горе, като се позовавате на снимките на завършените вериги.
Инструкции за сглобяване на борда
За да подреждате платките в корпуса на високоговорителите, основните компоненти трябва да бъдат поставени в определени области на платката. В следващите инструкции ще имам предвид координатната система, използвана за обозначаване на редове и колони на протоборда Adafruit:
- Arduino Nano трябва да бъде поставен срещу горния ръб на дъската в центъра, така че щифтът Vin да е позициониран в G16. Това ще позволи лесно препрограмиране на Arduino Nano след сглобяването на веригата.
- Платката nRF24L01 трябва да бъде поставена в долния десен ъгъл на дъската, обхващаща осемте позиции от C1 до D5. Това ще остави nRF24L01 да виси на протоборда, за да позволи по -добра безжична комуникация.
- Батерията за акустичната система захранва и двете протобордове, така че не забравяйте да свържете двете GND релси/щифтове на Arduino Nano и щифтове Vin към захранването.
-
За „долната“верига потенциометърът трябва да бъде поставен в горната част на платката с лице към външната страна, така че щифтовете му да са поставени в позиции J2, J4 и J6
- J2, Arduino Nano изход от цифров извод 3 (D3)
- J4 ↔ основен щифт на 2N3904 транзистор
- J6 ↔ несвързан
-
За „горната“верига потенциометърът трябва да бъде поставен в долната част на платката с лице към външната страна, така че щифтовете му да са поставени в позиции J9, J11 и J13
- J13 output Arduino Nano изход от цифров извод 3 (D3)
- J11 ↔ основен щифт на 2N3904 транзистор
- 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 печат
- Кутия отгоре
- Дъното на кутията
Инструкции за физическо сглобяване
- Внимателно поставете схемите на високоговорителите в долната част на кутията, една платка една върху друга, така че копчетата за сила на звука да са една до друга и да се плъзгат в отворите. Комуникационните чипове трябва да бъдат изложени в задната част на кутията.
- Поставете високоговорителите отляво и отдясно на печатната платка, като се уверите, че високоговорителите отговарят на правилните страни. Подравнете високоговорителите към слотовете отстрани на кутията.
- Прокарайте проводниците на батерията през малкия отвор на гърба на кутията. Епоксидна (или лепило) батерия в задната част на кутията, така че превключвателят да е открит.
- Поставете 3D печатна кутия отгоре над дъното на кутията, за да съдържа всичко.
Стъпка 9: Настройка/Монтиране
- Включете контролните устройства, като завъртите превключвателите на батериите в положение „ON“. Направете същото за монтажа на високоговорителите, за да включите изходната система.
- Монтирането на звукови сигнални сигнали се извършва най -лесно с двама души, но може и с един. За монтиране на стрела без дръжки, контролните устройства най-лесно ще се поставят преди да се вдигне платното.
- За да сте сигурни, че рамката за разказване е ориентирана правилно, погледнете прореза на една от вертикалните ленти. Когато държите рамката изправена, прорезът трябва да е отгоре. Страната на рамката с тази шина също трябва да гледа към предната част на лодката.
- Поставете една от разказвачите на желаната височина и позиция на платното. Тя трябва да бъде поставена така, че преждата да е на същото място, на което би била, ако е част от традиционна приказка.
- След като имате една приказка на желаната позиция. Поставете другата приказка от другата страна на платното, точно срещу първата, която сте поставили, така че магнитите да се подреждат. След като магнитите направят връзка, те трябва да държат рамката здраво към платното. Подредете магнитите на кутиите за електроника, за всеки разказ от двете страни на платното, така че да се свържат и те.
- Ако забележите, че когато низът тече право назад, той не пресича пред горната порта, завъртете рамката на разказа, така че задната половина на рамката да се насочи надолу. Завъртете рамката, докато низът премине през горния прекъсвач на снимката, когато преждата тече право назад.
Стъпка 10: Отстраняване на неизправности
Всички части от кода имат декларации за печат за отстраняване на грешки, които показват, че изпращат, получават и обработват данни. Отварянето на COM порта с помощта на Arduino IDE с една от подсистемите Arduino Nano, включена в компютър, ще ви позволи да видите тези съобщения за състоянието.
Ако системата не работи правилно, включете превключвателите на всички компоненти.
Стъпка 11: Възможни следващи стъпки
- Хидроизолация
- Комуникация с по -голям обхват. WiFi е обещаващ вариант.
- Нашата текуща настройка понастоящем използва 2 прекъсвача за снимки на контролен указател. Добавянето на още фото прекъсвачи към системата може да бъде интересно да се опита.
Препоръчано:
Звукови единици за вградени играчки с драскотини, използващи DFplayer мини MP3 плейър: 4 стъпки
Звуков модул за играчки, изградени с драскотини, използващи DFplayer Mini MP3 Player: Добре дошли в моя " ible " #35. Искате ли да създадете звукова единица, която можете да използвате по различни начини, като качвате звуците, които искате за вашите играчки за нула, за няколко секунди? Тук идва урокът, който обяснява как да направите това, като използвате D
Ray Gun със звукови ефекти V2: 17 стъпки (със снимки)
Ray Gun със звукови ефекти V2: Наскоро попаднах на стара бормашина в магазин за боклуци и в момента, в който я видях, разбра, че трябва да направя лъчев пистолет от нея. Сега направих няколко лъчеви пистолета и те винаги започват с вдъхновение от някакъв намерен предмет. Можете да проверите другите ми версии в t
Car Horn - Персонализирани звукови ефекти: 4 стъпки (със снимки)
Car Horn - Персонализирани звукови ефекти: Инсталирах персонализирани звукови ефекти на клаксона в колата си въз основа на видеоклипове в YouTube от Mark Rober и I Like To Make Stuff Основният клаксон се нуждае от повече възможности за ефективна комуникация между шофьорите според мен Където съм от стандартния автомобилен клаксон има
Ray Gun с лазерни звукови ефекти: 19 стъпки (със снимки)
Ray Gun с лазерни звукови ефекти: Наистина обичам да изграждам проекти от стари части, които съм изчистил. Това е второто лъчево оръжие, което документирах (това е първото ми). Заедно с лъчеви пистолети съм създал боклуци - (вижте ги тук) и много други проекти от
Вижте Звукови вълни, използващи цветна светлина (RGB LED): 10 стъпки (със снимки)
Вижте Звукови вълни, използващи цветна светлина (RGB LED): Тук можете да видите звукови вълни и да наблюдавате моделите на смущения, направени от два или повече преобразувателя, тъй като разстоянието между тях се променя. (Най -отляво, интерференционен модел с два микрофона при 40 000 цикъла в секунда; горе вдясно, единичен микрофон