MSP430F149与ESP8266串口通信(中)

一、前言

       在MSP430F149与ESP8266串口通信(上)这个帖子中,我们介绍了ESP8266基本的使用,包括用AT指令控制模块和三种基本的模式,相当于为本文做了铺垫。那么在这一篇帖子,将向大家正式介绍MSP430F149与ESP8266对接的过程,文中我将贴出需要的代码,一步一步带领大家进行对接,代码工程文件大家可以根据需要去下载学习。

二、资源

1.MSP430F149最小系统板一个;

2.ESP8266-01 WiFi模块一个;

3.PC端串口调试助手(软件部分);

4.手机端网络调试助手(软件部分);

5.编译MSP430程序的CCS5.5开发环境,当然IAR也是可以的(软件部分);

6.杜邦线若干

三、系统硬件设计

       我们先来看一下MSP430F149的硬件资源,这里我们只讲对接需要用到的串口和时钟资源。至于像GPIO、ADC、TIMER等其他资源,建议大家可以下载官方用户手册对照着网上例程学习,不再赘述。

       言归正传,因为本次实验,ESP8266与MSP430通信的方式是串口UART,当然要想MSP430工作必然要设置MSP430的时钟系统,让其起振。翻阅MSP430F149 DataSheet可以发现,F149有多组UART端口,其中我们用到了UART0(P3.4和P3.5) 和UART1(P3.6和P3.7),可以见下面截图

       大家可能会有疑问,你这里为什么要用两组UART,难道用两组串口和ESP8266进行通信吗?当然不是!是这样的,我用的UART0与电脑进行通信,UART1才是与ESP8266进行连接。也就是说,同样的一条指令我会发两遍,一条打印到了电脑端的串口调试终端上,另一条指令才真正传给ESP8266,这样做的目的只有一个,便于调试。当然,直接用UART1给ESP8266发指令也是可以的,不过在调试过程中出现问题不容易发现,不知道哪一步骤出现了问题。

MSP430F149与ESP8266串口通信(中)_第1张图片

     下面贴出MSP430与ESP8266对接的硬件连接图。要注意的是,找到你最小系统板的设计原理图,理清你的MSP430和电脑相连的是哪个串口,这样才不会出错。

MSP430F149与ESP8266串口通信(中)_第2张图片

四、系统软件设计

         在电路连接完成检查无误后,即可进入这一部分的学习。在"上"部分帖子中,我们介绍了两个例子,其中第一个例程是ESP8266模块自己发出热点,供手机或电脑连接数据传输;另一个例程则是在手机放出热点的时候,等待ESP8266加入。在实际开发时,需要根据用户需求进行选择,其实选择哪个模式实现的功能都是一样的,正所谓条条大路通罗马。当然,考虑到我们项目中需要在用户打开“热点”时,ESP8266接入进来进行通信,所以我们选择了例程2方式(上一篇帖子有详细介绍)


AT+CWMODE=3   //设置AP和STA共存模式
AT+CWLAP      //查看当前存在的热点
AT+CWJAP="MX5","13141516"  //加入我开的热点
AT+CIFSR                   //因为这个IP地址不固定,所以需要查看

//上面这几条指令可以利用串口工具,直接在电脑上进行设置,重启后仍然有效

AT+CIPMUX=1                //多连接
AT+CIPSERVER=1,8899        //设置端口号
AT+CIPSEND=0,10            

     整个项目工程包含了以下几个文件:

  •  主程序文件 main.c
  •  时钟配置文件clock.c 和clock.h
  •  串口配置文件uart.c 和uart.h
  •  ESP8266配置文件 esp8266.c和esp8266.h

    下面是MSP430程序讲解。

    我们通过下图可以看到,在main函数里依次进行了关闭看门狗操作,系统时钟初始化(初始化为8MHz),对系统的两个串口进行了初始化,最重要的是对ESP8266进行配置(只有配置了才能进行数据收发),之后在while(1)循环中中进行数据的发送。

MSP430F149与ESP8266串口通信(中)_第3张图片

      那么应该如何对ESP8266进何配置呢?我采用了简单的方法。在下图中我们看到,首先进行了模块重启,之后用了个程序循环3次,也就是对ESP8266配置了三次,原因是有可能首次配置不成功,多次配置确保模块可以正常工作。依次是发送AT,设置CIPMUX(多连接)和设置Server Port(端口号:8899)。

MSP430F149与ESP8266串口通信(中)_第4张图片

      具体细节是怎么进行设置的呢?我们拿for循环中ESP8266_Set_CIPMUX();这个函数举例子,请看下图。我们首先用串口UART0打印了向PC一个字符串,之后用UART1真正向ESP8266发送了"AT+CIPMUX=1\r\n"指令,注意这里的回车换行。延时500ms是为了等待ESP8266相应的时间,比如向ESP8266发送AT指令,ESP8266便会返回OK,一定要留出足够时间

MSP430F149与ESP8266串口通信(中)_第5张图片

     继续深究,串口又是如何发送的字符串的呢?请看下面图片,涉及到单片机串口发送一个字符串的的知识,不再讲解。

MSP430F149与ESP8266串口通信(中)_第6张图片

        这里是完整的项目工程文件的下载地址,需要的小伙伴可以下载学习。

        https://download.csdn.net/download/weixin_38329109/10760811

        提示:项目文件能够在CCS7下直接运行,若选择其他版本CCS(如CCS5.5)或者其他编译软件(如IAR),只需要在相应编译软件新建一个项目,把.c和.h文件复制一份过去就可以直接编译了。

五、实验现象

       把线接好,将程序下载至MSP430。打开电脑端串口工具,可以发现屏幕上进行了三次配置,此时打开手机热点,打开手机网络助手,设置IP地址和端口号进行连接,注意观察实验现象,会发现手机端不断的接收到单片机发来的Hello World字符串。

MSP430F149与ESP8266串口通信(中)_第7张图片

 

MSP430F149与ESP8266串口通信(中)_第8张图片

     在下一部分,我将与大家一起进行ESP8266下发数据给MSP430,手机APP控制单片机进行相应的操作。

你可能感兴趣的:(单片机&物联网)