Оглавление:

ОБРАТНАЯ СВЯЗЬ 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, pro-minis как программируемый датчик и широкое использование светодиодной обратной связи в реальном времени. Если вам нравится Arduino как функция «скопировать, вставить и плагин», вы можете просто пропустить это.

Мне нравится использовать про-мини. Они стоят около 2,50 долларов, работают как полноценный uno, а установка заголовков делает их очень гибкими. Используемый в качестве сенсорного микрометра, вы можете заставить его «делать то, что вы хотите» вместо того, что диктует приобретенный датчик. С I2C, использующим только 2 провода, их можно связать вместе на одной линии. Итак, переходите к MEGA. Я могу иметь 4 мини-компьютера, запускающих 4 отдельные строки кода одновременно, всего за 10 долларов. Здесь я использую мини, чтобы протолкнуть звуковые датчики через 595 и показать расстояние до светодиода в реальном времени. Затем просто поделитесь 8 битами данных с материнской платой. Это снимает нагрузку с материнской платы и делает ее код очень простым.

Проблема со звуковыми датчиками… нет визуальной обратной связи. Никогда не знаешь, датчик это просто мертвый груз или рабочий! Я считаю, что тот, кто когда-либо придумал «BLINK», умнее Эйнстайна. Только ОДИН светодиод, и мигание передаёт целый мир информации. Таким образом, звуковой датчик нуждается в обратной связи в реальном времени. Здесь я использовал массив светодиодов для наблюдения за каждым датчиком. Они вам не нужны, просто сделайте датчики без светодиодов. Но наличие светодиодов на печатной плате полезно.

Шаг 1: СОЗДАЙТЕ ПП

СДЕЛАТЬ ПЛАТУ
СДЕЛАТЬ ПЛАТУ
СДЕЛАТЬ ПЛАТУ
СДЕЛАТЬ ПЛАТУ
СДЕЛАТЬ ПЛАТУ
СДЕЛАТЬ ПЛАТУ
СДЕЛАТЬ ПЛАТУ
СДЕЛАТЬ ПЛАТУ

сделать печатную плату и заполнить. ВНИМАНИЕ… Я сделал ошибку на печатной плате в 4-контактном разъеме для подключения звуковых датчиков. ECHO и TRIGGER Vcc и заземление собирались подключиться к печатной плате. Для разъемов не хватает места, поэтому я просто сделал плату с распиновкой. Таким образом, вы можете припаять проводной соединитель к печатной плате и подключить к фактическим звуковым датчикам. Что касается светодиодов, я поставил желтые светодиоды с внутренней стороны и красные с внешней стороны. это поможет вам увидеть на расстоянии, правильно ли датчики измеряют.

Это одна из НЕСКОЛЬКИХ двухсторонних печатных плат, которые я когда-либо делал. Я бы предпочел сделать 2 шт. С одной стороны и запустить прыгуны. Но чтобы получить светодиодный дисплей, вам понадобится как минимум верхняя печатная плата. Разделял макет в загрузке.

Печатная плата предназначена для про-мини с A4-A5 внутри краевого заголовка. В любом случае просто подключите A4-A5 к Master A4-A5. Не забывайте также Vcc и Grounds.

Шаг 2: МНОГО ОШИБОК

МНОГО ОШИБОК
МНОГО ОШИБОК

Теперь о моих ошибках … Я попытался активировать все триггеры сразу (все связанные вместе), и это вроде как работало хорошо, но некоторые взаимодействия имели место. Итак, теперь все ECHOS переходят к микро (8), а ТРИГГЕРЫ устанавливаются на 595. Еще три контакта (3). Что касается светодиодов, то мультиплексирование не работает. Вам необходимо полное время включения для каждого светодиода. Это означает, что каждый ряд из 7 светодиодов должен иметь свой собственный 595. После обновления 595 светодиоды будут гореть до следующего обновления. При мультиплексировании светодиоды загораются только на одну десятую секунды. Это хорошо работает у моих читателей, и для этого нужен специальный микро. Нет времени на сканирование 8 звуковых датчиков и измерение расстояний. Я попробовал и получил очень плохие результаты. Мультиплексирование светодиодов также будет означать сетку из строк + столбцов, что означает около 64+ сквозных проходов в печатной плате.

Я использовал только 7 выходов от 595 из-за беспорядка на печатной плате. На расстоянии вы не можете сказать, 7 или 8 светодиодов просто их движение. У вас может возникнуть соблазн привязать все светодиоды к одному резистору, и это сработает, но яркость массива изменяется в зависимости от количества светодиодов, которые светятся. Таким образом, лучше всего использовать один резистор на каждый светодиод. Мне просто нравится 595, но если бы они просто переместили контакты Vcc и 0-out или сделали 18-контактную микросхему со ВСЕМИ выходами на одной стороне … подключить все восемь выходов было бы так просто. Но тогда его нельзя было бы продавать менее чем за 30 центов.

Шаг 3: УСТАНОВИТЕ ДАТЧИКИ

УСТАНОВИТЕ ДАТЧИКИ
УСТАНОВИТЕ ДАТЧИКИ
УСТАНОВИТЕ ДАТЧИКИ
УСТАНОВИТЕ ДАТЧИКИ
УСТАНОВИТЕ ДАТЧИКИ
УСТАНОВИТЕ ДАТЧИКИ
УСТАНОВИТЕ ДАТЧИКИ
УСТАНОВИТЕ ДАТЧИКИ

Приклейте звуковые датчики к крышке кофе. штекер необходимо загнуть внутрь на каждом датчике. Это сработает лучше, если вы будете гнуть по одной булавке за раз. Я использовал двухстороннюю поролоновую ленту, чтобы меньше вибрации. Мои датчики расположены слишком близко, и им нужно пространство 1/4 дюйма, чтобы лучше соответствовать печатной плате. Раньше я использовал звуковые датчики, и иногда один из них не может точно измерить, и вы должны помнить об этом. Так что не склеивайте их все навсегда.

Также полезно провести быструю дистанционную проверку каждого из них, прежде чем использовать их. Я получаю примерно один датчик с плохими показаниями в партии из 20. Неплохо по той цене, которую я заплатил.

Шаг 4: ЖЕСТКИЙ ПРОВОД

ЖЕСТКИЙ ПРОВОД
ЖЕСТКИЙ ПРОВОД

Думал, найдется место для розеток и вилок от ПК к

звуковые пины, но я выбежал из комнаты. Поэтому я жестко подключил конец печатной платы и просто сделал провода эха и триггера с гнездовыми разъемами (8 шт.). Я связал 8ea Vcc и 8ea заземления датчиков вместе, так что для них осталось только 2 подключения к печатной плате.

С 8 датчиками и 8 595, uno или pro-mini НЕ МОГУТ питать это. В рамках этого проекта должен быть регулируемый источник 5В. У моего робота простой 7805 @ 1амп от аккумуляторов. Это связано со всеми 5v Vcc для всех устройств. 7805 падает примерно на 1 вольт, поэтому для его питания требуется не менее 6,5 вольт. То есть 2 литиевые батареи на 3,3 В. У моего робота есть старые Никады из использованных буровых установок, и 8 Никадов управляют типичным китайским мотор-редуктором 12 В на шасси типа резервуара за 20 долларов.

Шаг 5: СКАЧАТЬ SONIC SKETCH

СКАЧАТЬ SONIC SKETCH
СКАЧАТЬ SONIC SKETCH

Скачайте скетч и установите. Есть много способов поговорить с

еще один uno но мне нравится I2c. путаница в адресации и ведущий / ведомый. Как и в случае с большинством датчиков (подумайте о втором мини как о датчике), вы обращаетесь к датчику и запрашиваете x количество байтов. то же самое и здесь. Во втором мини вы выделяете x количество байтов, которое хотите отправить. Путаница в том, что имена не имеют значения. Это поможет ВАМ запомнить только то, что вы разделяете имена. Итак, в скетче я отправил 8 измерений звукового расстояния в сантиметрах как 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 и т. д. Uno - это 8-битный микроконтроллер, поэтому они отправляют 1 байт за раз, используя «byte» вместо «int».

В 'setup ()' добавьте 'Wire.begin (address)', это сообщает 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, максимальное - 65 КБ или 32 КБ отрицательное)

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

байт lo = x; (64)

отправить байты и объединить на другом конце….

byte hi = Wire.read (); байт привет = Wire.read ();

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

int newx = (привет << 8) + lo; (5696)

Шаг 7: ЗАКРЫТИЕ

ЗАКРЫТИЕ
ЗАКРЫТИЕ
ЗАКРЫТИЕ
ЗАКРЫТИЕ
ЗАКРЫТИЕ
ЗАКРЫТИЕ
ЗАКРЫТИЕ
ЗАКРЫТИЕ

Чтобы закрыть, этот звуковой датчик дает материнской плате необработанные данные о расстоянии в режиме реального времени. Это освобождает микро и делает набросок намного менее сложным. Теперь микроконтроллер может принять правильное решение о замедлении, повороте, остановке или реверсе на основе достоверных данных, а не случайных предположений. См. Другой мой пост о bluetooth IDE, чтобы загружать эскизы без проводов и постоянно подключать робота, чтобы просто быстро изменить эскиз. Спасибо за просмотр. oldmaninsc.

Рекомендуемые: