STM32F103VET6_ ESP8266-12F 手机或笔记本电脑WIFI控制LED的实现

时间:2020-12-26 22:20:09

        最近画了一块STM32F103VET6+ESP8266的开发测试板,用于研究物联网IOT方向基于WIFI的MQTT等协议。使用的为ESP8266-12F 模块,根据网上的成功的例程与加上自己的简单修改,很快调通了ESP8266 WIFI的建立与基于WIFI的TCP接收与发送。这样,就可以做初步的手机WIFI控制如控制开发板上LED灯的实验了。

       技术虽然是从零开始的,但不止于1,而是不断的积累,并无止境的发展。复杂的编程,也需要简单的积累。


先说一下测试的流程与环境的搭建。

(1)要有一个笔记本电脑或是智能手机(Android),笔记本电脑可以使用网络调试助手如:NetAssist.exe,而手机呢,需要有一个可能进行TCP通信的网络调试助手,网上有这样的APP,也可以自己设计或是修改一下适合自己用的。

(2)STM32+ESP8266-12F,其中让ESP8266打开WIFI热点,设置固定的IP,作为服务器,这样的话,就不再需要路由器的支持了。让手机或是笔记本电脑接入建立好的WIFI热点即可。


固件程序,网上例程修改,更新地址:

https://git.oschina.net/fsmd/stm32f103ve.git


手机APP的测试代码,网上找的,简单修改,基于eclipse,java语言。

https://git.oschina.net/fsmd/android_tcp_led_v1.git


(3)需要开发板配备的外设:目前主要为LED灯,数量当然最好大于一个。如果有传感器数据,我想,会更实用,如温度传感器,湿度传感器,等等。这样涉及到数据的接收与发送,采集与控制。


(4)程序烧写成功后(程序需要根据具体的硬件适当的修改),手机烧写APP,或是使用笔记本电脑连接ESP8266建立的WIFI,就可以测试了。


笔记本端的测试:

STM32F103VET6_ ESP8266-12F 手机或笔记本电脑WIFI控制LED的实现


手机端的测试:

STM32F103VET6_ ESP8266-12F 手机或笔记本电脑WIFI控制LED的实现


开发板端的图片:


STM32F103VET6_ ESP8266-12F 手机或笔记本电脑WIFI控制LED的实现


自此,如果操作方法正确,就应该可以测试了。


再谈一下调试的经验

(1)WIFI是什么?与TCP/IP有什么关系,与有线连接有什么关系?

         WIFI是一种通信的方式,WIFI之间的通信,不是TCP/IP通信。我们可以认为它是一种高速的无线通信方式,协议采用WIFI协议。无线路由器,目标为把WIFI协议与有线的TCP/IP协议相互转换。有线连接的路由器,是因为双方均为TCP/IP协议的接口,可以直接连接,路由器起到把多个基于TCP/IP连接的设备分时复用一根网线通路。


(2)如果不是做底层的WIFI设计,基于WIFI协议本身也可以不太懂,直接拿来用就可以了,就像你使用电脑时,也不用关心CPU是如何设计的。你知道CPU如何编程与应用即可。这里就是技术的分层概念,不需要掌握全部,否则可能会放缓你设计的脚步,偏离应用设计的路线。现在的产品设计,也是需要效率与速度的,不代表自己敲完所有代码就是最有能力的。


(3)ESP8266的功能就是:WIFI转串口,对于STM32来讲,并没有实现WIFI协议的代码,模块本身已经实现了。STM32只是串口通信,因此,需要把相应的串口的接收与发送中断函数等处理好,否则程序可能会死在中断里,需要通过调试程序才能一步步排查。


(4)实现了WIFI转串口并不难,只是发送几条串口命令,但是,数据的解析是多样的,这就是应用层协议。产品的设计,除了保证系统底层驱动可靠外,更多的还是功能的实现,协议的打包与解析,数据的使用。


关于应用方向

     我想,不是所有的电子产品都需要智能手机或是工控机的架构,那样成本太高,并且体积大与开发难度也大,像物联网方面,有些小的设备,就可以使用STM32+ESP8266+一些传感器等实现,成本低,软件与硬件设计难度也低。当然, 不同的应用,需要架构也不一样。


      关于代码细节的分析,有时间再学习整理一下。做技术,还是那句话,兴趣与需求与目标,都不能少。否则,会失去方向,失去兴趣,从而停止不前。