STM32基于CubeIDE和HAL库 基础入门学习笔记:物联网项目开发流程和思路

文章目录:

第一部分:项目开始前的计划与准备

1.项目策划和开发规范 

1.1 项目要求文档

1.2 技术实现文档

1.3 开发规范

2.创建项目工程与日志

第二部分:调通硬件电路与驱动程序

第三部分:编写最基础的应用程序

第四部分:完成最终要求、反复调试

第五部分:程序优化、异常状态测试

第六部分:排版与注释、整理与存档


第一部分:项目开始前的计划与准备

1.项目策划和开发规范 

1.1 项目要求文档

产品名:带物联网功能的远程控制温湿度控制加热灯的产品主要功能:1.可读出环境的温湿度值,在设置的温度时控制加热灯开关2.在现场可用手机连接产品,在手机上显示温湿度值,并设置开关灯的阈值3.可在物联网平台上显示温湿度值,设置开关灯阈值,可手动开关灯、可开关机4.在系统出现故障时蜂鸣器报警,并将报警事件上传云平台5.可通过光敏电阻判断开关灯是否成功,可用电位器设置光敏电阻的灵敏度6.可在产品上通过按键设置开机或待机7.使用手机充电器转5V的电源供电所有功能在功能强大、性能优异的洋桃loT开发板上实现
生产成本:每套小于300元
开发周期:15天
提供:提供条理清晰、注释详细的源工程、提供用于批量产品用的HEX文件、提供电路原理图、提供一套用于测试和验收的样品
开发报价:请按以上要求给出报价

提取硬件要求

DHT11传感器:温湿度值
继电器自动开关:开关加热灯
蓝牙模块:手机CC2541
WIFI模块:ESP8266
蜂鸣器
光敏电阻
电位器
按键
USB电源
洋桃loT开发板

提取要求的缺失 

1.温湿度范围?最小分辨率要求?0~50℃ ±2℃2.有无控制灯亮度控制要求?只控制加热灯的开和关3.是否需要开发蓝牙专用APP?不需要,用蓝牙调试器软件临时使用4.是否有指定的云平台?阿里云5.WIFI模块连接路由器?WIFI模块连接到定时的家用路由器6.上传云平台的间隔时间要求?每5分钟左右上传一次,时间不要求准确7.设置开关灯阈值的范围?这个在现场测试能用就行,由于不同型号的灯的亮度不同,需要用电位器设置8.蜂鸣器的音量要求?报警时长?没有要求,3分钟后自动停止,也可按KEY2按键手动停止9.光照强度范围?到现场调试即可,没有要求10.有无用功耗要求?没有功耗要求11.产品是长期供电还是经常开关?长时间工作,需要考虑长时间工作时死机时能自动恢复12.稳定性的要求?温度控制开关灯要稳定工作,WIFI蓝牙等辅助功能不需要稳定13.产品尺寸与外壳的要求?没有要求

1.2 技术实现文档

 

 

1.3 开发规范

1.每一阶段开发要做工程备份
每天开发结束,把程序打包RAR备份,标题注明当前的程序状态2.先调通硬件再做应用层程序开发
先写出全部硬件的测试程序,后续开发中怀疑硬件问题可用此程序测试3.切换到产品使用者的角度来做测试
开发者的角度不会有好用的设计,必须有开发者和使用者的双重角色4.重视产品异常情况的纠错处理,重视产品长时间运行的稳定性
“能用”不是结束,考虑异常情况的错误可能,还要长时间烤机测试5.注重程序的结构关系和可读性
防止未来看不懂自己写的程序,程序要结构清晰、注释丰富、易理解

2.创建项目工程与日志

1.创建自己的项目文件夹:并取名(含版本)2.新建word文档保存项目要求:记录项目日志3.从素材库中导入素材:节约时间4.打开CubeMX4.1 用不到的功能端口全部取消定义,关闭不需要的功能4.2 进行相关设置

第二部分:调通硬件电路与驱动程序

1.调通硬件2.移植各功能驱动程序3.编写功能测试应用程序

第三部分:编写最基础的应用程序

1.完成温度控制加热灯的程序2.完成按键和电位器设置的程序3.完成手机蓝牙设置的程序

开发过程中的关注重点

a.多功能有机组合和相互关联b.程序代码执行的先后顺序c.算法的处理d.裸机程序抢占CPU的问题

第四部分:完成最终要求、反复调试

4.完成阿里云平台设置的程序5.测试效果与调试

第五部分:程序优化、异常状态测试

1.完成错误报警的程序2.完成操作异常的程序3.完成稳定性处理的程序

第六部分:排版与注释、整理与存档

4.程序排版整理5.导出正式版hex并存档

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

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

相关文章

opencv带GStreamer之Windows编译

目录 1、下载GStreamer和安装2. GSTReamer CMake配置3. 验证是否配置成功 1、下载GStreamer和安装 下载地址如下: gstreamer-1.0-msvc-x86_64-1.18.2.msi gstreamer-1.0-devel-msvc-x86_64-1.18.2.msi 安装目录无要求,主要是安装完设置环境变量 xxx\1…

【css】渐变

渐变是设置一种颜色或者多种颜色之间的过度变化。 两种渐变类型: 线性渐变(向下/向上/向左/向右/对角线) 径向渐变(由其中心定义) 1、线性渐变 语法:background-image: linear-gradient(direction, co…

springboot结合element-ui实现增删改查,附前端完整代码

实现功能 前端完整代码 后端接口 登录,注册,查询所有用户,根据用户名模糊查询,添加用户,更新用户,删除用户 前端 注册,登录,退出,用户增删改查,导航栏&#…

Android Sutdio 导入libs文件夹下的jar包没反应

有点离谱,笨笨的脑子才犯的错误 首先发现问题:转移项目的时候 直接复制粘贴libs文件夹下的jar包到新项目,在build.gradle文件下 使用语句并应用也没反应(jar包没有出现箭头且代码报错,找不到) implementa…

什么样的 PLC 可以算是高端 PLC?

针对问题本身,有的回答里都提到了。可靠性,扫描时间,带离散量点数,带模拟量输出点数,扩展性,这些都可以看作PLC系统级别划分的依据。比如说,有相应安全完整性等级认证的LOGIC SOLVER为核心的PLC…

五个独特且有趣的ChatGPT指令

今天分享5个很实用的指令,这几个指令很多时候对我们输出内容的连贯性、文章风格、创意性等方面有着决定性的作用。 目录 第一个:Max tokens(最大令牌) 第二个:Top_p(控制采样) 第三个:Presence_penalty …

Android Studio System.out.println()中文乱码

第一步: 打开studio64.exe.vmoptions加入-Dfile.encodingUTF-8 第二步: File-Settings-Editor-File Encodings 把所有的编码格式改为UTF-8 尝试跑一下代码,如果还不行,重启IDE 再试试。

UI美工设计岗位的工作职责

UI美工设计岗位的工作职责1 职责: 1、负责软件界面的美术设计、创意工作和制作工作; 2、根据各种相关软件的用户群,提出构思新颖、有高度吸引力的创意设计; 3、对页面进行优化,使用户操作更趋于人性化; 4、维护现有的应用产品; 5、收集和…

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践 文本匹配多用于计算两个文本之间的相似度,该示例会基于 ESimCSE 实现一个无监督的文本匹配模型的训练流程。文本匹配多用于计算两段「自然文本」之间的「相似度」。 例如…

一百五十三、Kettle——Linux上安装的kettle9.3启动后说缺少libwebkitgtk-1.0(真是坑爹啊,刚龟速下载又忍痛卸载)

一、问题 在kettle9.3可以在本地连接hive312后,在Linux中安装了kettle9.3,结果启动时报错WARNING: no libwebkitgtk-1.0 detected, some features will be unavailable 而且如果直接下载libwebkitgtk的话也没有用 [roothurys22 data-integration]# yu…

在线吉他调音

先看效果&#xff08;图片没有声&#xff0c;可以下载源码看看&#xff0c;比这更好~&#xff09;&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&quo…

【第二阶段】kotlin的函数类型作为返回类型

fun main() {//调用,返回的是一个匿名类型&#xff0c;所以info就是一个匿名函数val infoshow("",0)//info接受的返回值为匿名类型&#xff0c;此时info就是一个匿名函数println(info("kotlin",20)) }//返回类型为一个匿名函数的返回类型fun show(name:Str…

01 - 工作区、暂存区、版本库、远程仓库 - 以一次连贯的提交操作为例

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 工作区、暂存区、版本库、远程仓库1.1 工作区1.2 工作区 > 暂存区&#xff1a;git add1.3 暂存区 > 版本库&#xff1a;git commit1.4 push到远程仓库 1. 工作区、暂存区、版本…

【生成式AI】ProlificDreamer论文阅读

ProlificDreamer 论文阅读 Project指路&#xff1a;https://ml.cs.tsinghua.edu.cn/prolificdreamer/ 论文简介&#xff1a;截止2023/8/10&#xff0c;text-to-3D的baseline SOTA&#xff0c;提出了VSD优化方法 前置芝士:text-to-3D任务简介 text-to-3D Problem text-to-3D…

解决校园网使用vmware桥接模式,虚拟机与物理机互相ping通,但是虚拟机ping不通百度的问题

遇到的问题 使用校园网时&#xff0c;桥接模式下&#xff0c;物理机可以ping通虚拟机&#xff0c;但是虚拟机ping不通主机 解决方法 在物理机中查看网络相关信息 ipconfig 修改虚拟机网卡信息 vim /etc/sysconfig/network-scripts/ifcfg-ens33 注意 /ifcfg-ens33需要根据…

C++ QT(一)

目录 初识QtQt 是什么Qt 能做什么Qt/C与QML 如何选择Qt 版本Windows 下安装QtLinux 下安装Qt安装Qt配置Qt Creator 输入中文配置Ubuntu 中文环境配置中文输入法 Qt Creator 简单使用Qt Creator 界面组成Qt Creator 设置 第一个Qt 程序新建一个项目项目文件介绍项目文件*.pro样式…

SpringBoot启动报错:java: 无法访问org.springframework.boot.SpringApplication

报错原因&#xff1a;jdk 1.8版本与SpringBoot 3.1.2版本不匹配 解决方案&#xff1a;将SpringBoot版本降到2系列版本(例如2.5.4)。如下图&#xff1a; 修改版本后切记刷新Meavn依赖 然后重新启动即可成功。如下图&#xff1a;

3.4 网络安全管理设备

数据参考&#xff1a;CISP官方 目录 IDS (入侵检测系统)网络安全审计漏洞扫描系统VPN&#xff08;虚拟专网&#xff09;堡垒主机安全管理平台 一、IDS (入侵检测系统) 入侵检测系统&#xff08;IDS&#xff09;是一种网络安全设备&#xff0c;用于监测和检测网络中的入侵行…

树莓派3B CSI摄像头配置

1.硬件连接 1、找到 CSI 接口(树莓派3B的CSI接口在HDMI接口和音频口中间)&#xff0c;需要拉起 CSI 接口挡板,如下&#xff1a; 2、将摄像头排线插入CSI接口。记住&#xff0c;有蓝色胶带的一面应该面向音频口或者网卡方向&#xff0c; 确认方向并插紧排线&#xff0c;将挡板…

计算机竞赛 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于python 机器视觉 的车牌识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 &#x1f9ff; 更多资…