TOPWAY智能屏HMT070ETD-1D具有丰富电容通讯接口,USART,RS232,USB,以太网接口。本项目借助 TOPWAY智能屏网络功能开发一个学生作业提示器,家里小朋友一放学就玩手机,玩游戏,作业被抛到九霄云外。有必要做一个显示器,学校家长群学生作业,提示小朋友做完作业在玩。


TOPWAY智能屏已经把以太网转串口封装好了,相当于完成以太网转串口透传功能,用户不用考虑TCP/IP 网络拓扑。直接接入接入本地路由器就可以用了。
方案框图:
方案一:用额外WIFI模块可以省去网线,但是成本增加。
方案二:
TOPWAY智能屏模块通过网线直接连接到路由器,构建本地局域网。


作业提示器 GUI界面设定:


TOPWAY智能屏具有强大的文本设计能力,简单明了。

TOPWAY智能屏本地局域网网络配置。SSCOM测试,IP地址要设定在本地局域网中。


#include <WiFi.h>
char ssid[] = "SSID"; // your network SSID (name)
char pass[] = "password"; // your network password
int keyIndex = 0; // your network key Index number (needed only for WEP)
int status = WL_IDLE_STATUS;
WiFiServer server(5000);
void setup() {
Serial1.begin(115200);
Serial.begin(115200); // initialize serial communication
pinMode(9, OUTPUT); // set the LED pin mode
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
while (true); // don't continue
}
// attempt to connect to Wifi network:
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to Network named: ");
Serial.println(ssid); // print the network name (SSID);
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
server.begin(); // start the tcp server on port 5000
printWifiStatus(); // you're connected now, so print out the status
}
char buffer[1000];
char Head_buff[] = {0xAA, 0x42, 0x00, 0x00, 0x00, 0x80};//显示器接收包头
char End_buff[] = {0x00, 0xCC, 0x33, 0xC3, 0x3C};//显示器接收包尾
//char bbf[] = {0xB4, 0xAB, 0xCA, 0xE4, 0xCD, 0xEA, 0xB1, 0xCF, 0xA3, 0xA1, 0x0D, 0x0A};
char bbf[] = "succ";
void loop() {
int hz_start = 0;
int i = 0;
WiFiClient client = server.available();
while (client.connected()) {
memset(buffer, 0, 1000);
int n = client.read((uint8_t*)(&buffer[0]), sizeof(buffer));
if (n > 0) {
for (i = 0; i < n; i++) {
Serial.print(buffer[i]);
}
hz_start = 0;
for (i = 0; i < n; i++) {
if (buffer[i] == 0x0A) {
if (buffer[i + 1] == 0x0D) {
if (buffer[i + 2] == 0x0A) {
hz_start = i + 3;
break;
}
}
}
}
// Serial.print(hz_start);
if (hz_start > 0) {
for (i = 0; i < 6; i++) {
Serial1.print(Head_buff[i]);
}
for (i = hz_start; i < hz_start + 125; i++) {
Serial1.print(buffer[i]);
}
for (i = 0; i < 5; i++) {
Serial1.print(End_buff[i]);
}
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
break;
}
// n = client.write(buffer, n);
n = client.write(bbf, sizeof(bbf));
if (n <= 0) {
break;
}
}
}
client.stop();
}
void printWifiStatus() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
驱动程序,注意通讯协议帧头AA 42 00 00 00 帧尾 00 CC 33 C3 3C汉子
注意点:
显示中文,字体属性必须要设置中文字库. 显示其他字体类同.
- 最后一个字符必须为'\0'结尾符(即 0x00)
- 中文字符要根据选择的字库是 GB2312 还是 GBK 等,发送汉字
对应的编码.显示效果:做个APP向路由器指定IP发送。


项目运行视频:
附件为项目GUI界面打包,相关程序,和APP
帖子汇总:
我要赚赏金
