前面咱们实现使用51采集温度传感器数据,并且通过串口将数据传输到PC,并通过C#将其解析完成显示到界面(采用winform开发)上。这个一般不是我们想要的效果,这样太耗费资源与成本了(每个需要具备一个Pc),到底有没有解决方案呢,答案肯定是有的。这里就是使用了咱们题目和开头准备的ESP8266Wifi 模块,具体这个模块的资料
乐鑫的IC
https://www.espressif.com/zh-hans/products/hardware/esp8266ex/overview
我这里使用的是Wifi模块。(安信可)在某宝上搜索便可以找到。
https://wiki.ai-thinker.com/esp8266
在链接ESP8266之前一定要进行配置,配置有两种方法,一种是使用手机APP配置与串口AT配置,下面主要讲AT串口配置,可以下载,串调试助手理行配置。
需要准备,一个配置的模块的小板子,某宝只需要1.5RMB,下面上照片,左边就是配置ESP8266的板子,右边是ESP8266的模块
下面是配置的AT指令
AT+GMR查看固件版本。
v1.0以上固件命令如下
//恢复到初始状态
AT+RESTORE
//设置WiFi应用模式为Station和Server共存模式
AT+CWMODE=3
//连接路由器 SSID为路由器用户名,Password为密码
AT+CWJAP="SSID","Password"
//查看是否获得IP
AT+CIFSR
//设置连接模式,0代表单一连接,1代表多连接
AT+CIPMUX=0
//设置为透传模式
AT+CIPMODE=1
//建立远程TCP连接
AT+SAVETRANSLINK=1,"116.255.xxx.xxx",8181,"TCP"
重启 ESP8266,然后开始通讯,传输数据。
注:
ESP8266连接 TCP
AT+SAVETRANSLINK=0取消透传模式
v1.0以下固件(例如v0.9.5.2版)命令如下
//设置WiFi应用模式为Station
AT+CWMODE=1
//连接到WiFi路由器,请将SSID替换为路由器名称,Password替换为路由器WiFi密码
AT+CWJAP="SSID","Password"
//建立远程TCP连接远程
AT+CIPSTART="TCP","116.255.xxx,xxx",8181
//设置为透传模式
AT+CIPMODE=1
//进入透传模式
AT+CIPSEND
注意:AT+CIPSTART="TCP","116.255.xxx,xxx",8181
这个是服务器的网关的IP地址与端口号,
配置好测试后可以看到数据已传输到云服务器了,接下来将ESP8266链接到单片机使用单片采集后传输到平台看看效果,网关服务器代码已传到交流群里面大家可以前去下载参考。
var byteBuffer = message as IByteBuffer;
var temp = byteBuffer.GetShort(0);
var temph = temp >> 4;
var templ = temp & 0x0f;
templ = templ * 6 / 10;
var info = (temph % 100) / 10 + "" + (temph % 100) % 10 + "." + templ + "℃";
var buffer = DotNetty.Buffers.Unpooled.WrappedBuffer(byteBuffer);
var rmtPoint = context.Channel.RemoteAddress as IPEndPoint;
//packet.RemoteIp = rmtPoint.Address.ToString();
//packet.RemotePort = rmtPoint.Port;
_logger.LogInformation($"reviced Datetime={DateTime.Now},远程地址:{rmtPoint.Address.ToString()},端口:{rmtPoint.Port},TSC89C52,DS18B20 Value={info}");
_logger.LogInformation($"reviced wendu data={ByteBufferUtil.PrettyHexDump(byteBuffer)}");
以上为Net core的代码,主要用于接收单片机上传的数据,这就实现的单片机转wifi到云的硬件链接配置,与云端的网关开发。剩下的就是怎么实现把数据事实展示到Web页面了,并且可以交互控制。