从零开始:ESP-01 WiFi 模块实战指南

目录

WIFI模块的抉择

ESP-01SWIFI模块上手使用

连接

工程的创建

应用篇

控制部分

传输数据部分


WIFI模块的抉择

较常用的WIFI模块为:NodeMCU ESP8266,ESP-01S这两种,两者比较相对容易使用的是ESP-01S,前者需要用Arduino进行编译,而后者只需要用我们常用的keil5就可以编译。NodeMCU ESP8266可单独作为一个开发板来使用,而ESP-01S只是一个简单的WIFI模块。以下将围绕ESP-01S来展开教程。

ESP-01SWIFI模块上手使用

连接

ESP-01S引脚如图

红色方框框出引脚为必须连接的引脚。同时注意圆圈圈出部分,模块3.3V的电源一定不能由USB转TTL模块提供,它带不动。

ESP-01S属于新版,相较与ESP-01模块它底部有引脚名标记,且去掉了电源指示灯,所以ESP-01S上电后只有蓝灯会闪烁一下,不会有其他现象发生。并且ESP-01S在串口通信时不需要接使能脚,而ESP-01需要拉高使能脚。

下面以STM32正点原子精英开发板为例开启应用教程

所使用到的文件均会上传

工程的创建

在【正点原子】精英STM32F103开发板资料 资料盘(A盘) 程序源码(库函数版本)中复制粘贴个跑马灯实验工程进行修改

WIFI模块所需文件的导入

  • 打开工程,创建工程文件OneNET将点C文件导入
  •  

     所需导入的点C文件如图红圈所示

  • 引入文件包括路径
  • 将SYSTEM文件夹里的usart文件更换为WIFI专用usart文件 
  • 注意:更替前后文件夹名称未变,若未更替会报错!!!

    更替后的usart.h文件

  • 更改main.c文件
    1. 引入头文件和一些定义

          2.写个初始化文件(后续加入的功能初始化写进这里面,此为个人习惯,大家可自由发挥)

           

     3.编写主函数

     

    #include "sys.h"
    #include "delay.h"
    #include "usart.h"
    #include "led.h"
    #include "hcsr04.h"
    #include "SysTick.h"
    
    //网络协议层
    #include "onenet.h"
    //网络设备
    #include "esp8266.h"
    //C库
    #include <string.h>
    
    const char *sub_topics[] = {"hjc225sub"};			//单片机接收数据主题
    const char pub_topics[] = {"hjc225pub"};			//单片机发送数据主题
    
    
    unsigned short timeCount = 0;	//发送间隔变量	
    unsigned char *dataPtr = NULL;
    float lenth;
    u8 adcx; 
    char PUB_BUF[256];   //上传数据buf
    char* LED_BUF;   //led状态上传buf
    
    void Hardware_Init(void)
    {
    	
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//中断控制器分组设置
    	
    	LED_Init();		  	//初始化与LED连接的硬件接口						 //LED0=0;亮灯	
    
    	delay_init();	    //延时函数初始化	
    
    	HCSR04_Init();
    	
    	Usart1_Init(115200);							//串口1,打印信息用
    	
    	Usart2_Init(115200);							//串口2,驱动ESP8266用
    
    	
    	UsartPrintf(USART_DEBUG, " Hardware init OK\r\n");
    	
    }
    int main(void)
     {	
    	Hardware_Init();				//初始化外围硬件
    ESP8266_Init();					//初始化ESP8266
    while(OneNet_DevLink())			//接入OneNET
    	delay_ms(300);	 //延时300ms
    	
    	OneNet_Subscribe(sub_topics, 1);
    	
    	 while(1)
    	{
    				if(timeCount%100 == 0)									//处理数据
    				{
    					if(LED0==0){
    						LED_BUF="1";
    					}
    					else if(LED0==1){
    						LED_BUF="0";
    
    					}
    				}
    
    		if(++timeCount >= 185)									//发送间隔10s(400)(还需计算)
    		{
    			UsartPrintf(USART_DEBUG, "OneNet_Publish\r\n");
    			UsartPrintf(USART_DEBUG, "距离:%.1f",lenth);
    			lenth=Hcsr04GetLength();
    			sprintf(PUB_BUF,"#%.1f#%s",lenth,LED_BUF);
    			
    			OneNet_Publish(pub_topics, PUB_BUF);
    
    			timeCount = 0;
    			ESP8266_Clear();
    		}
    		
    		dataPtr = ESP8266_GetIPD(3);  //执行此行需15ms
    		if(dataPtr != NULL)
    			OneNet_RevPro(dataPtr);
    		delay_ms(10);
    
    	}
    			
    
     }
    

    以上便是最初始的整个工程,下面讲解所需修改的部分

    esp8266.c文件

     onenet.c文件

    mian.c文件

    这三处是必须修改的地方

    在esp8266.c文件中ESP8266_WIFI_INFO,参照格式修改成所需要连接的WIFI即可

    下面对后面几处进行详解

    使用WIFI模块那避免不了要使用到MQTT服务器,何为MQTT,大家可以参考我的一篇文章。MQTT服务器有很多,如阿里云、腾讯云、机智云、巴法云、EMQ服务器,通过我学习WIFI的经验,为了减少弯路,我推荐大家使用巴法云,使用其他的难免不了要搭建自己的服务器,耗时耗力,还需要花钱,过程十分繁琐,有能力者可以去尝试。

    使用巴法云则esp8266.c文件中的ESP8266_ONENET_INFO不用修改

    巴法云官网链接bemfa.com,进去之后用邮箱注册,便可使用巴法云MQTT服务器,注意我们这里使用的是MQTT设备云,从下图我们可以看到,注册登录后,我们有我们专属的私钥,可新建自己的主题。这里可以参考我一篇文章的应用部分MQTT协议介绍与应用

    在onenet.c文件中DEVID改成自己的私钥,mian.c文件中sub_topics[ ] 、pub_topics[ ]改成自己的主题

    对其进行总结:

    要修改的地方有三个:

    1. esp8266.c文件中ESP8266_WIFI_INFO,参照格式修改成所需要连接的WIFI即可,使用巴法云,ESP8266_ONENET_INFO不用修改
    2. onenet.c文件中DEVID改成自己巴法云的私钥
    3. mian.c文件中sub_topics[ ] 、pub_topics[ ]改成自己的主题

    以上便是基础设置的内容

    应用篇

    应用篇将分为控制部分和传输数据部分来进行讲解

    控制部分:将以点亮【正点原子】精英STM32F103开发板上的LED灯为例,带大家学会用客户端软件MQTT.fx控制【正点原子】精英STM32F103开发板

    传输数据部分:以超声波模块为例,将所测得数据上传

    注意:ESP-01S的RX接开发板上的PA2,TX接PA3

    控制部分

    只需要修改onenet.c文件即可,需要注意的是,记得引入对应的头文件,如:我们这里要控制LED灯,则需在onenet.c文件中引入led.h文件

     需要修改的部分如图中框选,sub_buf是接收发来指令的数组,我们从客户端软件MQTT.fx发送1,则会打开LED灯,若想增加更多指令,添加执行条件和执行内容即可

    如下图框选部分,是执行读取指令的代码,注意不要轻易删改 

     下面进行演示

    接好ESP-01S

     将代码烧录进单片机,然后上电,打开MQTT.fx,连接服务器,输入单片机接收数据主题(这里是hjc225sub,注意改成自己的)

    输入指令,点击Publish发布

    即可点亮LED灯

    传输数据部分

    导入超声波模块驱动文件

     修改main.c文件

     初始化超声波模块

     将超声波测量数据和LED状态拼接在一个数组内发送到客户端

    将写好的代码烧录,并接好超声波模块(这里是超声波模块的Echo口接单片机的PB10,Tring接PB11,VCC接5V,GND接GND)

     上电运行程序

     以上便是ESP-01SWIFI模块的基础应用,后续还会更新在小程序和APP上控制单片机并读取数据,不足之处请指正!

    本文章文件下载地址

    物联沃分享整理
    物联沃-IOTWORD物联网 » 从零开始:ESP-01 WiFi 模块实战指南

    发表评论