7 грудня 2016 р.

11. Переосмислення проекту: від прототипу до зрілості

Отже, станом на сьогодні, ми маємо досить цікавого робота. Він вміє рухатися вперед і повертати вправо та вліво, вміє виконувати якісь нескладні сценарії а також може керуватися віддалено через Wi-Fi. Для краси ми до нього приліпили ще кронштейн із ультразвуковим сенсором відстані HC-SR04. Що робити з тим сенсором - ще не розібралися. Але після його встановлення наш робот перетворився із злісного червоноокого термінатора Т400 на досить няшне створіння в стилі Wall-E.

Робот з декоративним сенсором відстані - 1

Робот з декоративним сенсором відстані - 2

Робот з декоративним сенсором відстані - 3


Зрозуміло, що нашому роботу ще рости і рости. Йому бракує багатьох важливих підсистем, і з кожною з них треба окремо порозбиратися і поекспериментувати:
  • Повноцінного керування двигунами через модуль драйвера типу L293D. Так, щоб двигуни крутилися в обидві сторони.
  • Опрацювання даних із давачів Холла, вмонтованих в двигуни шасі. Можливо це спосіб детектувати пробуксовки або блокування гусениць? Треба дослідити.
  • Адекватної системи живлення - 3 батарейки AA явно мало. І PowerBank тягати на борту для живлення Arduinо також не дуже практично. Взяти за основу батарею на 6 елементів AA? Чи краще створити щось на основі елементів 18650 3.7V?
  • Красивої світлодіодної підсвітки. В комплекті з роботом ідуть чудові фари, але вони чомусь червоні. Встановлення червоних фар спереду транспортного засобу накликає надто тяжку карму. Доведеться переробляти. Плюс можна побавитися з динамічнішою підсвіткою, як було описано раніше.
  • Бракує сенсорів відстані. Сенсор відстані, поставлений на сервомашинку дасть можливість роботу "крутити головою" і приймати трохи розумніші рішення про об'їзд перешкод. В роботі ультразвукових сенсорів є свої особливості - кажуть, вони можуть конфліктувати, якщо мати їх кілька. Також кажуть, що вони нервують котів і собак. Може краще використати інфрачервоні? Треба дослідити.
  • Одного або двох сенсорів краю поверхні. Щоб робот помічав не тільки стіни, а й глибокі ями, високі сходинки та інші небезпечні провалля. Якщо очікується, що робот буде інтенсивно пересуватися заднім ходом - таких сенсорів треба ставити всі чотири.
  • Кращої системи генерування звуків. Щоб і звук можна було видавати приємніший, і робота процесора не блокувалася на час відтворення (як це робиться зараз). Прості звукові модулі коштують недорого, але не виключено, що до такого доведеться ставити і підсилювача, а то вже додаткові витрати енергії і ускладнення схеми. Треба рахувати.
  • Кращої системи візуалізації думок і намірів робота - треба якийсь екранчик поставити. Це може бути і текстовий екран, і графічний.
  • Повноцінної системи дистанційного керування. Або на основі RoboRemo, або щось своє написати. Можливо зробити зразу так, щоб на пульт керування передавалося відео і звук із сенсорів робота. Або взагалі зробити обмін відео і звуком в обидві сторони, перетворивши робота на аватара людини, яка ним керує.
  • Системи штучного інтелекту, яка би могла осягнути повноцінну навігацію в приміщеннях, розпізнавати обличчя, знаходити предмети, робити всякі інші круті речі, і з часом стати достойним учасником мережі SkyNet :-)

Грандіозність планів починає вселяти сумніви, чи вистарчить одному Arduino UNO ресурсів все це потягнути. В першу чергу мабуть забракне виходів мікроконтролера, якщо на кожен новий модуль кожен раз виділяти їх по кілька штук.

Модуль Необхідні виходи Arduino
Wi-Fi ESP13/ESP8266 2
Драйвер двигунів 6+2 для давачів Холла
Сервомашинка для головного сенсора відстані 1 (PWM)
Ультразвуковий сенсор відстані 2
Детектор краю поверхні 2 шт. 2
LED підсвітка 3 (SPI через регістр зсуву)
Пищалка 1 (PWM)
Звуковий модуль 4
Мікрофон 1 Аналоговий вхід
LCD екран - текстовий 2 Аналогових (якщо використовувати I2C)

Разом виходить під 20 виходів, навіть за умови використання ощадних протоколів типу SPI чи I2C. Явно забагато для Arduino UNO.

Інше обмеження - об'єм пам'яті. Навіть якщо не виконувати розпізнавання зображення і звуку силами самого робота, обслуговування всіх модулів вимагає дописування все більшої і більшої кількості програмного коду, який легко може вичерпати можливості UNO.

Щоб не заморочуватися із пошуком нової платформи, а також щоб не здорожчувати надмірно наше хобі, ми вирішили піднятися лише на одну сходинку вище - замінити Arduino UNO на Arduino MEGA 2560, яка дає більше можливостей, має значно більше виходів та пам'яті, не виставляючи особливих вимог до живлення чи програмного забезпечення. Різниця в ціні лише на на 5 доларів, порівняно з UNO допомогла зробити цей вибір остаточним :-)

Плата Mega 2560 Uno
Процесор  ATmega2560 ATmega328P
Робоча/
Вхідна
напруги
5 V / 7-12 V 5 V / 7-12 V
Частота процесора 16 MHz 16 MHz 
Аналогові входи/виходи 16/0  6/0
Цифрові виводи/PWM 54/15  14/6
EEPROM [kB] 4 1
SRAM [kB] 8 2
Flash [kB] 256 32
USB Regular Regular
UART 4 1

Схоже, що по всіх параметрах Arduino MEGA 2560 є для нас зараз найкращим вибором.

Arduino Board Mega 2560

Немає коментарів:

Дописати коментар