国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

具有遠(yuǎn)程控制功能的智能報(bào)警器

2024-06-01 13:58:35宋海濤
現(xiàn)代信息科技 2024年4期
關(guān)鍵詞:固件報(bào)警器藍(lán)牙

收稿日期:2023-07-28

DOI:10.19850/j.cnki.2096-4706.2024.04.038

摘? 要:介紹了一種以ESP32為內(nèi)核的具有遠(yuǎn)程控制功能的智能報(bào)警器的設(shè)計(jì)與實(shí)現(xiàn)方法。其硬件功能單元包括Wi-Fi、藍(lán)牙、存儲(chǔ)器、FM收音機(jī)、充電OTG、揚(yáng)聲器。主要實(shí)現(xiàn)了IPAWS報(bào)警推送功能、斷網(wǎng)斷電情況下FM收聽(tīng)功能;支持與手機(jī)APP連接,可以響應(yīng)遠(yuǎn)程客戶端控制命令。通過(guò)AWS-IoT控制設(shè)備交互,同時(shí)利用OTA技術(shù)實(shí)現(xiàn)了該報(bào)警器的固件文件遠(yuǎn)程升級(jí)。IPAWS系統(tǒng)通過(guò)點(diǎn)對(duì)面的形式,達(dá)到預(yù)警信息的統(tǒng)一來(lái)源和發(fā)布手段的多元化,可有效擴(kuò)大用戶的使用范圍。

關(guān)鍵詞:ESP32;智能報(bào)警器;Wi-Fi;BLE;FM;IPAWS;遠(yuǎn)程控制;遠(yuǎn)程升級(jí)

中圖分類號(hào):TP277? 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2024)04-0184-06

Intelligent Alarm with Remote Control Function

SONG Haitao

(Shanghai Chamsion Intelligent Technology Co., Ltd., Shanghai? 201112, China)

Abstract: This paper introduces the design and implementation method of an intelligent alarm with remote control function using ESP32 as the core. Its hardware functional units include Wi-Fi, Bluetooth, memory, FM radio, charging OTG, and speakers. It mainly implements IPAWS alarm push function and FM listening function in case of network interruption and power outage. It supports connection with mobile APP and can respond to remote client control commands. The interaction between devices is controlled through AWS-IoT, and the firmware file of the alarm is remotely upgraded using OTA technology. The IPAWS system achieves a unified source of warning information and diversified means of dissemination through point to surface communication, which can effectively expand the scope of user use.

Keywords: ESP32; intelligent alarm; Wi-Fi; BLE; FM; IPAWS; remote control; remote upgrade

0? 引? 言

IPAWS是美國(guó)災(zāi)害預(yù)警系統(tǒng),能通過(guò)各種渠道和方式對(duì)國(guó)民發(fā)出預(yù)警和警示。智能報(bào)警器能夠接收IPAWS警報(bào)服務(wù)信息,這些信息聚合了NOAA(美國(guó)國(guó)家海洋和大氣管理局)、CAL Fire(加州森林防火廳)等各種來(lái)源的警報(bào)。報(bào)警器集成了一個(gè)由外部服務(wù)觸發(fā)的早期預(yù)警系統(tǒng)(燈光、警報(bào)器),內(nèi)置10 000 mAh容量電池,在斷電或緊急情況下提供應(yīng)急燈或者區(qū)域照明,Smart K類音頻功放驅(qū)動(dòng)揚(yáng)聲器進(jìn)行語(yǔ)音播放和告警。該智能報(bào)警器為本公司自主研發(fā)產(chǎn)品并已量產(chǎn)。

1? 系統(tǒng)硬件架構(gòu)

該智能報(bào)警器產(chǎn)品外觀如圖1所示,系統(tǒng)平臺(tái)選用樂(lè)鑫公司ESP32方案,ESP32是高度集成的Wi-Fi+藍(lán)牙解決方案,其集成了電源管理模塊、天線開(kāi)關(guān)、濾波器、低噪聲放大器、射頻Balun、功率放大器,以及先進(jìn)的自校準(zhǔn)電路,采用CMOS工藝實(shí)現(xiàn)單芯片集成射頻和基帶,還實(shí)現(xiàn)了動(dòng)態(tài)自動(dòng)調(diào)整,可更好地適應(yīng)外部環(huán)境的變化,消除外部電路的缺陷。同時(shí),ESP32采用臺(tái)積電(TSMC)超低功耗的40 nm工藝,具有超高的射頻性能、穩(wěn)定性、通用性和可靠性,以及超低的功耗[1]。ESP32管腳布局如圖2所示。

1.1? 硬件組成原理

硬件功能單元:Wi-Fi、藍(lán)牙、存儲(chǔ)器、FM收音機(jī)、充電OTG、揚(yáng)聲器單元。主要實(shí)現(xiàn)了IPAWS報(bào)警推送功能和斷網(wǎng)斷電情況下FM收聽(tīng)功能;并支持與手機(jī)APP連接,能夠響應(yīng)遠(yuǎn)程客戶端控制命令[2]。硬件組成原理如圖3所示。

圖1? 智能報(bào)警器外觀圖

圖2? ESP32管腳布局圖

圖3? 硬件組成原理

Wi-Fi支持802.11b/g/n協(xié)議,速度150 Mbit/s。藍(lán)牙支持V4.2協(xié)議棧,含有藍(lán)牙(BR/EDR)和低功耗(BLE)藍(lán)牙[3,4]。

1.2? FM收音模塊

RDA5802是一種具有全集成合成器、中頻選擇性和MPX譯碼器的單片調(diào)頻立體聲收音機(jī)調(diào)諧器,其特點(diǎn)如下:

1)靈敏度高、噪聲小、抗干擾能力強(qiáng)、外接元件極少、體積?。ㄗ畲?1 mm×11.2 mm)。

2)76~108 MHz全球FM頻段兼容(包括日本76~91 MHz和歐美87.5~108.5 MHz)。

3)I2C串行數(shù)據(jù)總線接口通信,支持外部基準(zhǔn)時(shí)鐘輸入方式。

4)完全整合的COMS工藝單晶片集成電路,功耗極小。

5)內(nèi)置高精度A/D(模數(shù)轉(zhuǎn)換器)及數(shù)字頻率合成器。

6)內(nèi)置LDO調(diào)整、低功耗、超寬電壓使用范圍(2.7~3.6VDC)。

7)內(nèi)置噪聲消除、軟靜音、低音增強(qiáng)電路設(shè)計(jì)。

FM硬件原理如圖4所示。

1.3? 充電與OTG電路

BQ25601是TI公司高度集成的3 A開(kāi)關(guān)模式鋰電池充電管理單元和系統(tǒng)主供電源路徑管理器件。該器件可針對(duì)各種智能手機(jī)、平板電腦和便攜式設(shè)備實(shí)現(xiàn)快速充電,并提供高輸入電壓支持。其低阻抗電源路徑對(duì)開(kāi)關(guān)模式運(yùn)行效率進(jìn)行了優(yōu)化、縮短了電池充電時(shí)間并延長(zhǎng)了放電階段的電池使用壽命。其輸入電壓和電流調(diào)節(jié)可以為電池提供最大的充電功率。該解決方案在系統(tǒng)和電池之間高度集成輸入反向阻斷場(chǎng)FET、高側(cè)開(kāi)關(guān)FET、低側(cè)開(kāi)關(guān)FET以及電池FET。它還集成了自舉二極管以進(jìn)行高側(cè)柵極驅(qū)動(dòng),具有充電和反向充電功能[5]。充電OTG硬件原理如圖5所示。

圖5? 充電OTG硬件原理圖

2? 軟件系統(tǒng)架構(gòu)

2.1? AWS-IoT控制設(shè)備原理

AWS-IoT可以理解為一個(gè)物聯(lián)網(wǎng)平臺(tái),任何硬件都可以加入這個(gè)平臺(tái)并控制相應(yīng)的設(shè)備。目前ESP32平臺(tái)內(nèi)部有支持接入AWS-IoT的SDK。主要由3個(gè)模塊組成,硬件、硬件平臺(tái)的AWS-IoT SDK、AWS云服務(wù)。AWS-IoT SDK與AWS云服務(wù)的通信協(xié)議是MQTT,硬件代表一個(gè)設(shè)備,需要先把這個(gè)設(shè)備注冊(cè)到AWS平臺(tái),每一個(gè)注冊(cè)的設(shè)備會(huì)生成一個(gè)Shadow,AWS-IoT通過(guò)這個(gè)Shadow來(lái)改變這個(gè)設(shè)備的狀態(tài)[6]。AWS-IoT控制設(shè)備原理圖如圖6所示[7]。

圖6? AWS-IoT控制設(shè)備原理

2.2? MQTT簡(jiǎn)介

MQTT(消息隊(duì)列遙測(cè)傳輸協(xié)議)是基于發(fā)布/訂閱模式的“輕量級(jí)”通信協(xié)議,構(gòu)建在TCP/IP協(xié)議之上,并由IBM在1999年成功發(fā)布。MQTT優(yōu)勢(shì)在于可以使用較小的代碼和較有限的需求帶寬,使用該協(xié)議可以為遠(yuǎn)程設(shè)備提供可靠的實(shí)時(shí)消息服務(wù),其在小型設(shè)備、物聯(lián)網(wǎng)、移動(dòng)通信等方面具有廣泛的應(yīng)用。它含有以下主要特性:

1)使用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布。

2)對(duì)負(fù)載內(nèi)容屏蔽的消息傳輸。

3)使用TCP/IP提供網(wǎng)絡(luò)連接。

4)MQTT協(xié)議分為:發(fā)布者、代理(服務(wù)器)、訂閱者??蛻舳耸窍⒌陌l(fā)布者和訂閱者,服務(wù)器是消息代理,消息發(fā)布者同時(shí)可以是訂閱者[8]。

5)MQTT傳輸消息:主題和負(fù)載兩類。主題是指消息的類型,訂閱者訂閱后就會(huì)收到該主題的消息內(nèi)容。負(fù)載是指消息的內(nèi)容,訂閱者要使用的具體內(nèi)容[9]。

MQTT流程如圖7所示。

3? 程序介紹

3.1? 主函數(shù)

voidapp_main()

{

/*輸出log 相關(guān)配置我們不需要關(guān)心*/

ESP_LOGI(TAG, "[APP] Startup..");

/*獲取空閑內(nèi)存大小*/

ESP_LOGI(TAG, "[APP] Free memory: %d bytes", esp_get_free_heap_size());

/*打印當(dāng)前idf的版本*/

ESP_LOGI(TAG, "[APP] IDF version: %s", esp_get_idf_version());

/*配置打印信息*/

esp_log_level_set("*", ESP_LOG_INFO);

/*flash 初始化,tcp/ip通信時(shí)需要使用flash*/

nvs_flash_init();

/*wifi初始化*/

wifi_init();

/*mqtt開(kāi)始運(yùn)行*/

mqtt_app_start();

}

3.2? Wi-Fi函數(shù)

static void wifi_init(void)

{

tcpip_adapter_init();//tcpip 協(xié)議棧初始化,使用網(wǎng)絡(luò)時(shí)必須調(diào)用此函數(shù)

/*創(chuàng)建一個(gè)freeRTOS的事件標(biāo)志組,用于當(dāng)wifi沒(méi)有連接時(shí)將程序停下,只有wifi連接成功了才能繼續(xù)運(yùn)行程序*/

wifi_event_group = xEventGroupCreate();

/*配置 wifi的回調(diào)函數(shù),用于連接wifi*/

/*

* ESP_ERROR_CHECK檢查函數(shù)返回值

*/

ESP_ERROR_CHECK(esp_event_loop_init

(wifi_event_handler, NULL));

/*wifi配置*/

wifi_init_config_tcfg = WIFI_INIT_CONFIG_DEFAULT();

ESP_ERROR_CHECK(esp_wifi_init(&cfg));

wifi_config_twifi_config = {

.sta = {

.ssid = CONFIG_WIFI_SSID,

.password = CONFIG_WIFI_PASSWORD,

},

};

/*設(shè)置wifi 為sta模式*/

ESP_ERROR_CHECK(esp_wifi_set_mode

(WIFI_MODE_STA));

/*開(kāi)始運(yùn)行wifi*/

ESP_ERROR_CHECK(esp_wifi_start());

ESP_LOGI(TAG, "Waiting for wifi");

/*等待事件標(biāo)志,成功獲取到事件標(biāo)志位后才繼續(xù)執(zhí)行,否則一直等在這里*/

xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY);

}

/*wifi 的中斷回調(diào)函數(shù),檢測(cè)wifi的事件標(biāo)志位*/

static esp_err_twifi_event_handler(void *ctx, system_event_t *event)

{

switch (event->event_id) {

case SYSTEM_EVENT_STA_START://開(kāi)始執(zhí)行station

esp_wifi_connect();//根據(jù)wifi配置,連接wifi

break;

case SYSTEM_EVENT_STA_GOT_IP://成功獲取到ip,表示聯(lián)網(wǎng)成功

xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);//設(shè)置事件標(biāo)志位,程序繼續(xù)運(yùn)行

break;

case SYSTEM_EVENT_STA_DISCONNECTED:

//station 已經(jīng)斷開(kāi)了,重新連接wifi

esp_wifi_connect();

xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);

break;

default:

break;

}

return ESP_OK;

}

3.3? MQTT函數(shù)

static void mqtt_app_start(void)

{

/*配置mqtt ,broker 地址和mqtt的事件回調(diào)函數(shù)*/

esp_mqtt_client_config_tmqtt_cfg = {

.uri = CONFIG_BROKER_URL,

.event_handle = mqtt_event_handler,

// .user_context = (void *)your_context

};

esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);//出事mqtt的相關(guān)配置

esp_mqtt_client_start(client);//開(kāi)始執(zhí)行mqtt

}

static esp_err_tmqtt_event_handler(esp_mqtt_event_handle_t event)

{

esp_mqtt_client_handle_t client = event->client;

int msg_id;

// your_context_t *context = event->context;

switch (event->event_id) {

case MQTT_EVENT_CONNECTED://MQTT 已連接

/*發(fā)布主題/topic/qos1*/

msg_id = esp_mqtt_client_publish(client, "/topic/qos1", "data_3", 0, 1, 0);

ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);

/*訂閱主題/topic/qos0 */

msg_id = esp_mqtt_client_subscribe(client, "/topic/qos0", 0);

/*取消訂閱/topic/qos1*/

msg_id = esp_mqtt_client_unsubscribe(client, "/topic/qos1");

break;

case MQTT_EVENT_DISCONNECTED://MQTT斷開(kāi)連接

break;

case MQTT_EVENT_SUBSCRIBED://MQTT收到訂閱信息

msg_id = esp_mqtt_client_publish(client, "/topic/qos0", "data", 0, 0, 0); break;

case MQTT_EVENT_UNSUBSCRIBED:

break;

case MQTT_EVENT_PUBLISHED:

break;

case MQTT_EVENT_DATA://

printf("TOPIC=%.*s\r\n", event->topic_len, event->topic);//主題名稱

printf("DATA=%.*s\r\n", event->data_len, event->data);//負(fù)載信息

break;

case MQTT_EVENT_ERROR:

break;

default:

break;

}

return ESP_OK;

}

4? 智能報(bào)警器OTA升級(jí)

智能報(bào)警器支持無(wú)線升級(jí)方式,對(duì)當(dāng)前的固件文件進(jìn)行更新。連接HTTP服務(wù)器,發(fā)送請(qǐng)求Get升級(jí)固件,每次讀取1 KB固件數(shù)據(jù),寫(xiě)入Flash:

While(flag)

{

Recv(socket_id,text,TEXT_BUFFSIZE,0);

if (recv_len<0)

task_fatal_error? //停止

else if (recv_len>0)&&(!resp_body_start)? //解析 http response

resp_body_start = read_past_http_header

else if (recv_len>0)&&(!resp_body_start)? //寫(xiě)入數(shù)據(jù)到Flash

esp_ota_write(update_handle,(const void *)ota_write_data,buff_len);

else if (buff_len == 0)? //升級(jí)完畢

close(socket_id)

break

else

unknow case

}

智能報(bào)警器OTA流程如圖8所示。

圖8? OTA流程圖

4.1? Flash空間分區(qū)配置

智能報(bào)警器集成4M SPI Flash。有三種分區(qū)選擇:工廠程序(無(wú)OTA分區(qū))、工廠程序(雙OTA分區(qū))、

用戶自定義分區(qū)。智能報(bào)警器使用partitions_two_ota_coredump配置分區(qū)時(shí),4M SPI Flash的分區(qū)情況如圖9所示。

圖9? Flash空間分區(qū)

4.2? OTA升級(jí)策略

智能報(bào)警器升級(jí)策略:報(bào)警器SPI Flash內(nèi)有與升級(jí)相關(guān)的至少4個(gè)分區(qū):OTA data、Factory App、OTA_0、OTA_1。其中Factory App內(nèi)存有出廠時(shí)的默認(rèn)固件。

首次進(jìn)行OTA升級(jí)時(shí),OTA向OTA_0分區(qū)燒錄目標(biāo)固件,并在燒錄完成后,更新OTA data分區(qū)數(shù)據(jù)并重啟。系統(tǒng)重啟時(shí)獲取OTA data分區(qū)數(shù)據(jù)進(jìn)行計(jì)算,決定此后加載OTA_0分區(qū)的固件執(zhí)行(而不是默認(rèn)的Factory App分區(qū)內(nèi)的固件),從而實(shí)現(xiàn)升級(jí)[10]。

同理,若某次升級(jí)后智能報(bào)警器已經(jīng)在執(zhí)行OTA_0內(nèi)的固件,此時(shí)再升級(jí)時(shí)OTA就會(huì)向OTA_1分區(qū)寫(xiě)入目標(biāo)固件。再次啟動(dòng)后,執(zhí)行OTA_1分區(qū)實(shí)現(xiàn)升級(jí)。以此類推。升級(jí)的目標(biāo)固件始終在OTA_0 OTA_1兩個(gè)分區(qū)之間交互燒錄,不會(huì)影響到出廠時(shí)的Factory App固件。

這樣做的好處是,即使新的固件文件被損壞,也可以通過(guò)重啟恢復(fù)到舊的固件文件當(dāng)中運(yùn)行。Dual Bank Flash布局如圖10所示。

5? 結(jié)? 論

IPAWS系統(tǒng)通過(guò)點(diǎn)對(duì)面的形式,達(dá)到預(yù)警信息的統(tǒng)一來(lái)源和發(fā)布手段的多元化。經(jīng)過(guò)北美客戶實(shí)際測(cè)試運(yùn)行,智能報(bào)警器可以成功接收IPAWS服務(wù),緊急情況下可以拓展人們接收信息的來(lái)源,也能提供基本的照明與告警提醒,其對(duì)我國(guó)突發(fā)事件預(yù)警與警示系統(tǒng)的建設(shè)具有重要的啟發(fā)價(jià)值。

參考文獻(xiàn):

[1] 裘炯濤,陳眾賢.物聯(lián)網(wǎng),So Easy!基于Blynk平臺(tái)的IOT項(xiàng)目實(shí)踐 [M].北京:人民郵電出版社,2019.

[2] 趙英杰.完美圖解物聯(lián)網(wǎng)IoT實(shí)操 [M].北京:電子工業(yè)出版社,2017.

[3] 夏保成.美國(guó)IPAWS系統(tǒng)及對(duì)我國(guó)預(yù)警系統(tǒng)建設(shè)的啟示 [J].電子科技大學(xué)學(xué)報(bào):社科版,2011,13(4):2-5.

[4] 姚文祥.ARM Cortex-M3與Cortex-M4權(quán)威指南:第3版 [M].吳常玉,曹孟娟,王麗紅 譯.北京:清華大學(xué)出版社,2015.

[5] 金純,李婭萍,曾偉,等.BLE低功耗藍(lán)牙技術(shù)開(kāi)發(fā)指南 [M].北京:國(guó)防工業(yè)出版社,2016.

[6] 派珀,克林頓.AWS解決方案架構(gòu)師學(xué)習(xí)與備考:第3版 SAA-C02 [M].殷海英,譯.北京:清華大學(xué)出版社,2022.

[7] 海登.低功耗藍(lán)牙開(kāi)發(fā)權(quán)威指南 [M].陳燦峰,劉嘉,譯,北京:機(jī)械工業(yè)出版社,2014:345.

[8] 柯思悅,劉思龍,劉佳.基于TOF距離傳感器的疫情防控距離控制器 [J].計(jì)算機(jī)科學(xué)與應(yīng)用,2022,12(1):72-82.

[9] 周汗,迪瓦恩,哈拉克米.AWS高級(jí)網(wǎng)絡(luò)官方學(xué)習(xí)指南 [M].姚力,譯.北京:清華大學(xué)出版社,2020.

[10] 瓦厄.物聯(lián)網(wǎng)實(shí)戰(zhàn)指南 [M].黃峰達(dá),王小兵,譯.北京:機(jī)械工業(yè)出版社,2016:175.

作者簡(jiǎn)介:宋海濤(1982—),男,漢族,遼寧鐵嶺人,工程師,本科,主要研究方向:產(chǎn)品開(kāi)發(fā)設(shè)計(jì)。

猜你喜歡
固件報(bào)警器藍(lán)牙
藍(lán)牙音箱的直線之美
簡(jiǎn)單、易用,可玩性強(qiáng)Q AcousticsBT3藍(lán)牙音箱
自制下雨報(bào)警器
適合自己的才是最好的 德生(TECSUN) BT-50藍(lán)牙耳機(jī)放大器
緊急:藍(lán)牙指尖陀螺自燃!安全隱患頻出
玩具世界(2017年8期)2017-02-06 03:01:38
基于無(wú)線通信的入侵報(bào)警器設(shè)計(jì)
電子制作(2017年24期)2017-02-02 07:14:15
基于固件的遠(yuǎn)程身份認(rèn)證
基于AltiumDesigner10 的UPS電源停電報(bào)警器的設(shè)計(jì)
西藏科技(2015年2期)2015-09-26 12:18:34
提取ROM固件中的APP
一種通過(guò)USB接口的可靠固件升級(jí)技術(shù)
辽阳市| 剑河县| 高雄市| 凤庆县| 全南县| 阿图什市| 荆门市| 水富县| 库伦旗| 普宁市| 巨鹿县| 调兵山市| 卢氏县| 云浮市| 凌云县| 贡嘎县| 蒙自县| 尼木县| 岑溪市| 湘潭市| 蒙阴县| 奉化市| 镇赉县| 嘉峪关市| 墨竹工卡县| 朝阳区| 高要市| 天祝| 慈溪市| 岚皋县| 鸡东县| 织金县| 彩票| 宝清县| 丹江口市| 芒康县| 正镶白旗| 来凤县| 湖南省| 衡南县| 绩溪县|