• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ошибка компиляции для платы

Volt-Amper

New member
При компиляции в Arduino IDE вышла вот такая ошибка: Ошибка компиляции платы ModeMCU 1.0, причем скетчи из примеров нормально грузится без ошибок. Вот код моей программы для NodeMCU:

Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

const char* ssid = "ASUS";
const char* password = "379931sbmc";

ESP8266WebServer server(80);

void setup() {
  Serial.begin(115200);
 

// Connecting WiFi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA); // Задаем режим работы WIFI_STA (клиент)
WiFi.begin(ssid, password); // Подключаемся
while (WiFi.status() != WL_CONNECTED) // Ждем пока статус не станет WL_CONNECTED
{
delay(500);
}
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); // показывает наше IP
// Starting WEB-server
     server.on ( "/", HTTP_handleRoot );
     server.onNotFound ( HTTP_handleRoot );
     server.begin();
}
void HTTP_handleRoot(void) {

if( server.hasArg("State") ){
       Serial.println(server.arg("State"));
  }
  server.send ( 200, "text/html", "" );
  delay(1);
}
 

Volt-Amper

New member
Не хватало вот этих строк, но все равно компиляции с ошибками:
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

Код:
void loop() {
    server.handleClient();
}
 

nikolz

Well-known member
Не хватало вот этих строк, но все равно компиляции с ошибками:
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

Код:
void loop() {
    server.handleClient();
}
ESP8266:Прошивки/Arduino/FAQ/При попытке загрузить ESP8266 получаю ошибку «espcomm sync failed». Как решить эту проблему? — Онлайн справочник
 

Volt-Amper

New member
Все равно не подключается NODEMCU к wi-fi сети
Код программы для Arduino Uno:
Код:
#define ENA 7        // Включить обороты переднего правого двигателя
#define ENB 8        // Включить обороты заднего правого двигателя

#define IN1  11            // L298N in 1 Передний правый мотор
#define IN2  10            // L298N in 2 Передний правый мотор
#define IN3  9            // L298N in 3 Задний правый мотор
#define IN4  6            // L298N in 4 Задний правый мотор

int command;                   // Int to store app command state.
int speedCar = 100;         // 50 - 255.
int speed_Coeff = 4;

void setup()
{ 
      pinMode(ENA, OUTPUT);
      pinMode(ENB, OUTPUT);
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
    Serial.begin(9600);

  }

void goAhead(){

      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
        analogWrite(ENA, speedCar);

      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
        analogWrite(ENB, speedCar);

  }

void goBack(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
        analogWrite(ENA, speedCar);


      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
        analogWrite(ENB, speedCar);

  }

void goRight(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
        analogWrite(ENA, speedCar);


      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
        analogWrite(ENB, speedCar);

  }

void goLeft(){

      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
        analogWrite(ENA, speedCar);


      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
        analogWrite(ENB, speedCar);
      
  }

void goAheadRight(){
    
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      analogWrite(ENA, speedCar/speed_Coeff);

      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
      analogWrite(ENB, speedCar/speed_Coeff);
  }

void goAheadLeft(){
    
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      analogWrite(ENA, speedCar);

      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
      analogWrite(ENB, speedCar);
  }

void goBackRight(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      analogWrite(ENA, speedCar/speed_Coeff);


      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      analogWrite(ENB, speedCar/speed_Coeff);

  }

void goBackLeft(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      analogWrite(ENA, speedCar);


      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      analogWrite(ENB, speedCar);

  }

void stopRobot(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
        analogWrite(ENA, speedCar);


      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
        analogWrite(ENB, speedCar);
  }
 
void loop(){
  
if (Serial.available() > 0) {
    command = Serial.read();

switch (command) {
case 'F':goAhead();break;
case 'B':goBack();break;
case 'L':goLeft();break;
case 'R':goRight();break;
case 'I':goAheadRight();break;
case 'G':goAheadLeft();break;
case 'J':goBackRight();break;
case 'H':goBackLeft();break;
case '0':speedCar = 100;break;
case '1':speedCar = 120;break;
case '2':speedCar = 135;break;
case '3':speedCar = 155;break;
case '4':speedCar = 170;break;
case '5':speedCar = 185;break;
case '6':speedCar = 195;break;
case '7':speedCar = 215;break;
case '8':speedCar = 235;break;
case '9':speedCar = 255;break;
case 'S':stopRobot();break;

}
}
}
И код программы для NODEMCU:
Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
const char* ssid = "RobotMCU";
const char* password = "379931sbmc";
ESP8266WebServer server(80);
void setup() {
  Serial.begin(115200);
// Connecting WiFi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_AP); // Задаем режим работы WIFI_AP_STA (клиент)
WiFi.begin(ssid, password); // Подключаемся
while (WiFi.status() != WL_CONNECTED) // Ждем пока статус не станет WL_CONNECTED
{
delay(500);
}
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); // показывает наше IP
// Starting WEB-server
     server.on ( "/", HTTP_handleRoot );
     server.onNotFound ( HTTP_handleRoot );
     server.begin();
}
void loop() {
    server.handleClient();
}
void HTTP_handleRoot(void) {
if( server.hasArg("State") ){
       Serial.println(server.arg("State"));
  }
  server.send ( 200, "text/html", "" );
  delay(1);
}
Пины RX(GPIO3) и TX(GPIO1) nodeMCU, подключаю к выходам Arduino Uno TX>>RX, RX>>TX.
Когда пытаюсь с телефона подключиться к сети Robot_car пишет подключено, но без доступа к сети. Ошибок при загрузке и компиляции в этот раз не было. Подскажите где мне копать.
 

nikolz

Well-known member
Все равно не подключается NODEMCU к wi-fi сети
Код программы для Arduino Uno:
Код:
#define ENA 7        // Включить обороты переднего правого двигателя
#define ENB 8        // Включить обороты заднего правого двигателя

#define IN1  11            // L298N in 1 Передний правый мотор
#define IN2  10            // L298N in 2 Передний правый мотор
#define IN3  9            // L298N in 3 Задний правый мотор
#define IN4  6            // L298N in 4 Задний правый мотор

int command;                   // Int to store app command state.
int speedCar = 100;         // 50 - 255.
int speed_Coeff = 4;

void setup()
{
      pinMode(ENA, OUTPUT);
      pinMode(ENB, OUTPUT);
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(IN4, OUTPUT);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
    Serial.begin(9600);

  }

void goAhead(){

      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
        analogWrite(ENA, speedCar);

      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
        analogWrite(ENB, speedCar);

  }

void goBack(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
        analogWrite(ENA, speedCar);


      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
        analogWrite(ENB, speedCar);

  }

void goRight(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
        analogWrite(ENA, speedCar);


      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
        analogWrite(ENB, speedCar);

  }

void goLeft(){

      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
        analogWrite(ENA, speedCar);


      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
        analogWrite(ENB, speedCar);
    
  }

void goAheadRight(){
  
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      analogWrite(ENA, speedCar/speed_Coeff);

      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
      analogWrite(ENB, speedCar/speed_Coeff);
  }

void goAheadLeft(){
  
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      analogWrite(ENA, speedCar);

      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
      analogWrite(ENB, speedCar);
  }

void goBackRight(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      analogWrite(ENA, speedCar/speed_Coeff);


      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      analogWrite(ENB, speedCar/speed_Coeff);

  }

void goBackLeft(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      analogWrite(ENA, speedCar);


      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      analogWrite(ENB, speedCar);

  }

void stopRobot(){

      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
        analogWrite(ENA, speedCar);


      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
        analogWrite(ENB, speedCar);
  }
 
void loop(){
 
if (Serial.available() > 0) {
    command = Serial.read();

switch (command) {
case 'F':goAhead();break;
case 'B':goBack();break;
case 'L':goLeft();break;
case 'R':goRight();break;
case 'I':goAheadRight();break;
case 'G':goAheadLeft();break;
case 'J':goBackRight();break;
case 'H':goBackLeft();break;
case '0':speedCar = 100;break;
case '1':speedCar = 120;break;
case '2':speedCar = 135;break;
case '3':speedCar = 155;break;
case '4':speedCar = 170;break;
case '5':speedCar = 185;break;
case '6':speedCar = 195;break;
case '7':speedCar = 215;break;
case '8':speedCar = 235;break;
case '9':speedCar = 255;break;
case 'S':stopRobot();break;

}
}
}
И код программы для NODEMCU:
Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
const char* ssid = "RobotMCU";
const char* password = "379931sbmc";
ESP8266WebServer server(80);
void setup() {
  Serial.begin(115200);
// Connecting WiFi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_AP); // Задаем режим работы WIFI_AP_STA (клиент)
WiFi.begin(ssid, password); // Подключаемся
while (WiFi.status() != WL_CONNECTED) // Ждем пока статус не станет WL_CONNECTED
{
delay(500);
}
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); // показывает наше IP
// Starting WEB-server
     server.on ( "/", HTTP_handleRoot );
     server.onNotFound ( HTTP_handleRoot );
     server.begin();
}
void loop() {
    server.handleClient();
}
void HTTP_handleRoot(void) {
if( server.hasArg("State") ){
       Serial.println(server.arg("State"));
  }
  server.send ( 200, "text/html", "" );
  delay(1);
}
Пины RX(GPIO3) и TX(GPIO1) nodeMCU, подключаю к выходам Arduino Uno TX>>RX, RX>>TX.
Когда пытаюсь с телефона подключиться к сети Robot_car пишет подключено, но без доступа к сети. Ошибок при загрузке и компиляции в этот раз не было. Подскажите где мне копать.
что означает - без доступа к сети?
т е по логину и паролю подключились или нет?
если вы задали AP то к вам будут подключатся а не вы
если задали станция то вы должны подключиться к домашней сети
и потом передавать или принимать в ней.
 

Volt-Amper

New member
что означает - без доступа к сети?
т е по логину и паролю подключились или нет?
если вы задали AP то к вам будут подключатся а не вы
если задали станция то вы должны подключиться к домашней сети
и потом передавать или принимать в ней.
Т.е. я попробовал подключить Wi-Fi NodeMCU через плату Arduino Uno, проблема в том что RX TX не передают данные. NodeMCU подключился к Wi-fi через Arduino, с Arduino взял питание для NodeMCU, а сама передача по TX и RX не работает , я подключаю все через Sensor Shield v5.0, теперь хочу спаять провода и подключить минуя это шилд напрямую к Arduino Uno. Шилд отдельно не запитывается, а просто воткнут в Arduino Uno и питается от него.
 

Volt-Amper

New member
Программа Fritizing не работает, схему хотел там набросать. Схема такая:
Arduino Uno pins:
D11 - IN1(от L298N);
D10 - IN2(от L298N);
D9 - IN3(ОТ L298N);
D6 - IN4(от L298N);

NODEMCU pins:
VIN >> VIN(Arduino UNO);
GND >> GND(Arduino Uno);
RX >> TX(Arduino Uno);
TX >> TX(Arduino Uno);
Больше ничего не подключено. Питание L298N от двух 18650 к выходу +12В, и от него же питание для Arduino Uno.
 

Volt-Amper

New member
Не пойму как задействовать RX и TX на Arduino Uno и NODEMCU, потому-что скетчей для RX и TX не нашёл. При подаче питания на Arduino Uno, должны вроде моргать TX и RX вроде, светодиод L светится. Как проверить работу RX и TX в NODEMCU и Arduino Uno?
 

Volt-Amper

New member
Скорость сериалов должна быть одинаковая.
Нет не помогает, выставил одинаковую скорость 115200 у Arduino Uno и NODEMCU.
Покажите на схеме типа такой,

что куда подключили
Как сохранить во Fritizing файл в формате jpg или другие, программа сохраняет только во .fzz, схему нарисовал.
 
Сверху Снизу