5-дюймовый аккумуляторный локомотив для 3D-печати........
Мотор — https://www.ebay.co.uk/itm/126580863543?mkcid=16&mkevt=1&mkrid=711-127632-2357-0&s sspo=fbslgxu-r5-&sssrc=4429486&ssuid=2amj3ivztf-&var=&widget_ver=artemis&media=SMS
Водитель мотора — https://www.ebay.co.uk/itm/253233207202?mkcid=16&mkevt=1&mkrid=711-127632-2357-0&s sspo=QN5P8uKWSE6&sssrc=4429486&ssuid=2amj3ivztf-&var=&widget_ver=artemis&media=SMS
Ременная передача — https://www.amazon.co.uk/your-orders/pop?ref=ppx_yo2ov_mob_b_pop&orderId=026-6834041-6310703&lineItemId=mnmgptolnpqnooy&shipmentId=UVJrxG6G0&packageId=1&asin=B0CQQYT9QM
Особенно 32 — https://www.amazon.co.uk/Development-XTVTX-NodeMCU-32-ESP-WROOM-совместимый/dp/B0CJHR8SMK/ref=sr_1_4_pp?crid=5X3HGKZTM5ZQ&di b=eyJ2IjoiMSJ9.U_D1E0zc1Jt7JeAoxpnGYmUvjMpRKfzMrz__UOADnqL8fHt2AIM_mLSn6ssO5SFM1U2yjdUHnZu5dfs9pvu8-e9QolmUUgIbBFaTEYLKPrD3 nONGL7Tb9YWqXGl9NbBgAEe-yzXZWgjtGRDvYRXtAhOCWOvOusP5_4Wdgk46X40wZTr5aumyskrn150SIq9_y3R1f3KSGXK9Je6wiKzi97roSHCZSeuZrfobKgu p7Yw.av8Nt_RFDvgwgKbdVulT7TJicBCFUA0VDv72iZ8808s&dib_tag=se&keywords=esp+32&qid=1749239409&sprefix=esp+32%2Caps%2C84&sr=8-4
Батарея — https://www.amazon.co.uk/Yucel-Yuasa-YUCEL-battery-Y1-2-12/dp/B00VK74DY6/ref=sr_1_2_sspa?crid=3QLJJQ0LFC04B&dib=eyJ2IjoiMSJ9.SQF8Z5x2CdIM1TCxp5eI1MYG7 cm0NdOsB4yvP67e1q3F33YTGvzbyFiBRMfHUnrHOvi2grhk1vt_KR7TmVrMgRFinhesC1JVmDJa _fX9uMhwj5zm1woqkCczgRk-rVbmkuztkQCFxVyo_g9PJ1Bx91yEgtbRXR_97-FQNwXGXE_3-hN BwRFlQdzdsIxBtZAEYiW5xUQH_rc6X2qZpev9uEey8gOthmfUYAWDB7c04CY.2fKSG9LEp3WtegYKLA7gv663zr-Fd7TW4zAcQICbIXk&dib_tag=se&keywords=12+вольт+герметичный+свинцовый+кислотный+ аккумулятор+ювольт+1.2Ач&qid=1749239521&sprefix=12+вольт+герметичный+свинцовый+кислотный+аккумулятор+ювольт+1.2ah%2Caps%2C77&sr=8-2-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1
Могут потребоваться дополнительные детали.
Не стесняйтесь оставлять комментарии к инструкциям по сборке или любой другой информации.
Код для загрузки в ESP32:
#include
#include
#include
#include
#include
// Двигатель 1
int двигатель1Pin1 = 26;
int двигатель1Pin2 = 25;
INT Enable1Pin = 14;
// Установка свойств ШИМ
const int разрешение = 8;
intdutyCycle = 0;
const char *ssid = «Диспетчер поезда»; // Имя сети
const char *пароль = ""; // Установка пароля здесь
Строковое значениеString = String(0);
Сервер веб-сервера(80);
недействительный handleRoot() {
const char html[] PROGMEM = R«rawliteral(
<голова>
<стиль>
html {семейство шрифтов: Helvetica; выравнивание текста: по центру; }
.кнопка {
выбор пользователя: нет; цвет фона: #4CAF50; граница: нет;
цвет: белый; отступ: 12 пикселей 28 пикселей; размер шрифта: 26 пикселей;
поле: 1 пиксель; курсор: указатель;
}
.button2 { цвет фона: #ff0000; }
ввод[тип=диапазон]: отключено {
непрозрачность: 0,5;
}
<скрипт>
функция moveForward() {
выборка('/вперед').then(() => {
document.getElementById('motorSpeed').innerText = 0;
document.getElementById('motorSlider').value = 0;
document.getElementById('motorSlider').disabled = false;
document.getElementById('motorDirection').innerText = „Вперед“;
});
}
функция стопМотор() {
выборка('/stop').then(() => {
document.getElementById('motorSpeed').innerText = 0;
document.getElementById('motorSlider').value = 0;
document.getElementById('motorSlider').disabled = true;
document.getElementById('motorDirection').innerText = „Остановлено“;
});
}
функция moveReverse() {
fetch('/reverse').then(() => {
document.getElementById('motorSpeed').innerText = 0;
document.getElementById('motorSlider').value = 0;
document.getElementById('motorSlider').disabled = false;
document.getElementById('motorDirection').innerText = „Обратный“;
});
}
функция updateMotorSpeed(pos) {





























