Уровень напряжения колеблется всякий раз, когда ESP8266 получает сигнал.
Добрый день, уважаемое сообщество,
Я пытаюсь построить WiFi-связь с Arduino с помощью модуля ESP8266. К Arduino подключены один сервопривод и один шаговый двигатель, и всякий раз, когда модуль Wi-Fi ESP8266 получает сигнал, уровень напряжения на двигателе и сервоприводе резко колеблется, что приводит к неточным результатам о поведении двигателя и сервопривода. Я подключил модуль ESP8266 с помощью SoftwareSerial, и даже когда сигнал не передается в двигатель или сервопривод, уровни напряжения изменяются всякий раз, когда модуль WiFi получает данные.
Ниже мой код,
#include <Servo.h>
#include "SoftwareSerial.h"
SoftwareSerial softSerial(10, 11); // RX, TX
// Компоненты:
Servo servo1;
Servo firstESC;
// Двигатель:
const int MAX_SPEED = 1850;
const int MIN_SPEED = 1200;
int armValue = 1500;
int speedIncrease = 20;
int speedDecrease = speedIncrease * 3;
// Направление:
int currentPos;
const int MAX_ANGLE = 120;
const int MIN_ANGLE = 60;
const int MID_ANGLE = 90;
void setup() {
Serial.begin(9600);
Serial.setTimeout(10);
softSerial.begin(9600);
// softSerial.setTimeout(10);
// Настройка сервопривода:
servo1.attach(9);
servo1.write(90);
// Направление установки:
Serial.println("The motor is arming in 2 seconds, please wait.");
firstESC.attach(8);
// Включаем двигатель через 2 секунды:
delay(2000);
firstESC.writeMicroseconds(armValue);
Serial.println("Serial is setting up, wait time: 3000 ms.");
delay(3000);
// Проверка связи с платой:
softSerial.println("AT");
delay(1000);
while (softSerial.available()) {
String message = softSerial.readString();
Serial.println(message);
delay(1000);
}
// Подключаемся к WIFI:
Serial.println("Connecting to wifi, wait time 4000 ms.");
softSerial.println(--- COMMAND TO CONNECT WIFI ---);
delay(4000);
while (softSerial.available()) {
String message = softSerial.readString();
Serial.println(message);
delay(1000);
}
// Подождите, пока соединение станет стабильным:
delay(2000);
// Получить IP-адрес:
Serial.println("Requesting IP Address.");
softSerial.println("AT+CIFSR");
delay(2000);
softSerial.println("AT+CIPMUX=1"); // Установить несколько доступных подключений.
while (softSerial.available()) {
String message = softSerial.readString();
Serial.println(message);
delay(1000);
}
delay(2000);
// Настройка сервера:
Serial.println("Connecting to server..");
softSerial.println("AT+CIPSTART=3,\"TCP\",\"192.168.1.67\",1235");
delay(2000);
while (softSerial.available()) {
String message = softSerial.readString();
Serial.println(message);
delay(1000);
}
Serial.println("Set up is complete, loop started.");
}
String inString = "";
bool reading = false;
void loop() {
while (softSerial.available() > 0)
{
char inChar = softSerial.read();
if(inChar == 'O') {
reading = false;
}
if(reading) {
if (inChar == ','){
Serial.println(inString);
int val = inString.toInt();
//Вход двигателя
if (val >= MIN_SPEED && val <= MAX_SPEED){
setSpeed(val);
}
//Ввод направления
else if (val >= MIN_ANGLE && val <= MAX_ANGLE ){
setRotation(val);
}
inString = "";
}
else{
if(inChar !='\0' && inChar != '\n' ){
inString += inChar;
}
}
}
if(inChar == ':') {
reading = true;
}
}
if (Serial.available())
{
String message = Serial.readString();
// Serial.print(сообщение);
setSpeed(message.toInt());
}
}
void setSpeed(int customSpeed){
firstESC.writeMicroseconds(customSpeed);
}
void setRotation(int angles){
servo1.write(angles);
}
@Uğur Kaya, 👍0
Обсуждение1 ответ
ESP8266 печально известен своим шумом, в основном потому, что дешевые платы, на которых обычно продается ESP8266, не содержат никаких фильтров питания.
Так что вам действительно придется добавлять что-то свое. Как мне недавно пришлось сделать, когда я добавлял плату ESP8266 в аудиосистему.
Для этого я придумал такую схему:

VCCA — это ваше основное входящее питание. VCCD подает питание в ESP8266. Двигатели подключены к той же точке, что и VCCA.
Планируете ли вы продавать это как комплект?, @Code Gorilla
Я не был, нет. Я думаю, я мог бы..., @Majenko
- AT-команда не отвечает на последовательный монитор
- Arduino выводит значения мусора на serial monitor с ESP8266
- Отправка данных Arduino в MySQL с помощью phpMyAdmin и XAMPP на Windows10
- ошибка: espcomm_upload_mem failed при загрузке скетча
- фатальная ошибка ESP8266WiFi.h: Такого файла или каталога нет
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд
- Как узнать IP-адрес, назначенный ESP8266?
Это может быть проблемой слабого (или не стабилизированного) источника питания. Когда система на мгновение потребляет слишком много тока, она падает напряжение. Что вы используете для питания своей схемы?, @Filip Franik
При подключении к USB или источнику питания 7,5 В возникает та же проблема., @Uğur Kaya