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.pswp.cn/news/36444.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36444.shtml
英文地址,請注明出處:http://en.pswp.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…

一圖搞懂二層交換機、三層交換機和路由器的區別

二層交換機、三層交換機、路由器的區別 二層交換機、三層交換機、路由器對比二層交換機三層交換機路由器工作在第幾層數據鏈路層(第二層)網絡層(第三層)網絡層(第三層)功能學習和轉發幀根據IP地址轉發數據…

數據鏈路層是什么?

數據鏈路層承接上層的數據,然后使用下層提供的信道,按照一定的規則,進行數據傳輸。 物理層提供了傳輸媒體與連接(信道)(數據鏈路層使用的信道通常是物理層提供的信道),即提供了比特…

webpack自動注冊全局組件

例如,在form文件夾下有許多流程類表單,一個一個注冊引入非常浪費時間,可使用webpack的require.context方法來自動導入 import { firstToUpper } from /utils/methodsconst taskTable {install: vue > {const req require.context(../fo…

springboot結合element-ui實現增刪改查,附前端完整代碼

實現功能 前端完整代碼 后端接口 登錄,注冊,查詢所有用戶,根據用戶名模糊查詢,添加用戶,更新用戶,刪除用戶 前端 注冊,登錄,退出,用戶增刪改查,導航欄&#…

Android Sutdio 導入libs文件夾下的jar包沒反應

有點離譜,笨笨的腦子才犯的錯誤 首先發現問題:轉移項目的時候 直接復制粘貼libs文件夾下的jar包到新項目,在build.gradle文件下 使用語句并應用也沒反應(jar包沒有出現箭頭且代碼報錯,找不到) implementa…

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

針對問題本身,有的回答里都提到了。可靠性,掃描時間,帶離散量點數,帶模擬量輸出點數,擴展性,這些都可以看作PLC系統級別劃分的依據。比如說,有相應安全完整性等級認證的LOGIC SOLVER為核心的PLC…

SpringBoot復習:(37)自定義ErrorController

所有接口統一返回的數據格式 package cn.edu.tju.domain;public class MyResponse {private int code;private String message;private String exception;private String stack;public int getCode() {return code;}public void setCode(int code) {this.code code;}public S…

五個獨特且有趣的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…

Python學習筆記第五十六(Pandas JSON)

Python學習筆記第五十六天 Pandas JSONread_json()to_string()字典轉為 DataFrame 數據 內嵌的 JSON 數據json_normalize() 后記 Pandas JSON JSON(JavaScript Object Notation,JavaScript 對象表示法),是存儲和交換文本信息的語…

在線吉他調音

先看效果&#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需要根據…