用 ESP32 的晶片,做一個藍芽控制的 Reley。
可用來控制相關電源類的東西.
IO 為 0。
rn+______ <=可以設定藍芽名稱
gn+ <=可以取得藍芽名稱
0 <=切換 Relay 狀態
#include <BluetoothSerial.h>
#include <EEPROM.h>
BluetoothSerial BT;
String ReadBTString="";
String BTName="";
String cmd="";
String param ="";
bool IOStatus=false;
int RelayIO =0; // Relay 用 IO 0
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
//宣告使用EEPROM 11個位置
EEPROM.begin(11);
// 1 => Relay Status
// 2~11 => BT Name
//讀取EEPROM 1~11的位置,讀取 BT Name
for (int i = 1; i < 11; ++i)
{
if(EEPROM.read(i)!=0)
BTName += char(EEPROM.read(i));
}
BT.begin(BTName);//請改名
Serial.println(BTName + “-> Start");
pinMode(RelayIO,OUTPUT);
}
void loop() {
//BT 接收與執行功能
BTResvFunc();
}
void BTResvFunc()
{
if(BT.available())
{
ReadBTString="";
while(BT.available())
{
ReadBTString+=(char)BT.read();
delay(1);
}
//Command Chk
StrChk(ReadBTString);
//Do Switch Func
if(cmd == “IO+")
IO(RelayIO,IOStatus);
//Do Switch Func
if(cmd == “rn+")
WriteEEPROM(1,11,param);
//Do Switch Func
if(cmd == “gn+")
ReadBTName();
}
}
void StrChk(String value)
{
Serial.println(“Do StrChk Func");
//reset cmd and param
cmd = param ="";
Serial.println(value);
Serial.print(“[Length]");
Serial.println(value.length());
if(value.length() == 3)
{
cmd = “IO+";
return;
}
for (int i = 0; i < value.length(); ++i)
{
if(i<3)
cmd += value[i];
else
param += value[i];
}
Serial.println(“[CMD]"+cmd);
Serial.println(“[Param]"+param);
}
void IO(int port,bool value)
{
if(value)
{
Serial.println(“IO OFF");
digitalWrite(port, LOW);
}
else
{
Serial.println(“IO ON");
digitalWrite(port,HIGH);
}
IOStatus = !IOStatus;
}
void WriteEEPROM(int statidx,int endidx,String value)
{
//寫入EEPROM 0~31的位置
Serial.println(“writing eeprom ssid:");
for (int i = 0; i < endidx; ++i)
{
Serial.print(“Wrote: “);
if(i<value.length())
{
EEPROM.write(i + statidx, value[i]);
Serial.println(value[i]);
}
else
{
EEPROM.write(i + statidx, 0);
Serial.println(“");
}
}
EEPROM.commit();
}
void ReadBTName()
{
BTName="";
//讀取EEPROM 1~11的位置
for (int i = 1; i < 11; ++i)
BTName += char(EEPROM.read(i));
Serial.println(“BTName:" + BTName);
BT.println(BTName);
}