Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Я создаю для развлечения робота, которого хочу автономно перемещать внутри дома.
Это долгая работа, и я делаю ее постепенно.
Это поучительный акцент на обнаружении препятствий с помощью Arduino Mega
Ультразвуковые датчики HC-SR04 и HY-SRF05 дешевы и просты в использовании, но их сложно интегрировать в цикл микроконтроллера в сложном роботе. Я хотел запустить обнаружение препятствий асинхронным способом.
_
Я уже опубликовал 3 инструкции об особенностях этого робота:
- Сделайте свой колесный энкодер
- Сделайте свой WIFI шлюз
- Используйте инерциальный модуль
И документация о сочетании искусственного интеллекта и ультразвука для локализации робота.
Шаг 1. В чем именно заключается проблема ультразвуковых датчиков и микроконтроллеров?
Синхронное ожидание и ограничения Arduino
Код микроконтроллеров работает в цикле и не поддерживает многопоточность. Ультразвуковые датчики основаны на продолжительности сигнала. Эта продолжительность длится до 30 мс, что очень долго, чтобы ждать внутри цикла, когда микроконтроллеры должны иметь дело с несколькими двигателями и датчиками (например, сервоприводами и двигателями постоянного тока с колесными энкодерами).
Итак, я хотел разработать объект, который работает асинхронно.
Шаг 2: как это работает?
Он был разработан для Atmega для обнаружения препятствий. Он поддерживает до 4 ультразвуковых датчиков.
Благодаря периодическому прерыванию по времени система может контролировать до 4 ультразвуковых датчиков. Основной код должен только определить, какой датчик активировать с условием и порогом. Основной код будет прерван только в случае появления (условие, порог).
Основные функции:
- Оповещение является основным средством обнаружения препятствий и обеспечивает прерывание, если хотя бы 1 из 4 датчиков обнаруживает расстояние ниже порогового значения.
- Монитор - это расширенная функция, которая обеспечивает прерывание при сочетании условий расстояния до 4 датчиков. Возможные условия: выше, ниже, равны или не равны пороговым значениям.
Шаг 3. Технические подробности
Используйте timer4, чтобы контакты 6 7 8 не могли использоваться в качестве ШИМ.
Для каждого датчика объекту нужен ПИН-код триггера и ПИН-код прерывания.
Помимо PIN-кодов прерывания датчиков объекту требуется другой PIN-код прерывания для использования программного обеспечения.
Шаг 4: Как реализовать?
Подключите датчики, как указано выше
Скачать из этого репозитория GitHub
- EchoObstacleDetection.cpp,
- EchoObstacleDetection.h
- ExampleEchoObstacleDetection.ino
Создайте каталог EchoObstacleDetection внутри своей библиотеки IDE и переместите.cpp и.h
Попробуй это
Откройте ExampleEchoObstacleDetection.ino.
Это простой пример обнаружения препятствий с использованием 2 ультразвуковых датчиков.
Вывод направляется на последовательный монитор. Сначала он распечатает расстояния, обнаруженные двумя датчиками, а затем распечатает предупреждения в зависимости от расстояний ниже пороговых значений.