STM32+ESP8266+OneNet共同完成温度显示功能

STM32F103+ESP8266+OneNet温度显示

这次实验对应的是我的本科毕业设计,目标是完成一个温度测试平台,具有本地显示,远程显示,算法后台校正的功能。为了适应当前信息化的物联网发展方向,本文选择一款分辨率可调的高线性度CMOS温度传感器作为感温芯片,运用STM32F103C8T6作为微控制器主控芯片,使用WiFi传输作为无线传输方案,结合OLED显示,以及中国移动的OneNET平台,共同设计了一个温度传感器的应用平台,并在立创投板PCB完成实物。在考虑功能的同时,也对性能有更高的要求。综合对比单点校正,两点校正,线性神经网络,复合线性神经网络和径向基函数神经网络校正算法,最后选择基于高斯函数的径向基函数神经网络算法对温度传感器的码字进行校正将本温度传感器应用平台的测量误差降至±0.15摄氏度。

硬件设计

学习使用AD进行绘板,嘉立创投板。
整体硬件框图如下所示:
在这里插入图片描述
设计的原理图如下所示:
在这里插入图片描述
设计完成后的实际图如下所示:
在这里插入图片描述
在这里插入图片描述

软件设计

学习了使用Keil5结合CubeMX进行编程,学习IIC和UART编程,未使用中断,直接用的轮询的方式,也导致功耗较高。并且软件设计思路为先连接OneNET网站,连接成功再显示数据。
选择的TCP透传方式,采用AT指令控制ESP8266连接OneNET官方服务器。设计思路如下:
在这里插入图片描述
具体的ESP8266设计思路如下:
在这里插入图片描述
最后OneNet设计界面如下:
在这里插入图片描述

校正算法

学习了使用Anacoda配置环境,还特地搞了一个2070配合cuda进行计算,算法环境选择的pytorch,编程IDE使用的Jupyter Noteboot和Pycharm。对比一些简单的两点校正,径向基函数的神经网络函数拟合的曲线更好。
径向基函数的基函数可以有多种选择,本次基函数采用高斯函数,对应隐藏层H的函数关系为:
█(h_n=e^(-(|(|x-c_n |)|2/(2〖r_n〗2 )) )#(3-20) )
||x-c_n ||称为欧几里得距离。输出的y_pre为:
█(y_pre=∑_(n=1)^n▒〖w_nh_n 〗#(3-21) )
得到前向传播函数后和前几节的方式一样,利用梯度下降的反向传播算法,对系统神经网络的RBF网络进行参数训练和跟新。经过实验后具体的得N=4。
█(y_pred=∑_(n=1)^4▒〖w_n
h_n 〗#(3-22) )
█(loss=∑▒(y_data-y_pred ) ^2#(3-23) )
接着根据反向传播函数跟新权重:(其中c,r,都为4x1的矩阵)
█(c=c-μ ∂loss/∂c#(3-24) )
█(r=r-μ ∂loss/∂r#(3-25) )
得到4组c,r,w的值,完成校正函数的搭建。
对应神经网络的框架如下:
在这里插入图片描述
对应测试结果如下:
在这里插入图片描述
综合对比多种校正算法如下:

                   代价函数  最大误差 温度范围
单点校正	           696.888	10.53℃	0℃~100℃
两点校正	           6.09	    1.34℃	0℃~100℃
线性神经网络	       3.81	    0.77℃  0℃~100℃
复合线性神经网络	   1.1191	0.27℃	0℃~100℃
径向基函数的神经网络  0.032   -0.14℃	0℃~100℃
  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值