該單元加上App提供了一個完整的DCC控制器,具有擊敗更昂貴系統(tǒng)的功能。
WiFi版:
該單元加上App提供了一個完整的DCC控制器,具有擊敗更昂貴系統(tǒng)的功能。
*新功能:控制一個loco與雙用戶在2部手機/平板電腦
物有所值,可靠,使用簡單,定制系統(tǒng),以匹配您的火車頭花名冊。
包括F1到F32功能按鈕兼容最新的聲音解碼器
添加您自己的loco名稱和函數(shù)標題。
?在Android設(shè)備(手機或平板電腦)上安裝App
?插入直流15伏電源
?存儲您的花名冊多達100個機車
?控制多達4列火車在同一時間與許多其他運行在后臺
這個系統(tǒng)有什么不同?
一個非常簡單的電子電路為軌道提供DCC信號和電源,然而應(yīng)用程序做了真正的工作!你手機上的電腦被充分利用,通過構(gòu)建所需的代碼來形成每個指令包,從而簡化了控制器的工作!
新的WiFi應(yīng)用程序,具有4位尋址,CV讀寫,主程序(PoM)和制作組成
“機車DCC 3 WiFi”
有史以來最簡單的,NMRA兼容的DCC指揮站!!看看下面的功能列表!!
適用于NMRA兼容解碼器,如巴赫曼,倫茨,阿特拉斯,霍恩比等
包括指令。
這個革命性的系統(tǒng)在應(yīng)用程序內(nèi)編譯操作DCC數(shù)據(jù)包,這些數(shù)據(jù)包被發(fā)送到微控制器接口,與DCC時鐘信號相結(jié)合。
完整的應(yīng)用程序功能包括:
?花名冊包含多達100個locos與短或長地址
?理想的小到中型布局
?2.5安培負載驅(qū)動12臺或以上的OO/HO機車(Z或N軌距更多)
?短路保護
?自動過載切斷
?燈光和方向
?功能說明1 ~ 32
?道岔/分/配件255對輸出
?自定義機車的命名
?讀/寫CV的1到1024
?添加您自己的附件地址
?連接2或3個手機/平板電腦來控制布局
?雙重控制一個火車頭可能與速度和方向反映在每個設(shè)備
?可編輯的標題,可見性和瞬間選項的28個功能按鈕
?4個屏幕速度條,一次控制4個火車頭
?增加每個火車頭的最大速度
?長地址(1-9999)和短地址(1-127)
?主程序
?形成一個組合(雙頭你的火車頭)
?由Arduino供電
注:應(yīng)用程序適用于Android 8以上。應(yīng)用程序與蘋果iOS不兼容
電源:直流電壓12 ~ 18伏
連接前確保輸出插頭極性正確。
例如,用2.1mm/2.5mm x 5.5 mm插頭連接15v 2安培電源或連接15v 3安培電源,如下所示:
PowerPax SW4323B, 2.1mm/2.5mm x 5.5 mm插頭,或?qū)ultibao 15v 3A適配器與2.1mm/2.5mm x 5.5 mm插頭連接,或?qū)hotonic Universe 16v 3A適配器與2.1mm/2.5mm x 5.5 mm插頭連接,或搜索“15V 3A電源AC/DC適配器100V-240V 50/60hz DC 15伏3安培45瓦15W”
對于N或Z量規(guī),使用12v 3安培電源適配器和2.1mm/2.5mm x 5.5 mm插頭,不要使用交流或直流列車控制器,因為它們不能提供真正的直流電壓。
?適用于14歲以上的用戶。
?只供室內(nèi)使用。
代碼
// v2 18 march 2024
#include
#include
String inString;
String outString;
String inMsg;
String outMsg;
/* Set these to your desired credentials. */
const char *ssid = "DCC_E017";
const char *password = "123456789";
WiFiServer server(80);
void setup() {
Serial.begin(9600);
Serial.setTimeout(5);
Serial.println();
Serial.println("Configuring access point...");
outMsg = "";
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
//Serial.print("AP IP address: ");
//Serial.println(myIP);
server.begin();
//Serial.println("Connected to the WiFi network");
delay(5000);
//Serial.println("Server started");
}
void loop() {
get_inMsg();
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
//Serial.println("new client");
while(!client.available()){
delay(1);
}
//Serial.println("New Client."); // print a message out the serial port
inString = client.readStringUntil('\n');
client.flush();
//}
if (inString.length() >= 3){
// if the current line is blank, you got two newline characters in a row.
// that's the end of the client HTTP request, so send a response:
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what's coming, then a blank line:
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
// the content of the HTTP response follows the header:
client.print(outMsg); // sends current values (mA) and over current events
// The HTTP response ends with another blank line:
client.println();
// close the connection:
//client.stop();
//Serial.println("Client Disconnected.");
//Serial.println("");
//Serial.println(inString);
string();
}
inString = "";
}
void string(){
int x = inString.indexOf(" HTTP/1.1");
int s = inString.indexOf("=") + 1;
outString = inString.substring(s,x);
Serial.println("");
//Serial.println(outString);
if(Serial.available() == true && outString.length() >= 1);{
Serial.println(outString);
//Serial.print("outString = ");Serial.println(outString);
}
}
void get_inMsg(){
//Serial.println(C);
if(Serial.available());{
inMsg = Serial.readStringUntil('\n');
String inChar;
String temp ="";
int count = 0;
unsigned long z = inMsg.length();
if (z >= 3){
for (int i = 0; i<=z; i++){
inChar = inMsg.substring(i,i+1);
temp += inChar;
}
outMsg = temp;
//Serial.print("outMsg = ");
Serial.println(outMsg);
}
}
}
本文編譯自hackster.io