分享用ESP8266制作无线串口
本帖最后由 donglaile 于 2017-8-22 13:26 编辑因为经常要调试ARM应用,每次都用一个串口线连接很烦,很想搞个无线串口使用,很早之前也用NRF24L01做过,但是115200波特率不行老是丢包,后来就放弃了(比较菜)。那时也用ESP8266做过,使用AT模式,115200波特率下也会丢包,无法实用,就放弃了。
前段时间发现用arduino开发ESP8266很简单了,就用买来吃灰很久的ESP8266模块做了一个无线串口,使用了下发现还不错,分享一下。
工作流程大概是这样的:
将开发板的串口链接到ESP8266,ESP8266连接上电脑使用的无线路由器,然后建立一个TCP服务器,电脑上使用一个TCP客户端软件连接到ESP8266。当ESP8266接收到串口数据后,就将他发到连接的TCP客户端;当ESP8266接收到TCP客户端发来的数据后,就将它发往串口。
ESP8266程序:
比较简陋的Qt(4.8.5)上位机程序:
程序有个backspace的问题没有解决,其实使用SecureCRT更好,直接新建一个telnet连接就行了。
还有重要的一点,ESP8266的Arduino库一定要最新的,因为需要支持用户设置串口接收缓冲区的大小,默认的缓冲区太小,在接收大量数据时会丢失数据,所以要手动设大些,我这里设置了8KB缓冲。
最好使用爱国访问
https://github.com/esp8266/Arduino
Arduino IDE版本1.8.2
Arduino IDE的开发板设置
上位机连接模块
SecureCRT使用telnet连接模块
使用的是X宝买的ESP12模块
网上找了个原理图
严格说应该叫串口转TCP吧。 无线的方便,好东西。 看着可以啊 我也打算用nrf24L01做一个,楼主说说为啥不行啊? 有钱途啊,可以进一步完善,做成产品试试。 感谢分享,我几个月前做了一个和你功能一样的,苦于没时间搞硬件{:sad:},一直放在电脑里 huangqi412 发表于 2017-8-22 13:36
严格说应该叫串口转TCP吧。 无线的方便,好东西。
本想做两个的,后来一想反正是用电脑操作,一个就够了 meirenai 发表于 2017-8-22 15:39
我也打算用nrf24L01做一个,楼主说说为啥不行啊?
可能我写的程序有问题,波特率高了发送大量数据会丢失,后来就没搞了 谢谢分享,我一直是用蓝牙透传模块,手机也可以监控调试信息。 本帖最后由 qwe2231695 于 2017-8-23 00:43 编辑
正好需要,官方的透传模式,分包有点不合理。我10ms发给它一个40字节的包,持续发送,直接不分包发送,收够2048 Byte才一次性发送UDP包到电脑,Datasheet说是间隔20ms分包。搞得我数据只有2Hz不到。我需要一个根据波特率2字节间隔没有新数据直接分包发UDP出的,或者5ms没有数据也给我发送也行。 支持,有机会试试 qwe2231695 发表于 2017-8-23 00:40
正好需要,官方的透传模式,分包有点不合理。我10ms发给它一个40字节的包,持续发送,直接不分包发送,收够 ...
你这个可行的 github下面src 改改即可 qwe2231695 发表于 2017-8-23 00:40
正好需要,官方的透传模式,分包有点不合理。我10ms发给它一个40字节的包,持续发送,直接不分包发送,收够 ...
现在市面上的很多WIFI转串口透传模式分包方式都很RZ,要么是固定字节数分包,要么是每隔一定时间分包 模块直接用串口下载程序? 我有疑问的地方是,就像8266这个模块你肯定是用的指定的IP,家里的无线网络会有不同的设备接入,怎么保证接入的设备分配的IP不是8266指定的这个IP 大牛,酷贴 zuo de bu cuo, ding lou zhu marshallemon 发表于 2017-8-23 17:54
我有疑问的地方是,就像8266这个模块你肯定是用的指定的IP,家里的无线网络会有不同的设备接入,怎么保证接 ...
我看了下路由器里接入的设备,自动分配的地址都是从低到高的,于是设了个相对较大的IP,避开常用的。
看例子有个mDNS即组播DNS(multicast DNS)可以实现主机的发现和通信,mDNS主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信。他的OTA(on the air)升级的例子就用了组播,在这上面提供的代码里,我把OTA也搬进来了。这图是IDE检测到的主机(ESP8266):
简单的说就是,我可以把ESP8266模块的IP地址设置成路由器自动分配,然后通过mDNS服务来发现ESP的IP地址,因为“每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少”(以下连接摘抄的)。
http://blog.csdn.net/ustcxiangchun/article/details/41118629 早看到这贴我就不去画板打样了{:sweat:} 最近我也在做这个 这个应该就是wifi转串口的双向传吧? 这个应该就是wifi转串口的双向透传吧? 本地ota是不是很爽? 谢谢分享,学习了 谢谢分享了 有创意,MAKR! 谢谢,很不错的
WiFiTelnetToSerial_OTA:200:27: error: call of overloaded 'write(uint8_t [(((sizetype)(((ssizetype)len) + -1)) + 1)])' is ambiguous
Serial.write(sbuff);
谁能想到这句话都能报错。。。我醉了。
页:
[1]