SunFounder Zeus Car Kit представляет собой образовательный набор на базе Arduino UNO и ESP32 Cam для детей (и взрослых), предназначенный для изучения электроники, робототехники и программирования. Это автомобиль с четырьмя меканум-колесами диаметром 6 см для всестороннего движения и различными сенсорами, управляемый через Android-приложение с поддержкой обзора от первого лица (FPV) благодаря встроенной камере.
Компания предоставила набор Zeus Car Kit для тестирования и оценки. После сборки он будет использоваться в «Игровом режиме» — готовой к работе игрушкой — перед изучением «Режима программирования» и связанных руководств по Arduino для оценки образовательного потенциала.
Распаковка Zeus Car Kit
Набор поставляется в красочной розничной упаковке, демонстрирующей возможности: FPV, всестороннее движение, компьютерное зрение, компас, ИК-управление, управление через приложение и RGB-подсветку.
Внутри упаковки находятся четыре коробки со всеми компонентами, показанными ниже.
Полный перечень:
- Конструкционные пластины (четыре металлические детали)
- 4x меканум-колеса
- 4x мотора
- Плата SunFounder (Arduino UNO) R3
- Плата расширения SunFounder Zeus Car Shield для подключения всех сенсоров и моторов к Arduino UNO
- Модуль ESP32 CAM и плата-адаптер камеры
- 2x модуля ИК-избегания препятствий
- Ультразвуковой модуль
- Модуль всенаправленного определения оттенков серого SunFounder Omni Grayscale для следования по линии и обнаружения границ
- 2x RGB LED-ленты
- Аккумулятор 2,220 mAh из двух соединенных батарей 18650
- ИК-пульт дистанционного управления
- Шайбы, гайки, винты, стойки и заклепки разных размеров в индивидуальных zip-пакетах с маркировкой
- Инструменты: шестигранные ключи, отвертки,
- Различные кабели
Включенное руководство по сборке упрощает сборку и содержит ссылку на более подробное онлайн-руководство пользователя .
Сборка Zeus Car Kit
Напечатанное руководство по сборке особенно удобно для тех, кто предпочитает не включать компьютер рано утром. Первый этап — крепление четырех моторов к металлическому шасси.
Процесс прост, главное — направить провода внутрь.
Далее следует сборка ультразвукового сенсора с использованием металлической пластины и заклепок.
Затем устанавливается модуль ESP32-CAM через адаптер с помощью еще одной металлической пластины, два модуля ИК-избегания препятствий с соответствующими кабелями и несколько стоек.
После этого плата Arduino UNO R3 (клон) фиксируется стойками и винтами, при этом кабели камеры и сенсоров пропускаются снизу.
На этом этапе плата расширения Zeus Car Kit Shield устанавливается на плату Arduino и подключается, как показано ниже.
Далее выполняется прокладка кабелей: провода моторов стягиваются хомутом, а одна часть липучки крепится на днище автомобиля.
Вторая часть липучки крепится к аккумулятору, который затем фиксируется на днище.
Аккумулятор подключается к разъему PWR на плате Zeus Car Shield, как и две RGB LED-ленты.
После снятия синей защитной пленки RGB LED-ленты крепятся спереди и сзади автомобиля. Модуль Omni Grayscale устанавливается под днищем, а меканум-колеса фиксируются винтами. Этот этап оказался сложнее ожидаемого — потребовалось приложить усилие для посадки колес на оси моторов.
Финальный шаг — подключение кабеля модуля Omni Grayscale к разъему GS на плате Zeus Car Shield.
Результат — собранный стильный роботизированный автомобиль.
Zeus Car Kit обладает расширенным функционалом (меканум-колеса, модуль ESP32 камеры) и ощутимо прочнее бюджетного набора CrowBot BOLT от Elecrow , протестированного ранее. Для долговечности и сложных задач Zeus предпочтительнее, тогда как CrowBot BOLT подойдет для кратковременного использования, позволяя сэкономить.

Игровой режим с приложением SunFounder Controller для Android
Перед использованием робота необходимо зарядить аккумулятор. Для этого используется USB-C адаптер — индикатор заряда горит до завершения процесса. Также следует убедиться, что выключатель питания выключен, а переключатель режима установлен в положение Run (а не Upload), как на фото ниже.
Доступно два «Игровых режима»: с ИК-пультом или через приложение SunFounder Controller для iOS или Android . Управление ИК-пультом позволяет быстрее начать работу со встроенными функциями, но мобильное приложение интереснее благодаря доступу к камере ESP32. Для теста приложение установлено на смартфон Huawei Y9 Prime 2019.
Первым шагом необходимо нажать иконку «Плюс» и выбрать Zeus Car.
Приложение загрузит стандартный пульт управления с возможностью добавления функций, после чего следует подтвердить выбор галочкой в правом верхнем углу.
После включения Zeus Car RGB LED-лента под днищем загорается голубым. Если цвет желтый, проверьте положение переключателя режима. Далее нажимается иконка соединения для подключения к Wi-Fi…
… выбирается сеть Zeus_Car на телефоне…
… и в приложении вместо иконки соединения отображается «Zeus_Car».
Нажатие кнопки воспроизведения рядом с надписью «Zeus_Car» выводит изображение с камеры поверх элементов управления…
… позволяя вручную управлять автомобилем с помощью джойстиков.
- Левый джойстик (K) управляет движением автомобиля во всех направлениях.
- Джойстик Q (справа) управляет направлением передних колес.
Остальные функции:
- Калибровка (E) – Активирует калибровку компаса. Робот будет вращаться до завершения калибровки (менее минуты, в нашем случае около 10 секунд).
- Стоп (F) – Останавливает все движения машины.
- Голос (I) – Управление голосовыми командами. Не работает на Android до подключения робота через режим точки доступа. На iOS работает с офлайн-распознаванием речи.
- Дрифт (J) – Активирует функцию дрифта.
- Линия (N) – Переключает в режим следования по линии.
- Следование (O) – Переключает в режим преследования.
- Обход (P) – Переключает в режим избегания препятствий.
Режим Follow требует калибровки путем регулировки потенциометров каждого модуля избегания препятствий на расстояние ~15 см (включение светодиода Sled), тогда как ультразвуковой датчик обнаруживает объекты на расстоянии ~20 см.
Для режима Line following потребуется создать трек из прилагаемой изоленты. Потребовалось несколько попыток, так как трек должен быть шириной не менее 3 см по всей длине для надежной работы. Лента имеет свойство отклеиваться и скручиваться, что неидеально. Лучше бы приложили напечатанный трек на бумаге или картоне для складывания в упаковку.
Рекомендуется калибровка, но этап был пропущен: пробный тест подтвердил корректное распознавание «белого» и черного, несмотря на неидеально белый пол.
Лучше всего посмотреть видео ниже, демонстрирующее все предустановленные режимы.
Программирование Zeus Car в Arduino IDE
Хотя использование Zeus Car в игровом режиме интересно, было бы неверно не задействовать его программируемость для изучения электроники и Arduino. На сайте документации доступны 18 «учебных проектов» с кодом на GitHub , включая прошивку «Play Mode», которая перезаписывается при загрузке пользовательских программ на плату Arduino UNO R3.
Рассмотрим первый урок «Basic Movements» для управления направлением движения Zeus Car. Первый шаг – скачать и установить Arduino IDE (предпочтительно версию 2.x) и необходимые библиотеки: SoftPWM и IRLremote.
Код можно скачать/клонировать с GitHub:
1 |
$ git clone https://github.com/sunfounder/zeus-car/ |
Подключите Zeus Car к ПК через прилагаемый USB-кабель (синий), убедившись, что переключатель Upload установлен правильно.
В ОС появится новое USB-устройство. Пример вывода ядра в Linux (Ubuntu 22.04):
1 2 3 4 5 6 7 8 |
[24617.705382] usb 1-1: new full-speed USB device number 4 using xhci_hcd [24617.892262] usb 1-1: New USB device found, idVendor=2341, idProduct=0043, bcdDevice= 0.01 [24617.892270] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=220 [24617.892273] usb 1-1: Manufacturer: Arduino (www.arduino.cc) [24617.892276] usb 1-1: SerialNumber: 24238313435351C08281 [24618.041524] cdc_acm 1-1:1.0: ttyACM0: USB ACM device [24618.041586] usbcore: registered new interface driver cdc_acm [24618.041589] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters |
Загрузим пример «Basic Movements» в Arduino IDE, выбрав плату «Arduino UNO» (подключенную к /dev/ttyACM0 или COMXX в зависимости от ОС).
Полный скетч для справки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
/******************************************************************* * basic_move Control the direction and speed of motors rotation by pwm, to make the car go forward, backward, left turn, right turn and stop. ******************************************************************/ #include <Arduino.h> #include <SoftPWM.h> /* * [0]--|||--[1] * | | * | | * | | * | | * [3]-------[2] */ /** Set the pins for the motors */ #define MOTOR_PINS \ (uint8_t[8]) { \ 3, 4, 5, 6, A3, A2, A1, A0 \ } /** Set the positive and negative directions for the motors */ #define MOTOR_DIRECTIONS \ (uint8_t[4]) { \ 1, 0, 0, 1 \ } #define MOTOR_POWER_MIN 28 // 28/255 int8_t power = 80; void setup() { Serial.begin(115200); Serial.println("Zeus Car basic move"); SoftPWMBegin(); //init softpwm, before the motors initialization carBegin(); // init motors } void loop() { carForward(power); delay(1000); carBackward(power); delay(1000); carLeft(power); delay(1000); carRight(power); delay(1000); carLeftForward(power); delay(1000); carLeftBackward(power); delay(1000); carRightForward(power); delay(1000); carRightBackward(power); delay(1000); carTurnLeft(power); delay(1000); carTurnRight(power); delay(1000); carStop(); delay(2000); } void carBegin() { for (uint8_t i = 0; i < 8; i++) { SoftPWMSet(MOTOR_PINS[i], 0); SoftPWMSetFadeTime(MOTOR_PINS[i], 100, 100); } } void carSetMotors(int8_t power0, int8_t power1, int8_t power2, int8_t power3) { bool dir[4]; int8_t power[4] = { power0, power1, power2, power3 }; int8_t newPower[4]; for (uint8_t i = 0; i < 4; i++) { dir[i] = power[i] > 0; if (MOTOR_DIRECTIONS[i]) dir[i] = !dir[i]; if (power[i] == 0) { newPower[i] = 0; } else { newPower[i] = map(abs(power[i]), 0, 100, MOTOR_POWER_MIN, 255); } SoftPWMSet(MOTOR_PINS[i * 2], dir[i] * newPower[i]); SoftPWMSet(MOTOR_PINS[i * 2 + 1], !dir[i] * newPower[i]); } } void carForward(int8_t power) { carSetMotors(power, power, power, power); } void carBackward(int8_t power) { carSetMotors(-power, -power, -power, -power); } void carLeft(int8_t power) { carSetMotors(-power, power, -power, power); } void carRight(int8_t power) { carSetMotors(power, -power, power, -power); } void carLeftForward(int8_t power) { carSetMotors(0, power, 0, power); } void carLeftBackward(int8_t power) { carSetMotors(-power, 0, -power, 0); } void carRightForward(int8_t power) { carSetMotors(power, 0, power, 0); } void carRightBackward(int8_t power) { carSetMotors(0, -power, 0, -power); } void carTurnLeft(int8_t power) { carSetMotors(-power, power, power, -power); } void carTurnRight(int8_t power) { carSetMotors(power, -power, -power, power); } void carStop() { carSetMotors(0, 0, 0, 0); } |
Комментариев мало, но код понятен: Zeus Car будет двигаться в разных направлениях по секунде на каждом этапе, останавливаться на 2 секунды и повторять цикл. В уроке также объясняется принцип работы колес Меканума.
Попробуем загрузить код на плату. Возникла ошибка:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sketch uses 3438 bytes (10%) of program storage space. Maximum is 32256 bytes. Global variables use 401 bytes (19%) of dynamic memory, leaving 1647 bytes for local variables. Maximum is 2048 bytes. avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00 Failed uploading: uploading error: exit status 1 |
Это моя ошибка: перед загрузкой необходимо снять плату ESP32-CAM, так как она использует тот же последовательный порт. Переключатель Upload не решает эту проблему – ESP32-CAM нужно физически отсоединить от адаптера SunFounder. После этого код загружается без ошибок:
Если нет большого стола, лучше переместите робота на пол для тестирования программы «Basic Movements».
Полный список учебных проектов:
- Базовые движения
- Омни-перемещение
- Движение и вращение
- Дрифт
- Пульт ДУ
- Фары
- Компас
- Движение с привязкой к полю
- ИК-препятствия
- Ультразвук
- Обход препятствий
- Следование
- Градации серого
- Следование по линии
- Следование по линии с привязкой к полю
- AI-детекция в приложении (распознавание лиц/поз)
- Управление через приложение
- Управление через приложение Plus (аналог прошивки «Play Mode»)
Комплект предоставляет обширные возможности для обучения.
Заключение
SunFounder Zeus Car Kit – отличный робот как для игр после сборки, так и для изучения программирования и основ робототехники благодаря Arduino-примерам и урокам. Конструкция надежна и долговечна, что особенно подходит для учебных заведений.
Несмотря на удовольствие от тестирования, создание трека изолентой оказалось неудобным: через несколько часов лента перестала держаться на полу (возможно, из-за жаркого климата Таиланда). Напечатанный трек был бы предпочтительнее. Мобильное приложение, судя по всему, закрытое – упущена возможность изучения мобильной разработки.
Тем не менее, Zeus Car Kit рекомендуется к покупке, особенно учитывая стоимость $99 с доставкой и 10% скидку для новых покупателей. Также доступен на Amazon .
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.