完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是来自奥地利的 Alek。几年来一直是 Arduino 用户,最近开始使用 ESP 平台,真是太棒了。
现在,我有一个小项目,需要一些帮助。 我有一个 ESP8266 (D1 Mini),它有一个引脚作为输入,信号发生器的信号被捕获,然后该信号被传输到另一个 ESP8266。因此,当信号发生器输出高电平时,该信号会在接收到 ESP 时产生高电平输出。我每秒有一个信号,信号宽度从 100 到 200 毫秒不等。 这一切都有效,但我有 2 个问题我想解决: 1. 信号延迟: 接收 ESP 的输出信号与信号发生器输出相比延迟了 10-15 毫秒,这是通过 WiFi 发送之前的信号 2. 多个服务器: 我的代码现在有一个服务器和一个客户端,即一个发送器和一个接收器。我想要的是一个发射器和多个接收器,如果可能的话,我只需插入新接收器,而不必在每次添加新接收器时都更改发射器代码。 我的代码如下: TRANSMITER 代码:全选#include const char *ssid = "ssid"; const char *password = "password"; int sensorValue1; int btn1 = 4; static int sensorValueLast ; void setup() { pinMode(btn1, INPUT_PULLUP); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } } void loop() { if(digitalRead(btn1) == LOW) { sensorValue1 = 1; } else { sensorValue1 = 0; } if ( sensorValueLast == sensorValue1 ) return ; // leave sensorValueLast = sensorValue1 ; WiFiClient client; const char * host = "192.168.4.1"; const int httpPort = 80; if (!client.connect(host, httpPort)) { return; } String url = "/data/?sensor_reading=sensor1_value"; url.replace("sensor1_value", String(sensorValue1)); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); } 接收者: 代码:全选#include #include const char *ssid = "ssid"; const char *password = "password"; int sensorValue1 = 0; ESP8266WebServer server(80); void handleSentVar() { if (server.hasArg("sensor_reading")) { sensorValue1 = server.arg("sensor_reading").toInt() ; if (sensorValue1 == 0) { digitalWrite(2, HIGH); } if (sensorValue1 == 1) { digitalWrite(2, LOW); } } } void setup() { WiFi.softAP(ssid, password); IPAddress myIP = WiFi.softAPIP(); pinMode(2, OUTPUT); server.on("/data/", HTTP_GET, handleSentVar); // when the server receives a request with /data/ in the string then run the handleSentVar function server.begin(); } void loop() { server.handleClient(); } |
|
相关推荐
1个回答
|
|
可能的解决方案如下:
1. 信号延迟: a. 减少WiFi的延迟:可以尝试使用更快的WiFi网络,或者优化代码以减少与WiFi有关的延迟。 b. 使用Wired 通信:使用以太网或串行通信等有线通信方式传输信号,可以避免WiFi带来的延迟。 c. 使用外部时钟:使用外部时钟同步两个ESP8266板子的时钟,可以减少误差和延迟。 d. 优化代码:根据具体情况,可以尝试优化发送和接收信号的代码,例如采用更低级别的底层编程,处理中断等。 2. 多个ESP8266连接问题: a. 建立稳定的连接:确保正确配置和建立稳定的WiFi连接,尽量减少网络干扰和不良信号。 b. 重新连接机制:在失去连接时,可以增加自动重新连接机制,保证连接的稳定性。 c. 控制传输速率:可以减少传输速率,避免网络瓶颈和数据包丢失。 d. 路由器设置:根据具体网络状况,可以尝试更改路由器设置,例如更改WiFi信道或改善信号强度等。 希望以上建议能够帮助你修改你的ESP8266项目。 |
|
|
|
只有小组成员才能发言,加入小组>>
310 浏览 1 评论
551浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
443浏览 5评论
445浏览 4评论
415浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 09:50 , Processed in 0.617309 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号