欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

科技觀察員 ? 來源:hackster.io ? 作者:hackster.io ? 2022-05-12 17:15 ? 次閱讀

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

家庭自動(dòng)化涉及自動(dòng)化家庭環(huán)境設(shè)備。為此,我們開發(fā)了一種易于安裝的智能燈泡,并且可以通過網(wǎng)絡(luò)瀏覽器或智能手機(jī)應(yīng)用程序控制連接的設(shè)備。該項(xiàng)目的目的是使用網(wǎng)絡(luò)瀏覽器或智能手機(jī)控制不同的家用電器。

一、介紹

該項(xiàng)目展示了一種使用 BleuIO Dongle 打開和關(guān)閉通過 5V 繼電器連接到 STM32 Nucleo-144 的燈泡的簡(jiǎn)單方法。

您將需要兩個(gè)加密狗,一個(gè)連接到 Nucleo 板,一個(gè)連接到計(jì)算機(jī),運(yùn)行 Web 腳本。

當(dāng) BleuIO Dongle 連接到 Nucleo 板的 USB 端口時(shí),STM32 會(huì)識(shí)別它并直接開始廣告。這允許另一個(gè)加密狗連接到它。

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

輸入結(jié)果

0 向 BlueIO Dongle 發(fā)送 ATI(請(qǐng)求設(shè)備信息)命令。

1 手動(dòng)打開燈泡

2 手動(dòng)關(guān)閉燈泡

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

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

警告 – 該項(xiàng)目涉及可能導(dǎo)致嚴(yán)重傷害或死亡的高電壓。在對(duì)電路進(jìn)行操作之前,請(qǐng)采取所有必要的預(yù)防措施,并關(guān)閉電路的所有電源

2. 連接繼電器

謹(jǐn)防:

試驗(yàn)交流電時(shí)請(qǐng)務(wù)必小心,觸電會(huì)導(dǎo)致嚴(yán)重傷害!風(fēng)險(xiǎn)通知;免責(zé)聲明

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

poYBAGJ8z1aAW3oaAALm20kIneo215.png

pYYBAGJ8z1uAbGIUAAZypzJ2Myk427.png

3. 關(guān)于守則

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

在引腳視圖中,我們將 GPIO PE4 設(shè)置為 OUTPUT 并將其標(biāo)記為“燈泡”。

poYBAGJ8z2GAIoAXAADDCWz8MQ0229.png

在 USB_HOST\usb_host.c 中的 USBH_CDC_ReceiveCallback 函數(shù)中,我們將 CDC_RX_Buffer 復(fù)制到一個(gè)名為 dongle_response 的外部變量中,該變量可從 main.c 文件訪問。

pYYBAGJ8z2eAang1AADradc2VH8818.png

在 main.c 中,我們創(chuàng)建了一個(gè)簡(jiǎn)單的解釋器,以便我們可以對(duì)從加密狗接收到的數(shù)據(jù)做出反應(yīng)。

void dongle_interpreter ( uint8_t * input)
{

if ( strlen (( char *)input) != 0 )
{
if ( strstr (( char *)input, "\r\n廣告..." ) != NULL )
{
isAdvertising = true ;
}
if ( strstr (( char *)input, "\r\n廣告已停止。" ) != NULL )
{
isAdvertising = false ;
}
if ( strstr (( char *)input, "\r\nCONNECTED" ) != NULL )
{
isConnected =真;
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_1, GPIO_PIN_SET);
}
if ( strstr (( char *)input, "\r\nDISCONNECTED" ) != 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, "\r\n燈泡是 %s\r\n" , 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, "\r\n燈泡是 %s\r\n" , 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 函數(shù),以便我們可以通過 UART 手動(dòng)控制燈泡。

void handleUartInput (UARTCommandTypeDef cmd)
{
switch (cmd)
{
情況UART_RX_0:
{
// 0
uart_buf_len = sprintf (uart_tx_buf, "\r\n(0 press )\r\n" );
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, "\r\n(1 個(gè)按下的燈泡亮了!)\r\n" );
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, "\r\n(2 按下燈泡關(guān)閉!)\r\n" );
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:
{
打破;
}
默認(rèn):
{
uartStatus = UART_RX_NONE;
打破;
}
}
}

我們將解釋器函數(shù)放在主循環(huán)中。

poYBAGJ8z3GAYvKnAADUuQaz-Ek893.png

4. 使用示例項(xiàng)目

4.1 你需要什么

兩個(gè) BleuIO 加密狗

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

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

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

pYYBAGJ8z3eACGKmAAKi4w78b94120.png

STM32CubeIDE

一個(gè) 5V 繼電器

一個(gè)燈泡

5. 如何設(shè)置項(xiàng)目

5.1 從下方下載項(xiàng)目

克隆項(xiàng)目,或?qū)⑵湎螺d為 zip 文件并將其解壓縮到您的 STM32CubeIDE 工作區(qū)中。

5.2 作為現(xiàn)有項(xiàng)目導(dǎo)入

從 STM32CubeIDE 中選擇 File》Import.。。

poYBAGJ8z3yAdnVfAAEuNirKfmk620.png

然后選擇 General》Existing Projects into Workspace 然后點(diǎn)擊“Next》”

pYYBAGJ8z4GAVCfdAAFyAPGyI1I470.png

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

您應(yīng)該會(huì)看到項(xiàng)目“stm32_bleuio_example”,檢查它并單擊“完成”。

poYBAGJ8z4eABvgFAAExf5BmihY023.png

6. 運(yùn)行示例

在 STMCubeIDE 中,單擊錘子圖標(biāo)以構(gòu)建項(xiàng)目。

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

波特率:115200

數(shù)據(jù)位:8

奇偶校驗(yàn):無

停止位:1

流量控制:無

在運(yùn)行示例之前連接 BleuIO Dongle。

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

您應(yīng)該會(huì)收到以下歡迎信息:

poYBAGJ8z5eAcFmIAAB0iXLAwJc818.png

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

poYBAGJ8z6aAHJSBAABi09hH440378.png

您現(xiàn)在可以使用腳本連接另一個(gè)加密狗。

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

按 0 獲取設(shè)備信息。

1 打開燈泡。

2 關(guān)閉燈泡。

加密狗響應(yīng)將打印到 UART。

7. 從網(wǎng)絡(luò)瀏覽器控制燈光

我們編寫了一個(gè)簡(jiǎn)單的腳本,該腳本連接到加密狗并發(fā)送信號(hào)以從 Web 瀏覽器切換燈光。

為了讓這個(gè)腳本工作,我們需要

連接到計(jì)算機(jī)的 BleuIO USB 加密狗。

BleuIO javascript 庫(kù)

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

一個(gè)網(wǎng)絡(luò)打包器——(parcel js)

創(chuàng)建一個(gè)名為 index.html 的簡(jiǎn)單 Html 文件,它將用作腳本的前端。此 Html 文件包含一些按鈕,可幫助連接到遠(yuǎn)程加密狗并向其發(fā)送信號(hào),該加密狗已連接到 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/[email protected]/dist/css/ bootstrap.min.css”
rel = "樣式表"
完整性= “sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3”
crossorigin = “匿名”
/>
<標(biāo)題>控制輕使用Bleutooth低能

<體 類= “MT-5” >
< DIV 類= “容器MT-5” >
< h1 ?class = "mb-5" >使用低功耗藍(lán)牙控制燈光
<按鈕 類="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" >

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

import * as my_dongle from "bleuio" ;
const dongleToConnect = "[0]40:48:FD:E5:35:A5" ;
從"./light_on.png"導(dǎo)入lightOnImg ;
從"./light_off.png"導(dǎo)入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 ()
. 然后((數(shù)據(jù)) => {
//米AKE中央如果 不
如果(JSON.stringify(數(shù)據(jù)).includes( “外設(shè)”)){
控制臺(tái)的.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 ( () => {
//發(fā)送命令控制燈光
my_dongle.at_spssend( "L=1" )。then ( () => {
console .log( "Turned on" );
document .getElementById( "light" ).src = lightOnImg;
});
});
});
});

文檔.getElementById( "lightOf" ) .addEventListener ( "click" , function () {
my_dongle
.ati ()
. 然后((數(shù)據(jù)) => {
//米AKE中央如果 不
如果(JSON.stringify(數(shù)據(jù)).includes( “外設(shè)”)){
控制臺(tái)的.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 ( () => {
//發(fā)送命令控制燈光
my_dongle.at_spssend( "L=0" )。then ( () => {
console .log( "Turned off" );
document .getElementById( "light" ).src = lightOfImg;
});
});
});
});

腳本js文件有三個(gè)按鈕動(dòng)作;連接和控制燈。

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

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

- 選擇合適的端口進(jìn)行連接。

- 一旦它說已連接,輸入**“ATI”**。這將顯示加密狗信息和當(dāng)前狀態(tài)。

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

- 現(xiàn)在通過鍵入 **”AT+GAPSCAN“** 進(jìn)行間隙掃描

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

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

您將需要一個(gè)網(wǎng)絡(luò)捆綁器。你可以使用parcel.js

安裝parcel js后,轉(zhuǎn)到根目錄并輸入“parcel index.html”。這將啟動(dòng)您的開發(fā)環(huán)境。

pYYBAGJ8z06AJd9cAAEfbnMK3eI255.png

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10925

    瀏覽量

    357707
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    670

    瀏覽量

    59606
  • 智能燈泡
    +關(guān)注

    關(guān)注

    5

    文章

    76

    瀏覽量

    35662
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    智能燈泡拆解圖

    ` [拆解] 靈感智慧LED智能燈泡 Light III實(shí)用又智能 今天剛出差回來就迫不及待把上周已到貨的LINGAN III智能燈泡瘋狂滴
    發(fā)表于 01-11 13:18

    STM32CubeIDE為啟用BLESTM32WB生成的任何程序都會(huì)掛起怎么解決?

    我使用 STM32CubeIDE 為啟用BLESTM32WB 生成的任何程序都會(huì)掛起,直到我注釋掉以下行。初始化順序需要更改什么?/*** 我們永遠(yuǎn)不應(yīng)該在這種情況下結(jié)束*
    發(fā)表于 12-05 06:01

    STM32WB BLE無法啟用調(diào)試UART是何原因呢

    我正在嘗試遵循AN5604(STM32WB 系列 BLE 互操作性報(bào)告),但無法啟用調(diào)試 UART。Nucleo 的 stlink 的 COM 端口沒有顯示任何內(nèi)容,但程序正在運(yùn)行,我能夠從我的手機(jī)
    發(fā)表于 12-23 08:53

    如何使用STMCubeIDE在STM32WB5MMG中啟用BLE和USB(DFU 模式)?

    我們使用 STM32WB5MMG 制作了定制 PCB 板。我們嘗試使用 STMCubeIDE 將 BLE 和 USB(DFU 模式)連接在一起,但如果我們啟用
    發(fā)表于 02-01 07:44

    用小型閃光燈泡制作閃光燈

    用小型閃光燈泡制作閃光燈 原理見圖7-46(c)。用一只閃光燈泡HL和一只220V。25W的白熾燈泡EL,
    發(fā)表于 09-12 14:46 ?2135次閱讀
    用小型閃光<b class='flag-5'>燈泡</b><b class='flag-5'>制作</b>閃光燈

    燈泡沒有WiFi也智能 智能燈泡顯個(gè)性

    智能燈泡風(fēng)起云涌,美國(guó)硅谷SmartHome Lab推出基于藍(lán)牙的RoboSmart智能照明產(chǎn)品。只需一個(gè)簡(jiǎn)單的iOS程序,即可方便的控制與配置你的RoboSmart燈泡。
    發(fā)表于 05-28 15:42 ?2196次閱讀

    LED智能燈泡有什么用?體驗(yàn)智能家居從智能燈泡開始?

    LED智能燈較傳統(tǒng)的智能燈沒有什么區(qū)別,只是加裝了控制系統(tǒng)和鏈接通訊模塊,可以隨意變換的色彩,制作多種情景模式,如觸電智能燈,不僅可以1600W色隨意變換。如果你也這樣想那就錯(cuò)了。無論
    的頭像 發(fā)表于 07-26 11:37 ?1.4w次閱讀

    如何制作燈泡

    要想在家里制作燈泡,那可不是很容易的。下面就讓小編給大家介紹一下制作燈泡的做法。
    的頭像 發(fā)表于 02-14 14:45 ?4.8w次閱讀

    stm32wb55 基于rtt的ble sample制作過程

    stm32wb55 基于rtt的ble sample制作過程準(zhǔn)備活動(dòng)硬件stm32wb55 nucleo開發(fā)板stm32wb55 dangl
    發(fā)表于 12-20 19:39 ?13次下載
    <b class='flag-5'>stm32</b>wb55 基于rtt的<b class='flag-5'>ble</b> sample<b class='flag-5'>制作</b>過程

    如何利用ESP32和Arduino制作BLE檢測(cè)器

    在本文中,我將向您展示如何在ESP32 和 Arduino 的幫助 下制作一個(gè)簡(jiǎn)單的BLE 存在檢測(cè)器,最后,我們將在我的智能手機(jī)和智能手表上使用
    的頭像 發(fā)表于 08-09 17:15 ?6656次閱讀
    如何利用ESP32和Arduino<b class='flag-5'>制作</b><b class='flag-5'>BLE</b>檢測(cè)器

    STM32WB藍(lán)牙?低功耗(BLE)無線接口

    STM32WB藍(lán)牙?低功耗(BLE)無線接口
    發(fā)表于 11-21 08:11 ?1次下載
    <b class='flag-5'>STM32</b>WB藍(lán)牙?低功耗(<b class='flag-5'>BLE</b>)無線接口

    STM32WB BLE 堆棧編程指南

    STM32WB BLE 堆棧編程指南
    發(fā)表于 11-24 08:29 ?3次下載
    <b class='flag-5'>STM32</b>WB <b class='flag-5'>BLE</b> 堆棧編程指南

    制作一個(gè)適合當(dāng)前吸頂燈的智能燈泡

    電子發(fā)燒友網(wǎng)站提供《制作一個(gè)適合當(dāng)前吸頂燈的智能燈泡.zip》資料免費(fèi)下載
    發(fā)表于 01-03 11:34 ?0次下載
    <b class='flag-5'>制作</b>一個(gè)適合當(dāng)前吸頂燈的<b class='flag-5'>智能</b><b class='flag-5'>燈泡</b>

    STM32WB BLE應(yīng)用低功耗設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《STM32WB BLE應(yīng)用低功耗設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 09-20 14:58 ?5次下載
    <b class='flag-5'>STM32</b>WB <b class='flag-5'>BLE</b>應(yīng)用低功耗設(shè)計(jì)

    STM32WB55RG開發(fā)(3)----生成 BLE 程序連接手機(jī)APP

    本項(xiàng)目旨在利用 STM32WB55 微控制器的藍(lán)牙低功耗(BLE)功能,實(shí)現(xiàn)與手機(jī) APP 的無線連接。通過配置時(shí)鐘源、啟動(dòng)關(guān)鍵模塊(如 RCC、RTC、RF、IPCC 和 HSEM),以及啟用藍(lán)牙功能,用戶可以創(chuàng)建一個(gè)穩(wěn)定的
    的頭像 發(fā)表于 12-16 16:06 ?423次閱讀
    <b class='flag-5'>STM32</b>WB55RG開發(fā)(3)----生成 <b class='flag-5'>BLE</b> 程序連接手機(jī)APP