سلام
من قصد دارم از طریق ماژول NodeMcu V1.0 دو عدد رو که یکی حاصل خروجی یک پتانسیومتر هست و دیگری که عدد ثابتی است رو از طریق پروتکل UDP و از طریق وای فای ارسال کنم . به اینصورت که دو ماژول مشابه در دو نقطه متفاوت دارم و هر دو ماژول دارای پتانسیومتر و عدد ثابت خودشون هستن .
کاری که قراره انجام بشه این هست که هر دو ماژول اطلاعات خودشون رو بدون اینکه لازم به چک کردن باشه که به دست گیرنده رسیده یا خیر ارسال کنن . یعنی هر دو ماژول هم فرستنده هستن و هم گیرنده.
برای ارسال با این عنوان که یکی از ماژول ها مستر باشه و دیگری کلاینت مشکلی ندارم و کدش رو در زیر میارم ولی اینکه هر دو هم فرستنده باشن و هم گیرنده رو نمیدونم باید چه کنم .
پیشاپیش ممنون از نظرات دوستان و وقتی که میگذارند.
Master:
Slave:
حالت دیگه ای هم وجود داره که یه تعدادی ماژول در یک شبکه بمشترک با هم ارتباط دارن که اون هم مد نظر من نیست و کدش به صورت زیر هست:
من قصد دارم از طریق ماژول NodeMcu V1.0 دو عدد رو که یکی حاصل خروجی یک پتانسیومتر هست و دیگری که عدد ثابتی است رو از طریق پروتکل UDP و از طریق وای فای ارسال کنم . به اینصورت که دو ماژول مشابه در دو نقطه متفاوت دارم و هر دو ماژول دارای پتانسیومتر و عدد ثابت خودشون هستن .
کاری که قراره انجام بشه این هست که هر دو ماژول اطلاعات خودشون رو بدون اینکه لازم به چک کردن باشه که به دست گیرنده رسیده یا خیر ارسال کنن . یعنی هر دو ماژول هم فرستنده هستن و هم گیرنده.
برای ارسال با این عنوان که یکی از ماژول ها مستر باشه و دیگری کلاینت مشکلی ندارم و کدش رو در زیر میارم ولی اینکه هر دو هم فرستنده باشن و هم گیرنده رو نمیدونم باید چه کنم .
پیشاپیش ممنون از نظرات دوستان و وقتی که میگذارند.
Master:
/*
Wireless Serial using UDP ESP8266
Hardware: NodeMCU
Circuits4you.com
2018
Master Board creates Access Point
*/
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char *ssid = "circuits4you";
const char *pass = "password";
unsigned int localPort = 2000; // local port to listen for UDP packets
IPAddress ServerIP(192,168,4,1);
IPAddress ClientIP(192,168,4,2);
// A UDP instance to let us send and receive packets over UDP
WiFiUDP udp;
char packetBuffer[9]; //Where we get the UDP data
//=======================================================================
// Setup
//=======================================================================
void setup()
{
Serial.begin(9600);
Serial.println();
WiFi.softAP(ssid, pass); //Create Access point
//Start UDP
Serial.println("Starting UDP");
udp.begin(localPort);
Serial.print("Local port: ");
Serial.println(udp.localPort());
}
//======================================================================
// MAIN LOOP
//======================================================================
void loop()
{
int cb = udp.parsePacket();
if (!cb)
{
//If serial data is recived send it to UDP
if(Serial.available()>0)
{
udp.beginPacket(ClientIP, 2000);
//Send UDP requests are to port 2000
char a[1];
a[0]=char(Serial.read()); //Serial Byte Read
udp.write(a,1); //Send one byte to ESP8266
udp.endPacket();
}
}
else {
// We've received a UDP packet, send it to serial
udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
Serial.print(packetBuffer);
delay(20);
}
}
//======================================================================
Slave:
/*
Wireless Serial using UDP ESP8266
Hardware: NodeMCU
Circuits4you.com
2018
Slave Board connects to Access Point
*/
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char *ssid = "circuits4you";
const char *pass = "password";
unsigned int localPort = 2000; // local port to listen for UDP packets
IPAddress ServerIP(192,168,4,1);
IPAddress ClientIP(192,168,4,2);
// A UDP instance to let us send and receive packets over UDP
WiFiUDP udp;
char packetBuffer[9]; //Where we get the UDP data
//======================================================================
// Setup
//======================================================================
void setup()
{
Serial.begin(9600);
Serial.println();
WiFi.begin(ssid, pass); //Connect to access point
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
//Start UDP
Serial.println("Starting UDP");
udp.begin(localPort);
Serial.print("Local port: ");
Serial.println(udp.localPort());
}
//======================================================================
// MAIN LOOP
//======================================================================
void loop()
{
int cb = udp.parsePacket();
if (!cb)
{
//If serial data is recived send it to UDP
if(Serial.available()>0)
{
udp.beginPacket(ServerIP, 2000); //Send Data to Master unit
//Send UDP requests are to port 2000
char a[1];
a[0]=char(Serial.read()); //Serial Byte Read
udp.write(a,1); //Send one byte to ESP8266
udp.endPacket();
}
}
else {
// We've received a UDP packet, send it to serial
udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
Serial.print(packetBuffer);
delay(20);
}
}
//=======================================================================
حالت دیگه ای هم وجود داره که یه تعدادی ماژول در یک شبکه بمشترک با هم ارتباط دارن که اون هم مد نظر من نیست و کدش به صورت زیر هست:
/*
Wireless Serial using UDP ESP8266
Hardware: NodeMCU
Circuits4you.com
2018
UDP Broadcast multi esp to esp communication
*/
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char *ssid = "circuits4you.com";
const char *pass = "password";
unsigned int localPort = 2000; // local port to listen for UDP packets
IPAddress SendIP(192,168,43,255); //UDP Broadcast IP data sent to all devicess on same network
// A UDP instance to let us send and receive packets over UDP
WiFiUDP udp;
char packetBuffer[9]; //Where we get the UDP data
//======================================================================
// Setup
//=======================================================================
void setup()
{
Serial.begin(9600);
Serial.println();
WiFi.begin(ssid, pass); //Connect to access point
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
//Start UDP
Serial.println("Starting UDP");
udp.begin(localPort);
Serial.print("Local port: ");
Serial.println(udp.localPort());
}
//======================================================================
// MAIN LOOP
//======================================================================
void loop()
{
int cb = udp.parsePacket();
if (!cb)
{
//If serial data is recived send it to UDP
if(Serial.available()>0)
{
udp.beginPacket(SendIP, 2000); //Send Data to Master unit
//Send UDP requests are to port 2000
char a[1];
a[0]=char(Serial.read()); //Serial Byte Read
udp.write(a,1); //Send one byte to ESP8266
udp.endPacket();
}
}
else {
// We've received a UDP packet, send it to serial
udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
Serial.print(packetBuffer);
delay(20);
}
}
//=======================================================================
دیدگاه