Полезная информация


avatar_verial

Программа для переделки гироскутера.

Автор verial, 23 Дек. 2018 в 08:29

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

andreyzab@mail.ru

#1332
Цитата: andreyzab@mail.ru от 08 Янв. 2026 в 12:56Здрасьте всем!
В общем и целом буду краток - есть две такие идейки:
1. собрать самоходное кресло на 2 гироскутерах с колесами 10,5" чтоб ездить на нем по магазинам в радиусе 10 км. Реализация такая - 2 гироскутера, 4 мотора, на одном стоит кресло, другой гироскутер установлен спереди и прикреплен к первому по принципу шарнирной рамы (как у трактора К700) управляется все это хозяйство либо родной прошивкой и одним контроллером наклона (мною проверено и опробовано управление одним штатным контроллером наклона обоими колесами 1 гироскутера, думаю что и  гироскутера заведу без проблем) либо с ручкой "газа" и перепрошитыми контроллерами гироскутеров. или с смартфона через блютуз.
2. самоходная роботележка под управлением ИИ. Также 4 колесная и полноприводная, с ломающейся рамой, для выполнения всяких домашних функций - подача инструмента ,создание и хранение базы вещей в доме, такой робот типа подай-принеси, запомни где что лежит-положи на место, покоси траву, открой дверь, сгоняй в магазин за пивком, подай масло и т.д.

самоходное кресло 4 WD будет управляться по направлению просто ногами - руки свободны, ногами поворачиваешь передний гироскутер в стороны, и тележка едет куда надо, управление скоростью (всеми 4 колесами) с  1 родной платы баланса гироскутера, спереди также будет установлен 2 аккумулятора - родной на 6Ач и LiFePO 12В 100Ач с электронным преобразователем 12-42 В для зарядки и подпитки родного тягового аккума. LiFePO12В 100Ач уже есть, куплен новым по дешевке на ОЗОНе за 10тыр, характеристики соответствуют, гироскутеры есть, куплены по 2тыр на авито, (3 шт)
В гироскутерах разобрался, научился перепрошивать, но мне больше понравилась родная прошивка гироскутера потому что она очень бережно относится к заряду батареи, и еще понравилось управлять с помощью родной платы баланса -
Размыкаешь один светодиодный вход - гироскутер едет осторожно, размыкаешь два свотодиодных входа - гироскутер будет валить на полную, наклоном можно управлять вперед, назад, тормоз, и т.д. 
Чиню всё подряд

andreyzab@mail.ru

Робот- косилка это тоже самоходная тележка на которой установлен манипулятор и дополнительное пятое мотор-колесо от гироскутера которое используется как роторная косилка три ножа шарнирно креплю к алюминиевому ободу мотор-колеса, само колесо крутится горизонтально осью вверх - получается замечательная косилка.
Набор датчиков приближения и поворотная камера - основные сенсоры;
Планшет с ИИ которым можно командовать по WiFi.
Чиню всё подряд

andreyzab@mail.ru

Манипулятор думаю изготовить из пары силовых червячных редукторов, механический захват - трехпалый с тросовым приводом на принципе скручивающихся тросов (когда два параллельных тросика скручиваешь их длинна уменьшается, просто и достаточное усилие) клешня будет трехпалая + еще и магнитный захват.
Чиню всё подряд

dumbuk

Цитата: Shadow_ru от 23 Окт. 2020 в 23:16Ну в общем, я скидал и протестил прошивку. Выложил на гитхаб :
https://github.com/Shadowru/hoverboard-firmware-hack-FOC
Там отключен вовсе левый мотор и работает только правый(короткие провода) и только под UART управлением. На напряжение батареи наверно нет смысла смотреть - откалибрована под мой экземпляр.
SPD режим вроде работает как надо - протести. Главное : управление с UART запускать надо после запуска платы и скорость порта поднята до 115200 - надо поменять в ардуино. Тестил не с ардуиной, а с компа, если не заработает как надо - скорость можно вернуть
config.h
USART3_BAUD 38400

А, да. И фазные провода верни обратно по цветам. И в режиме SPD можно посылать значения меньше 50 в управлении. Ну и 1000 оборотов не подавай - начни с 50
Здравствуйте! конечно много времени прошло с момента написания сообщения. Но не могли бы вы если увидите это сообщение сделать прошивку для той же платы, но с управлением с ручки газа на датчике холла

andreyzab@mail.ru

#1336
В общем и целом, пока страждущий народ продолжает искать ручки газа и тормоза и пульты управления RC я решил управлять гироскутером по UART.

Прошил плату HoverSerial, и попробовал поуправлять со странички деморежима... мне понравилось!
Тогда с помощью ИИпомощника ГуглА я разобрался в скетче hoverserial.ino, который любезно оставили разработчики прошивки hoverboard-firmware-hack-FOC
и попросил ИИ написать мне прошивку для ESP32-C3 SuperMini чтоб управлять гироскутером по вайфаю напрямую, пятью кнопками - "вперед", "назад", "вправо", "влево", "плавный стоп".
Вот что получилось в результате:
#include <WiFi.h>
#include <WebServer.h>

// ########################## НАСТРОЙКИ ##########################
const char* ssid = "Hover_C3_Robot";
const char* password = "";           

#define START_FRAME         0xABCD   
#define TIME_SEND           30       
#define SPEED_MAX_TEST      600     
#define STEP_VAL            50       
#define SMOOTH_STEP         5       

// Пины для ESP32-C3 Super Mini
// Используем аппаратный Serial1: RX=GPIO20, TX=GPIO21
#define RXD1 20
#define TXD1 21

WebServer server(80);

int16_t targetSpeed = 0;   
int16_t targetSteer = 0;   
int16_t currentSpeed = 0; 
int16_t currentSteer = 0;
unsigned long iTimeSend = 0;

typedef struct {
   uint16_t start;
   int16_t  steer;
   int16_t  speed;
   uint16_t checksum;
} SerialCommand;
SerialCommand Command;

// ########################## ВЕБ-ИНТЕРФЕЙС ##########################
const char PAGE_MAIN[] PROGMEM = R"=====(
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>Hover C3 AI</title>
    <style>
        body { text-align: center; font-family: sans-serif; background: #121212; color: #eee; margin:0; padding:20px; }
        .grid { display: grid; grid-template-columns: 85px 85px 85px; gap: 15px; justify-content: center; margin-top: 20px; }
        button { width: 85px; height: 85px; font-size: 24px; border: none; border-radius: 20px; background: #2c2c2c; color: white; cursor: pointer; }
        button:active { background: #444; transform: scale(0.95); }
        .stop { background: #d32f2f; grid-column: span 3; width: 100%; height: 70px; margin-top: 10px; font-weight: bold; }
        .stat { margin-top: 30px; font-family: monospace; font-size: 20px; color: #4caf50; }
    </style>
</head>
<body>
    <h1>🛰� Hover C3 Control</h1>
    <div class="grid">
        <div></div><button onclick="send('up')">▲</button><div></div>
        <button onclick="send('left')">◀</button>
        <button onclick="send('down')">▼</button>
        <button onclick="send('right')">▶</button>
        <button class="stop" onclick="send('stop')">ПЛАВНЫЙ СТОП</button>
    </div>
    <div class="stat">
        SPD: <span id="spd">0</span> | STR: <span id="str">0</span>
    </div>
    <script>
        function send(dir) { fetch('/move?dir=' + dir); }
        setInterval(() => {
            fetch('/data').then(r => r.json()).then(d => {
                document.getElementById('spd').innerText = d.speed;
                document.getElementById('str').innerText = d.steer;
            });
        }, 300);
    </script>
</body>
</html>
)=====";

// ########################## ЛОГИКА ##########################

void handleRoot() { server.send(200, "text/html", PAGE_MAIN); }

void handleMove() {
    String dir = server.arg("dir");
    if (dir == "up")    targetSpeed += STEP_VAL;
    else if (dir == "down")  targetSpeed -= STEP_VAL;
    else if (dir == "left")  targetSteer -= STEP_VAL;
    else if (dir == "right") targetSteer += STEP_VAL;
    else if (dir == "stop") { targetSpeed = 0; targetSteer = 0; }
   
    targetSpeed = constrain(targetSpeed, -SPEED_MAX_TEST, SPEED_MAX_TEST);
    targetSteer = constrain(targetSteer, -SPEED_MAX_TEST, SPEED_MAX_TEST);
    server.send(200, "text/plain", "OK");
}

void handleData() {
    String json = "{\"speed\":" + String(currentSpeed) + ",\"steer\":" + String(currentSteer) + "}";
    server.send(200, "application/json", json);
}

void Send(int16_t uSteer, int16_t uSpeed) {
    Command.start = (uint16_t)START_FRAME;
    Command.steer = (int16_t)uSteer;
    Command.speed = (int16_t)uSpeed;
    Command.checksum = (uint16_t)(Command.start ^ Command.steer ^ Command.speed);
    Serial1.write((uint8_t *)&Command, sizeof(Command));
}

void setup() {
    // Основной USB порт для отладки
    Serial.begin(115200);
   
    // Аппаратный Serial для гироскутера
    Serial1.begin(115200, SERIAL_8N1, RXD1, TXD1);

    WiFi.softAP(ssid, password);
    Serial.println("C3 AP запущен. Адрес: 192.168.4.1");

    server.on("/", handleRoot);
    server.on("/move", handleMove);
    server.on("/data", handleData);
    server.begin();
}

void loop() {
    server.handleClient();
    unsigned long timeNow = millis();

    if (timeNow > iTimeSend) {
        iTimeSend = timeNow + TIME_SEND;

        if (currentSpeed < targetSpeed) currentSpeed = min(currentSpeed + SMOOTH_STEP, (int)targetSpeed);
        else if (currentSpeed > targetSpeed) currentSpeed = max(currentSpeed - SMOOTH_STEP, (int)targetSpeed);

        if (currentSteer < targetSteer) currentSteer = min(currentSteer + SMOOTH_STEP, (int)targetSteer);
        else if (currentSteer > targetSteer) currentSteer = max(currentSteer - SMOOTH_STEP, (int)targetSteer);

        Send(currentSteer, currentSpeed);
    }
}
:laugh:
Прошил завалявшуюся у меня ЕСПху, и вуаля!, теперь через браузер управляю со смартфона или с компа или с ЧЕГО УГОДНО!!!
ESP32-C3 подключаю к правому UART потому что она работает с напряжением 3,3 вольт. Подключаю GND-GND; TX-RX; RX-TX. Питание ESP 5 вольт по USB-C hазъему.

Адрес веб интерфейса ЕСПхи:
http://192.168.4.1/ точка доступа называется "Hover_C3_Robot" (но конечно все можно переделать в скетче :-D  :-D  :-D  :-D  :-D
кнопки выглядят вот так: (не знаю как сюда воткнуть картинку)
Чиню всё подряд

andreyzab@mail.ru

Дальше есть мысли подключить планшет с ИИ, камеру, сенсоры, ЖыПэЭс и пусть гоняет в магаз за продуктами и запчастями.

А со временем построю ему роборуку клограмм на 50-100 сил и научу запоминать что-где хранится в доме чтоб он мне приносил-подавал  :dance:  :dance:  :dance:  :dance:

Как в том моем любимом мульте:
- (компьютерным голосом) Для чего я создан?
Рик:
- Подай масло!
Чиню всё подряд

andreyzab@mail.ru

ПыСы

Поговаривают что у ЕСП есть специфический протокол обмена по эфиру, который работает на расстоянии до километра... мож и его подтяну.
Чиню всё подряд

serg247

На счёт косилки из колеса гироскутера. Оборотов маловато. Да и мощи. Коммутнуть на треугольник. К плоскости ротора диск прикрутить и три оси вокруг которых ножики крутятся, дабы исключить консольную нагрузку на оси и диск не даст тормозить колесо на камнях и т.п. Колесо с 30-ми магнитами, залить немного масла внутрь для охлаждения и запитать от 60 вольт. Обороты овер 3к тогда будут.

kor

Цитата: serg247 от 28 Янв. 2026 в 01:09Колесо с 30-ми магнитами, залить немного масла внутрь для охлаждения и запитать от 60 вольт. Обороты овер 3к тогда будут.
А какая мощность будет потребляться мотором на холостом ходу при таких оборотах?

resler

Здравствуйте, не знаю, как создать новую тему, пишу здесь, извините, если что, есть плата на GD32F303RTC6, какой на неё заказать проц или воспользоваться этим?

serg247

Цитата: kor от 29 Янв. 2026 в 12:33А какая мощность будет потребляться мотором на холостом ходу при таких оборотах?
Приличная. В цифрах не скажу.

serg247

Цитата: resler от 07 Фев. 2026 в 14:44Здравствуйте, не знаю, как создать новую тему, пишу здесь, извините, если что, есть плата на GD32F303RTC6, какой на неё заказать проц или воспользоваться этим?
Такой же, но 103 вместо 303, которые на двухплатных обычно стоят. Для них прошивки более редкие.

gumeldiman

Привет всем самодельщикам!

в гитхабовской прошиве hoverboard-firmware-hack-FOC-main

сделал такие настройки:

#define VARIANT_HOVERCAR
...
// метод управления моторами:
#define CTRL_TYP_SEL    FOC_CTRL
#define CTRL_MOD_REQ    SPD_MODE

Крутящий момент и скорость вращения колёс устраивают. Не нравится то что, у колёс нет свободного вращения. Как это можно исправить? Жалко батарейку тратить на это..

gumeldiman

И еще вопрос:

насколько данная настройка
#define N_MOT_MAX       1000соответствует реальности?

На мой взгляд 1000 оборотов гироскутерное колесо на штатном аккумуляторе не выдает. И есть ли возможность понять реальные обороты?

_AAP_

Крутящий момент и скорость вращения колёс устраивают. Не нравится то что, у колёс нет свободного вращения. Как это можно исправить? Жалко батарейку тратить на это..
[/quote]
Дело в том что "свободное" вращение колес FOC-ом тратит батарейку . 

edw123

Цитата: _AAP_ от 12 Март 2026 в 10:18Крутящий момент и скорость вращения колёс устраивают. Не нравится то что, у колёс нет свободного вращения. Как это можно исправить? Жалко батарейку тратить на это..

Дело в том что "свободное" вращение колес FOC-ом тратит батарейку .
Смотрите шире  :-D : сопротивление вращению и накату зависит только от подшипников и резины, т.е. если электричество специально не притормаживает, то оно только компенсирует потери - просто удлинняет накат.  Никакого перерасхода не будет - меньше потратится на разгон после выбега. Если надо накатить до остановки, тогда посложнее. :pardon: