• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Не работает двигатель на nodemcu v3

dr. Arntholcz

New member
Здравствуйте.

Вводные данные.
Есть Wemos d1 r1. На сколько я знаю там esp8266. Есть два драйвера двигателей mx1508. Один драйвер управляет 2 двигателями, второй одним. Ичпользуются gpio 4,5 для одного и gpio 14, 12 для другого драйвера соответственно. И на wemos d1 r1 все прекрасно работает.
Решил сэкономить место и перейти на nodemcu v3 (где тот же esp8266 или я ошибаюсь?).

Вопрос.
Тот драйвер, который подключен к gpio 4 и 5 крутит двигателями в обе стороны.
А второй, к каким бы gpio я его не подключал, крутит только в одну сторону.
Почему? Как его заставить корректно работать?
Может nodemcu глючные? Покупал их одним заказом на озоне.
Тыкните носом меня, где я допустил ошибку.
Может есть смысл перейти вообще на другой мк (esp32, например)?
 

CodeNameHawk

Moderator
Команда форума
Если работает на Wemos, то может работать и на nodemcu v3.
Просто разберитесь к каким выводам подключить.
Проще всего это сделать ориентируясь по номерам выводов GPIOx,
на разных модулях они могут быть под другими номерами Dx
А так фото в студию, как все собрано.
 

CodeNameHawk

Moderator
Команда форума
Тот драйвер, который подключен к gpio 4 и 5 крутит двигателями в обе стороны.
А второй, к каким бы gpio я его не подключал, крутит только в одну сторону.
Ну так просится подключить на эти выводы и проверить.
 

dr. Arntholcz

New member
Если работает на Wemos, то может работать и на nodemcu v3.
Просто разберитесь к каким выводам подключить.
Проще всего это сделать ориентируясь по номерам выводов GPIOx,
на разных модулях они могут быть под другими номерами Dx
А так фото в студию, как все собрано.
Код:
#include <WebSockets2_Generic.h>
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>

using namespace websockets2_generic;
int led_state, moved, turn, brake = 0;

void onMessageCallback(WebsocketsMessage message)
{
  Serial.print("Got Message: ");
  Serial.println(message.data());

 
      StaticJsonDocument<200> doc;              // create a JSON container
      deserializeJson(doc, message.data());
      led_state = doc["led_state"];
      moved = doc["moved"];
      turn = doc["turn"];
      brake = doc["brake"];
      
      if(led_state==1){digitalWrite(16, !digitalRead(16));};

      if(moved>0){
        analogWrite(4, moved+brake);
        analogWrite(5, 0+brake);
        };
      if(moved<0){
        analogWrite(4, 0+brake);
        analogWrite(5, moved*-1+brake);
        };
      if(moved==0){
        analogWrite(4, 0+brake);
        analogWrite(5, 0+brake);
        };

////////////////////////////////////////////////////////////////////////////////////
      
      if(turn>0){
        analogWrite(12, 1023);
        analogWrite(14, 0);
        };
      if(turn<0){
        analogWrite(12, 0);
        analogWrite(14, 1023);
        };
      if(turn==0){
        analogWrite(12, 0);
        analogWrite(14, 0);
        };


}

void onEventsCallback(WebsocketsEvent event, String data)
{
  (void) data;
    

  if (event == WebsocketsEvent::ConnectionOpened)
  {
    Serial.println("Connnection Opened");
  }
  else if (event == WebsocketsEvent::ConnectionClosed)
  {
    Serial.println("Connnection Closed");
  }
  else if (event == WebsocketsEvent::GotPing)
  {
    Serial.println("Got a Ping!");
  }
  else if (event == WebsocketsEvent::GotPong)
  {
    Serial.println("Got a Pong!");
  }
}

WebsocketsClient client;

void setup()
{
 
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(14, OUTPUT);
  pinMode(16, OUTPUT);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(12, 0);
  digitalWrite(14, 0);
  digitalWrite(16, 0);
  Serial.begin(115200);
  while (!Serial && millis() < 5000);

  Serial.print("\nStart InSecured-ESP8266-Client on "); Serial.println(ARDUINO_BOARD);
  Serial.println(WEBSOCKETS2_GENERIC_VERSION);
 
  // Connect to wifi
  WiFi.begin("Redmi Note 12S", "");

  // Wait some time to connect to wifi
  for (int i = 0; i < 10 && WiFi.status() != WL_CONNECTED; i++)
  {
    Serial.print(".");
    delay(1000);
  }

  // Check if connected to wifi
  if (WiFi.status() != WL_CONNECTED)
  {
    Serial.println("No Wifi!");
    return;
  }

  Serial.print("Connected to Wifi, Connecting to WebSockets Server @");
//  Serial.println(websockets_connection_string);

  // run callback when messages are received
  client.onMessage(onMessageCallback);

  // run callback when events are occuring
  client.onEvent(onEventsCallback);

#if USING_INSECURE_MODE
  client.setInsecure();
#else
  // Before connecting, set the ssl fingerprint of the server
  client.setFingerprint("2D 29...02");
#endif

  // Connect to server
  bool connected = client.connect("wss://my-domen.ru:8031");

  Serial.println("Called Connect to server.");

  if (connected)
  {
    Serial.println("Connected!");

//    String WS_msg = String("Hello to Server from ") + BOARD_NAME;
    client.send("Connected ёпта");

    // Send a ping
    client.ping();
  }
  else
  {
    Serial.println("Not Connected!");
  }
}

void loop()
{
  client.poll();
}
photo_2024-11-24_09-34-30.jpgphoto_2024-11-24_09-45-07.jpg
 

dr. Arntholcz

New member
И что я вам могу сказать?
Переход на wemos mini решил мою проблему. Оба двигателя работают как надо.
 

CodeNameHawk

Moderator
Команда форума
Если судить по фото, то на node не подключена земля ни к одному из модулей, на вемос одна подключена.
 
Была похожая проблема. Пришлось проверять пины, оказалось, что на нескольких платах в последовательности пинов 12, 13, 14. и т.д. не все работают. Платы китайские!
 

dr. Arntholcz

New member
Скорее всего. Купил 3 платы одним заказом на озоне. Продавец божится, что платы рабочие и у меня руки кривые))) То же подозреваю, что партия бракованная.
 
Сверху Снизу