欢迎光临
我们一直在努力

WiFi模块AT指令详解与天气获取实战

1.WiFi的常用AT指令顺序:

1):AT+RST—模块重启指令

2):AT+CWMODE—设置工作模式

      

  • STA(Station,工作站)模式,在此模式下,WiFi模块可以接入附近其他的网络。
  • AP(路由器)模式,在此模式下,WiFi可以主动建立一个网络(类似于手机开设热点)。
  • AP+STA 混合模式,类似于手机既连入附近的路由器,也自己开热点。

    示例:

    AT+CWMODE=1

  • 3)AT+CWJAP="K80","123123123"—连接附近的路由器:

         若成功连接,出现

          

    4)AT+CWQAP—WIFI模块断开与路由器的连接

          通常WIFI端口连接后,会提示

         

    5) AT+CIPSTART—WiFi模块连接服务器

          该指令需要3个参数:依次是 传输层协议、域名(俗称网址)/IP地址、 端口号.

          示例:

          AT+CIPSTART="TCP","www.baidu.com",443

    6) AT+CIPCLOSE—关闭与服务器的连接

          示例:

         AT+CIPCLOSE

    7) AT+CIPMODE—让WiFi工作在透传模式

          示例:

         AT+CIPMODE=1

         什么是透传模式?

    在透传模式下:1.单片机/电脑发送WiFi数据,直接传送给服务器。

                             2. 服务器发送给WIFI数据,直接传送给单片机/电脑         此模式下,AT指令被禁用。(因为AT指令不被WIFI单独处理,直接发给服务器了)

         

    8) AT+CIPSEND—开启给服务器发送数据的指令

         示例:

         AT+CIPSEND

    2.连接获取天气的服务器:

       1) 连接服务器至少需要IP地址和端口号

       搜索心知天气

      心知天气 – 高精度气象数据 – 天气数据API接口 – 行业气象解决方案 (seniverse.com)

        网址:https://www.seniverse.com/

     3.用电脑调式WiFi模块连接并获取天气信息的流程:

         

    1)先让WIFI模块复位(可选)

       AT+RST

    2)  设置工作模式

       AT+CWMODE=1

    3)连接附近的路由器

       AT+CWJAP="K80","123123123"

    4)连接心知天气服务器

    AT+CIPSTART="TCP","api.seniverse.com",80

    5)设置透传模式

        AT+CIPMODE=1

    6)透传模式下开启发送

        AT+CIPSEND

    此后给WIFI模块发送的数据都是会直接传送给服务器,WIFI不会将后续的数据当成AT指令来处理;除非给WIFI模块连续三个‘+’字符,使WIFI退出透传模式,即WIFI会再度回到响应AT指令的状态。

    发送HTTP请求报文

    GET /v3/weather/now.json?key=换成你的私人密钥&location=beijing&language=en&unit=c  

     HTTP/1.1

    Host: api.seniverse.com

    4.如何用STM32来获取这些信息:

    问题1:STM32如何获取服务器的天气信息?

    答:上一节的操作本质上是 电脑给WiFi模块依次发送这些指令,所以逻辑上改为用STM32来给WiFi模块发送这些指令同样可以实现。分析可能需要注意的细节:

  • STM32给WiFi每次发送的是一个字符串,留意“\\r\\n”(对应发送新行)。
  • WiFi对于不同的AT指令的响应方式、响应的时间有所区别。
  • 比如:对于 AT+WMODE=1,1 指令,WiFi模块响应迅速;对于连接路由器则需要一些时间;

  • 给WiFi提供指令是连续的,如果前面的指令没有被有效处理,需要及时给出提示,而不是继续发送新指令。
  • (以上代码的主要部分是基于USART2的发送字符串 和 接收+空闲中断来实现的)

    STM32实际收到的内容是上方内容对应的字符串(留意一些没有明确标注的”\\r\\n”),之后需要考虑的问题是从这个较长的字符串中,截取天气的文本和温度,即获取"text": 后方的一个被双引号包含单词 以及 或"temperature" 后方的一个被双引号包含的单词。

    此处需要大量使用字符串函数,尤其是strstr() 查询子串。

    5.关键函数分析:

    1)wifi的硬件初始化:

    2):给wifi模块发送数据

    1.单字节发送:

    2.数组发送:(比如发送 "+++" 退出透传)

    3.字符串发送(比如发送 AT 指令)

    4.指令层:

    5.推出透传

    6.断开wifi的连接

    7.复位 WiFi 模块

    8.关闭/开启回显

    9.设置 WiFi 模式

    10.连接wifi

    11.连接 TCP 服务器

    12.WiFi 初始化总入口

    13.HTTP 请求天气

    赞(0)
    未经允许不得转载:171主机测评 » WiFi模块AT指令详解与天气获取实战
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址