Last active
July 16, 2024 09:27
-
-
Save prasertsakd/950d7c34d5fa2bbfda7738fe40b6ea92 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//wifi test | |
#include <ErriezSerialTerminal.h> | |
#include <WiFi.h> | |
#include <ModbusMaster.h> | |
// LED pin | |
#define LED_PIN LED_BUILTIN | |
// Newline character '\r' or '\n' | |
char newlineChar = '\n'; | |
// Separator character between commands and arguments | |
char delimiterChar = ' '; | |
// instantiate ModbusMaster object | |
ModbusMaster node; | |
String ssidList; | |
// const char* ssid = "your-ssid"; // Change this to your WiFi SSID | |
// const char* password = "your-password"; // Change this to your WiFi password | |
// digital output | |
#define DO1 32 | |
#define DO2 33 | |
// digital input | |
#define DI1 18 // AC OK = 18 | |
#define DI2 19 // Battery Low = 19 | |
#define DI3 25 // isolate input D25 | |
#define DI4 26 // isolate input D26 | |
// #define DI1 32// AC OK = 18 | |
// #define DI2 33 // Battery Low = 19 | |
// #define DI3 4 // isolate input D25 | |
// #define DI4 5 // isolate input D26 | |
//rs 485 | |
// Rx = 16 //485+ | |
// Tx = 17 //485- | |
// Direction = 15 | |
//rs 485 | |
#define MODBUS_RX_PIN 16 | |
#define MODBUS_TX_PIN 17 | |
#define MODBUS_DE_PIN 15 | |
#define MODBUS_SERIAL_BAUD 9600 | |
// Create serial terminal object | |
SerialTerminal term(newlineChar, delimiterChar); | |
// Function prototypes | |
void unknownCommand(const char *command); | |
void cmdHelp(); | |
void cmdLedOn(); | |
void cmdLedOff(); | |
void cmdReadPin(); | |
void cmdWifiList(); | |
void cmdDeviceFactoryReset(); | |
void cmdReadModbus(); | |
void setup() { | |
// Initialize serial port | |
pinMode(MODBUS_RX_PIN, OUTPUT); | |
pinMode(MODBUS_DE_PIN, OUTPUT); | |
// Init in receive mode | |
digitalWrite(MODBUS_RX_PIN, 0); | |
digitalWrite(MODBUS_DE_PIN, 0); | |
Serial.begin(115200); | |
Serial2.begin(MODBUS_SERIAL_BAUD, SERIAL_8N1, MODBUS_RX_PIN, MODBUS_TX_PIN); | |
// Serial.setRxBufferSize(128); | |
// communicate with Modbus slave ID 2 over Serial (port 0) | |
node.begin(1, Serial2); | |
node.preTransmission(preTransmission); | |
node.postTransmission(postTransmission); | |
delay(10); | |
// Serial.println(F("\nSerial terminal example.")); | |
Serial.println(F("Type 'help' to display usage.")); | |
// Initialize the built-in LED | |
pinMode(DO1, OUTPUT); | |
pinMode(DO2, OUTPUT); | |
pinMode(DI1,INPUT_PULLUP); | |
pinMode(DI2,INPUT_PULLUP); | |
pinMode(DI3,INPUT_PULLUP); | |
pinMode(DI4,INPUT_PULLUP); | |
pinMode(LED_PIN, OUTPUT); | |
digitalWrite(LED_PIN, LOW); | |
// Set default handler for unknown commands | |
term.setDefaultHandler(unknownCommand); | |
// Add command callback handlers | |
term.addCommand("?", cmdHelp); | |
term.addCommand("help", cmdHelp); | |
term.addCommand("on", cmdLedOn); | |
term.addCommand("off", cmdLedOff); | |
term.addCommand("read", cmdReadPin); | |
term.addCommand("mod", cmdReadModbus); | |
// wifi | |
term.addCommand("list", cmdWifiList); | |
term.addCommand("reset", cmdDeviceFactoryReset); | |
} | |
void loop() | |
{ | |
term.readSerial(); | |
} | |
void preTransmission() { | |
digitalWrite(MODBUS_RX_PIN, 1); | |
digitalWrite(MODBUS_DE_PIN, 1); | |
} | |
void postTransmission() { | |
digitalWrite(MODBUS_RX_PIN, 0); | |
digitalWrite(MODBUS_DE_PIN, 0); | |
} | |
void unknownCommand(const char *command) | |
{ | |
// Print unknown command | |
Serial.print(F("Unknown command: ")); | |
Serial.println(command); | |
} | |
void cmdHelp() | |
{ | |
// Print usage | |
Serial.println(F("Serial terminal usage:")); | |
Serial.println(F(" help or ? Print this usage")); | |
Serial.println(F(" on Turn DO on")); | |
Serial.println(F(" off Turn DO off")); | |
Serial.println(F(" read read digital input")); | |
Serial.println(F(" list wifi scan")); | |
} | |
////////////////////////////////////// | |
void cmdWifiList() { | |
// WiFi.mode(WIFI_MODE_STA); | |
WiFi.disconnect(); | |
delay(100); | |
int n = WiFi.scanNetworks(); | |
delay(10); | |
ssidList = WiFi.SSID(0); | |
for (int i = 1; i < n; ++i) { | |
ssidList += "\n\r"; | |
ssidList += WiFi.SSID(i); | |
} | |
delay(10); | |
Serial.println("Wifi Scan"); | |
Serial.println(ssidList); | |
Serial.println(); | |
} | |
void cmdDeviceFactoryReset() { | |
// reset the wifi config | |
delay(3000); | |
ESP.restart(); | |
} | |
void cmdReadModbus() { | |
int result; | |
Serial.println("Modbus Temperature"); | |
result = node.readInputRegisters(1, 1); | |
if (result == node.ku8MBSuccess) { | |
for (int j = 0; j < 1; j++) { | |
Serial.print( node.getResponseBuffer(j) ); | |
} | |
} | |
Serial.print(","); | |
result = node.readInputRegisters(2, 1); | |
if (result == node.ku8MBSuccess) { | |
for (int j = 0; j < 1; j++) { | |
Serial.println ( node.getResponseBuffer(j) ); | |
} | |
} | |
} | |
////////////////////////////////////// | |
void cmdLedOn() | |
{ | |
// Turn LED on | |
Serial.println(F("Turn on")); | |
digitalWrite(LED_PIN, HIGH); | |
digitalWrite(DO1, HIGH); | |
digitalWrite(DO2, HIGH); | |
} | |
void cmdLedOff() | |
{ | |
// Turn LED off | |
Serial.println(F("Turn off")); | |
digitalWrite(LED_PIN, LOW); | |
digitalWrite(DO1, LOW); | |
digitalWrite(DO2, LOW); | |
} | |
void cmdReadPin() | |
{ | |
// read di | |
Serial.println("Digital Read"); | |
Serial.print("AC_OK :"); | |
Serial.println( digitalRead(DI1) ); | |
Serial.print("Batt_Low :"); | |
Serial.println ( digitalRead(DI2) ); | |
Serial.print("D25 :"); | |
Serial.println ( digitalRead(DI3) ); | |
Serial.print("D26 :"); | |
Serial.println ( digitalRead(DI4) ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment