物联网应用开发--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 Collection
		currentDataPoint.valuehum = rh;//Add Sensor Data Collection
		
	    thLastTimer = gizGetTimerCount();  
	}
}

八、项目调试

8.1  串口打印调试信息

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

8.2  网络配置

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

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

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

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

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


总结

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构~~二叉树-堆

目录 一、基本概念 树的概念 二叉树-堆的概念 二、堆的结构 三、堆排序 向上调整建堆 向下调整建堆 四、TOP-K 五、完整代码 六、总结 一、基本概念 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关…

在ubuntu中查询与某脚本或某设备相关的进程,ps,pgrep,lsof,fuser,pstree,htop命令的使用指南

一、查询与脚本有关的进程 1. 用ps命令 在 Ubuntu 系统中,如果你想查询与特定 Python 脚本 abc.py 相关的线程,你可以使用 ps 命令和 grep 命令结合来查找。ps 命令用于显示当前运行的进程状态,而 grep 命令可以帮助你过滤出包含指定字符串…

(六)DockerCompose安装与配置

DockerCompose简介 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现…

Docker Desktop安装和如何在WSL2中使用Docker

最近在使用WSL的过程中,想使用docker遇到了一些问题,在WSL中安装Linux版本的docker,启动镜像之后不能从Windows机器的端口映射出来,查了一圈之后,发现应该使用Docker Desktop软件,下面是安装和使用的方式 …

error1310 写入文件时发生错误,请确认您是否有访问权限 也可能出现error 1304 :写入文件时出错

一般错误提示如下 error1310 Error writing to file 错误 1310 :写入文件时出错:请确认您有权访问该目录, error1304 Error writing to file 错误 1304 :写入文件时出错:请确认您有权访问该目录 1.首先我们退出所…

揭秘齿轮加工工艺的选用原则:精准打造高效传动的秘密武器

在机械制造领域,齿轮作为传动系统中的重要组成部分,其加工工艺的选择至关重要。不同的齿轮加工工艺会影响齿轮的精度、耐用性和效率。本文将通过递进式结构,深入探讨齿轮加工工艺的选用原则,带您了解如何精准打造高效传动的秘密武…

SpringBoot3.x + JDK21 整合 Mybatis-Plus

前言 SpringBoot3.0 开始最低要求 Java 17,虽然目前最新的版本为 JDK22,但是在官网上看到 JDK23 在今年9月又要发布了,感觉这 JDK 也有点太过于给力了 所以我们选择用目前的 LTS 版本 JDK21 就好了,不用追求最新的 springboot 版…

DOM【事件、操作节点、DOM案例】--学习JavaEE的day49

day49 JS核心技术 DOM 继day48 事件 键盘事件 监听器&#xff1a;onkeydown、onkeypress、onkeyup <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><input type"text&q…

网站工作原理

web发展史 1.0时代不可修改 2.0可修改&#xff0c;比如发微博 有以下问题&#xff1a; 课程2&#xff1a; 静态页面 html 动态页面 php 经过服务端的语言解释器&#xff0c;解析成html文件&#xff0c;剩下的就和静态流程一样 后面三个是web服务器&#xff0c;语言解释器&…

恶劣天候鲁棒三维目标检测论文整理

恶劣天候鲁棒三维目标检测论文整理 Sunshine to Rainstorm: Cross-Weather Knowledge Distillation for Robust 3D Object DetectionRobo3D: Towards Robust and Reliable 3D Perception against CorruptionsLossDistillNet: 3D Object Detection in Point Cloud Under Harsh W…

Android Low Storage机制之DeviceStorageMonitorService

一、Android 版本 Android 13 二、low storage简介(DeviceStorageMonitorService) 设备存储监视器服务是一个模块&#xff0c;主要用来&#xff1a; 1.监视设备存储&#xff08;“/ data”&#xff09;。 2.每60秒扫描一次免费存储空间(谷歌默认值) 3.当设备的存储空间不足…

prometheusgrafananode_export搭建监控平台

一、环境要求 1、docker安装docker环境 2、docker安装prometheus 3、docker安装grafana 4、node-exportor(安装在被测服务器上) 5、我的服务器是Ubuntu 二、docker 安装prometheus 1、下载Prometheus镜像 docker pull prom/prometheus 2、检查端口是否被占用 安装netstat命…

Vitis HLS 学习笔记--抽象并行编程模型-控制驱动与数据驱动

目录 1. 简介 2. Takeaways 3. Data-driven Task-level Parallelism 3.1 simple_data_driven 示例 3.2 分析 hls::task 类 3.3 分析通道(Channel) 3.4 注意死锁 4. Control-driven Task-level Parallelism 4.1 理解控制驱动的 TLP 4.2 simple_control_driven 示例 4…

开源实用!猫抓媒体嗅探浏览器插件

CatCatch&#xff1a;网络资源&#xff0c;一触即发 - 精选真开源&#xff0c;释放新价值。 概览 CatCatch是一个专为浏览器设计的资源嗅探扩展&#xff0c;旨在帮助用户轻松捕获和分析网页中的各种资源。无论是视频、音频还是其他类型的文件&#xff0c;猫爪都能提供直观的界…

C++青少年简明教程:If选择语句

C青少年简明教程&#xff1a;If选择语句 C中选择语句的语法是&#xff1a; if (条件) { 条件成立时需要执行的语句... } [else { 条件不成立时需要执行的语句... }] 说明&#xff1a; if后面使用一个括号&#xff0c;括号里是条件——关系表达式。 所谓的关系表达式就是判…

Java基础之异常(简单易懂)

异常 1.JAVA异常体系 &#xff08;1&#xff09;Throwable类(表示可抛)是所有异常和错误的超类&#xff0c;两个直接子类为Error和Exception,分别表示错误和异常;其中异常类Exception又分为运行时异常和非运行时异常&#xff0c;这两个异常有很大区别&#xff0c;运行时异常也…

生成式AI改变的不只是应用场景,而是要重塑整个行业

即使是在各种创新技术不断涌现的IT行业&#xff0c;生成式AI也可以当之无愧地说是当前全球最受关注的焦点领域&#xff0c;没有之一。 那么对于企业来说&#xff0c;生成式AI技术究竟可以为他们带来怎样的变化和革新&#xff1f;企业又能从中获得怎样的收益&#xff1f; 作为一…

靠着单干实现财富自由,可太爽了

这里所说的“单干”&#xff0c;并不是单打独斗的意思&#xff0c;而是一种商业认知&#xff0c;以及由这种认知衍生出来的商业模式、商业方法和商业实践。 之前提到单干&#xff0c;会本能地以为它是指脱离公司等组织形式&#xff0c;自己一个人做生意。现在单干有了更丰富的…

医院门诊互联电子病历|基于SSM+vue的医院门诊互联电子病历管理信息系统的设计与实现(源码+数据库+文档)

医院门诊互联电子病历管理信息系统 目录 基于SSM&#xff0b;vue的医院门诊互联电子病历管理信息系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台登录模块 5.2.1管理员功能 5.2.2用户功能 5.2.3医生功能 四、数据库设计 五、核心代码…

源网络地址转换SNAT

左上角的是访问互联网发送的数据包&#xff0c;第一个是访问&#xff0c;第二个是网页传回来的 3、4项是源端口号和目的端口号&#xff08;3是随机的&#xff08;1024-65535&#xff09;&#xff0c;那个是http的网页服务端口就是80&#xff09; 那么往回传数据的时候源和目的…