Уровень напряжения колеблется всякий раз, когда 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 в MySQL с помощью phpMyAdmin и XAMPP на Windows10
- Arduino выводит значения мусора на serial monitor с ESP8266
- ошибка: espcomm_upload_mem failed при загрузке скетча
- фатальная ошибка ESP8266WiFi.h: Такого файла или каталога нет
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд
- Захват изображений с OV7670 (без FIFO) с использованием Arduino Uno?
Это может быть проблемой слабого (или не стабилизированного) источника питания. Когда система на мгновение потребляет слишком много тока, она падает напряжение. Что вы используете для питания своей схемы?, @Filip Franik
При подключении к USB или источнику питания 7,5 В возникает та же проблема., @Uğur Kaya