演示視頻:https://www.bilibili.com/video/BV1oS4y1z7Qv
環(huán)境搭建:嗶哩嗶哩:https://www.bilibili.com/video/BV1PY41147z8
一、課題詳情
1、項目描述
基于OpenHarmony開發(fā)一款智能錄音筆,功能如下:
1,能夠支持錄音
2,支持配網(wǎng)
3,支持錄音上傳生成文稿
2、項目產(chǎn)出
滿足功能的實物硬件+軟件
3、項目主要創(chuàng)新點
使用一句話識別API,翻譯生成文稿并上傳
二、設計思路與方案
1、作品設計思路(包含系統(tǒng)架構(gòu)圖、程序流程圖、軟硬件工具等)


圖1 基本流程圖
整體系統(tǒng)流程圖如上,在上電初始化后判斷是否能直接入網(wǎng)(flash存儲掉電WIFI信息),若不能直接聯(lián)網(wǎng)則進行配網(wǎng)操作,此時拒絕聯(lián)網(wǎng)只能實現(xiàn)基礎錄音放音功能,當使用數(shù)字管家進行配網(wǎng)后,進行API的初始化,在進行錄音后若選擇文稿導出功能則上報數(shù)據(jù)和返回。
二、項目內(nèi)容
(1)選用Hi3861芯片開發(fā);
(2)使用Codec_Wm8978實現(xiàn)收音放音;
(3)使用WIFI_AP_STA實現(xiàn)WEB配網(wǎng);
(4)使用云服務語音API識別實現(xiàn)語音識別;
三、編譯環(huán)境搭建(純windows下開發(fā))
詳細操作流程可參考上方視頻
四、WEB配網(wǎng)
嗶哩嗶哩視頻:
https://www.bilibili.com/video/BV19L411M75o
CSDN:
https://blog.csdn.net/weixin_42193239/article/details/121717340
1、華為配網(wǎng)方式

通過NFC讀取的方式,得到設備ID,拉起數(shù)字管家驗證后進行連接,配網(wǎng)可分為下面兩種:

包括NAN配網(wǎng)和AP配網(wǎng),可理解為使用的WIFI能力按照固定協(xié)議傳輸要進行配網(wǎng)的熱點的SSID和PASSWAD,實現(xiàn)設備的聯(lián)網(wǎng)功能,在這個工程中按照既定協(xié)議實現(xiàn)UI的進度可視化。

搭配原子化服務卡片和實現(xiàn)上圖的拉起效果。
2、WEB配網(wǎng)介紹

使用手機或其它第三方設備連接需配網(wǎng)設備產(chǎn)生的SoftAP熱點,熱點構(gòu)造http協(xié)議下的web網(wǎng)頁,通過網(wǎng)頁的輸入框和按鈕等來實現(xiàn)配網(wǎng),詳細的補充如下圖:



3、WEB配網(wǎng)程序
見文檔頭部的鏈接;
4、使用到的參考資料
小熊派開源項目:
https://gitee.com/bearpi/bearpi-hm_nano/tree/master/applications/BearPi/BearPi-HM_Nano/sample
潤和開源項目:
https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development/tree/master
五、配網(wǎng)過程
1.1項目描述
使用潤和HI3861開發(fā)板實現(xiàn)WEB配網(wǎng),具有輸入路由器帳號密碼進行連接,并掉電保存的功能,實現(xiàn)設備快速入網(wǎng)。
1.2資源獲取
演示視頻:https://www.bilibili.com/video/BV19L411M75o
程序代碼:包括下面六個文件
https://pan.baidu.com/s/1zBl3zI-dmxMVD-Xsyy1YHw
提取碼:1234
二. 解決方法
2.1基本流程

2.2實現(xiàn)原理
以HI3861芯片為核心,使用STA/AP兼容模式實現(xiàn)TCP服務器的功能,通過固定解析內(nèi)容實現(xiàn)為網(wǎng)頁服務器(可實現(xiàn)網(wǎng)頁訪問)。當手機或其它設備使用TCP連接設備產(chǎn)生的熱點后,訪問固定IP,即可打開固化在板子內(nèi)部的HTML網(wǎng)頁,輸入目標帳號和密碼后點擊提交,此時數(shù)據(jù)讀入芯片,驗證是否可連接成功,若成功的話將該數(shù)據(jù)寫入FLASH存儲器,可掉電保存。
2.3解決方案
任何需要上網(wǎng)的場景應用,碰一碰配網(wǎng)暫時只支持鴻蒙系統(tǒng)的設備,而WEB配網(wǎng)在任何有能力訪問互聯(lián)網(wǎng)的設備上均可實現(xiàn)。
三. 代碼結(jié)構(gòu)
3.1 創(chuàng)建AP熱點
手機/其它設備需要先連接設備產(chǎn)生的熱點后才能實現(xiàn)TCP的連接,在HI3861中創(chuàng)建熱點包括下面幾步:
(1)注冊回調(diào)
//注冊wifi事件的回調(diào)函數(shù)
g_wifiEventHandler.OnHotspotStaJoin = OnHotspotStaJoinHandler;
g_wifiEventHandler.OnHotspotStaLeave = OnHotspotStaLeaveHandler;
g_wifiEventHandler.OnHotspotStateChanged = OnHotspotStateChangedHandler;
RegisterWifiEvent(&g_wifiEventHandler);
(2)裝載熱點名稱與密碼
#define AP_SSID “Lal_Han”
#define AP_PSK “12345678”
strcpy(config.ssid, AP_SSID);
strcpy(config.preSharedKey, AP_PSK);
config.securityType = WIFI_SEC_TYPE_OPEN;//選擇不需要密碼
config.band = HOTSPOT_BAND_TYPE_2G;
config.channelNum = 7;
SetHotspotConfig(&config);
在上面的程序中裝載入創(chuàng)建熱點的名稱,雖然設定了密碼,但在WIFI安全類型部分我們選擇的開放式(無需密碼即可連接),最后由SetHotspotConfig函數(shù)設定該部分設置。
(3)打開熱點與分配IP設定
//啟動wifi熱點模式
error = EnableHotspot();
//啟動dhcp
g_lwip_netif = netifapi_netif_find(“ap0”);
IP4_ADDR(&bp_gw,192,168,1,1);
IP4_ADDR(&bp_ipaddr,192,168, 1, 1);
IP4_ADDR(&bp_netmask, 255, 255, 255, 0);
netifapi_netif_set_addr(g_lwip_netif,&bp_ipaddr,&bp_netmask, &bp_gw);
netifapi_dhcps_start(g_lwip_netif, 0, 0);
我們在使用AP/STA模式時,創(chuàng)建熱點可當做一個路由器來理解,需要設定IP段與網(wǎng)關,并且當其它設備連接的時候?qū)崿F(xiàn)一個分配IP功能。
3.2 創(chuàng)建TCP服務器
在創(chuàng)建完熱點后要實現(xiàn)的是TCP服務器功能,互聯(lián)網(wǎng)上任何數(shù)據(jù)連接的底層基本都是TCP或UDP,例如網(wǎng)頁訪問、網(wǎng)絡游戲和在線視頻等等,都是通過TCP來實現(xiàn)數(shù)據(jù)按照固定協(xié)議的發(fā)送與解析來實現(xiàn)的。
在WEB配網(wǎng)中同樣用到了TCP功能,設備作為TCP服務器后等待設備連接,連接成功后等待設備使用瀏覽器訪問,再發(fā)回HTML網(wǎng)頁界面,代碼包括以下幾個部分:
(1)創(chuàng)建socket接口
sock_fd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&server_sock, sizeof(server_sock));
server_sock.sin_family = AF_INET;
server_sock.sin_addr.s_addr = htonl(INADDR_ANY);
server_sock.sin_port = htons(PROT);
//調(diào)用bind函數(shù)綁定socket和地址
bind(sock_fd, (struct sockaddr *)&server_sock, sizeof(struct sockaddr))
//調(diào)用listen函數(shù)監(jiān)聽(指定port監(jiān)聽)
listen(sock_fd, TCP_BACKLOG)
socket是TCP的另一種叫法,在該部分設定TCP服務器的IP(192.168.4.1)和端口(80),因為網(wǎng)頁訪問的默認端口都是80。例如訪問百度網(wǎng)頁(www.baidu.com),我們通過ping該域名得到ip(220.181.38.148)。在瀏覽器中輸入http://220.181.38.148:80/會發(fā)現(xiàn)打開的確實是百度的頁面,這就是網(wǎng)頁訪問發(fā)起的實際地址。
(2)等待客戶端連接
new_fd = accept(sock_fd, (struct sockaddr *)&client_sock, (socklen_t *)&sin_size))
cli_addr = malloc(sizeof(struct sockaddr));
memcpy(cli_addr, &client_sock, sizeof(struct sockaddr));
使用accept函數(shù)等待客戶連接,連接成功后把客戶地址傳入cli_addr變量并創(chuàng)建處理序號new_fd,以便接下來處理。
(3)處理接受到的數(shù)據(jù)
ret = recv(new_fd, recvbuf, sizeof(recvbuf), 0))
使用recv函數(shù)即可實現(xiàn)對接受到數(shù)據(jù)的數(shù)據(jù)內(nèi)容進行讀取,此時準備進入模擬網(wǎng)頁階段。
3.3 模擬網(wǎng)頁訪問并讀取傳入數(shù)據(jù)

審核編輯黃宇
-
錄音筆
+關注
關注
0文章
92瀏覽量
13732
發(fā)布評論請先 登錄
專業(yè)設計錄音筆
Hi3861 實現(xiàn)手機APP配網(wǎng)功能
【HarmonyOS HiSpark Wi-Fi IoT套件】 Hi3861 實現(xiàn)手機APP配網(wǎng)功能
Hi3861、Hi3516、Hi3518 新手指引
鴻蒙硬件HI3861開發(fā)環(huán)境搭建 精選資料分享
HI3861 鴻蒙開發(fā)環(huán)境怎么搭建
Hi3861:智能錄音筆【環(huán)境搭建+配網(wǎng)】
錄音筆的設計與實現(xiàn)
持續(xù)領跑AI錄音筆市場 訊飛智能錄音筆發(fā)布3大升級
基于鴻蒙系統(tǒng)+Hi3861的WiFi小車開發(fā)

Hi3861:智能錄音筆【環(huán)境搭建+配網(wǎng)】
評論