AndreyFly
New member
Задача.
Беспроводной пульт, для управления всего 1 сервомашинкой.
Имеется 2 модуля ESP8266-01. На одном модуле подключен переменный резистор, которым измеряется угол нажатия кнопки пульта. На второй модуль подключена сервомашинка. Никаких роутеров, интернетов и браузеров нет и не нужно! Использоваться в том числе будет вдали от цивилизации и всех видов связи и интернета.
Все, что нужно - это непрерывно отправлять число от 1100 до 2200 (это число миллисекунд для сервомашинки) с пульта. И непрерывно получать значение, чтобы отправить команду на сервомашинку.
Вроде не сильно сложная задача, но с ESP модулем бьюсь уже вторую неделю. На передатчике переменный резистор опрашивается, на приемнике в сервомашинку установить знаю как. А вот данные не передаются, или передаются, но как их принять не понимаю.
Этот код в передатчике
Этот код в приемнике
Все, что касается WiFi обмена данными - подсмотрел на этом форуме, но ничего в этом не понимаю. Подскажите, или ссылку дайте на рабочие примеры аналогичные моей задаче.
Беспроводной пульт, для управления всего 1 сервомашинкой.
Имеется 2 модуля ESP8266-01. На одном модуле подключен переменный резистор, которым измеряется угол нажатия кнопки пульта. На второй модуль подключена сервомашинка. Никаких роутеров, интернетов и браузеров нет и не нужно! Использоваться в том числе будет вдали от цивилизации и всех видов связи и интернета.
Все, что нужно - это непрерывно отправлять число от 1100 до 2200 (это число миллисекунд для сервомашинки) с пульта. И непрерывно получать значение, чтобы отправить команду на сервомашинку.
Вроде не сильно сложная задача, но с ESP модулем бьюсь уже вторую неделю. На передатчике переменный резистор опрашивается, на приемнике в сервомашинку установить знаю как. А вот данные не передаются, или передаются, но как их принять не понимаю.
Этот код в передатчике
Код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
WiFiServer server(80);
WiFiClient client[1];
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input
int readIndex = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // the average
int inputPin = A0;
int val;
void startAP()
{
delay(100);
WiFi.mode(WIFI_STA);
WiFi.softAP("Throttle","Paraplan");
delay(500);
server.begin();
}
void setup() {
// initialize serial communication with computer:
Serial.begin(9600);
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
startAP();
}
void loop() {
if (!client[1] || !client[1].connected()){
if(client[1]) client[1].stop();
client[1] = server.available();
}
if (client[1] && client[1].connected()){
if(client[1].available()){
while(client[1].available()){
total = total - readings[readIndex];
readings[readIndex] = analogRead(inputPin);
total = total + readings[readIndex];
readIndex = readIndex + 1;
if (readIndex >= numReadings) {
readIndex = 0;
}
average = total / numReadings;
if (average <= 550) { average = 550;}
if (average >= 990) {average = 990;}
val = map(average, 550, 990, 0, 255);
delay(50);
client[1].write(val);
}
}
}
// send it to the computer as ASCII digits
//Serial.print(average);
//Serial.print(" ");
//Serial.println(val);
//delay(1); // delay in between reads for stability
}
Этот код в приемнике
Код:
#include <ESP8266WiFi.h>
#include <Servo.h>
Servo myservo;
WiFiClient client;
int stat=0;
int val=0;
const char* ssid = "Throttle";
const char* password = "Paraplan";
const char* host = "192.168.4.1";
const int port = 80;
void setup() {
myservo.attach(2,1100,2200);
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, password);
delay(500);
}
void loop() {
Serial.println(stat);
while (stat==0){
client.connect(host, port);
delay(500);
if (!client.connect(host, port)) {
Serial.print("connection failed");Serial.print(" ");Serial.println(client.connected());
delay(500);
return;
}
while(client.connected())
{
while(client.available())
{
char RX = client.read();
val = map(RX, 0, 255, 1100, 2200);
myservo.writeMicroseconds(val);
Serial.print(val);
delay(5);
}
//Serial.println(client.available());
while(Serial.available()>0)
{
// char TX=Serial.read();
client.print(val);
}
}
}
}
Все, что касается WiFi обмена данными - подсмотрел на этом форуме, но ничего в этом не понимаю. Подскажите, или ссылку дайте на рабочие примеры аналогичные моей задаче.