Гусеничное шасси-робот на базе Arduino, часть 1

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Дело было к вечеру, делать было нечего. Загорелся я как-то созданием универсальной гусеничной платформы для изучения Tenserflow. Причем хотелось сделать управление через ESP32, которая будет регулировать моторчики, даст в случае желание управление через браузер в локальной сети, а Raspberry Pi будет управлять ей, имитируя собственно меня. Плюс возможность запаять навечно ESP32 и обновлять по воздуху. Здесь я хочу изложить примерную хронологию создания.

Полный список запчастей:

Raspberry Pi 4b - 1 шт. // для машинного зрения.
Камера для Raspberry Pi - 1 шт.
ESP32 - 1 шт. // МК для управления моторчиками и в будущем для считывания показаний с датчиков движения.
TT мотор с металлической шестеренкой - 2 шт.
L298N - 1 шт. //драйвер мотора - можно, даже нужно использовать что-то компактней и свежей, у меня же он валялся без дела.
Гусеничные траки - 2 шт.
Аккумуляторные батареи типа 18650 - 2 шт.
Бокс для батареек - 1 шт.
Провода
Винты, гайки и стойки M2, M2.5 и M3.


Сказано - сделано, из Aliexpres были добыты вот такие гусеничные траки, под ТТ мотор в комплекте идет распечатанная втулка, которая совсем не подходит по размера - но это не проблема, есть 3д принтер.

Почему выбраны были именно гусеничные траки? Хотелось бы сказать, что мечтал о высокой проходимости, показателях сцепления с поверхностью, но не буду лгать, модель небольшого размера и мне просто хотелось именно на гусеницах.

Определившись со всеми комплектующими начал проектировать в Fusion 360. Главная цель была - минимализм, хотел поделку небольшого размера, с четко распланированным рабочим пространством, чего мне кажется я смог добиться, но судить не мне.

Отдельно хочется обратить ваше внимание на некоторые детали рамы:

Вот так выглядит отдельно рама:

Пришлось усилить раму (выделил красным) иначе под натяжением траков раму гнуло. Естественно всему виной материал из которого я печатал данную модель - обычная фотополимерная смола от Anycubic.

:Так же в самой модели предусмотрел быстрое снятие/установку траков с натяжением, а выглядит оно проще некуда:

В нижнюю левую часть вставляется опорный вал и ведется по пазу и вставляется винт, который с обратной стороны фиксируется гайкой.

Ну, а остальное обыденно - просто разъемы под все на свете:
Кнопку, разъемы TYPE-C, каналы для проводов, на всякий площадка под серву SG90 (дань китайским машинкам с HC-SR04).

Соответственно все детали под печать выглядят так:

Справа находится втулка для установки гусеничного трака на ТТ мотор
Справа находится втулка для установки гусеничного трака на ТТ мотор

Печатал все на Anycubic M3. Напечатав первую модель я сразу же решил реализовать ручное управление через телефон. Так как я далеко не программист, решил использовать готовую библиотеку, выбор пал на GyverPortal. Выглядит все вот так:

Да, неказисто, но оно работает, а это самое главное, потом можно все доделать/переделать, сейчас же цель придти к работающему опытному образцу. Код тоже явно далек от идеала, но он работает.

Код от пульта:

код пульта
#define AP_SSID ""
#define AP_PASS ""
#include <GyverPortal.h>
GyverPortal ui;

// Motor A
int motor1Pin1 = 27;
int motor1Pin2 = 26;
int enable1Pin = 14;
// Motor B
int motor2Pin1 = 25;
int motor2Pin2 = 33;
int enable2Pin = 32;

int valSlider;
int push=0;
int speed=0;
void setup() {
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enable2Pin, OUTPUT);

digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);

startup();

// подключаем конструктор и запускаем
ui.attachBuild(build);
ui.attach(action);
ui.start();
}

void build() {
GP.BUILD_BEGIN();
//GP.THEME(GP_DARK);
GP.THEME(GP_LIGHT);

GP.TITLE("ESP32 ROBOT");
GP.HR();

M_BLOCK(
GP.LABEL("Статус системы");
GP.BREAK();
GP.LABEL("19%						
Источник: https://habr.com/ru/post/717502/


Интересные статьи

Интересные статьи

Старое жедезо СССР. Часть 3.15ИЭ0013, он же Фрязинский дисплей. Картинка поиском "Советский программист ждет появления"Место , время, автор все те же. Ленинград, Петродворец, ЛГУ ФизФак. НИИ Физики. 1...
В процессе своей профессиональной деятельности мне приходится достаточно много работать с текстовыми документами, подготавливаемыми другими лицами. Одной из задач проверки качества документов является...
С вами снова Максим Никитин, арт-директор ТехноФабрики с сагой о мобильном дизайне. Переходим ко второй части, где позанудствуем на тему удобстваа, внимания, опыта, привы...
В 2020 году на фоне глобальной эпидемии коронавируса и введения режима самоизоляции большинство из нас смогло на собственном опыте прочувствовать, что значат эффективные ...
В данной статье мы разберемся с эксплуатацией некоторых WEB-узвимостей на примере прохождения варгейма Natas. Каждый уровень имеет доступ к паролю следующего уровня. Все пароли также хранятся...