DCC控制器模型铁路- WiFi版
扫描二维码
随时随地手机看文章
该单元加上App提供了一个完整的DCC控制器,具有击败更昂贵系统的功能。
WiFi版:
该单元加上App提供了一个完整的DCC控制器,具有击败更昂贵系统的功能。
*新功能:控制一个loco与双用户在2部手机/平板电脑
物有所值,可靠,使用简单,定制系统,以匹配您的火车头花名册。
包括F1到F32功能按钮兼容最新的声音解码器
添加您自己的loco名称和函数标题。
•在Android设备(手机或平板电脑)上安装App
•插入直流15伏电源
•存储您的花名册多达100个机车
•控制多达4列火车在同一时间与许多其他运行在后台
这个系统有什么不同?
一个非常简单的电子电路为轨道提供DCC信号和电源,然而应用程序做了真正的工作!你手机上的电脑被充分利用,通过构建所需的代码来形成每个指令包,从而简化了控制器的工作!
新的WiFi应用程序,具有4位寻址,CV读写,主程序(PoM)和制作组成
“机车DCC 3 WiFi”
有史以来最简单的,NMRA兼容的DCC指挥站!!看看下面的功能列表!!
适用于NMRA兼容解码器,如巴赫曼,伦茨,阿特拉斯,霍恩比等
包括指令。
这个革命性的系统在应用程序内编译操作DCC数据包,这些数据包被发送到微控制器接口,与DCC时钟信号相结合。
完整的应用程序功能包括:
•花名册包含多达100个locos与短或长地址
•理想的小到中型布局
•2.5安培负载驱动12台或以上的OO/HO机车(Z或N轨距更多)
•短路保护
•自动过载切断
•灯光和方向
•功能说明1 ~ 32
•道岔/分/配件255对输出
•自定义机车的命名
•读/写CV的1到1024
•添加您自己的附件地址
•连接2或3个手机/平板电脑来控制布局
•双重控制一个火车头可能与速度和方向反映在每个设备
•可编辑的标题,可见性和瞬间选项的28个功能按钮
•4个屏幕速度条,一次控制4个火车头
•增加每个火车头的最大速度
•长地址(1-9999)和短地址(1-127)
•主程序
•形成一个组合(双头你的火车头)
•由Arduino供电
注:应用程序适用于Android 8以上。应用程序与苹果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插头,或将Multibao 15v 3A适配器与2.1mm/2.5mm x 5.5 mm插头连接,或将Photonic 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量规,使用12v 3安培电源适配器和2.1mm/2.5mm x 5.5 mm插头,不要使用交流或直流列车控制器,因为它们不能提供真正的直流电压。
•适用于14岁以上的用户。
•只供室内使用。
代码
// 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