[Źródło: http://paulobrien.co.nz/2017/03/16/esp32-programming-with-arduino-on-windows/]
Oryginalny projekt na którym opierałem tą modyfikację można pobrać z serwisu Github od użytkownika AlphaLima.
Program:
Na samym początku przetestuję samą komunikację po RS485:
- #define RXD2 16
- #define TXD2 17
- #define RDE 26
- #define TXE 27
- void setup() {
- Serial.begin(115200);
- pinMode(RDE, OUTPUT);
- pinMode(TXE, OUTPUT);
- delay(20);
- digitalWrite(26, HIGH);
- digitalWrite(27, HIGH);
- delay(5);
- Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);
- Serial.println("Test Serial Send");
- Serial2.println("Test Serial2 Send");
- delay(10);
- digitalWrite(26, LOW);
- digitalWrite(27, LOW);
- }
- void loop() {
- while (Serial2.available()) {
- Serial.print(char(Serial2.read()));
- }
- while (Serial.available()) {
- digitalWrite(26, HIGH);
- digitalWrite(27, HIGH);
- delay(2);
- Serial2.print(char(Serial.read()));
- delay(2);
- digitalWrite(26, LOW);
- digitalWrite(27, LOW);
- delay(2);
- }
- }
Wynik działania programu powinien przesyłać dane pomiędzy UART2 a UART0. Dane przesłane przez UART0 przekazywane są na UART2, dane nadane na UART2 są przesyłane na UART0.
Dodatkowo posiadany prze zemnie konwerter jest 5V. Co oznaczało konieczność zastosowania konwertera poziomów logicznych z 3V3 na 5V. Ponieważ ESP32 akceptuje i operuje na napięciach 3V3.
Dodatkowo posiadany prze zemnie konwerter jest 5V. Co oznaczało konieczność zastosowania konwertera poziomów logicznych z 3V3 na 5V. Ponieważ ESP32 akceptuje i operuje na napięciach 3V3.
Poniżej znajduje się projekt podstawowy pozwalający na podłączenie do sieci zdefiniowanej w programie:
- //-------------------------------------------------------------
- #include "config.h"
- #include <esp_wifi.h>
- #include <WiFi.h>
- #include <WiFiClient.h>
- //-------------------------------------------------------------
- #ifdef OTA_HANDLER
- #include <ArduinoOTA.h>
- #endif // OTA_HANDLER
- //-------------------------------------------------------------
- HardwareSerial* COM[NUM_COM] = {&Serial, &Serial1};
- //-------------------------------------------------------------
- WiFiServer server_0(SERIAL0_TCP_PORT);
- WiFiServer *server[NUM_COM]={&server_0};
- WiFiClient TCPClient[NUM_COM][1];
- //-------------------------------------------------------------
- uint8_t buf1[NUM_COM][bufferSize];
- uint16_t i1[NUM_COM]={0};
- uint8_t buf2[NUM_COM][bufferSize];
- uint16_t i2[NUM_COM]={0};
- //-------------------------------------------------------------
- void setup() {
- delay(500);
- Start_Uart_0();
- Start_Uart_1();
- EnableWifiStationMode();
- WifiStart();
- ArduinoOta_Setup();
- EnableAndSetDefaultRS485Pins();
- }
- void loop()
- {
- ArduinoOTA_Handle_Loop();
- ClientConnection_Loop();
- WriteRS485Data();
- }
- //------------------------------------------------------
- static void SetRS485ControlPinsDirection()
- {
- #ifdef RS485_ENABLE
- pinMode(RE_PIN, OUTPUT);
- pinMode(DE_PIN, OUTPUT);
- #endif
- }
- static void SetRS485PinToSendData()
- {
- #ifdef RS485_ENABLE
- digitalWrite(RE_PIN, HIGH);
- digitalWrite(DE_PIN, HIGH);
- #endif
- }
- static void SetRS485PinToReceiveData()
- {
- #ifdef RS485_ENABLE
- digitalWrite(RE_PIN, LOW);
- digitalWrite(DE_PIN, LOW);
- #endif
- }
- static void Start_Uart_0(void)
- {
- COM[0]->begin(UART_BAUD0, SERIAL_PARAM0, SERIAL0_RXPIN, SERIAL0_TXPIN);
- }
- static void Start_Uart_1(void)
- {
- COM[1]->begin(UART_BAUD1, SERIAL_PARAM1, SERIAL1_RXPIN, SERIAL1_TXPIN);
- }
- //------------------------------------------------------
- //Initialization functions
- static void EnableAndSetDefaultRS485Pins(void)
- {
- #ifdef RS485_ENABLE
- SetRS485ControlPinsDirection();
- delay(5);
- SetRS485PinToReceiveData();
- delay(3);
- #endif
- }
- static void EnableWifiStationMode(void)
- {
- if(debug) COM[DEBUG_COM]->println("Open ESP Station mode Test Project v1.0");
- WiFi.mode(WIFI_STA);
- WiFi.begin(ssid, pw);//ssidArray, passwordArray);
- if(debug) { COM[DEBUG_COM]->print("try to Connect to Wireless network: "); }
- if(debug) { COM[DEBUG_COM]->println(ssid); }
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- if(debug) COM[DEBUG_COM]->print(".");
- }
- if(debug) COM[DEBUG_COM]->println("\nWiFi connected");
- }
- static void WifiStart()
- {
- if(debug) COM[DEBUG_COM]->println("Starting TCP Server 1");
- server[0]->begin(); // start TCP server
- server[0]->setNoDelay(true);
- }
- static void ArduinoOta_Setup()
- {
- #ifdef OTA_HANDLER
- ArduinoOTA
- .onStart([]() {
- String type;
- if (ArduinoOTA.getCommand() == U_FLASH)
- type = "sketch";
- else // U_SPIFFS
- type = "filesystem";
- // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
- Serial.println("Start updating " + type);
- })
- .onEnd([]() {
- Serial.println("\nEnd");
- })
- .onProgress([](unsigned int progress, unsigned int total) {
- Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
- })
- .onError([](ota_error_t error) {
- Serial.printf("Error[%u]: ", error);
- if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
- else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
- else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
- else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
- else if (error == OTA_END_ERROR) Serial.println("End Failed");
- });
- // if DNSServer is started with "*" for domain name, it will reply with
- // provided IP to all DNS reques
- ArduinoOTA.begin();
- #endif // OTA_HANDLER
- }
- //------------------------------------------------------
- static void ArduinoOTA_Handle_Loop(void)
- {
- #ifdef OTA_HANDLER
- ArduinoOTA.handle();
- #endif // OTA_HANDLER
- }
- static void ClientConnection_Loop()
- {
- if(server[0]->hasClient())
- {
- if (!TCPClient[0][0] || !TCPClient[0][0].connected())
- {
- if(TCPClient[0][0])
- {
- TCPClient[0][0].stop();
- }
- TCPClient[0][0] = server[0]->available();
- if(debug) COM[DEBUG_COM]->print("New client for COM");
- if(debug) COM[DEBUG_COM]->print(0);
- if(debug) COM[DEBUG_COM]->println(0);
- }
- //no free/disconnected spot so reject
- WiFiClient TmpserverClient = server[0]->available();
- TmpserverClient.stop();
- }
- }
- static void WriteRS485Data(void)
- {
- if(COM[1] != NULL)
- {
- if(TCPClient[0][0])
- {
- while(TCPClient[0][0].available())
- {
- buf1[1][i1[1]] = TCPClient[0][0].read(); // read char from client (LK8000 app)
- if(i1[1]<bufferSize-1)
- {
- i1[1]++;
- }
- }
- if(i1[1] != 0x00)
- {
- SetRS485PinToSendData();
- delay(5);
- COM[1]->write(buf1[1], i1[1]); // now send to UART(num):
- delay(5);
- SetRS485PinToReceiveData();
- i1[1] = 0;
- }
- }
- if(COM[1]->available())
- {
- while(COM[1]->available())
- {
- buf2[1][i2[1]] = COM[1]->read(); // read char from UART(num)
- if(i2[1]<bufferSize-1)
- {
- i2[1]++;
- }
- }
- if(TCPClient[0][0])
- {
- TCPClient[0][0].write(buf2[1], i2[1]);
- }
- i2[1] = 0;
- }
- }
- }
Powyższy program pobiera i przesyłane odebrane ramki danych pomiędzy portem 8880 TCP Serwer a RS485. Dodatkowo umieszczona jest w nim obsługa ArduinoOta tak aby można było wgrać program bez konieczności podłączania urządzenia do komputera.
Kolejnym elementem jest przesyłanie ustawień sieciowych tak aby można było przełączyć sieć wifi bez konieczności przeprogramowania urządzenia. Tutaj można rozwiązać problem na dwa sposoby.
Pierwszy z nich to wpisywanie danych przez UART do układu gdzie w ramce podawana jest nazwa sieci oraz hasło. Drugi sposób polega na uruchomieniu ESP jako AP po nim wyświetlana jest strona internetowa lub przez program jako TCP Serwer. Po połączeniu wprowadza się dane na stronie lub jako klient podłączony do serwera TCP.
Poniżej przedstawię rozwiązanie opierające się na ustawieniu parametrów przez port UART0. Uruchomienie wprowadzania ustawień następuje przez zwarcie pinu 18 do masy i zresetowaniu konwertera.
Zacznijmy od ustawiania parametrów za pomocą ramki danych. Przykładowy format ramki:
Ramka służąca do ustawienia SSID sieci:
Ramka służąca do ustawienia hasła sieci:
Podobnie można wykonać inne rozkazy. Do powyższych rozkazów dołożyłem jeszcze następujące ustawienia:
Odpowiedzią na powyższe funkcję będzie retransmisja otrzymanej ramki danych tak aby ewentualny program ustawiający parametry mógł zweryfikować poprawność nadawanych i odebranych danych.
Poniżej znajduje się cały projekt odpowiadający za pełną obsługę powyższego konwertera:
Poniżej znajduje się plik .h zawierający ustawienia kody rozkazów itp:
Poniżej przedstawię rozwiązanie opierające się na ustawieniu parametrów przez port UART0. Uruchomienie wprowadzania ustawień następuje przez zwarcie pinu 18 do masy i zresetowaniu konwertera.
Zacznijmy od ustawiania parametrów za pomocą ramki danych. Przykładowy format ramki:
Ramka służąca do ustawienia SSID sieci:
- Bajt Startu - 0x01
- Kod Rozkazu - 0xB6
- Dlugość SSID - od 1 do 255
- SSID[Długość SSID] - bajty w kodzie ASCII zawierające nazwę sieci z którą zamierzamy się połączyć.
Ramka służąca do ustawienia hasła sieci:
- Bajt Startu - 0x01
- Kod Rozkazu - 0xA5
- Dlugość hasła - od 1 do 255
- Hasło[Długość hasła] - bajty w kodzie ASCII z hasłem do sieci
Podobnie można wykonać inne rozkazy. Do powyższych rozkazów dołożyłem jeszcze następujące ustawienia:
- wybór portu dla serwera - 0xD8;
- wybór prędkości dla RS485 - 0xE7;
Odpowiedzią na powyższe funkcję będzie retransmisja otrzymanej ramki danych tak aby ewentualny program ustawiający parametry mógł zweryfikować poprawność nadawanych i odebranych danych.
Poniżej znajduje się cały projekt odpowiadający za pełną obsługę powyższego konwertera:
- //ESP32 UART -> TCP Server Converter V1.0
- //-------------------------------------------------------------
- #include "config.h"
- #include <esp_wifi.h>
- #include <WiFi.h>
- #include <WiFiClient.h>
- #include <Preferences.h>
- //-------------------------------------------------------------
- #ifdef OTA_HANDLER
- #include <ArduinoOTA.h>
- #endif // OTA_HANDLER
- //-------------------------------------------------------------
- HardwareSerial* COM[NUM_COM] = {&Serial, &Serial1};
- //-------------------------------------------------------------
- String wifiSSID;
- String wifiPassword;
- uint32_t Baudrate_RS485;
- uint32_t ConnectionPort;
- //-------------------------------------------------------------
- WiFiServer server_0(SERIAL0_TCP_PORT);
- WiFiServer *server[NUM_COM]={&server_0};
- WiFiClient TCPClient[NUM_COM][1];
- Preferences preferences; /* For NVS with contains SSID and Password*/
- //-------------------------------------------------------------
- uint8_t buf1[NUM_COM][bufferSize];
- uint16_t i1[NUM_COM]={0};
- uint8_t buf2[NUM_COM][bufferSize];
- uint16_t i2[NUM_COM]={0};
- //-------------------------------------------------------------
- uint8_t specialSettingProgramFlag = 0;
- //-------------------------------------------------------------
- void setup() {
- delay(300);
- EnableTestWriteSettingsPin();
- delay(200);
- if(digitalRead(WRITE_SETTINGS_PIN_NUM) == LOW) //Start special program with setting network/rs485 parameters
- {
- Start_Uart_0();
- NonVolatileStorageRead();
- if(debug) COM[DEBUG_COM]->println(wifiSSID);
- if(debug) COM[DEBUG_COM]->println(wifiPassword);
- NonVolatileStorageReadPort();
- NonVolatileStorageReadBaudrate();
- Serial.println(ConnectionPort,HEX);
- Serial.println(Baudrate_RS485,HEX);
- specialSettingProgramFlag = 1;
- }
- else //Start normal program execution
- {
- Start_Uart_0();
- NonVolatileStorageRead();
- if(debug) COM[DEBUG_COM]->println(wifiSSID.c_str());
- if(debug) COM[DEBUG_COM]->println(wifiPassword.c_str());
- NonVolatileStorageReadPort();
- NonVolatileStorageReadBaudrate();
- if(debug) COM[DEBUG_COM]->println(ConnectionPort,HEX);
- if(debug) COM[DEBUG_COM]->println(Baudrate_RS485,HEX);
- Start_Uart_1();
- EnableWifiStationMode();
- WifiStart();
- ArduinoOta_Setup();
- EnableAndSetDefaultRS485Pins();
- }
- }
- void loop()
- {
- if(specialSettingProgramFlag == 1) //Special program for settings
- {
- SetParametersFrameAnalyse();
- }
- else //Standard conversion program
- {
- ArduinoOTA_Handle_Loop();
- ClientConnection_Loop();
- WriteRS485Data();
- }
- }
- //------------------------------------------------------
- static void Start_Uart_0(void)
- {
- COM[0]->begin(UART_BAUD0, SERIAL_PARAM0, SERIAL0_RXPIN, SERIAL0_TXPIN);
- }
- static void Start_Uart_1(void)
- {
- COM[1]->begin(SelectBaudrate((uint8_t)Baudrate_RS485),
- SERIAL_PARAM2,
- SERIAL2_RXPIN,
- SERIAL2_TXPIN);
- }
- //------------------------------------------------------
- //Initialization functions
- void EnableAndSetDefaultRS485Pins(void)
- {
- #ifdef RS485_ENABLE
- SetRS485ControlPinsDirection();
- delay(5);
- SetRS485PinToReceiveData();
- delay(3);
- #endif
- }
- void SetRS485ControlPinsDirection()
- {
- #ifdef RS485_ENABLE
- pinMode(RE_PIN, OUTPUT);
- pinMode(DE_PIN, OUTPUT);
- #endif
- }
- static void SetRS485PinToSendData()
- {
- #ifdef RS485_ENABLE
- digitalWrite(RE_PIN, HIGH);
- digitalWrite(DE_PIN, HIGH);
- #endif
- }
- static void SetRS485PinToReceiveData()
- {
- #ifdef RS485_ENABLE
- digitalWrite(RE_PIN, LOW);
- digitalWrite(DE_PIN, LOW);
- #endif
- }
- void EnableTestWriteSettingsPin(void)
- {
- pinMode(18, INPUT_PULLUP);
- }
- static void EnableWifiStationMode(void)
- {
- if(debug) COM[DEBUG_COM]->println("Open ESP Station mode Test Project v1.0");
- WiFi.mode(WIFI_STA);
- WiFi.begin(wifiSSID.c_str(), wifiPassword.c_str());//ssidArray, passwordArray);
- if(debug) { COM[DEBUG_COM]->print("try to Connect to Wireless network: "); }
- if(debug) { COM[DEBUG_COM]->println(wifiSSID); }
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- if(debug) COM[DEBUG_COM]->print(".");
- }
- if(debug) COM[DEBUG_COM]->println("\nWiFi connected");
- }
- static void WifiStart()
- {
- if(debug) COM[DEBUG_COM]->println("Starting TCP Server 1");
- if(ConnectionPort == 0x00){ server[0]->begin(); }
- else { server[0]->begin(ConnectionPort); }
- server[0]->begin(ConnectionPort); // start TCP server
- server[0]->setNoDelay(true);
- }
- static void ArduinoOta_Setup()
- {
- #ifdef OTA_HANDLER
- ArduinoOTA
- .onStart([]() {
- String type;
- if (ArduinoOTA.getCommand() == U_FLASH)
- type = "sketch";
- else // U_SPIFFS
- type = "filesystem";
- // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
- Serial.println("Start updating " + type);
- })
- .onEnd([]() {
- Serial.println("\nEnd");
- })
- .onProgress([](unsigned int progress, unsigned int total) {
- Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
- })
- .onError([](ota_error_t error) {
- Serial.printf("Error[%u]: ", error);
- if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
- else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
- else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
- else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
- else if (error == OTA_END_ERROR) Serial.println("End Failed");
- });
- // if DNSServer is started with "*" for domain name, it will reply with
- // provided IP to all DNS reques
- ArduinoOTA.begin();
- #endif // OTA_HANDLER
- }
- //------------------------------------------------------
- static void ArduinoOTA_Handle_Loop(void)
- {
- #ifdef OTA_HANDLER
- ArduinoOTA.handle();
- #endif // OTA_HANDLER
- }
- static void ClientConnection_Loop()
- {
- if(server[0]->hasClient())
- {
- if (!TCPClient[0][0] || !TCPClient[0][0].connected())
- {
- if(TCPClient[0][0])
- {
- TCPClient[0][0].stop();
- }
- TCPClient[0][0] = server[0]->available();
- if(debug) COM[DEBUG_COM]->print("New client for COM");
- if(debug) COM[DEBUG_COM]->print(0);
- if(debug) COM[DEBUG_COM]->println(0);
- }
- //no free/disconnected spot so reject
- WiFiClient TmpserverClient = server[0]->available();
- TmpserverClient.stop();
- }
- }
- static void WriteRS485Data(void)
- {
- if(COM[1] != NULL)
- {
- if(TCPClient[0][0])
- {
- while(TCPClient[0][0].available())
- {
- buf1[1][i1[1]] = TCPClient[0][0].read(); // read char from client (LK8000 app)
- if(i1[1]<bufferSize-1)
- {
- i1[1]++;
- }
- }
- if(i1[1] != 0x00)
- {
- SetRS485PinToSendData();
- delay(5);
- COM[1]->write(buf1[1], i1[1]);
- COM[1]->flush();
delay(3);
- //delay(7);
- SetRS485PinToReceiveData();
- i1[1] = 0;
- }
- }
- if(COM[1]->available())
- {
- while(COM[1]->available())
- {
- buf2[1][i2[1]] = COM[1]->read(); // read char from UART(num)
- if(i2[1]<bufferSize-1)
- {
- i2[1]++;
- }
- }
- if(TCPClient[0][0])
- {
- TCPClient[0][0].write(buf2[1], i2[1]);
- }
- i2[1] = 0;
- }
- }
- }
- //None volatile storage read & write */
- void NonVolatileStorageRead(void)
- {
- preferences.begin("wifi", false);
- wifiSSID = preferences.getString("ssid", "none");
- wifiPassword = preferences.getString("password", "none");
- preferences.end();
- }
- void NonVolatileStorageWrite(void)
- {
- preferences.clear();
- preferences.begin("wifi", false);
- preferences.putString("ssid", wifiSSID);
- preferences.putString("password", wifiPassword);
- preferences.end();
- }
- //-------------------------------------------------
- void NonVolatileStorageWriteBaudrate(void)
- {
- preferences.clear();
- preferences.begin("Baudrate", false);
- preferences.putUInt("baudrate", Baudrate_RS485);
- preferences.end();
- }
- void NonVolatileStorageReadBaudrate(void)
- {
- preferences.begin("Baudrate", false);
- Baudrate_RS485 = preferences.getUInt("baudrate", 0x0);
- preferences.end();
- }
- //-------------------------------------------------
- void NonVolatileStorageWritePort(void)
- {
- preferences.clear();
- preferences.begin("Port", false);
- preferences.putUInt("port", ConnectionPort);
- preferences.end();
- }
- void NonVolatileStorageReadPort(void)
- {
- preferences.begin("Port", false);
- ConnectionPort = preferences.getUInt("port", 0);
- preferences.end();
- }
- uint32_t SelectBaudrate(uint8_t baudrate)
- {
- if(baudrate == 0x01) { return 9600; }
- else if(baudrate == 0x02) { return 14400; }
- else if(baudrate == 0x03) { return 19200; }
- else if(baudrate == 0x04) { return 28800; }
- else if(baudrate == 0x05) { return 38400; }
- else if(baudrate == 0x05) { return 56000; }
- else if(baudrate == 0x06) { return 57600; }
- else if(baudrate == 0x07) { return 115200; }
- else if(baudrate == 0x08) { return 128000; }
- else if(baudrate == 0x09) { return 256000; }
- }
- /*
- * Protocol:
- * 0x01 0xB6 <LEN> [data] Set SSID
- * 0x01 0xA5 <LEN> [data] Set Password
- * 0x01 0xE7 0x02 0xXX 0xXX Set Baudrate
- * 0x01 0xD8 0x01 0xXX Set PortNum
- */
- void SetParametersFrameAnalyse()
- {
- if(COM[0] != NULL)
- {
- if(COM[0]->available())
- {
- while(COM[0]->available())
- {
- buf2[1][i2[1]] = COM[0]->read(); // read char from UART(num)
- if(i2[1]<bufferSize-1)
- {
- i2[1]++;
- }
- }
- if(buf2[1][0] == _SOH)
- {
- uint8_t sendResponseFrame = 0;
- if(buf2[1][1] == _SET_SSID)
- {
- if(debug) COM[DEBUG_COM]->print("_SET_SSID");
- String testname = "";
- for(uint8_t i=0; i<buf2[1][2]; i++)
- {
- testname += char(buf2[1][i + 3]);
- wifiSSID = testname;
- }
- NonVolatileStorageWrite();
- }
- else if(buf2[1][1] == _SET_PASSWORD)
- {
- if(debug) COM[DEBUG_COM]->print("_SET_PASSWORD");
- String testname = "";
- for(uint8_t i=0; i<buf2[1][2]; i++)
- {
- testname += char(buf2[1][i + 3]);
- wifiPassword = testname;
- }
- NonVolatileStorageWrite();
- }
- else if(buf2[1][1] == _SET_BUAURATE)
- {
- if(debug) COM[DEBUG_COM]->print("_SET_BUAURATE");
- Baudrate_RS485 = (uint32_t)buf2[1][3];
- NonVolatileStorageWriteBaudrate();
- }
- else if(buf2[1][1] == _SET_PORT)
- {
- if(debug) COM[DEBUG_COM]->print("_SET_PORT");
- ConnectionPort = (buf2[1][3] << 8) | buf2[1][4];
- NonVolatileStorageWritePort();
- }
- if(sendResponseFrame == 1)
- {
- if(i2[1] != 0x00)
- {
- COM[0]->write(buf2[1], i2[1]); // now send to UART(num):
- }
- }
- }
- i2[1] = 0;
- }
- }
- }
Poniżej znajduje się plik .h zawierający ustawienia kody rozkazów itp:
- #define OTA_HANDLER
- #define RS485_ENABLE
- #define PROTOCOL_TCP
- const bool debug = true;
- const char *ssid = "ssid";
- const char *pw = "password";
- #define SSID_BUFFER_SIZE 32
- #define PASSWORD_BUFFER_SIZE 64
- #define NEW_SETTINGS_PIN 22
- #define RESET_PIN 13
- #define RE_PIN 26
- #define DE_PIN 27
- #define WRITE_SETTINGS_PIN_NUM 18
- #define NUM_COM 2 // total number of COM Ports
- #define DEBUG_COM 0 // debug output to COM0
- /************************* COM Port 0 ON ESP BOARD *******************************/
- #define UART_BAUD0 115200 // Baudrate
- #define SERIAL_PARAM0 SERIAL_8N1 // Data/Parity/Stop
- #define SERIAL0_RXPIN 3 // receive Pin
- #define SERIAL0_TXPIN 1 // transmit Pin
- #define SERIAL0_TCP_PORT 8880 // Wifi Port
- /************************* COM Port 2 ON ESP BOART *******************************/
- #define UART_BAUD2 115200 // Baudrate
- #define SERIAL_PARAM2 SERIAL_8N1 // Data/Parity/Stop
- #define SERIAL2_RXPIN 16 // receive Pin
- #define SERIAL2_TXPIN 17 // transmit Pin
- #define SERIAL2_TCP_PORT 8881 // Wifi Port
- #define bufferSize 1024
- /* Set network Parameters */
- #define _SOH 0x01
- #define _SET_SSID 0xB6
- #define _SET_PASSWORD 0xA5
- #define _SET_STATIC_IP 0xC5
- #define _SET_BUAURATE 0xE7
- #define _SET_PORT 0xD8
- //////////////////////////////////////////////////////////////////////////
Projekty opisane w tym poście można pobrać z dysku Google pod tym linkiem.