基于STM32+ESP8266的奥运会奖牌榜设计之经典
(一)实验目的和任务
1、掌握esp8266模块的TCP协议,进行联网和服务器
2、熟悉jscon库的移植和API的使用,对jscon格式的数据进行解析
3、掌握LCD或串口屏显示东京奥运会奖牌榜
(二)实验设备介绍
1、系统需求:安装有windows系统的PC机
2、软件需求: keil5,USART HMI软件
(三)实验步骤
3.1 WiFi和服务器连接
AT指令:
1.AT
回复:AT OK
2.WiFi连接
WIFI功能指令(模式)
Station模式(客户端模式):模块相当于一个客户端,可以链接到其他路由器发出的WiFi信号
SoftAP模式(软路由模式):模块相当于一个路由器,其他设备可以连接到该模块发送的信号
Station+softAP模式(混合模式):模块可在其他设备链接的同时充当路由器。
station模式:
1、WIFI模式设置指令:AT+CWMODE_DEF=1 回复:AT+CWMODE_DEF=1 OK |
2、WIFI 模式查询指令:AT+CWMODE? 回复:+CWMODE:1 //1:station 模式 2:softAP 模式 3:station+softAP 模式 OK |
3、连接 AP 指令:AT+CWJAP_DEF=”mwh”,”123123123” 回复:AT+CWJAP_DEF="mwh","123123123" WIFI CONNECTED WIFI GOT IP OK |
4、断开与 AP 连接指令:AT+CWQAP 回复:AT+CWQAP OK WIFI DISCONNECT |
5、连接 TCP 服务器 指令:AT+CIPSTART="TCP","111.206.176.78",80 响应:OK |
6、开启透传模式传输数据 指令:AT+CIPMODE=1 响应:OK |
7、发送数据 指令:AT+CIPSEND 响应:> |
8、退出透传模式 在透传传输数据过程中,若识别到数据“+++”就会退出透传模式。所以,发送“+++”即可退出透传模式,注 意不要加\r\n 结尾。 |
9、断开与 TCP 服务器连接 指令:AT+CIPCLOSE 响应:CLOSED OK |
10、断开与 AP 的连接 指令:AT+CWQAP 响应:OK |
3.2获取网址API接口数据
//串口2,printf 函数 //确保一次发送数据不超过USART2_MAX_SEND_LEN字节 void u2_printf(char *fmt, ...) { u16 i, j; va_list ap; va_start(ap, fmt); vsprintf((char *)USART2_TX_BUF, fmt, ap); va_end(ap); i = strlen((const char *)USART2_TX_BUF); //此次发送数据的长度 for (j = 0; j < i; j++) //循环发送数据 { while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); //循环发送,直到发送完毕 USART_SendData(USART2, USART2_TX_BUF[j]); } } |
uint8_t get_api(char *api_addr, uint8_t (*parse_fun)(void)) { printf("获取东京奥运会奖牌榜:\r\nGET %s\r\n", api_addr); u2_printf("GET %s\r\n\r\n", api_addr); delay_ms(20); USART2_RX_STA = 0; delay_ms(1000); printf("%d\r\n",USART2_RX_STA); if (USART2_RX_STA & 0X8000) { USART2_RX_BUF[USART2_RX_STA & 0X7FFF] = 0; //添加结束符 } // printf("接收到:%d bytes\r\n%s\r\n\r\n", strlen((const char*)USART2_RX_BUF),USART2_RX_BUF); parse_fun(); USART2_RX_STA = 0; memset(USART2_RX_BUF, 0, sizeof(USART2_RX_BUF)); // atk_8266_quit_trans(); // printf("退出透传\r\n"); return 0; } |
3.3解析JOSN字符串
在cJSON.h中有为cJSON的结构体和和三个函数:
typedef struct cJSON {
struct cJSONnext,prev; /* 遍历数组或对象链的前向或后向链表指针*/
struct cJSON child; /数组或对象的孩子节点 /
int type; / key的类型 */
char valuestring; /字符串值 /
int valueint; / 整数值 /
double valuedouble; / 浮点数值 */
char string; / key的名字 */
} cJSON;
cJSON *cJSON_Parse(const char *value); //将JSON字符串转换成cJSON结构体
cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);//在cJSON结构体中查找某个键的名称(key)
void cJSON_Delete(cJSON *c);//释放cJSON结构体指针
1、解析一个简单的键值对字符串: 使用如下: |
2、解析复杂一点的cJSON结构体: char root = NULL, ret = NULL, json = NULL;//定义三个cJOSN结构体指针 ret = cJSON_GetObjectItem(json, "num_1");//在josn结构体中查找"num_1" ret = cJSON_GetObjectItem(json, "num_2");//在josn结构体中查找"num_2" ret = cJSON_GetObjectItem(json, "string");//在josn结构体中查找"string" ret = cJSON_GetObjectItem(json, "string_1");//在josn结构体中查找"string_1" ret = cJSON_GetObjectItem(json, "string_2");//在josn结构体中查找"string_2" /-------------------------------解析"json" end-----------------------/ ret = cJSON_GetObjectItem(root, "num");//在root结构体中查找"num" cJSON_Delete(root);//释放总的cJSON结构体只需要释放cJSON_Parse函数创建的cJOSN结构体即可 |
3、解析JSON结构体数组: size = cJSON_GetArraySize(arr);//此时size值为3 |
(四)实验现象
注意:使用的芯片为STM32F103系列 如果使用STM32F103C8T6会出现内存溢出的情况。
参考资料链接:(15条消息) STM32使用API函数奖牌详细实现相应的功能-嵌入式文档类资源-CSDN文库https://download.csdn.net/download/weixin_41114301/83986511
案例参考网址为:http://www.wangchaochao.top/2021/04/18/stm32-ncov-vaccine/
总结:只有在实践中总结,才能走的更远,领悟技术的细节。
基于STM32+ESP8266的奥运会奖牌榜设计之经典相关推荐
- 基于STM32+ESP8266+华为云IoT设计的云端绿化管理系统
1. 设计需求.硬件环境介绍 1.1 项目背景 绿化管理系统在现实生活.生产中的应用十分广泛,它是集环境感知.规划决策.自动管理等功能于一体的综合系统.目前,在城市道路两旁的区域绿化主要为花.草.树. ...
- 基于stm32自动伸缩雨伞的设计与实现
基于stm32自动伸缩雨伞的设计与实现 **==整篇文章字数有一万三左右,图片太多了,实在是懒得全部放在这上面来,太废时间了.完整论文可通过q963160156获得,也可在微信公众号 *高级嵌入式软件 ...
- 手把手实践丨基于STM32+NBIOT+华为云IOT设计智能井盖
摘要:本文介绍基于STM32微控制器.BC26 NBIOT模组和华为云IOT平台,实现了一款智能井盖系统. 本文分享自华为云社区<基于STM32+NBIOT+华为云IOT设计的智能井盖>, ...
- 基于stm32简易计算机电路图,基于STM32的简易电子计算器设计与实现(DOC).doc
嵌入式系统设计实验综合设计报告 PAGE 四川师范大学成都学院通信工程学院 基于STM32的简易电子计算器设计与实现 实验综合设计报告 学生姓名 陶龑 学 号 2016301033 所在学院 通信工程 ...
- 基于STM32的多功能MP3设计 毕业设计(论文)开题报告
中国计量学院 毕业设计(论文)开题报告 学生姓名:卢杰学 号:XXXXXXXXX 专 业:电子科学与技术 班 级:10电子1 设计(论文)题目: 基于STM32的多功能MP3设计 指导教师 ...
- 9、★♥★基于STM32单片机的颜色检测仪设计♥☆
9.★♥★基于STM32单片机的颜色检测仪设计♥☆ 文章目录 9.★♥★基于STM32单片机的颜色检测仪设计♥☆ 引言 1.系统概述 1.1.设计任务 1.2.设计要求 2.方案设计与论证 2.1.芯 ...
- 基于STM32单片机的智能手环设计(OLED显示)(Proteus仿真+程序+报告)
编号8 基于STM32单片机的智能手环设计(OLED显示) 功能描述: 由 STM32单片机+按键模拟计步+RTC时钟模块+DS18B20温度传感器模块+心率采集模块+串口模块+OLED显示模块+键盘 ...
- 【STM32】【C】【嵌入式】分享一下我的项目经验--基于stm32桌面主从机械臂设计(二弹)
本文为原创文章,转载需要注明转载出处 前言:嵌入式开发是相比其他IT行业是比较难的行业,它不仅需要你去掌握软件的经验,还要去学习一些硬件的知识, 它是软件和硬件的一个粘合剂,起到一个至关重要的地位 下 ...
- 基于STM32指纹密码锁proteus仿真设计
基于STM32指纹密码锁proteus仿真设计. 有仿真,程序,原文. 功能: 1.六位密码,设定初始密码(123456) 2.Electronic Locks(电子密码锁) (等待输入密码,密码用* ...
最新文章
- 浅析网站建设实战经验下的通用原则
- 专访《Haskell函数式编程入门》作者张淞:浅谈Haskell的优点与启发
- Redpine的Lite-Fi解决方案获Wi-Fi CERTIFIED认证
- lombok @Builder 是如何实现的
- VTK:IO之ReadDICOM
- 了解一下JavaScript的未来——ECMAScript5
- kubernetes-Service
- Spring MVC视图解析器
- 编译在arm版本的Valgrind-转
- 在.net中使用sqlite
- handbrake下载太慢_handbrake使用教程
- matlab排序函数sort的使用方法
- 如何使用微软提供的TCHAR.H头文件
- Neo4j 第二篇:图形数据库
- 温度传感器的一些比较
- 代码维护服务器,维护服务器的利器-pubwin 2009程序代码
- 关于 Sketch 你可以知道的几个小秘密 (快捷键用法)
- 34%的出轨率是怎么算的
- Django--手机号注册生成验证码
- 常用电机驱动芯片的对比分析
热门文章
- 4月2日lol服务器维护嘛,英雄联盟4月2日更新维护时间 英雄联盟4月2日维护到几点...
- php echo中文乱码问题
- 如何PHP给人生日祝福,简短12字 最打动人的生日祝福语
- 2017计算机网考题库,2017全国计算机一级考试题库
- Outlook 2010,突破附件大小限制
- 神界危机3.4隐藏英雄密码_这就是我解决密码记忆危机的方法
- 《数据结构与算法》(二十五)- 排序算法:快速排序
- 互联网摸鱼日报(2023-03-10)
- 极速版app开发企业这么重视的原因是?
- 查询student表中所有李姓的学生的 SQL语句怎么写