物联网应用开发--STM32与机智云通信(ESP8266 Wi-Fi+手机APP+LED+蜂鸣器+SHT20温湿度传感器)

实现目标

1、熟悉机智云平台,会下载APP

2、熟悉新云平台创建产品,项目虚拟调试

3、掌握云平台生成MCU代码,并移植。机智云透传固件的下载

4、具体目标:(1)注册机智云平台;(2)下载手机APP,并学会使用;(3)新建一个联网方案为WIFI的项目;(3)云平台生成STM32F103代码,并移植到开发板。下载机智云固件;(4)手机、云平台,开发板互联,能够控制LED、蜂鸣器,温湿度传感器数据数据能够上传。


一、机智云概述

             广州机智云物联网科技有限公司旗下品牌,全球领先的智能IoT开发及云服务平台,国内首个物联网自助开发平台。
       截至2023年6月,机智云智能IoT开发及云服务平台累计拥有超过35万开发者,连接超过3000万设备,服务超过20000家企业,覆盖200+个国家和地区

二、下载手机APP

APP下载网址:https://devdocs.gizwits.com/download.html#166419072635445  亦可以扫右边的二维码下载安装。

说明:如果下载的最新版本使用不了,可以下载旧一点的版本安装。

三、机智云开发者中心使用

3.1 云平台注册

注册网址:https://dev.gizwits.com/zh-cn/developer/intro

3.2 创建新产品

(1)注册—>登录—>打开开发者中心—>点击创建

(2)照明—>球泡灯—>自定义方案—>灯

(3)产品名称:智能家居控制系统;类型:单品(WI-FI);数据传输方式:变长;功耗:正常 。设置好后点击“创建”。

(4)点击“去编辑”  添加标准数据点 可写:BEEP, LED1,LED2,LED3,LED4  布尔型 等共四个; 只读:temp,hum  数值型:(0-100),分辨率 :1  等共2个;

3.3 用虚拟设备调试产品

(1)打开机智云手机APP,登录界面点击“跳过”;打开云平台开发界面左侧“虚拟设备”;用手机APP扫描云平台左上角的二维码“扫码绑定虚拟设备”。现在可以虚拟调试设备了。

说明:设置数据后,可以点击“上报”,在手机APP端就能看到对应的信息。

 3.4 生成MCU代码并下载

打开MCU开发,选择独立MCU方案,选择MCU平台为STM32F103C8x,复制PS并粘贴,点击生成代码包,再下载。

四、硬件连接

1、开发板ESP8266模块原理图

 说明:P7为USART1、USART2和WIFI功能短接端子。本实验中,用两个跳接帽分别接上P7(3与5)、P7(4与6)。我们通过PC串口助手、USB转串口(CH340)给WIFI模块烧写固件。

五、AT固件烧录

        打开 PC 端的flash_download_tool软件,选择ESP8266 DownloadTool,选择待烧录的机智云固件 GAgent_00ESP826_04020025_32Mbit_201708301927_combine.bin 文件,并设置好 bin 文件烧录至芯片的地址信息和其他的一些信息。

软件和固件下载地址:https://download.csdn.net/download/luojuan198780/89336791

烧写步骤:

1、先按住开发板上KIO0和WRST两个按键,再点击软件左下方的“START”按钮,再依次松开WRST、KIO0两个按键。

2、验证  打开串口助手,串口参数:115200,1,8,无

  如果固件下载成功,串口助手上会打印机智云心跳信息,如下图所示:

六、STM32CubeMX配置

6.1 STM32CubeMX上修改管脚

将KEY1:PB10 改为 PB11  , KEY2:PA8 改为PB10 ,输入模式。以适配开发板,见6.2图。

6.2 添加4个LED,1个蜂鸣器

(1)添加LED1-LED4(PB9,PB8,PB5,PB4),初始电平为高电平;(2)添加BEEP(PC13),初始电平为低电平。

6.3 I2C(SHT20温湿度传感器)

机智云工程采样硬件I2C ,初始化时卡死,改采用模拟I2C,PB6-SCL  PB7-SDA  .两个管脚设置为开漏输出

6.4 生成代码设置

默认配置说明:(1)USART1用于调试打印;(2)USART2用于与ESP8266 透传模块通信(波特率9600);(3)采用外部晶振,系统时钟72MHz;(4)原版还开启了ST-LINK下载。

七、程序设计

7.1 机智云下行控制

(1)打开gizwits_product.c 文件中 gizwitsEventProcess 函数,编写LED和蜂鸣器的控制逻辑。以LED1为例,其它LED2-LED4、BEEP 类似。


if(0x01 == currentDataPoint.valueLED1)
{HAL_GPIO_WritePin(GPIOB, LED1_Pin, GPIO_PIN_RESET);//打开LED1	}
else
{HAL_GPIO_WritePin(GPIOB, LED1_Pin, GPIO_PIN_SET);//关闭LED1	   
}

7.2 传感器数据上行上传

7.3.1 移植模拟SHT20 驱动(HAL版本)至工程

(1)将sht20.c  、sht20.h  两个文件复制到工程...\Hal 目录下

SHT20驱动文件下载地址:https://download.csdn.net/download/luojuan198780/89345453

(2)点击添加 sht20.c  文件至工程

(3)添加sht20.h头文件至gizwits_product.c文件头部,定义两个变量。

#include "sht20.h"float tm,rh;

(4)在gizwits_product.c文件 userHandle(void)函数中编写数据上传程序

void userHandle(void)
{static uint32_t thLastTimer = 0;if((gizGetTimerCount() - thLastTimer) > 1000){SHT20_GetValue(&tm,&rh);printf("SHT20_tem:%.1f℃\r\n",tm);printf("SHT20_hum:%.1f%%\r\n",rh);		currentDataPoint.valuetemp = tm;//Add Sensor Data CollectioncurrentDataPoint.valuehum = rh;//Add Sensor Data CollectionthLastTimer = gizGetTimerCount();  }
}

八、项目调试

8.1  串口打印调试信息

长按K2,学会让WIFI处于Airlink 模式,确保在这个模式下手机、开发板互联才会成功。

8.2  网络配置

(1)先提供一个可用的wifi给开发板和装有机智云APP的手机,让手机连上此WIFI。

(2)给开发板上电。再打开手机”机智云”APP,完成以下操作:

(3)输入提供的WiFi名称及密码,选着WIFI模组的厂家

(3)在点击“我已完成上述操作”之前,长按开发板K2按键2秒左右,让WiFi模块进入AirLink 模式

(4)显示黄色创建的设备,则识别成功,可以点击进行进行控制操作或查看上传数据。


总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

148.【Windows DOS命令脚本文件】

Window待处理脚本 (一)、批处理编程初步体验1.什么是批处理程序?(1).批处理程序的定义(2).如何编辑批处理程序 2.批处理程序可以做什么?(1).匹配规则删除文件(2).新建文件,日志等(3).创建计算机病毒等 3.一个基本的批处理文件(1).带盘符的输出…

[深入理解DDR5] 2-1 封装与引脚

3500字,依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 1 DDR5 颗粒 X4 X8 X16 这里的 X8 or X16, 可以理解为一个DRAM芯片有几个存储阵列。“X几”。进行列寻址时会同时从几个阵列的同一个坐标位置读出数据bit来&a…

前端中 dayjs 时间的插件使用(在vue 项目中)

Day.js中文网 这是dayjs的中文文档 里面包括了使用方法 下面我来详细介绍一下这个插件的使用 Day.js 可以运行在浏览器和 Node.js 中。 一般咱直接是 npm 安装 npm install dayjs 目前应该使用的是Es6 的语法 import dayjs from dayjs 当前时间 直接调用 dayjs() 将返回…

如何优雅的卸载linux上的todesk

要优雅地卸载Linux上的ToDesk,您可以按照以下步骤操作: 打开终端。 输入以下命令来停止ToDesk服务(如果它正在运行的话): sudo systemctl stop todesk 然后,使用包管理器卸载ToDesk。如果您使用的是apt&…

【飞桨AI实战】基于PP-OCR和ErnieBot的智能视频问答

前言 本次分享将带领大家从 0 到 1 完成一个基于 OCR 和 LLM 的视频字幕提取和智能视频问答项目,通过 OCR 实现视频字幕提取,采用 ErnieBot 完成对视频字幕内容的理解,并回答相关问题,最后采用 Gradio 搭建应用。本项目旨在帮助初…

小猫咪的奇幻冒险:一个简单的Python小游戏

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、游戏简介与演示 二、游戏开发与运行 1. 环境搭建 2. 代码解析 3. 加速机制 三、游戏…

GitHub的原理及应用详解(一)

本系列文章简介: GitHub是一个基于Git版本控制系统的代码托管平台,为开发者提供了一个方便的协作和版本管理的工具。它广泛应用于软件开发项目中,包括但不限于代码托管、协作开发、版本控制、错误追踪、持续集成等方面。 GitHub的原理可以简单…

【LinuxC语言】目录操作

文章目录 前言常用目录操作函数1. `opendir`2. `readdir`3. `closedir`4. `mkdir`5. `rmdir`6. `chdir`7. `getcwd`8. `scandir`9. `rename`总结前言 在Linux系统中,目录操作是文件系统管理的重要组成部分。对于使用C

Java中的集合框架(Collections Framework)深入解析

在Java编程中,集合框架(Collections Framework)是一个重要的组成部分,它为程序员提供了一套丰富的接口和类,用于存储、检索和操作对象集合。下面,我将从技术难点、面试官关注点、回答吸引力和代码举例四个方…

Jeecg | 完成配置后,如何启动整个项目?

前端启动步骤: 1. 以管理员身份打开控制台,切换到前端项目目录。 2. 输入 pnpm install 3. 输入 pnpm dev 4. 等待前端成功运行。 可以看到此时前端已经成功启动。 后端启动步骤: 1. 启动 mysql 服务器。 管理员身份打开控制台&#…

得物小程序逆向+qt可视化(不含sku)

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872 本文章未…

Python实现国密GmSSL

Python实现国密GmSSL 前言开始首先安装生成公钥与私钥从用户证书中读取公钥读取公钥生成签名验证签名加密解密 遇到的大坑参考文献 前言 首先我是找得到的gmssl库,经过实操,发现公钥与密钥不能通过pem文件得到,就是缺少导入pem文件的api。这…

迷你手持小风扇到底哪个牌子最好?揭秘迷你手持手持小风扇排行榜

在炎炎夏日,迷你手持小风扇成为了我们不可或缺的清凉伴侣。然而,面对市场上琳琅满目的品牌,迷你手持小风扇到底哪个牌子最好?今天,我将揭秘迷你手持小风扇排行榜,带大家一探各大品牌的魅力,让你…

Linux-用户管理

Linux的用户 用户是必须的吗 用户:标识计算机上的资源的归属 保存账号或密码的数据库文件 /etc/passwd:保存系统中的全部用户名 /etc/group:保存系统中的全部用户组名 /etc/shadow:保存系统中的各个用户的密码 /etc/gshadow&am…

字节面试:百亿级数据存储,怎么设计?只是分库分表吗?

尼恩:百亿级数据存储架构起源 在40岁老架构师 尼恩的读者交流群(50)中,经常性的指导小伙伴们改造简历。 经过尼恩的改造之后,很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#xff0c…

【LeetCode】【5】最长回文子串

文章目录 [toc]题目描述样例输入输出与解释样例1样例2 提示Python实现动态规划 个人主页:丷从心 系列专栏:LeetCode 刷题指南:LeetCode刷题指南 题目描述 给一个字符串s,找到s中最长的回文子串 样例输入输出与解释 样例1 输入…

数据结构时间复杂度是什么

时间复杂度(Time Complexity)是一个算法在输入规模变化时运行时间增长情况的度量方式。它通常用大 (O) 记号(Big-O notation)表示,描述的是最坏情况下算法运行时间的上限。时间复杂度帮助我们理解算法在处理不同规模的…

AI赋能C++:结构体

C中的结构体(struct)是一种复合数据类型,允许你组合不同类型的数据项(成员变量)到一个单一的单元中。结构体在概念上类似于类,但默认情况下,结构体的所有成员都是公有的(public&…

文件上传安全指南:保护免受不受限制的文件上传攻击

文件上传安全指南:保护免受不受限制的文件上传攻击 在现代应用程序中,文件上传功能是一个常见且重要的部分。然而,这也为攻击者提供了潜在的攻击向量,尤其是不受限制的文件上传攻击。本文将详细介绍如何通过一系列安全措施来保护…

安全设计 | Microsoft 威胁建模工具Threat Modeling Tool安装及使用详解(文末附样例)

1. 概览 微软威胁建模工具(Threat Modeling Tool)是 Microsoft 安全开发生命周期 (SDL,Security Develop LifeCycle) 的核心要素。 当潜在安全问题处于无需花费过多成本即可相对容易解决的阶段,软件架构师可以使用威胁建模工具提…