利用stm32+app inventor与esp8266通信

这篇具有很好参考价值的文章主要介绍了利用stm32+app inventor与esp8266通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本章实验的目的是将手机连接上ESP8266提供的WIFI网络,打开自定义的app连接ESP8266的ip地址及端口号,实现app与ESP8266模块的通信,进而达到app控制32开发板的目的,并将开发板上面的数据返回到app上显示出来。
  关于stm32与esp8266之间的通信,在前面的文章中已经介绍得差不多了,本文章主要介绍的是app inventor的制作,然后生成app二维码,最后在手机端下载app,进而实现通过WIFI局域网控制stm32开发板,当然关于stm32与esp8266之间的一些东西也会粗略讲一下。
本章所用到的器件如下:
STM32F103ZET6最小系统板
ESP8266-01S模块
USB转microUSB数据线
四根杜邦线

连接如下:
32板3.3v----------->ESP8266的3.3v
32板GND---------->ESP8266的GND
32板的PA2-------->ESP8266的RX
32板的PA3-------->ESP8266的TX

stm32与esp8266通信

  先附上32程序的主代码:

#include "stdio.h"
#include "delay.h"
#include "led.h"
#include "usart.h"
#include "serial.h"
#include "esp8266.h"

/*	AT指令返回值的结尾没有\r\n这样的回车换行符,
 *	而在串口调试助手中,需要MCU输出\r\n给串口调试助手才能刷新缓冲区把字符显示出来,
 *	同时这个\r\n还起到回车换行的目的*/
 
/*	AT指令的结尾处必须是\r\n*/

/*	serial.h中的usart1_send_usart2函数用于没有USB转TLL模块的人使用,
 *	此函数作用是利用串口1发送AT指令给串口2,串口2将AT指令发送给ESP8266,实现对ESP8266的AT指令配置,
 *	当然,如果你有USB转TTL模块的话,可以直接将ESP8266与USB转TTL模块直连,然后在串口调试助手里面直接配置AT指令*/

extern u8 	esp_sipsend1[];
extern u8 	esp_sipsend2[];

int main(void)
{	
	delay_init();	    	 								//延时函数初始化
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);			//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 									//串口1初始化为115200
	Uart2_Init(115200);										//串口2初始化为115200
	LED_Init();		  										//初始化与LED连接的硬件接口
	Esp8266_Init();
	
  while(1)
	{	
		usart1_send_usart2();								//利用串口1发送AT指令给串口2,从而达到配置ESP8266的目的,并且让模块的返回值在串口1打印出来
		if(Data_Compare((u8 *)"LEDK"))               		//点亮板上的led
		{		
            led(1);	
			Clear_Buf();
			Uart_SendStr(USART1, (u8 *)"led is open\r\n");	
			Uart_SendStr(USART2, esp_sipsend1);				//利用串口2给esp8266发送AT+CIPSEND指令,告诉它下一次将发送具体数据
			Usart2_Receive_Data(USART1);					//将串口2接收到的AT+CIPSEND指令返回的数据显示在串口1上
			Uart_SendStr(USART2, (u8 *)"led is open\r\n");	//发送具体数据给esp8266,让他转发到app上
		}
		else if(Data_Compare((u8 *)"LEDG")) 		   		//关闭板上的led
		{
            led(0);
			Clear_Buf();
			Uart_SendStr(USART1, (u8 *)"led is close\r\n");	
			Uart_SendStr(USART2, esp_sipsend2);				//利用串口2给esp8266发送AT+CIPSEND指令,告诉它下一次将发送具体数据
			Usart2_Receive_Data(USART1);					//将串口2接收到的AT+CIPSEND指令返回的数据显示在串口1上
			Uart_SendStr(USART2, (u8 *)"led is close\r\n");	//发送具体数据给esp8266,让他转发到app上		
		}
	}
}


  此代码中的serial.h包含几个自定义函数,其函数的作用见其右边的注释,代码如下所示:

#ifndef	__SERIAL_H
#define __SERIAL_H
#include "stdio.h"	
#include "sys.h" 
#include "delay.h"
#include  "string.h"
#include "usart.h"

#define tbuf 100

void Uart2_Init(u32 bound);							//初始化串口2
void Clear_Buf(void);								//清除缓冲区数据
void Uart_SendStr(USART_TypeDef* USARTx, u8 *s);	//往某一个串口发送指定字符串
void Usart2_Receive_Data(USART_TypeDef* USARTx);	//将串口2返回的数据发送给串口1进行显示
u8 Data_Compare(u8 *p);								//指定字符串与缓存数组数据进行数据比较
void usart1_send_usart2(void);						//利用串口1发送AT指令给串口2,从而达到配置ESP8266的目的,并且让模块的返回值在串口1打印出来

#endif

  其中Usart2_Receive_Data函数是用于接收esp8266返回的数据并在串口1进行显示,因为串口2是与esp8266进行连接的,只要串口2正确发送AT指令给esp8266,esp8266都会返回响应值,由于手头上没有USB转TTL模块,只能用这种方法来观察esp8266模块的返回值。
  而usart1_send_usart2函数的作用是利用串口调试助手发送AT指令给串口1,串口1接收到数据之后,将数据通过串口2发送给esp8266模块,达到通过串口调试助手发送AT指令配置esp8266模块的目的,之所以用这种方式,其原因是手头上没有USB转TTL模块,才出此下策。
  假如手头上有USB转TTL模块,上面的两个函数大可不必要,直接将USB转TTL直连上esp8266模块,然后USB端插在电脑上,利用串口调试助手即可直接发送AT指令去配置esp8266模块以及显示模块的返回值。
  主函数中的Esp8266_Init函数是对esp8266进行一系列的配置,使得能够被app客户端所连接上,其详细代码如下所示:

#include "esp8266.h"

u8  esp_at[] = "AT\r\n";                  			//握手连接指令,返回"OK"
u8  esp_cifsr[] = "AT+CIFSR\r\n";         			//本机IP地址查询指令
u8  esp_cipsend[] = "AT+CIPSEND=6\r\n";   			//设置发送数据长度
u8  esp_test[] = "sunny\r\n";   					//数据内容
u8  esp_rst[] = "AT+RST\r\n"; 						//软件复位
u8  esp_cwmode[] = "AT+CWMODE=2\r\n";     			//设置ESP8266的工作模式2(AP模式,WIFI模块作为热点),返回"OK"或者"no change"
u8  esp_cwsap[] = "AT+CWSAP=\"ESP8266_TEST\",\"1234567890\",1,4\r\n";//设置WIFI的名称、密码、通道号、加密方式(4-WPA_WPA2_PSK)
u8  esp_cipmux[] = "AT+CIPMUX=1\r\n";   			//打开多连接	
u8  esp_cipserver[] = "AT+CIPSERVER=1,8080\r\n";  	//建立TCP服务器,开放端口8080,端口号可以改成其他的例如8086等等
u8 	esp_cipsto[] = "AT+CIPSTO=2880\r\n";			//设置服务器超时时间为2880s,也就是连接服务器过程中可以等待的时间

extern u8	RX_num;   								//接收计数变量
extern u8  RX_buffer[tbuf];

void Esp8266_Init(void)
{
	Uart_SendStr(USART2, esp_cwmode);	   	//设置ESP8266的工作模式2 AP,返回"OK"或者"no change"
	Usart2_Receive_Data(USART1);			//将串口2收到的数据发送给串口1进行显示
	Uart_SendStr(USART1, (u8 *)"\r\nOK,set mode as AP with ESP8266!\r\n----------\r\n");
	
	Uart_SendStr(USART2, esp_rst);	   		//设置ESP8266的工作模式后需要复位以生效该模式
	Usart2_Receive_Data(USART1);			//复位后可能会返回一堆乱码
	Uart_SendStr(USART1, (u8 *)"\r\nOK,set RST success!\r\n----------\r\n");
	
	Uart_SendStr(USART2, esp_cwsap);	   	//设置WIFI的名称及密码
	Usart2_Receive_Data(USART1);			//将串口2收到的数据发送给串口1进行显示
	Uart_SendStr(USART1, (u8 *)"\r\nOK,set cwsap success!\r\n----------\r\n");
	
	Uart_SendStr(USART2, esp_cipmux);	   	//设置多连接(多路连接模式)
	Usart2_Receive_Data(USART1);			//将串口2收到的数据发送给串口1进行显示
	Uart_SendStr(USART1, (u8 *)"\r\nOK,set cipmux success!\r\n----------\r\n");
	
	Uart_SendStr(USART2, esp_cipserver);	//设置wifi模块为TCP服务器模式,并配置端口为8080
	Usart2_Receive_Data(USART1);			//将串口2收到的数据发送给串口1进行显示
	Uart_SendStr(USART1, (u8 *)"\r\nOK,set server success!\r\n----------\r\n");
	
	Uart_SendStr(USART2, esp_cipsto);		//设置服务器超时时间为2880s
	Usart2_Receive_Data(USART1);			//将串口2收到的数据发送给串口1进行显示
	Uart_SendStr(USART1, (u8 *)"\r\nOK,set cipsto success!\r\n----------\r\n");
	
	Uart_SendStr(USART2, esp_cifsr);		//获取本机IP地址
	Usart2_Receive_Data(USART1);			//将串口2收到的数据发送给串口1进行显示
	Uart_SendStr(USART1, (u8 *)"\r\nOK,get ip address success!\r\n----------\r\n");
}

  至于其中的AT指令,网上随便找一下都有一大堆关于AT指令的详细解释,这里就不再过多解释,而其他的函数,也没有什么好讲的,至此,stm32代码部分就到这里了。

移动端app制作、生成、控制

  接着进行app的设计,本章app的设计采用的是app inventor。
  APP INVENTOR由谷歌实验室开发,后移交麻省理工学院,是一款可视化编程环境,采用搭积木的方式快速建立应用程序,并且可以结合AI伴侣,极其便利的在手机上进行测试和应用。
  APP INVENTOR是完全基于网页的在线编程工具,国内外都有一些可用的服务器。
麻省理工学院的服务器登录地址:http://appinventor.mit.edu/explore/
广州服务器登录地址:http://app.gzjkw.net/login
推荐使用国内的广州服务器。
利用stm32+app inventor与esp8266通信
  可以用QQ登录,登录后创建项目就可以进入编程界面。
利用stm32+app inventor与esp8266通信
  中间显示的就是手机屏幕,通过拖拽工具到手机屏幕,就可以开始编程了,目前只支持Android手机。
  为了便于编程调试可以在手机上安装AI伴侣,下载地址可以通过点击菜单栏 帮助->AI伴侣信息 打开下载帮助页。
利用stm32+app inventor与esp8266通信
  通过手机扫描图中二维码即可下载AI伴侣,在程序调试时,在服务器端选择菜单栏 连接->AI伴侣 弹出连接二维码和6位编码,在对应的手机AI伴侣中输入6位编码,或扫描二维码,就可以与服务器建立连接,开始调试程序了,同时只要你的网页端app界面改变,相应的在手机端AI伴侣上的界面也会相应实时更新。
利用stm32+app inventor与esp8266通信
  而在此WIFI通信app的设计过程中,需要用到tcp连接插件,也就是一个扩展插件,需要导入到app inventor中才能使用tcp连接到esp8266模块上提供的wifi,此插件的链接如下:app inventor扩展插件
  上图中所创建的app界面都是用左边那些基本的控件以及扩展插件,其逻辑设计图如下所示:
利用stm32+app inventor与esp8266通信
  此逻辑设计也非常简单,只是利用左边的一些功能块进行拼凑而来的,关于更多详细的app inventor语法,网上搜索也是一大堆,这里就不再过多介绍。至此,app的设计基本完成,之后就要进行app的生成了,点击菜单栏的打包apk->打包apk并显示二维码,此时会生成此app的一个二维码,通过打开手机上的AI伴侣app,然后利用AI伴侣上面的扫描二维码去扫描生成的app二维码,扫描后会自动跳到默认游览器去安装此app,安装并打开此app,通过在新app上面输入ESP8266的ip地址及端口号(ip地址可通过执行esp8266初始化函数时在串口调试助手上面打印出来,而端口号则是前面AT+CIPSERVER=1,8080中的8080端口号),然后进行连接,连接成功后,在发送区域输入:LEDK后点击send!,此时会将字符串“LEDK”发送到ESP8266模块上,模块收到信息后通过串口2返回给MCU,MCU接到数据后与程序中设定的字符串进行比较,如果一致则执行相应的操作指令,并将MCU上的数据返回到app上面显示出来。
附上app inventor制作的app项目链接:app_inventor项目
附上整个stm32项目通信代码链接:stm32+app inventor+esp8266通信代码
代码要的下方留言邮箱我会第一时间发给你们的,有什么问题也可以下面评论!文章来源地址https://www.toymoban.com/news/detail-410778.html

到了这里,关于利用stm32+app inventor与esp8266通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【学习笔记】stm32+ESP8266+阿里云+云智能APP

    个人笔记。实现的功能是通过手机APP实现对stm32上小灯的控制。 硬件环境: 1.stm32F103 2.Node MCU-ESP8266 3.安卓手机 硬件连接: ESP8266              STM32 RX                           PA2 TX                            PA3 RST                          PA4 VCC 3V3 GND GND 配置阿

    2024年01月21日
    浏览(56)
  • (2)STM32+ESP8266+手机网络助手实现AP模式通信

    根据手头要实现的需求, 我需要通过手机端向32端发送指令,32端进行判断执行,所以采用esp8266的AP模式,将esp8266模块本身作为热点服务器,手机端作为客户端,连接热点WiFi发送数据 。 STM32rct6板、esp8266(ESP-01S)、手机端网络助手app wifi模块直接与TTL转串口模块相连即可,RX

    2024年02月07日
    浏览(55)
  • ESP8266 -- STM32与阿里云物联网平台建立通信(四)

    目录 链接快速定位 前沿 1 准备工作 2 硬件环境介绍 3 软件环境介绍 3.1 串口初始化及配置 3.2 编写AT MQTT指令代码 3.2.1 ESP8266_Cmd函数介绍 3.2.2 wifi连接函数介绍 3.2.3 云端连接语句介绍 3.2.4 环回消息测试语句介绍 3.2.5 属性上报语句介绍 3.2.6 设置属性语句介绍 4 实验现象 4.1 代码

    2024年02月04日
    浏览(64)
  • 入门小白:STM32hal库实现ESP8266与手机通信(不定长数据收发和ESP8266使用的一些问题)

    目录 前言 一、stm32cubeMX的串口配置 二、空闲中断+dma接收 三、ESP8266.c和ESP8266.h ESP8266.h ESP8266.c 注意事项 四、与手机通信例程 步骤:  例程代码main.c 运行结果 五、相关问题 总结 相关的app和源码         前提: 1.掌握串口通信和ESP8266的使用方法 串口通信:单片机串口通信

    2024年02月07日
    浏览(67)
  • STM32+esp8266实现单片机与服务器的WiFi通信

             源码已上传至gitee: stm32: 一些stm32模块使用经验记录 - Gitee.com https://gitee.com/lrf1125962926/stm32/tree/esp8266wifi%E9%80%9A%E4%BF%A1/         本实验采用STM32F1系列+esp8266 01s模块,采用HAL库开发。主控芯片哪个系列和型号都可以,只要有两个串口(UART或者USART,以下统称串口)

    2024年02月07日
    浏览(61)
  • 【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第2节-编写STM32程序初步实现ESP8266上云与发布订阅消息

    本节目标: 本节实现,硬件连接STM32与ESP8266,编写STM32程序通过at命令方式实现STM32+ESP8266与阿里云物联网平台发布订阅消息,本节最终实现初步的发布订阅消息(能够发布消息给阿里云物联网平台但无外设数据,能够订阅阿里云物联网平台发送的消息来开关LED灯)。 硬件连接

    2024年02月03日
    浏览(70)
  • STM32、ESP8266与MQTT连接阿里云物联网的串口通信异常解析

    STM32、ESP8266与MQTT协议连接阿里云物联网平台时常见的串口通信异常介绍 在构建物联网应用时,STM32、ESP8266与MQTT协议的结合是实现设备与网络间稳定通信的关键。然而,在连接阿里云物联网平台的过程中,串口通信异常成为了一个常见的挑战。本文将探讨这些异常现象及其可

    2024年04月22日
    浏览(47)
  • STM32f103增加ESP8266模块,通过Wifi用手机TCP服务端远程与STM32通信

    提示:esp8266开启透传模式,连上路由器Wifi(电脑热点),接入STM32串口引脚。另外手机TCP服务端是手机IP地址+串口号(大于8000滴) 最近对ESP8266模块进行小了解,知道只要对8266通过串口发送AT指令进行配置其工作模式,就能够通过手机调试APP创建什么TCP/UDP服务端/客户端和8266进行

    2024年02月16日
    浏览(56)
  • STM32玩转物联网实战篇:2.ESP8266 WIFI模块TCP通信示例详解

    开发板功能区分布图 开发板俯视图     ESP8266 WIFI模块内置TCP/IP网络协议,模块支持三种网络模式,AP、STA和AP+STA模式,AP模式:模块作为WIFI热点,等待其他设备的连接,进行局域网的通信,STA模式:模块作为客户端通过路由器连接外网,和服务器进行通信,AP+STA模式:两

    2024年02月03日
    浏览(62)
  • 【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第3节-云产品流转配置

    本节目标: 本节目标是进行云产品流转配置为后面实际的手机APP的接入做铺垫。云产品流转配置的目的是为了后面能够让后面实际做出来的手机APP可以控制STM32/MCU,STM32/MCU可以将数据发给实际的手机APP。 配置步骤主要分为三步: 1.创建数据源;2.创建数据目的;3.创建解析器

    2024年02月03日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包