BearPi Std 板從入門到放棄 - 先天篇(1)(階段 : 智慧城市 - 智慧路燈)

簡介

對前面幾篇整合, 做個小小匯總試驗, 使用BearPi E53_SC1擴展板主芯片: STM32L431RCT6串口: Usart1擴展板與主板連接: I2C : I2C1 (光照強度傳感器:BH1750)LED: PB9

步驟

  1. 創建項目
    參考 BearPi Std 板從入門到放棄 - 引氣入體篇(1)(由零創建工程到點亮LED)

  2. 初始化Usart1
    參考 BearPi Std 板從入門到放棄 - 引氣入體篇(4)(Usart 中斷接收), 但不需要啟用中斷, 直接添加fputc函數可以使用printf打印信息到串口即可, 參考 BearPi Std 板從入門到放棄 - 引氣入體篇(5)(printf打印到串口)

  3. I2C1 初始化
    參考 BearPi Std 板從入門到放棄 - 后天篇(1)(I2C1 讀取 光照強度)

  4. 初始化 LED燈 PB8
    方法如 步驟1, 推挽輸出、不上拉下拉、標簽名為E53_SC1_LED即可, 其電路原理圖如下, LED_SW為輸入, D1為LED燈
    在這里插入圖片描述

  5. 最終創建項目
    STM32CubeMX勾選項目生成為按照功能的不同.c/.h, 參考 STM32CubeMX 一些配置

  6. 添加用戶代碼
    main.c

typedef enum
{OFF,ON
}Smart_City_Status;	#define LUMINOSITY_THRESHOLD 50 // 光照閾值, 小于此亮度則亮燈void BH1750Init(void)
{uint8_t temp = 0x11; // 連續 H分辨率模式2HAL_I2C_Master_Transmit(&hi2c1, BH1750_ADDRESS, &temp, 1, 0xff); HAL_Delay(180); // 數據手冊內部寫完最長等待180ms才能讀
}float ReadBH1750(void)
{float lux = 0.0;uint8_t temp[2];HAL_I2C_Master_Receive(&hi2c1, BH1750_READ, temp, 2, 0xff); lux = (float) ( ((temp[0]<<8) + temp[1]) / 1.2 );return lux;
}void Smart_City_Light_Set(Smart_City_Status status)
{if (ON == status){HAL_GPIO_WritePin(E53_SC1_LED_GPIO_Port, E53_SC1_LED_Pin, GPIO_PIN_SET);}else{HAL_GPIO_WritePin(E53_SC1_LED_GPIO_Port, E53_SC1_LED_Pin, GPIO_PIN_RESET);}
}int main(void )
{float lux = 0.0;...BH1750Init(); // BH1750 初始化while (1){HAL_Delay(1000); // 1s 延時lux = ReadBH1750(); // 讀取光照強度值Smart_City_Light_Set(lux <= LUMINOSITY_THRESHOLD ? ON : OFF); // Smart_City_Light_Set(lux >= LUMINOSITY_THRESHOLD); printf("current Lux: %f\r\n", lux);}...
}

usart.h

/* USER CODE BEGIN Header */
#include "stdio.h"
/* USER CODE END Header *//* USER CODE BEGIN 0 */int fputc(int ch, FILE *f)
{uint8_t temp[1] = {ch};HAL_UART_Transmit(&huart1, temp, 1, 2);return HAL_OK;
}/* USER CODE END 0 */

前言后講

BH1750介紹
1.BH1750 測量步驟
在這里插入圖片描述
如圖所示
(1) 在電路連接正常情況下, 可以直接發送測量指令
(2) 一次測量方式后會自動斷電
(3) 連續測試則需要下發指令進行斷電

2.BH1750 指令
在這里插入圖片描述

3.BH1750 測量模式說明
在這里插入圖片描述

4.BH1750 各種測量時序示例
(1)ADDR 為低電平示例(包含計算)
在這里插入圖片描述

(2)ADDR 為高電平示例(包含計算)
在這里插入圖片描述
5. 本次擴展板BH1750電路圖
在這里插入圖片描述
綜上:
1. ADDR 是 低電平
2. 寫完讀模式之后最大等待時間是180ms, 寫完或讀前需要延時180ms
3. 連續讀模式 除非寫斷電, 否則會進行一次采集…
4. 亮度計算公式 = (((高8位)<<8) + (低八位))/1.2

Note:
Keil中Download Flash完需要復位才能執行最新的程序, 參考 BearPi Std 板從入門到放棄 - 丹道心得 (問題收集),燒寫完直接復位即可

BearPi_Smart_City 完整工程代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210624.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210624.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210624.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【測試人生】數據同步和遷移的變更注意事項

數據同步或者遷移操作也算是線上數據變更的一種類型。由于涉及的數據量非常大&#xff0c;一旦發生故障&#xff0c;會直接影響線上業務&#xff0c;并且較難止損。從變更風險管控的角度考慮&#xff0c;數據同步或遷移操作也需要走合理的發布窗口&#xff0c;并且在操作前也需…

淺談Google Play ASO 優化

什么是ASO ASO即APP Store Optimization&#xff0c;是用于提高APP在應用市場排名的工具&#xff0c;其實也就是移動產品的SEO工作。 ASO是為了提高該產品的搜索結果成績&#xff0c;提升APP的下載量&#xff0c;針對Google Play來說&#xff0c;ASO就是優化APP頁面。 為什么…

Linux升級nginx版本

處于漏洞修復目的服務器所用nginx是1.16.0版本掃出來存在安全隱患&#xff0c;需要我們升級到1.17.7以上。 一般nginx默認在 /usr/local/ 目錄&#xff0c;這里我的nginx是自定義的路徑安裝在 /app/weblogic/nginx 。 1.查看生產環境nginx版本 cd /app/weblogic/nginx/sbin/…

Redis基礎入門

第1章&#xff1a;引言 大家好&#xff01;我是小黑&#xff0c;今天咱們來聊聊Redis。Redis&#xff0c;這個名字你可能在不少地方聽過&#xff0c;尤其是在后端開發領域&#xff0c;它可是個大名鼎鼎的角色。&#xff0c;Redis是一個開源的內存中數據結構存儲系統&#xff0…

放棄原生SQL:Python中更優雅的數據庫操作

概要 在Python中&#xff0c;通過原生SQL語句進行數據庫操作是一種傳統的方式&#xff0c;但現代的Python開發中&#xff0c;使用ORM&#xff08;Object-Relational Mapping&#xff09;工具和數據庫連接庫可以更加高效和優雅地進行增刪改查操作。本文將詳細介紹Python中放棄原…

解決IDEA中多個項目不在同一窗口下顯示的問題和添加新的git的URL

以上是添加顯示多個項目 以下是給新添加的項目添加git

LeetCode算法題解(單調棧)|LeetCode84. 柱狀圖中最大的矩形

一、LeetCode84. 柱狀圖中最大的矩形 題目鏈接&#xff1a;84. 柱狀圖中最大的矩形 題目描述&#xff1a; 給定 n 個非負整數&#xff0c;用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰&#xff0c;且寬度為 1 。 求在該柱狀圖中&#xff0c;能夠勾勒出來的矩形的最大…

做外貿很多時候還是要學會隨機應變

馬上又要到年底了&#xff0c;相信已經有一部分小伙伴開啟了催單模式&#xff0c;希望客戶盡量在春節前將訂單落實下來&#xff0c;自然也有很多客戶會在春節前的這一段時間開始陸續拜訪自己觀望了很久的工廠。 其實對于貿易公司來說&#xff0c;對于來看工廠的客戶&#xff0…

ChatGPT,作為一種強大的自然語言處理模型,具備顯著優勢,能夠幫助您在各個領域取得突破

2023年隨著OpenAI開發者大會的召開&#xff0c;最重磅更新當屬GPTs&#xff0c;多模態API&#xff0c;未來自定義專屬的GPT。微軟創始人比爾蓋茨稱ChatGPT的出現有著重大歷史意義&#xff0c;不亞于互聯網和個人電腦的問世。360創始人周鴻祎認為未來各行各業如果不能搭上這班車…

Kotlin 作用域函數:理解 apply, let, 和 with

Kotlin提供了幾個作用域函數來優化和簡化代碼的結構。 本文將對比分析 apply, let, 和 with 三個函數。 一、對比分析&#xff1a; apply&#xff1a;在其接收者的上下文中執行代碼塊&#xff0c;并返回接收者對象。let&#xff1a;在其接收者的上下文中執行代碼塊&#xff…

Kotlin:內置函數let、also、with、run、apply

前言 在Kotlin中&#xff0c;有一些用于擴展 & 方便開發者編碼的內置函數&#xff0c;能大大提高開發者的開發效率。今天&#xff0c;我將主要講解的是&#xff1a; let函數also函數with函數run函數apply函數 基礎知識&#xff1a;接口回調中Lambda使用 在Kotlin中可使用…

棧和隊列的互相實現

用隊列實現棧 OJ鏈接 請你僅使用兩個隊列實現一個后入先出&#xff08;LIFO&#xff09;的棧&#xff0c;并支持普通棧的全部四種操作&#xff08;push、top、pop 和 empty&#xff09;。 實現 MyStack 類&#xff1a; void push(int x) 將元素 x 壓入棧頂。int pop() 移除并返…

Mybatis XML增刪操作(結合上文)

先來"增"操作 在UserInfoXMLMapper.xml里面寫 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <…

nginx多端口部署

1.配置nginx.conf文件 有幾個端口需要部署就寫幾個server&#xff0c;我這里只部署了兩個端口分別為80和81端口&#xff0c;所以有兩個server文件。80端口項目入口在根目錄的test文件中&#xff0c;81端口項目入口在根目錄的test1文件夾中。 2.準備項目文件html文件 在/test1…

Dockerfile部署Java項目掛載使用外部配置文件

Dockerfile部署Java項目掛載使用外部配置文件 技術博客 http://idea.coderyj.com/ 需求是由于java項目使用的是nacos 而且每次部署nacos服務器ip不一樣導致要重新打包,想引入外部配置文件進行打包 1.需求是由于java項目使用的是nacos 而且每次部署nacos服務器ip不一樣導致要重新…

數據結構和算法專題---5、調度算法與應用

本章我們會對調度算法做個簡單介紹&#xff0c;包括常用的調度算法&#xff08;FCFS、SJF、RR、HPF&#xff09;的概述、實現方式、典型場景做個說明。 什么是調度算法 調度算法常見于操作系統中&#xff0c;因為系統資源有限&#xff0c;當有多個進程&#xff08;或多個進程…

Oracle 怎樣修改DB_NAME

DBNEWID 是一個數據庫實用程序&#xff0c;用于更改 Oracle 數據庫的 DBNAME 和 DBID。可以更改 DBID 或 DBNAME 或兩者。 DBNAME 是在創建數據庫時指定的數據庫名稱&#xff0c;DBID 是創建數據庫時分配給數據庫的唯一編號。 以下步驟演示如何使用 DBNEWID 實用程序更改 Oracl…

【論文閱讀筆記】序列數據的數據增強方法綜述

【論文閱讀筆記】序列數據的數據增強方法綜述 摘要 這篇論文探討了在深度學習模型中由于對精度的要求不斷提高導致模型框架結構變得更加復雜和深層的趨勢。隨著模型參數量的增加&#xff0c;訓練模型需要更多的數據&#xff0c;但人工標注數據的成本高昂&#xff0c;且由于客觀…

將RK3399的挖掘機開發板在Android10下設置系統默認為24小時制

將RK3399的挖掘機開發板在Android10下設置系統默認為24小時制 2023/12/9 22:07 應該也可以適用于RK3399的Android12系統 --- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml -2…

MagicAnimate

簡介 新加坡國立大學 Show 實驗室和字節聯合做了一項類似的研究。他們提出了一個基于擴散的框架 MagicAnimate&#xff0c;旨在增強時間一致性、忠實地保留參考圖像并提升動畫保真度。并且&#xff0c;MagicAnimate 項目是開源的&#xff0c;目前推理代碼和 gradio 在線 demo …