Мазмуну:
- 1 -кадам: Билл материалдар
- 2 -кадам: Куралдар/Машиналар/Программалык камсыздоо талаптары
- 3 -кадам: Telltale Hardware
- 4 -кадам: Telltale программалык камсыздоо
- 5 -кадам: Ассамблея
- 6 -кадам: Динамиктин жабдыктары
- 7 -кадам: Динамик программасы
- 8 -кадам: Спикер Ассамблеясы
- 9 -кадам: Орнотуу/Монтаждоо
- 10 -кадам: Мүчүлүштүктөрдү оңдоо
- 11 -кадам: Мүмкүн болгон кийинки кадамдар
Video: Парустун үндүү айтуулары: 11 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Теллталдар - парустун ичинде турбуленттүү же ламинардык агым бар экендигин көрсөтүү үчүн сүзүүдө колдонулган жиптер. Бирок, парустун ар бир тарабына жабыштырылган түрдүү түстөгү жиптер визуалдык көрсөткүчтөр. Бул уккулуктуу жомоктор-бул Паулин сыяктуу көрүүсү начар жана кемчилиги бар деңизчилер үчүн визуалдык маалыматты угуу формасында жеткирүүнү көздөгөн жардамчы аппарат.
Түзмөк жомоктун кыймылын окуган киргизүү системасынан жана аба агымы тууралуу маалыматты жеткирүүчү бир катар сигналдарды чыгаруучу чыгаруу системасынан турат.
Бул аппаратты жасоодо ширетүүчү жабдууларга жана 3D принтерине жетүү талап кылынат.
1 -кадам: Билл материалдар
Шилтемелер жана баалар менен БОМ
Эскертүү: сизге төмөнкүлөрдүн баарынан 2 топтом керек.
Киргизүү системасы
- Arduino Nano
- Adafruit perma-proto жарым өлчөмдөгү нан ПКБ
- nRF24L01 Wireless Transceiver Module
- Photo Interrupter
- Sparkfun Photo Interrupter Breakout Board
- Arduino шайкеш 9V батарейка
- 9В батарея
- 22 Gauge зымынын бир нече узундугу
- Жип
- Неодим магниттери
- Epoxy
Чыгуу системасы
- Arduino Nano
- Adafruit perma-proto жарым өлчөмдөгү нан ПКБ
- nRF24L01 Wireless Transceiver Module
- Arduino шайкеш 9V батарейка
- 1K Ом потенциометр
- 120 Ом каршылыгы
- 2N3904 транзистору
- 0.1 uF конденсатор
- Arduino шайкеш спикери
GitHub файлдары
- Бул айтууларды куруу үчүн керектүү болгон бардык коддорду жана STL файлдарын ушул GitHub репоунан тапса болот.
- Сизге корпустун эки топтому жана динамик корпусунун бири керек болот.
2 -кадам: Куралдар/Машиналар/Программалык камсыздоо талаптары
Arduino программасын түзүү үчүн сизге Arduino IDE жүктөп алуу керек болот. Жүктөө шилтемесин бул жерден тапса болот.
NRF24L01 модулун программалоо үчүн, анын китепканасын Arduino IDE аркылуу жүктөп алуу керек болот. Куралдар> Китепканаларды башкаруу…> RF24 китепканасын орнотуу
Электрондук компоненттерди чогултуу үчүн негизги ширетүүчү инструменттерге кирүү талап кылынат. Тазалоочу насос дагы пайдалуу болушу мүмкүн, бирок зарыл эмес.
Айтуучу фреймди жана динамиктин корпусун куруу үчүн сизге 3D принтерге кирүү керек болот.
3 -кадам: Telltale Hardware
Жогорудагы схемаларга ылайык схеманы чогултуңуз. Arduino Nano протоколдун үстү менен тегизделиши керек. Бул бардык электроника тиркелгенден кийин да USB портуна кирүүгө мүмкүнчүлүк берет.
Электрониканы кыскартпоо үчүн, nRF24 жогорудагы сүрөттө көрсөтүлгөндөй басып турган саптардагы протобердин издерин кесип салганыңызды текшериңиз.
Болбосо, nRF24 протоколуна туташтыруу үчүн сизге секирүүчү кабелдер керек болот.
Резистордун байланышы, GND жана 5V зымдары фото үзгүчкө сүрөттөлгөн эмес. Фото үзгүчтү үзүлүү тактасында көрсөтүлгөндөй өткөрүңүз. Үзүлүш тактасынын сүрөтү камтылган.
Оң жана сол айтыштардын схемалары так ушундай.
4 -кадам: Telltale программалык камсыздоо
Бул жерде Оң жомоктун коду. Right telltale наносун компьютериңизге туташтырыңыз, Arduino IDEди ачыңыз, бул кодду көчүрүп чаптаңыз жана тактага жүктөңүз.
/** Программаны сурамжылоо үчүн фотогат колдонот
*/ #кошуу #кошуу #кошуу #кошуу RF24 радиосу (9, 10); // CE, CSN const байт дареги [6] = "00010"; // --- программа 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; // жогорудагы барды өзүңүздүн эксперименталдык сыноолоруңузга негиздеп 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 // --- программасы vars --- 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) {// string status check_string (); } if (num_loops == flow_check_time) {// агымды карап чыгуу //Serial.println(num_string_seen); int flow_num = examine_flow (); // баалуулуктарды жөнөтүү send_out (flow_num); // баштапкы абалга келтирүү 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("Сарды көр! "); }
int bot_state = digitalRead (GATE_PIN_2);
if (bot_state == 0) {num_string_seen--; //Serial.println("сапта! "); } //Serial.print("Саноо сабы өтөт: "); //Serial.println(num_string_seen); кайтуу; }/ * * Убакыттын кайсы бөлүгү дарбазаны каптаганын анализдөө ыкмасы */int examine_flow () {double foiz_seen = double (num_string_seen)/max_in_flow; Serial.print ("Камтылган пайыз:"); printDouble (көрүү_ пайызы, 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 (frac, DEC); }
Мына, сол жомоктун коду. Сол жомок үчүн жогорудагыдай кадамдарды жасаңыз. Көрүнүп тургандай, бир гана айырма - бул анын жыйынтыгын жөнөтүүчү дарек.
/** Программаны сурамжылоо үчүн фотогат колдонот
*/ #кошуу #кошуу #кошуу #кошуу RF24 радиосу (9, 10); // CE, CSN const байт дареги [6] = "00001"; // --- программа 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; // жогорудагы барды өзүңүздүн эксперименталдык сыноолоруңузга негиздеп 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 // --- программасы vars --- 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) {// string status check_string (); } if (num_loops == flow_check_time) {// агымды карап чыгуу //Serial.println(num_string_seen); int flow_num = examine_flow (); // баалуулуктарды жөнөтүү send_out (flow_num); // баштапкы абалга келтирүү 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("Сарды көр! "); }
int bot_state = digitalRead (GATE_PIN_2);
if (bot_state == 0) {num_string_seen--; //Serial.println("сапта! "); } //Serial.print("Саноо сабы өтөт: "); //Serial.println(num_string_seen); кайтуу; }/ * * Убакыттын кайсы бөлүгү дарбазаны каптаганын анализдөө ыкмасы */int examine_flow () {double foiz_seen = double (num_string_seen)/max_in_flow; Serial.print ("Камтылган пайыз:"); printDouble (көрүү_ пайызы, 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 (frac, DEC); }
5 -кадам: Ассамблея
Жеке бөлүктөр
- Айтуучу кадр
- Жип
- Айтылган схема курулган
- Батарея пакети
- Электр лента
- Эпоксид же клей
3D басып чыгаруу үчүн STLлер компоненттерди айтып берет
- Айкын кадр үчүн STL: сол, оң
- Электрондук кутучага STLлер: үстү, асты
Монтаждоо көрсөтмөлөрү
- Магнитти 3D басып чыгарылган жээкченин уячаларына коюңуз. Магниттердин оң алкак менен сол алкактын ортосуна туура келгенин тактаңыз, андан кийин магнитти алкакка бекитүү үчүн эпоксиден (же желимден) пайдаланыңыз. Эпоксидди (же желимди) толугу менен коюуга уруксат бериңиз.
- Сүрөт үзгүчтөрдү кадрдын артындагы жогорку жана төмөнкү уячаларга коюңуз. Этияттык менен эпоксиден (же желимден) фото үзгүч тактайчаларды алкакка салыңыз. Эпоксидди (же желимди) толугу менен коюуга уруксат бериңиз
- ~ 7 жип кесип. Жиптин бир учун биринчи тик тилкенин чокусуна байлаңыз. Электр лентасынын кичинекей бөлүгүн кесип, электр тасмасын фото үзгүчтөрдүн аймагында боло турган жиптин бөлүгүнө ороп коюңуз. Жипти фото үзгүч дарбазасынын боштугунан өтүшү үчүн рамадан өткөрүңүз.
- 3D магнитти 3D басылган электроника кутусунун түбүнө салыңыз. Магниттин оң куту менен сол кутунун ортосунда туура жайгашып турганын текшерип, магнитти алкакка бекитүү үчүн эпоксиден (же желимден) пайдаланыңыз. Эпоксидди (же желимди) толугу менен коюуга уруксат бериңиз.
- Электрондук кутуга ар кандай компоненттерди оюктарына тууралап, курулган айтып берүү схемасын коюңуз. 3D басылган электроника кутусунун үстү менен кутучаны жабыңыз. Батареяны эпоксиден (же клейден) кутунун үстүнө коюңуз, андыктан которгуч ачык болот.
6 -кадам: Динамиктин жабдыктары
Чыгуу тутуму эки спикердик схемадан турат, ар бири үчүн бирөө, зымсыз байланыш жана үн көлөмүн жөндөө баскычы менен жабдылган. Биринчиден, протоколдорду nRF24L01 модулдары менен колдонууга даярдагыла, биз айткандай схемалар үчүн, тактай коюла турган эки катарлуу казыктарды бөлүп алып баруучуларды кесип.
Андан кийин, бүткөн микросхемалардын сүрөттөрүнө шилтеме берүү менен, схеманы жогорудагы диаграммада көрсөтүлгөндөй чогултуп алыңыз.
Башкарманы чогултуу боюнча көрсөтмөлөр
Тактайларды спикердин корпусуна жыйыштыруу үчүн, негизги компоненттер тактайдын айрым жерлерине жайгаштырылышы керек. Төмөнкү көрсөтмөлөрдө, мен Adafruit протобериндеги саптарды жана мамычаларды белгилөө үчүн колдонулган координаттар системасына кайрылам:
- Arduino Nano такты борбордун үстүңкү четине карама -каршы коюлушу керек, ошондо Vin пин G16да жайгашкан. Бул схема чогултулгандан кийин Arduino Nano программасын оңой кайра программалоого мүмкүндүк берет.
- NRF24L01 тактасы C1ден D5ке чейинки сегиз позицияны камтыган тактанын төмөнкү оң бурчуна жайгаштырылышы керек. Бул жакшыраак зымсыз байланышты камсыз кылуу үчүн nRF24L01дин протоботто илинип калышына алып келет.
- Динамик тутумунун батарейкасы эки протоболду тең кубаттайт, андыктан Arduino Nano'нун GND рельстерин/казыктарын жана Вин казыктарын электр булагына туташтырууну унутпаңыз.
-
"Төмөнкү" схема үчүн потенциометр тактайдын үстүнө сыртка каратып жайгаштырылышы керек, ошондо анын казыктары J2, J4 жана J6 позициясына жайгаштырылат.
- J2 digital Arduino Nano санарип пин 3 (D3) чыгаруу
- 2N3904 транзисторунун J4 pin базалык пини
- J6, туташкан жок
-
"Жогорку" схемасы үчүн потенциометр тактайдын ылдый жагын сыртка каратып жайгаштырылышы керек, ошондо анын казыктары J9, J11 жана J13 позициясына жайгаштырылат.
- J13 digital Arduino Nano санарип пин 3 (D3) чыгаруу
- J11 ↔ 2N3904 транзисторунун базалык пини
- J9 onn туташкан жок
7 -кадам: Динамик программасы
Бул жерде сол баян менен байланышып жаткан спикердин коду. Төмөнкү динамик тактасындагы Arduino Nano'yу компьютериңизге туташтырыңыз, Arduino IDEди ачыңыз, бул кодду көчүрүп чаптаңыз жана тактага жүктөңүз.
#кошуу
#кошуу #кошуу RF24 радиосу (7, 8); // CE, CSN // сол жомок, жогорку спикер тактасынын const байт дареги [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int баяндамачы = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char read [2]; void setup () {pinMode (баяндамачы, ЧЫГУУ); 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 = delay_gain*абалы; } if (cur_delay) {тон (сүйлөөчү, ыргак, кадамдын узактыгы); кечигүү (cur_delay + pitch_duration); Serial.println ("Бип!"); }}
Бул жерде спикердин туура айтып берүү менен байланышкан коду. Ардуино Нанону жогорку динамик тактасында компьютериңизге туташтырыңыз, Arduino IDEди ачыңыз, бул кодду көчүрүп чаптаңыз жана тактага жүктөңүз.
#кошуу
#кошуу #кошуу RF24 радиосу (7, 8); // CE, CSN // оң жомок, төмөнкү динамик тактасынын const байт дареги [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int баяндамачы = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char read [2]; void setup () {pinMode (баяндамачы, ЧЫГУУ); 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 = delay_gain*абалы; } if (cur_delay) {тон (сүйлөөчү, ыргак, кадамдын узактыгы); кечигүү (cur_delay+pitch_duration); Serial.println ("Бип!"); }}
8 -кадам: Спикер Ассамблеясы
Жеке бөлүктөр
- 2 курулган динамиктин схемасы
- 2 спикер
- 1 батарея пакети
3D басып чыгаруу үчүн STLлер
- Box box
- Куту түбү
Физикалык чогултуу боюнча көрсөтмөлөр
- Катуу сүйлөмөлөрдү кутучанын түбүнө кылдаттык менен коюңуз, бир тактай экинчисинин үстүнө коюп, үн баскычтары бири -бирине жакын болуп, тешиктерге түшүп кетет. Байланыш чиптери кутунун артында ачык болушу керек.
- Динамиктерди тактанын сол жагына жана оң жагына коюп, спикерлер туура айтуучу тараптарга туура келерин текшериңиз. Динамиктерди кутунун капталындагы оюктарга тууралаңыз.
- Батарея пакетинин зымдарын кутунун артындагы кичинекей тешик аркылуу өткөрүңүз. Батареяны кутунун артына эпоксиден (же клейден) которгуч ачык болуп калат.
- Баарын камтуу үчүн 3D басылган кутучаны үстүнө кутунун астына коюңуз.
9 -кадам: Орнотуу/Монтаждоо
- Батарея пакеттериндеги өчүргүчтөрдү "ON" абалына которуу менен айтууну күйгүзүңүз. Чыгуу тутумун күйгүзүү үчүн спикердин курамын жасаңыз.
- Үн угуу монтажын оңой эле эки адам жасайт, бирок бирөө менен жасаса болот. Кыймылсыз жебеге орнотуу үчүн, параллелди көтөрүүдөн мурун телтеллер оңой эле коюлат.
- Жомоктун алкагы туура багытталганын текшерүү үчүн, вертикалдуу тилкелердин бириндеги оюкту караңыз. Рамканы тик кармап турганда, оюк жогору жакка карай болушу керек. Ошол тилкеси бар алкактын капталы да кайыктын маңдайына каралышы керек.
- Жомоктордун бирин каалаган бийиктикке жана паруска коюңуз. Жипти салттуу жомоктун бир бөлүгү болсо, ошол эле жерге жайгаштырыш керек.
- Сиз каалаган позицияда жомок болгондон кийин. Экинчи жомокту парустун башка жагына, сиз койгон биринчи карама -каршы, магниттер тизилип тургандай кылып коюңуз. Электрондук корпустун магнитин тизип, парустун эки жагындагы ар бир жомокту айтып, алар да туташып турсун.
- Эгерде сиз жип түз артка агып кеткенде, ал жогорку дарбазанын алдынан өтпөй турганын байкасаңыз, жээкченин арткы жарымы ылдый карай баштай тургандай кылып жомоктун алкагын айлантыңыз. Жип түз артка агып кеткенде жип үстүңкү фото үзгүч аркылуу өткөнчө алкакты буруңуз.
10 -кадам: Мүчүлүштүктөрдү оңдоо
Бардык коддордо маалыматтарды жөнөтүү, алуу жана иштетүү экенин көрсөтүү үчүн мүчүлүштүктөрдү оңдоо басылмалары бар. COM портун Arduino IDE аркылуу компьютерге туташтырылган Arduino Nano подсистемаларынын бири менен ачуу бул статустук билдирүүлөрдү көрүүгө мүмкүнчүлүк берет.
Эгерде система туура иштебесе, анда бардык компоненттерди которгула.
11 -кадам: Мүмкүн болгон кийинки кадамдар
- Гидроизоляция
- Узунураак байланыш. WiFi келечектүү вариант болот.
- Учурдагы орнотуубузда учурда 2 фото үзгүч колдонулуп жатат. Системага көбүрөөк фото үзгүлтүктөрдү кошуу кызыктуу болушу мүмкүн.
Сунушталууда:
Кантип кадам эсептегич жасоо керек?: 3 кадам (сүрөттөр менен)
Step Counter кантип жасалат ?: Мен көптөгөн спортто жакшы аткарчумун: жөө басуу, чуркоо, велосипед тебүү, бадминтон ойноо ж.б. Мейли, менин ичимди карачы ……. Ооба, баары бир мен машыгуу үчүн кайра баштоону чечтим. Мен кандай жабдыктарды даярдашым керек?
Үндүү оюн Arduino жана YX5300 MP3 модулу Catalex менен: 13 кадам
Үндүү оюн Arduino жана YX5300 MP3 модулу Catalex менен: Бул суроону окуй аласызбы? Бул кызык! Мен бул суроону атайылап койгом. Эгерде сиз бул текстти окуй алсаңыз, анда алфавитти толугу менен билгениңиз жана албетте, бардык үндүүлөр жөнүндө билгениңиз үчүн. Бул мүмкүн эмес
Акустикалык левитация Arduino Uno менен кадам-кадам (8-кадам): 8 кадам
Акустикалык левитация менен Arduino Uno Step-by-Step (8-кадам): ультрадыбыштуу үн өткөргүчтөр L298N Dc аял адаптеринин электр энергиясы менен камсыздоосу эркек токту Arduino UNOBreadboard Бул кантип иштейт: Биринчиден, сиз Arduino Uno кодун жүктөп бересиз (бул санарип менен жабдылган микроконтроллер) жана аналогдук порттор кодду айландыруу үчүн (C ++)
Ардуино үндүү Ак камыш (Биринчи бөлүк): 6 кадам (Сүрөттөр менен)
Arduino Voiced White камыш (Биринчи бөлүк): Бир нече жыл мурун, мен сокур болгон үй -бүлө мүчөсү бар окуучу менен болгон элем, биз канча кадамдар бар экенин угууга жөндөмдүү кичинекей чечимге келе аларыбызды түшүндүм. мурда жазылган сандары бар arduino мүмкүн
Дүйнөнүн эң үндүү (көчмө) китеби*: 9 кадам
Дүйнөнүн эң катуу (көчмө) китеби*: Кийинки үйрөткүчүм үчүн мен китепке үн берүүнү пландап жатам. Мен үн деп айтканымда, мен чынында эмнени айткым келет - бул спикерлердин топтому жана iPodду кармоочу жер. Даяр сүрөттөр мурунку сүрөттөргө окшош. Мына ушундай окшойт деп үмүттөнгөм