Есть у меня незавершенный гештальт — сделать робота. И чтобы это был не танк на радиоуправлении, а нечто самостоятельно принимающее решение на уничтожение действующее в зависимости от условий окружающей среды и собственных задач.

Основной затык долгие годы был в шасси. Врожденное рукожопство, лень и желание сделать конфетку из дешевого амна раз за разом приводили к рождению мертворожденных особей. То мощности моторов не хватает, чтобы увезти собственный аккумулятор, то сожгу какой-нибудь драйвер неправильным подключением, то сожгу очередную Raspberry Pi, забыв что ест она только 3,3 В. После каждого несчастного случая я забывал про проект на год-полтора, однак ж, через некоторое время страсть к постройке Терминатора разгоралась с новой силой.

Недавно я похоронил очередную Rpi 2, пытаясь подключить к ней драйвер моторов ul489 (который пытался поставить вместо толи бракованного, то ли слегка сожженого l298). После этого я принял 2 решения:

  1. Ну его нафиг (пока) эти шаговые двигатели. Все равно робот должен считывать свои передвижения не по номинально сделанным шагам степпера, а объективно — через изменение обстановки. Посему я отобрал у старшего хенглонговский танк 1/32 wannabe Абрамс, разломал его и взял нижнюю часть в качестве шасси. Да, маленький, да, моторы 6В слабоваты, но вроде пока тянет.
  2. Вместо того, чтобы пытаться впихнуть невпихуемое на Raspberry Pi, я оставлю ей только логику высшего порядка, а все, что связано с читанием датчиков и управлением двигателями — поставлю на Ардуино, благо, уже лет 10 ожидает своего часа Arduino Mega. Команды же неокортекса на Малине на спинной мозг Ардуины буду передавать через последовательный порт.

Ардуина, как ни крути, гораздо лучше приспособлена для такого рода проектов. Она и более дубовая, и имеет логику 5 В, и аналоговые порты. Да и тупо мамские GPIO удобнее папских.

Да, не умеет в многопоточность, но для этих целей есть Малина.

Сказано — сделано. Через полдня у меня появился Франкенштейн с корпусом из картона (я ничего не проектировал, вырезал «по-месту». На шасси от игрушечного танка:

  1. Ардуина
    1. Драйвер моторов на базе L298
    2. Сонар HC-SR04
    3. Магнитометр HMC5883L (не работает, жду новый)
    4. в планах — датчик температуры
    5. в планах — поставить еще один сонар URM37 на сервоприводе, для лучшего обзора
    6. в планах — поставить инфракрасный дальномер, потому что сонар имеет сложности с мягкими поверхностями, а также с прямыми твердыми поверхностями под большими углами)
  2. Малина
    1. датчик GPS/GlONASS U-BLOX7 (воткнут в USB) — в помещении может что-то поймать только у окна, с точностью пока не разбирался.
    2. Акселерометр ADXL345 — подключен через I2C.
    3. в планах — камера для RaspberryPi. Борюсь с жабой. Думаю, подойдет ли камера для RPi Nano (должна подойти)
    4. в планах — дописать модуль для получения силы сигнала WiFi (будет использоваться в качестве уточняющего параметра при позиционировании робота на карте)
  3. Аккумулятор 4Ah на 8.4 В — для питания Ардуины и двигателей
  4. Пауэрбанк на 10 Ah — для питания Raspberry Pi

Оно уже ездит и даже почти не натыкается на стены. А самое главное — не разваливается в процессе эксплуатации. Это большое достижение. ))

В ближайших планах:

  1. добавить заявленные датчики
  2. соединить Ардуину и Малину через GPIO по UART (жду согласователя уровней)
  3. начать строить карту помещения на основании дальномера, магнитного компаса и силы сигнала WiFi

Назову его T-0,33. Код и дальнейшее развитие проекта — в следующих постах, если боги рукожопия будут благосклонны.