Съдържание:

SONIC LED ОБРАТНА СИГНАЛ: 7 стъпки (със снимки)
SONIC LED ОБРАТНА СИГНАЛ: 7 стъпки (със снимки)

Видео: SONIC LED ОБРАТНА СИГНАЛ: 7 стъпки (със снимки)

Видео: SONIC LED ОБРАТНА СИГНАЛ: 7 стъпки (със снимки)
Видео: Сиреноголовый в Москве! 2024, Ноември
Anonim
SONIC LED ОБРАТНА ВРЪЗКА
SONIC LED ОБРАТНА ВРЪЗКА
SONIC LED ОБРАТНА ВРЪЗКА
SONIC LED ОБРАТНА ВРЪЗКА
SONIC LED ОБРАТНА ВРЪЗКА
SONIC LED ОБРАТНА ВРЪЗКА

Здравей отново, Мразите, че вашият робот се сблъсква с всичко? Това ще реши този проблем. С 8 звукови сензора това изглежда сложно … но всъщност направих това много лесно. Опитвам се да публикувам проекти, които ви помагат да научите за Arduino и да покажете концепция „извън кутията“. Тази публикация ще ви помогне да разберете 595 превключване, про-мини като програмируем сензор и голямото използване на обратна връзка в реално време. Ако харесвате Arduino като „копиране и поставяне и добавка“, може просто да пропуснете това.

Обичам да използвам про-мини. Те са около 2,50 долара, работят като пълноценен уно и инсталирането на заглавки ги прави много гъвкави. Използва се като сензорен микро, можете да го накарате да „прави каквото искате“вместо това, което диктува закупеният сензор. С I2C, използващ само 2 проводника, те могат да бъдат свързани заедно на една линия. Така че преминете към MEGA, мога да имам 4 мини, изпълняващи 4 отделни реда код едновременно, само на $ 10.00. Тук използвам мини, за да прокарам звуковите сензори през 595 и да покажа светодиодно разстояние в реално време. След това просто споделете 8 бита данни с дънната платка. Това сваля товара от дънната платка и прави кода й много прост.

Има проблем със звуковите сензори … няма визуална обратна връзка. Никога не знаете дали сензорът е просто мъртво тегло или работи! Вярвам, че който и да е измислил „BLINK“е по -умен от Айнстин. Само ЕДИН води и цял свят информация се предава от мигането. Така че звуковият сензор се нуждае от обратна връзка в реално време. Тук използвах множество светодиоди за наблюдение на всеки сензор. Нямате нужда от тях, просто направете сензорите без светодиодите. Но да има светодиоди на платката е полезно.

Стъпка 1: НАПРАВЕТЕ ПХБ

НАПРАВЕТЕ ПХБ
НАПРАВЕТЕ ПХБ
НАПРАВЕТЕ ПХБ
НАПРАВЕТЕ ПХБ
НАПРАВЕТЕ ПХБ
НАПРАВЕТЕ ПХБ
НАПРАВЕТЕ ПХБ
НАПРАВЕТЕ ПХБ

направи ПХБ и попълни. ВНИМАНИЕ … Направих грешка на печатната платка при 4 -пиновите връзки за включване на звуковите сензори. ECHO и TRIGGER Vcc и основите щяха да се включат в печатната платка. Няма достатъчно място за конектори, затова направих печатната платка с изводи. Така че можете да запоите жичен конектор към печатната платка и да включите в действителните звукови сензори. Що се отнася до светодиодите, поставям жълти светодиоди от вътрешния ръб и червени отвън. това ви помага да видите от разстояние дали сензорите правилно измерват.

Това е една от НЕЩОЛКИте двустранни платки, които съм правил. Предпочитам да направя 2 ea едностранни и да бягам джъмпери. Но за да получите LED дисплея, имате нужда поне от най -горната платка. Разделих оформлението при изтеглянето.

ПХБ е за pro-mini с A4-A5 вътре в заглавката на ръба. Така или иначе просто свържете A4-A5 към Master A4-A5. Не забравяйте и Vcc и Grounds.

Стъпка 2: МНОГО ГРЕШКИ

МНОГО ГРЕШКИ
МНОГО ГРЕШКИ

Сега за моите грешки … Опитах се да пусна тригерите наведнъж (всички свързани заедно) и това нещо работеше добре, но имаше някои взаимодействия. Така че сега всички ECHOS отиват към микро (8) и TRIGGERS са зададени от 595. Още три пина (3). Що се отнася до светодиодите, мултиплексирането няма да работи. Имате нужда от пълно време за включване за всеки светодиод. Това означава, че всеки ред от 7 светодиода трябва да има свой собствен 595. След като актуализирате 595, светодиодите ще светят до следващата актуализация. Когато мултиплексирането на светодиода светва само за тази десета от секундата. Това работи добре при моите читатели и се нуждае от специален микро. Няма време за сканиране на 8 звукови сензора и измерване на разстояния. Опитах и получих много лоши резултати. Мултиплексирането на светодиодите също ще означава мрежа от ред + колона и това означава, че около 64+ канала преминават през печатната платка.

Използвах само 7 изхода от 595 поради претрупване на печатната платка. От разстояние не можете да разберете дали има 7 или 8 светодиода само тяхното движение. Може да се изкушите да свържете всички светодиоди към един резистор и това работи, но яркостта на масива се променя с количеството на светещите светодиоди. Така че един резистор на светодиод е най -добрият. Просто обичам 595, но ако те просто преместиха Vcc и 0-изходните щифтове или направиха 18-пинов IC с ВСИЧКИ изходи на една и съща страна … свързването на всичките осем изхода би било толкова лесно. Но тогава нямаше да се продава за по -малко от 30 цента.

Стъпка 3: МОНТИРАНЕ НА СЕНЗОРИ

МОНТАЖ СЕНЗОРИ
МОНТАЖ СЕНЗОРИ
МОНТАЖ СЕНЗОРИ
МОНТАЖ СЕНЗОРИ
МОНТАЖ СЕНЗОРИ
МОНТАЖ СЕНЗОРИ
МОНТАЖ СЕНЗОРИ
МОНТАЖ СЕНЗОРИ

Залепете звукови сензори към капака на кафето. мъжкият жак трябва да бъде огънат навътре на всеки сензор. Това работи по -добре, ако огъвате един щифт наведнъж. Използвах 2 странична лента от пяна, само за да е по -малко вибрациите. Моите сензори са твърде близо и се нуждаят от 1/4 инчово пространство, за да съответстват по -добре на печатната платка. Използвал съм звукови сензори преди и понякога човек не успява да измери точно и трябва да имате предвид това. Така че не ги залепяйте за постоянно.

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

Стъпка 4: HARD WIRE

ТВЪРДА ЖИЛА
ТВЪРДА ЖИЛА

Мислех, че ще има място за жакове и щепсели от компютъра до

звукови щифтове, но избягах от стаята. Така че здраво свързах края на печатната платка и просто направих ехо и задействащи проводници с женски жакове (8ea). Свързах 8ea Vcc и 8ea основите на сензорите заедно, така че това направи само 2 връзки към печатната платка за тях.

С 8 сензора и 8 595s един uno или pro-mini НЕ МОЖЕ да захранва това. Трябва да има 5V регулиран източник като част от този проект. Моят робот има прост 7805 @ 1amp от батериите. Това е свързано с всички 5v Vcc за всички устройства. 7805 пада около волта, така че имате нужда от поне 6,5 волта, за да го захранвате. Това са 2 литиеви батерии при 3.3v. Моят робот има стари никади от употребявани комплекти бормашини и 8 никади управляват типичния за Китай двигател с 12V двигател в шаси от 20 долара.

Стъпка 5: ИЗТЕГЛЕТЕ SONIC SKICCH

ИЗТЕГЛЕТЕ SONIC SKICCH
ИЗТЕГЛЕТЕ SONIC SKICCH

Изтеглете скицата и инсталирайте. Има много начини да говорите

друг uno, но аз харесвам I2c. объркването е адресиране и master/ slave. Както при повечето сензори (мислете за втория мини като сензор) вие се обръщате към сензора и питате за x количество байтове. същото нещо тук. Във втория мини заделяте х количество байтове, които искате да изпратите. Объркването е, че имената нямат значение. Това ви помага само да си спомните, ако споделяте имената. Така че в скицата изпращам 8 -те измервания на звуково разстояние в cm като sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Капитанът просто получава 8 байта данни и можете да наричате тези байтове всичко, което искате. Прочетох ги като gotR1, gotR2, got….. Изпратеният ред от байтове е същият. Така че байт A, B, C….. не мислете, че промяната на името ще ви даде различни данни. И другият улов, можете да получавате само данни, за които е казано да бъдат изпратени. Така че, ако искате други данни, трябва да смените И двата главни и подчинени.

Стъпка 6: КОМУНИКАЦИЯ

КОМУНИКАЦИЯ
КОМУНИКАЦИЯ

Можете да пропуснете това, ако знаете как да настроите 2 Uno, за да си говорите. Имам малко информация в края. За да улесня, ще наричам uno в базата на робота M1 и звуковия сензор като S2. Свържете Vcc, маса, A4, A5 един към друг.

В скицата за S2 започва с #include

След това създайте 8 -те байта за изпращане. байт R1, байт R2, байт L1 и т.н.

В 'setup ()' добавете 'Wire.begin (адрес)' това казва на I2c кое устройство е това. Адресът обикновено е всяко число, което харесвате, между 4 - 200. размерът на един байт. Тук използвах номер 10. Така че, за да говори с този сензор S2, капитанът трябва да се обади на Wire.requestFrom (10, 8). Това е адрес 10, а 8 е колко байта иска. Също така в 'setup ()' добавете Wire.onRequest (isr anyName). Когато M1 извиква заявката, сензорът S2 реагира с прекъсването. Това просто извиква функцията anyName. Така че тази функция anyName трябва да бъде създадена. Погледнете скицата и вижте функцията „sendThis ()“Това е мястото, където всъщност се изпращат байтовете към M1. Само байтовете отиват, а НЕ имената и в изпратения ред. Оттук започва размерът и количеството данни за изпращане. В този лесен формат от байтове изпращането и получаването трябва да съвпадат. Тук 8 изпратени байта и получени 8 байта. Една забележка тук е, че извикването на функция изисква (). Подобно на delay (), millis (), Serial.print (). Когато използвате ISR (услуга за прекъсване на услугата), извикването на функцията изпуска (). Така че Wire.onRequest (sendThis) не Wire.onRequest (sendThis ()).

Объркването, което имах, беше майстор/роб. Отначало си мислех, че майсторът винаги е майстор. Но в скицата можете да превключите главен/подчинен, за да поискате от други микро или да изпратите до други микро. Стига да следвате основния формат, описан по -горе. Запомнете … споделяте САМО данни, които са били присвоени.

Два бита за подреждане на стената. ISR прекъсването прекъсва само между редовете на скицата. Ако сте заключени в цикъл „while или for“, нищо не се случва, докато цикълът не излезе. НЯМА голяма работа, тъй като това може да отнеме няколко микросекунди и данните са стари.

Другият проблем е, че "вътре" в микро има 100% изчисляване без грешки. Всяка "външна" (жична) комуникация е обект на грешки. Има много начини да проверите дали предоставените данни са без грешки и съответстват на източника. Най -лесният начин е с контролна сума. Просто добавете сумите на изпращащите байтове (действителни стойности) и изпратете сумите, а в приемащия край добавете сумите и вижте дали съвпадат. Ако съвпадат добре или хвърлят този набор от данни, ако не го правят. Разбира се, това включва изпращане на цяло число, а не байтове. Така че просто разделяте цялото число на байта HI и LO и изпращате като отделни байтове. След това поставете заедно в приемника.

ЛЕСНО:

int x = 5696; (всяка валидна стойност на int, максимум е 65k или 32k отрицателна)

байт hi = x >> 8; (22)

байт lo = x; (64)

изпратете байтовете и комбинирайте в другия край …

байт hi = Wire.read ();

байт lo = Wire.read ();

int newx = (hi << 8) + lo; (5696)

Стъпка 7: ЗАКРИВАНЕ

ЗАТВАРЯНЕ
ЗАТВАРЯНЕ
ЗАТВАРЯНЕ
ЗАТВАРЯНЕ
ЗАТВАРЯНЕ
ЗАТВАРЯНЕ
ЗАТВАРЯНЕ
ЗАТВАРЯНЕ

За затваряне този звуков сензор дава на дънната платка необработени данни за разстоянието в реално време. Това освобождава микрото и прави скицата много по -малко сложна. Микрофонът вече може да вземе добро решение за забавяне, завъртане, спиране или обратно въз основа на добри данни, вместо на случайни предположения. Вижте другата ми публикация за bluetooth IDE, за да качвате скици без кабели и да се налага да свързвате робота си през цялото време само за бърза промяна в скицата. Благодаря за гледането на това. oldmaninsc.

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