RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32設計的智能臺燈

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2024-11-19 09:26 ? 次閱讀

一、項目背景

智能家居設備在現代生活中起著越來越重要的作用。智能臺燈作為其中的一種,具有調節(jié)光照亮度、色溫等功能,更加符合人們對于光照環(huán)境的個性化需求。當前設計一款基于STM32微控制器設計的智能臺燈,該臺燈具備可調節(jié)亮度和色溫的特點,為用戶提供了更加舒適的使用體驗。

image-20230707095753939

二、設計目標

【1】實現燈光的亮度和色溫的可調節(jié)功能;

【2】添加人體感應模塊,實現自動開關燈;

【3】實現手機遠程控制燈光的功能;

【4】設計簡潔、穩(wěn)定的硬件電路和用戶友好的操作界面。

三、系統(tǒng)架構

3.1 硬件部分

** (1) 主控芯片:選用STM32系列微控制器,具有豐富的外設資源和強大的處理能力;**

** (2) 電源部分:采用穩(wěn)壓電源模塊,提供適宜電壓的供電;**

** (3) 光源部分:選擇高亮度LED作為光源,配備透明燈罩,提供均勻柔和的光照; **

**(4) 人體感應模塊:采用紅外傳感器,檢測到人體活動時自動開啟燈光; **

(5) 無線通信模塊:使用WiFi或藍牙模塊,實現手機遠程控制。

3.2 軟件部分

(1) 嵌入式軟件:使用Keil MDK作為開發(fā)環(huán)境,編寫嵌入式C語言程序,實現燈光亮度和色溫的調節(jié)、人體感應控制等功能;

** (2) 手機控制端:設計并開發(fā)手機App,通過與智能臺燈連接,實現遠程控制燈光的功能。**

3.3 硬件選型說明

【1】主控芯片:

采用STM32F103RCT6

【2】光源部分:

** (1) 高亮度LED:選擇高亮度、節(jié)能的LED作為光源,推薦選擇LED燈珠。**

** (2) 透明燈罩:選擇高透光性的材料制作燈罩,保證光照均勻柔和。**

【3】人體感應模塊:

(1) 紅外傳感器:選擇靈敏度較高的紅外傳感器,能夠快速、準確地檢測到人體活動。

** (2) 光敏電阻:用于在光線不足時自動開啟臺燈,確保人體感應功能的正常工作。**

【4】無線通信模塊

選擇HC05藍牙模塊,以便與手機設備進行通信。

3.4 硬件設計

【1】主控芯片選擇:STM32F103RCT6,具有較高的性能和豐富的外設資源,適合作為智能臺燈的核心處理器;

【2】人體紅外傳感器:用于檢測周圍是否有人靠近;

【3】光敏傳感器:用于檢測環(huán)境光的強度;

【4】LED燈:作為臺燈的光源,通過PWM控制其亮度;

【5】HC05藍牙模塊:用于與手機APP通信,接收控制命令并發(fā)送狀態(tài)信息。

3.5 軟件設計

【1】GPIO配置:配置主控芯片的GPIO引腳,包括人體紅外傳感器輸入引腳、光敏傳感器輸入引腳和LED燈控制引腳等;

【2】外部中斷配置:通過外部中斷來監(jiān)聽人體紅外感應引腳的狀態(tài)變化,在觸發(fā)時進行相應操作;

【3】PWM配置:使用PWM控制LED燈的亮度,根據光敏傳感器檢測到的環(huán)境光強度動態(tài)調整PWM輸出占空比;

【4】藍牙通信:通過UART配置HC05藍牙模塊,與手機APP建立藍牙連接,接收控制命令并發(fā)送臺燈狀態(tài)信息;

【5】主循環(huán)邏輯:在主循環(huán)中實時檢測光敏傳感器的數據以及人體紅外感應引腳的狀態(tài),并根據相應條件進行臺燈的開啟和關閉操作;同時,檢測藍牙模塊接收到的控制命令,并根據命令內容進行相應操作。

四、主要功能實現

【1】光照調節(jié)功能: 通過按鍵或旋鈕操作,調節(jié)臺燈光照的亮度和色溫。亮度調節(jié)通過PWM控制LED的亮度,色溫調節(jié)通過調節(jié)白光LED和彩光LED的相對亮度來實現。

【2】人體感應控制: 采用紅外傳感器,檢測到人體活動后自動開啟燈光,一段時間內沒有人活動則自動關閉。

【3】遠程控制功能: 手機App與智能臺燈通過藍牙通信,用戶可以通過App控制燈光的開關、亮度和色溫,實現遠程控制功能。

五、代碼實現

仿真工程代碼下載: [https://ccnr8sukk85n.feishu.cn/wiki/QjY8weDYHibqRYkFP2qcA9aGnvb?from=from_copylink]

5.1 PWM波形控制LED燈亮度

include "stm32f10x.h"
?
void PWM_Configuration(void);
void Delay(__IO uint32_t nCount);
?
int main(void) {
  PWM_Configuration();
?
  while (1) {
    // 逐漸增加LED亮度
    for (uint16_t i = 0; i <= 1000; i++) {
      TIM_SetCompare1(TIM2, i);  // 設置PWM占空比,范圍:0-1000
      Delay(5000);               // 延時一段時間
    }
?
    // 逐漸減小LED亮度
    for (uint16_t i = 1000; i > 0; i--) {
      TIM_SetCompare1(TIM2, i);
      Delay(5000);
    }
  }
}
?
void PWM_Configuration(void) {
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
?
  // 配置GPIO口
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
?
  // 配置TIM2為PWM模式
  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  TIM_OCInitTypeDef TIM_OCInitStructure;
?
  TIM_TimeBaseStructure.TIM_Period = 1000;                          // 設置周期
  TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1;                     // 設置預分頻
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
?
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                  // PWM模式1
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 0;                                 // 初始占空比為0
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OC1Init(TIM2, &TIM_OCInitStructure);
  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);
?
  TIM_Cmd(TIM2, ENABLE);                                            // 使能TIM2
}
?
void Delay(__IO uint32_t nCount) {
  for (; nCount != 0; nCount--);
}

代碼中使用了STM32的定時器TIM2和GPIOA的第0號引腳(PA0)來控制LED燈的亮度。在主函數中,通過循環(huán)逐漸增加和減小PWM的占空比,從而改變LED燈的亮度。

5.2 智能臺燈邏輯代碼

// 引入所需的庫
#include < stdio.h >
#include < stdbool.h >
?
// 定義引腳和設備地址
#define PIR_SENSOR_PIN 2
#define LIGHT_SENSOR_PIN 3
#define LED_PIN 4
#define HC05_BAUD_RATE 9600
?
// 聲明全局變量
bool isPersonDetected = false;
int lightIntensity = 0;
?
// 初始化函數
void setup() {
  // 配置引腳模式
  pinMode(PIR_SENSOR_PIN, INPUT);
  pinMode(LIGHT_SENSOR_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
?
  // 初始化串口通信
  Serial.begin(HC05_BAUD_RATE);
}
?
// 主循環(huán)函數
void loop() {
  // 檢測人體紅外感應
  if (digitalRead(PIR_SENSOR_PIN) == HIGH) {
    isPersonDetected = true;
  } else {
    isPersonDetected = false;
  }
?
  // 檢測光敏傳感器
  lightIntensity = analogRead(LIGHT_SENSOR_PIN);
?
  // 根據條件控制臺燈
  if (isPersonDetected && lightIntensity < 500) {
    digitalWrite(LED_PIN, HIGH);
  } else {
    digitalWrite(LED_PIN, LOW);
  }
?
  // 處理藍牙通信
  if (Serial.available()) {
    char command = Serial.read();
    handleBluetoothCommand(command);
  }
}
?
// 處理藍牙命令函數
void handleBluetoothCommand(char command) {
  // 處理從手機APP發(fā)送來的命令,例如控制臺燈亮度

}
?
// 主函數
int main() {
  setup();  // 初始化
  while (1) {
    loop();  // 主循環(huán)
  }
  return 0;
}

六、總結

當前文章介紹了基于STM32F103RCT6主控芯片的智能臺燈的設計過程和實現原理。通過集成人體紅外感應、光敏檢測和與手機APP連接的功能,實現了臺燈的自動開關和亮度調節(jié)等智能化操作。通過手機APP與藍牙模塊的連接,用戶可以遠程控制臺燈的開關、亮度和模式等,提供了更加方便和智能化的使用體驗。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355715
  • 智能臺燈
    +關注

    關注

    9

    文章

    83

    瀏覽量

    21020
收藏 人收藏

    評論

    相關推薦

    #硬聲創(chuàng)作季 基于STM32智能臺燈設計

    單片機臺燈STDIY智能臺燈
    Mr_haohao
    發(fā)布于 :2022年08月16日 17:25:02

    基于stm32智能臺燈

    物聯網智能DIY
    jf_06209345
    發(fā)布于 :2023年03月27日 22:07:08

    智能臺燈設計資料

    智能臺燈設計資料
    發(fā)表于 08-14 12:56

    智能臺燈分享!

    智能臺燈分享!
    發(fā)表于 12-05 16:39

    智能臺燈的制作

    智能臺燈的制作
    發(fā)表于 07-15 14:32

    【Tisan物聯網申請】智能木工臺燈

    申請理由:想把木工工藝的臺燈實現智能化聯網控制。讓傳統(tǒng)的臺燈變得智能起來!項目描述:項目:智能臺燈
    發(fā)表于 10-15 10:09

    智能臺燈資料

    很好的智能臺燈資料。。。
    發(fā)表于 12-17 00:14

    智能臺燈

    有沒有大神做過智能臺燈,能分享分享資料嗎
    發(fā)表于 03-16 13:52

    STM32芯片的一款智能臺燈項目分享 包含代碼哦

    一款智能臺燈,特分享出來供大家學習。智能臺燈側面圖智能臺燈整體圖
    發(fā)表于 07-27 11:42

    設計一款懂人所想的智能臺燈

    摘要:基于STM32單片機和機智云硬件開發(fā)平臺,設計了一款智能臺燈。在設計中融合了光電傳感器、光照強度傳感器、溫濕度傳感器、WiFi通信模塊等一些常用的傳感器,在臺燈普通照明功能的基礎
    發(fā)表于 09-17 16:37

    基于STM32芯片和機智云平臺的一款智能臺燈

    隨著現代科學技術的不斷發(fā)展,生活用品的智能化程度也越來越普及,人們對一些家居物品的人性化、智能化設計要求也越來越高。眾所周知臺燈作為家庭主要照明工具之一,在現代社會生活中占有重要地位,而且臺燈
    發(fā)表于 07-22 15:31

    10個STM32系列設計分享請查收

    怎樣去設計一種基于STM32的雙向DC-DC變換器?怎樣去設計一種基于stm32智能臺燈?
    發(fā)表于 10-21 08:58

    475【畢設課設】基于STM32單片機智能紅外感應光照檢測臺燈路燈

    475【畢設課設】基于STM32單片機智能紅外感應光照檢測臺燈路燈
    發(fā)表于 11-30 09:06 ?85次下載
    475【畢設課設】基于<b class='flag-5'>STM32</b>單片機<b class='flag-5'>智能</b>紅外感應光照檢測<b class='flag-5'>臺燈</b>路燈

    基于STM32單片機的智能臺燈系統(tǒng)設計

    本次智能臺燈系統(tǒng)的設計使用STM32單片機作為控制中心,通過光電管檢測是否有人,通過DS1302時鐘模塊定時,通過超聲波模塊進行測距,當光電管檢測到人時,定時燈變亮并根據光強調光,當定時時間超過1h,通過語音播報進行提示。
    的頭像 發(fā)表于 08-28 09:37 ?5066次閱讀
    基于<b class='flag-5'>STM32</b>單片機的<b class='flag-5'>智能</b><b class='flag-5'>臺燈</b>系統(tǒng)設計

    STM32項目分享:智能臺燈系統(tǒng)

    01—項目簡介1.功能詳解基于STM32智能臺燈系統(tǒng)。功能如下:亮度控制:按鍵控制照明燈的亮度(5擋亮度)計時功能:按鍵啟動計時,累
    的頭像 發(fā)表于 11-29 01:02 ?484次閱讀
    <b class='flag-5'>STM32</b>項目分享:<b class='flag-5'>智能</b><b class='flag-5'>臺燈</b>系統(tǒng)
    RM新时代网站-首页