小玩具——温度采集项目(二)

此项目,将主要分成,硬件部分为数据采集部分,通信部分;软件部分当然为上位机了。

我使用的是开发板,毕竟只是为了学习编写上位机,所以,就怎么方便怎么来,毕竟自我感觉温度采集还是挺简单的哈(难道我会跟你说,是我变懒了,没有当年写单片机时的激情了吗),我用的板子是,stm32f407,顺便熟悉一下这块板,毕竟arm挺火的不是,温度传感器当然就是它板载自带的了,ad自带,通信模块是用esp8266,当时买开发板的时候送的,正好开了一门计算机网络这门课,整好学习一下,不也是挺有趣的吗,所以,我的目的纯粹是为了学习,在保障学习的前提下才保障工程问题,所以,有很多不合理的地方,不过就算是让我考虑工程问题,我也无从下手,所以,请大家多多指教,小弟感激不尽。

好了,大致的工作原理就是,温度传感器,受温度的影响,电阻发生已知规则的变化,而相应的电压也是做出相应的变化,那么测量的就是这个传感器的电压值,这是模拟量,再经ad转换读出数字量,用已知的规则变化去计算得出温度的值。至于实际硬件的寄存器啊端口引脚啊,我就不细说了,这个应该挺简单的,我是直接用的原子的库函数,毕竟写驱动函数还是挺费力的。

有了温度采集的值,我们还需要一个信道,与上位机通信,把数据传到上位机,之后就上位机怎么做就和下位机无关了。我使用的esp8266模块,库函数当然还是使用的原子的,所以,我底层的原理,到底它传了这指令做了啥,为啥会这样,我是不知道的。好了,我来介绍一下,esp8266这个模块,总的来说,价格低,是一个WiFi串口模块,即它是通过串口接收指令的,通过串口发送接收数据的,它本身也可以是一块单片机,应该是这么说吧,就是它本身自带了一块MCU,也即可以不用连接外部MCU也能工作,通过ttl转串口模块与pc相连,使用串口助手,直接发指令与esp8266通信,这也是它的优势,但是我没有用到,所以就不细谈了,还有就是通过其他MCU的串口与esp8266的串口进行通信,这和直接与pc通信差不多原理,都是经过串口。然后,它的指令我就不谈了。在稍微介绍一下,我学到的东西。

esp8266,有三种工作模式,实际上可以说是两种,即sta,ap,还有一种是sta/ap双模式,sta是只能连接外部设备,亦即,只能连接外部的“热点”,自身不能发出“热点”让外部设备连接,外部作为“源”的设备,如果是DHCP是开启的话,会自动分配一个ip地址给sta模式下的esp8266模块这个设备(注意,这是软件分配的地址,是连接进“源”之后形成的局域网后,以便其他设备可以找到此设备而分配的地址,和MAC物理地址是不一样的。),ap则是相反的,它自身作为“热点”,供其它设备连接,此时它就相当于一个wifi,手机pc都可以连接进去,然后esp8266如果开启了DHCP的话,esp8266会自动分配一个ip地址给连接上的设备,以便寻址通信。

然后,决定了它的工作模式后,还有就是他的通信模式了,有tcp/client,tcp/server,udp三种的通信模式。

1.tcp/client,tcp/serve通信,是作为客户端,它会向服务端提出通信申请,对方接收后,则进入通信服务中,而服务端只能被动等待client端的访问申请。具体的实施是,client端发送申请,发出申请,需要对方的ip地址,还有端口号,ip地址,之前有说过,这些都是可以知道的,那么端口号呢,那就得,服务端开启监听,开放某个端口进行监听客户端的发送访问申请,开放后后就进行等待,等待通信的申请,然后经过三次的握手成功,就建立了通信“线路”了。

2.udp,是无保障通信模式,正因为它没有tcp的那么多的保障机制,所有它的速度才那么地快,所以它的存在还是有价值的,在一些对通信质量不做较高要求,网络环境较好较稳定的地方,对速度有一定的要求的地方,就需要到它的存在了。它的通信,是平等的通信,即没有服务和客户端,应该是这样的吧,没研究这个通信,就不多说这个了,如果误人子弟就gg了。


你可能感兴趣的:(Myprogram)