娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

首頁 > 微機單片機 >單片機制作 > 如何使用STM32制作啟用BLE的智能燈泡

如何使用STM32制作啟用BLE的智能燈泡

來源:互聯網發布者:清寧時光 關鍵詞: STM32 BLE 智能燈泡 更新時間: 2024/05/24

本文將教您如何使用 STM32 制作啟用 BLE 的智能燈泡。

家庭自動化涉及自動化家庭環境設備。為此,我們開發了一種易于安裝的智能燈泡,并且可以通過網絡瀏覽器或智能手機應用程序控制連接的設備。該項目的目的是使用網絡瀏覽器或智能手機控制不同的家用電器。

一、介紹

該項目展示了一種使用 BleuIO Dongle 打開和關閉通過 5V 繼電器連接到 STM32 Nucleo-144 的燈泡的簡單方法。

您將需要兩個加密狗,一個連接到 Nucleo 板,一個連接到計算機,運行 Web 腳本。

當 BleuIO Dongle 連接到 Nucleo 板的 USB 端口時,STM32 會識別它并直接開始廣告。這允許另一個加密狗連接到它。

它還將接受來自 UART 的 3 個不同輸入:

輸入結果

0 向 BlueIO Dongle 發送 ATI(請求設備信息)命令。

1 手動打開燈泡

2 手動關閉燈泡

我們使用了STM32 Nucleo-144開發板和STM32H743ZI MCU(STM32H743ZI micro mbed-Enabled Development Nucleo-144 series ARM? Cortex?-M7 MCU 32-Bit Embedded Evaluation Board)作為例子。

如果您想使用其他設置,您必須確保它支持 USB 主機,并注意 GPIO 設置可能不同,可能需要在 .ioc 文件中重新配置。

警告 – 該項目涉及可能導致嚴重傷害或死亡的高電壓。在對電路進行操作之前,請采取所有必要的預防措施,并關閉電路的所有電源。

2. 連接繼電器

謹防:

試驗交流電時請務必小心,觸電會導致嚴重傷害!風險通知;免責聲明

引腳排列和連接到STM32 對于繼電器電路的直流部分,將S(信號)連接到STM32 NUCLEO 板上的引腳PE4,同時將電源(+)和地(-)分別連接到+5V 和GND。

3. 關于守則

這個項目基于我們之前的 STM32 項目 (https://github.com/smart-sensor-devices-ab/stm32_bleuio_example),在 .ioc 文件中有這些變化:

在引腳視圖中,我們將 GPIO PE4 設置為 OUTPUT 并將其標記為“燈泡”。

在 USB_HOSTusb_host.c 中的 USBH_CDC_ReceiveCallback 函數中,我們將 CDC_RX_Buffer 復制到一個名為 dongle_response 的外部變量中,該變量可從 main.c 文件訪問。

在 main.c 中,我們創建了一個簡單的解釋器,以便我們可以對從加密狗接收到的數據做出反應。

void dongle_interpreter ( uint8_t * input)
{

if ( strlen (( char *)input) != 0 )
 {
if ( strstr (( char *)input, " 廣告..." ) != NULL )
{
 isAdvertising = true ;
}
if ( strstr (( char *)input, " 廣告已停止。" ) != NULL )
{
 isAdvertising = false ;
}
if ( strstr (( char *)input, " CONNECTED" ) != NULL )
{
 isConnected =真;
 HAL_GPIO_WritePin(GPIOE, GPIO_PIN_1, GPIO_PIN_SET);
}
if ( strstr (( char *)input, " DISCONNECTED" ) != NULL )
{
 isConnected = false ;
 HAL_GPIO_WritePin(GPIOE, GPIO_PIN_1, GPIO_PIN_RESET);
}
if ( strstr (( char *)input, "L=0" ) != NULL )
{
 isLightBulbOn = false ;
 HAL_GPIO_WritePin(Lightbulb_GPIO_Port, Lightbulb_Pin, GPIO_PIN_RESET);

writeToDongle(( uint8_t *)DONGLE_SEND_LIGHT_OFF);

uart_buf_len = sprintf (uart_tx_buf, " 燈泡是 %s " , isLightBulbOn ? "on" : "off" );
 HAL_UART_Transmit(&huart3, ( uint8_t *)uart_tx_buf, uart_buf_len, HAL_MAX_DELAY);
}
if ( strstr (( char *)input, "L=1" ) != NULL )
{
 isLightBulbOn = true ;
 HAL_GPIO_WritePin(Lightbulb_GPIO_Port, Lightbulb_Pin, GPIO_PIN_SET);

writeToDongle(( uint8_t *)DONGLE_SEND_LIGHT_ON);

uart_buf_len = sprintf (uart_tx_buf, " 燈泡是 %s " , isLightBulbOn ? "on" : "off" );
 HAL_UART_Transmit(&huart3, ( uint8_t *)uart_tx_buf, uart_buf_len, HAL_MAX_DELAY);
}
 }
 memset (&dongle_response, 0 , RSP_SIZE);
}

我們還更新了 handleUartInput 函數,以便我們可以通過 UART 手動控制燈泡。

void handleUartInput (UARTCommandTypeDef cmd)
{
 switch (cmd)
 {
情況UART_RX_0:
{
 // 0
 uart_buf_len = sprintf (uart_tx_buf, " (0 press ) " );
 HAL_UART_Transmit(&huart3, ( uint8_t *)uart_tx_buf, uart_buf_len, HAL_MAX_DELAY);
 如果(isBleuIOReady)
 {
writeToDongle(( uint8_t *)DONGLE_CMD_ATI);
 }其他
 {
uart_buf_len = sprintf (uart_tx_buf, BLEUIO_NOT_READY_MSG);
HAL_UART_Transmit(&huart3, ( uint8_t *)uart_tx_buf, uart_buf_len, HAL_MAX_DELAY);
 }
 uartStatus = UART_RX_NONE;
 打破;
}
情況UART_RX_1:
{
 // 1
 uart_buf_len = sprintf (uart_tx_buf, " (1 個按下的燈泡亮了!) " );
 HAL_UART_Transmit(&huart3, ( uint8_t *)uart_tx_buf, uart_buf_len, HAL_MAX_DELAY);
 HAL_GPIO_WritePin(Lightbulb_GPIO_Port, Lightbulb_Pin, GPIO_PIN_SET);
 uartStatus = UART_RX_NONE;
 打破;
}
情況UART_RX_2:
{
 // 2
 uart_buf_len = sprintf (uart_tx_buf, " (2 按下燈泡關閉!) " );
 HAL_UART_Transmit(&huart3, ( uint8_t *)uart_tx_buf, uart_buf_len, HAL_MAX_DELAY);
 HAL_GPIO_WritePin(Lightbulb_GPIO_Port, Lightbulb_Pin, GPIO_PIN_RESET);

uartStatus = UART_RX_NONE;
 打破;
}
情況UART_RX_NONE:
{
 打破;
}
默認:
{
 uartStatus = UART_RX_NONE;
 打破;
}
 }
}

我們將解釋器函數放在主循環中。

4. 使用示例項目

4.1 你需要什么

兩個 BleuIO 加密狗

加密狗的腳本(可在 web 腳本文件夾中的源代碼中找到)

帶有帶 USB 端口的 STM32 微控制器的板。(Nucleo-144 開發板:NUCLEO-H743ZI2,用于開發此示例。

要將加密狗連接到 Nucleo 板,可以使用帶有 USB A 母對母適配器的“USB A 到 Micro USB B”電纜。)

STM32CubeIDE

一個 5V 繼電器

一個燈泡

5. 如何設置項目

5.1 從下方下載項目

克隆項目,或將其下載為 zip 文件并將其解壓縮到您的 STM32CubeIDE 工作區中。

5.2 作為現有項目導入

從 STM32CubeIDE 中選擇 File》Import.。。

然后選擇 General》Existing Projects into Workspace 然后點擊“Next》”

確保您在“選擇根目錄:”中選擇了您的工作區

您應該會看到項目“stm32_bleuio_example”,檢查它并單擊“完成”。

6. 運行示例

在 STMCubeIDE 中,單擊錘子圖標以構建項目。

使用 TeraTerm、Putty 或 CoolTerm 等串行終端仿真程序打開“STMicroelectronics STLink 虛擬 COM 端口”。串行端口設置:

波特率:115200

數據位:8

奇偶校驗:無

停止位:1

流量控制:無

在運行示例之前連接 BleuIO Dongle。

在 STMCubeIDE 中,單擊綠色播放按鈕閃爍并在您的板上運行它。第一次單擊它時,將出現“運行配置”窗口。您可以保持原樣,然后單擊運行。

您應該會收到以下歡迎信息:

等到顯示消息:“[BleuIO Dongle Ready]”。

您現在可以使用腳本連接另一個加密狗。

您還可以使用 uart 命令(0、1 或 2):

按 0 獲取設備信息。

1 打開燈泡。

2 關閉燈泡。

加密狗響應將打印到 UART。

7. 從網絡瀏覽器控制燈光

我們編寫了一個簡單的腳本,該腳本連接到加密狗并發送信號以從 Web 瀏覽器切換燈光。

為了讓這個腳本工作,我們需要

連接到計算機的 BleuIO USB 加密狗。

BleuIO javascript 庫

Chrome 78 或更高版本,并且您需要在 chrome://flags 中啟用 #enable-experimental-web-platform-features 標志

一個網絡打包器——(parcel js)

創建一個名為 index.html 的簡單 Html 文件,它將用作腳本的前端。此 Html 文件包含一些按鈕,可幫助連接到遠程加密狗并向其發送信號,該加密狗已連接到 stm32。

< html  lang = "en" >
< head >
 < meta  charset = "UTF-8" />
 < meta  http-equiv = "X-UA-Compatible"  content = "IE=edge" />
 <元 名稱= "viewport"  content = "width=device-width, initial-scale=1.0" />
 < link 
  href = "https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/ bootstrap.min.css”
  rel = "樣式表"
  完整性= “sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3”
  crossorigin = “匿名”
 />
 <標題>控制輕使用Bleutooth低能

<體 類= “MT-5” >
 < DIV 類= “容器MT-5” >
  < h1  class = "mb-5" >使用低功耗藍牙控制燈光
  <按鈕 類="btn btn-success"  id = "connect" >連接
  < button  class = "btn btn-warning"  id = "lightOn"  disabled >打開
  < button  class = "btn btn-danger"  id = "lightOf"  disabled > Turn Off
 
 < div  class = "container mt-5">
  <圖片 ID= "light"  src = "light_off.png"  alt = "" />

< script  src = "script.js" >

創建一個名為 script.js 的 js 文件并將其包含在 Html 文件的底部。該js文件使用BleuIO js庫來編寫AT命令并與其他加密狗通信。

import * as my_dongle from "bleuio" ;
const dongleToConnect = "[0]40:48:FD:E5:35:A5" ;
從"./light_on.png"導入lightOnImg ;
從"./light_off.png"導入lightOfImg ;
文檔.getElementById( "connect" ).addEventListener( "click" , function () {
my_dongle.at_connect();
文檔.getElementById( "lightOn" ).disabled = false ;
文檔.getElementById( "lightOf" ).disabled = false ;
文檔.getElementById( "connect" ).disabled = true ;
});

文檔.getElementById( "lightOn" ) .addEventListener ( "click" , function () {
my_dongle
 .ati ()
 . 然后((數據) => {
  //米AKE中央如果 不
  如果(JSON.stringify(數據).includes( “外設”)){
控制臺的.log( “周邊”);
my_dongle.at_central()。then ( (x) => {
console .log( "central now" );
});
  }
 })
 . then ( () => {
  //連接到加密狗
  my_dongle
.at_getconn()
. then ( (y) => {
if (JSON.stringify(y).includes(dongleToConnect)) {
 console .log( "already connected" );
}其他{
 my_dongle.at_gapconnect(dongleToConnect)。then ( () => {
  console .log( "連接成功" );
 });
}
})
. then ( () => {
//發送命令控制燈光
my_dongle.at_spssend( "L=1" )。then ( () => {
 console .log( "Turned on" );
 document .getElementById( "light" ).src = lightOnImg;
});
});
 });
});

文檔.getElementById( "lightOf" ) .addEventListener ( "click" , function () {
my_dongle
 .ati ()
 . 然后((數據) => {
  //米AKE中央如果 不
  如果(JSON.stringify(數據).includes( “外設”)){
控制臺的.log( “周邊”);
my_dongle.at_central()。then ( (x) => {
console .log( "central now" );
});
  }
 })
 . then ( () => {
  //連接到加密狗
  my_dongle
.at_getconn()
. then ( (y) => {
if (JSON.stringify(y).includes(dongleToConnect)) {
 console .log( "already connected" );
}其他{
 my_dongle.at_gapconnect(dongleToConnect)。then ( () => {
  console .log( "連接成功" );
 });
}
})
. then ( () => {
//發送命令控制燈光
my_dongle.at_spssend( "L=0" )。then ( () => {
 console .log( "Turned off" );
 document .getElementById( "light" ).src = lightOfImg;
});
});
 });
});

腳本js文件有三個按鈕動作;連接和控制燈。

現在我們需要知道另一個連接到STM32的加密狗的ID,以便我們可以連接到它。您可以使用此 Web 終端獲取加密狗 ID。

- 打開此站點 https://bleuio.com/web_terminal.html 并單擊連接到加密狗。

- 選擇合適的端口進行連接。

- 一旦它說已連接,輸入**“ATI”**。這將顯示加密狗信息和當前狀態。

- 如果加密狗處于外圍角色,請通過鍵入 **”AT+CENTRAL“** 將其設置為中央

- 現在通過鍵入 **”AT+GAPSCAN“** 進行間隙掃描

- 在列表中看到您的加密狗后,按 control+c 停止掃描

- 復制 ID 并將其粘貼到腳本 (script.js) 第 2 行中

您將需要一個網絡捆綁器。你可以使用parcel.js

安裝parcel js后,轉到根目錄并輸入“parcel index.html”。這將啟動您的開發環境。

使用parcel js 在瀏覽器上打開腳本。

您可以輕松連接到加密狗并從那里打開關閉燈。

提問/討論

這里還沒有內容,您有什么問題嗎?

我要提問/討論

推薦帖子 最新更新時間:2025-06-16 13:37

為什么語音IC接上功放電路后就沒有聲音了呢
求大神們看看是電路哪里出了問題,喇叭直接接語音IC是可以播放聲音的,但是接了功放后就沒有聲音了,。功放的1腳給的是高 為什么語音IC接上功放電路后就沒有聲音了呢 估計是接插件發生短路、焊接出現短路、功放電路中元件損壞 既然 喇叭直接接語音IC是可以播放聲音的 ,那么你的語
 吃星星的狼模擬電子
【RT-Thread軟件包應用作品】+開箱和開發環境建立
開箱和環境建立 開箱 打開紙箱,看到一個塑料小盒子,里面裝置本次使用的開發板,一條usb數據線,一個遙控器和兩條杜邦想。 正面細節圖 背面細節圖 連上USB數據線,開關達到 ON ,首次上電運行: 后面還有一頁是二
 我愛下載實時操作系統RTOS
國內有好的EDA設計工具廠商嗎
我知道EDA大巨頭都是國外的,國內有好的EDA設計工具廠商嗎? 國內有好的EDA設計工具廠商嗎 前兩天看到了一片列舉國內做EDA軟件的,有哪些忘了 我知道的有華大九天,做的EDA是IC設計上的某些工具。。 知道有一個 和某個PCB打樣商城平臺綁定一起 真正從底層做
 kernelkoderPCB設計
【零知ESP8266教程】快速入門25 blynk控制RGB LED
本文講解繼續使用blynk app+服務器(本地) + 零知ESP8266硬件的方法,通過手機APP控制RGB led三色燈。 一、硬件 1.電腦,windows系統 2.零知ESP8266開發板 3.智能手機一部 + app(Blynk) 4.micro-usb線 5.RGB
 roc2stm32/stm8
Qorvo收購Active-Semi背后你不知道的二三事!
Qorvo為什么收購Active-Semi? 這首先從Active-Semi所關注的市場的發展前景看出點端倪。如下圖所示,電源管理在Qorvo所專注的IDP(包括5G基站、國防有源相控陣、汽車和物聯網)市場的營收貢獻將會越來越多。 這也是Active-Sem
 alan000345無線連接

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

About Us 關于我們 客戶服務 聯系方式 器件索引 網站地圖 最新更新 手機版 版權聲明

EEWORLD 電路圖 站點相關: 下載中心 Datasheet 參考設計

北京市海淀區中關村大街18號B座15層1530室 電話:(010)82350740 郵編:100190

電子工程世界版權所有 京B2-20211791 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 吉水县| 长子县| 东港市| 汝州市| 宁海县| 六枝特区| 奉贤区| 龙里县| 思茅市| 正宁县| 红河县| 兴安县| 临湘市| 河北区| 洪泽县| 张掖市| 三河市| 揭阳市| 台东县| 遂昌县| 新丰县| 咸阳市| 建阳市| 博罗县| 普洱| 宁都县| 射洪县| 黔西县| 凭祥市| 阿克苏市| 双流县| 林芝县| 鲁甸县| 西安市| 垣曲县| 玛纳斯县| 拜泉县| 乐东| 木里| 宜丰县| 绥江县|