国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

【技術分享】電子指南針項目分享 含設備端+應用端講解

電子發燒友論壇 ? 2022-07-18 10:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

電子指南針是現代的一種重要導航工具,大到飛機船舶的導航,小到個人手機導航,電子指南針可以說和咱們生活息息相關,密不可分。為什么電子指南針能指示方向?本 Demo 將為你呈現,其中蘊含了人類智慧及大自然的奧妙。

本項目分為數據采集端(設備端)和效果展示端(應用端):

數據采集端(設備端):

1、指南針數據采集端:使用的是 Geek_Lite_Board 開發板,其內置了三軸磁力計 AK8963,通過解析磁力計數據獲得指南針數據信息,操作系統版本為 OpenAtom OpenHarmony 3.0(以下簡稱“OpenHarmony”);

2、指南針效果展示端:使用的是潤和 RK3568 開發板,操作系統版本為 OpenHarmony 3.1 release。

效果展示端則體現了 OpenHarmony JS UI、Canvas 組件和 NAPI 的能力:

效果展示端(應用端)

1、Canvas 組件是一個畫布組件,獲取到畫布對象后,可以自定義繪制圖形,比如圓形,線條等,本項目中應用端的指南針界面是基于 Canvas 組件開發;

2、NAPl (NativeAPI)是 OpenHarmony 標準系統的一種 JS API 實現機制,通過 NAPI 可以實現 JS 與 C/C++ 代碼互相訪問。本項目應用端通過 NAPI 來接收設備端發出的檢測信息。

當設備應用啟動之后,運行效果如下動圖所示:

b08e4e62-0616-11ed-9ade-dac502259ad0.gif

一、基本原理

地球是一個大磁體,地球的兩個極分別在接近地理南極和地理北極的地方,一般情況下地球的磁場強度在 0.5 高斯左右(高斯是磁場強度單位)。

Geek_Lite_Board 開發板帶有 AK8963 三軸磁力計。三軸磁力計能夠測出相互垂直的三個方向的磁力大小。通常我們把傳感器平放,即讓重力方向與傳感器垂直,假設重力方向為 z 軸,其余兩軸為 x 軸和 y 軸。在只受地球磁場的環境下(忽略其余弱小干擾),x 軸 y 軸檢測到的磁力數據的矢量和就等于接收到的地球磁場。

我們利用 x 軸與 y 軸的比值,就能確定目前朝向正北邊差多少角度。例如現測到 x 軸數據接近 0.5 高斯,y 軸數據接近 0,就認為目前的 x 軸方向就是正北方。那 x 軸方向是哪個方向?關于 x 軸方向,生產傳感器芯片的廠商會預定義好傳感器的 x 軸、y 軸及 z 軸方向(通常垂直芯片表面的為 z 軸)。

數據流程

b10a6cb8-0616-11ed-9ade-dac502259ad0.png

智能指南針整體方案如上圖所示,主要由 Geek_Lite_Board 開發板和潤和 RK3568 開發板構成,它們采用局域網(路由器)TCP 協議的通信方式。

1. Geek_Lite_Board 開發板通過板載的磁力計獲取磁場數據,磁場數據經過處理后得到角度數據;

2. 角度信息通過 ESP8266 無線 Wi-Fi 模塊發送到指南針應用端;

3. 指南針應用端通過 NAPI 接口獲取底層網絡數據,并在頁面展示。

二、功能實現

指南針數據的獲取

Geek_Lite_Board 開發板通過 IIC 接口與 AK8963 三軸磁力計通信,讀取三軸方向的磁場數據,通過磁場數據計算后得到指南針的方位數據。

● AK8963介紹

AK8963是采用高靈敏度霍爾傳感器技術,內部集成了檢測x、y、z軸的磁傳感器、傳感器驅動電路信號放大器和用于處理每個傳感器信號的算術電路。同時,還配備了自測功能。其緊湊的封裝,還可適用于配備gps的手機的地圖導航,實現行人導航等功能。

● AK8963測量數據的讀取

AK8963 和單片機通過 IIC 接口連接,單片機操作 IIC 總線按照數據手冊的操作時序操作即可讀取 AK8963 的數據,AK8963 獲取測量數據的函數實現如下:

uint8_t Mpu_Read_Bytes(uint8_t const regAddr, uint8_t *pData, uint8_t len){ int i = 0; MPU_ENABLE; while (SPI_I2S_GetFlagStatus(SPI5, SPI_I2S_FLAG_TXE) == RESET); SPI_I2S_SendData(SPI5, regAddr | 0x80); while (SPI_I2S_GetFlagStatus(SPI5, SPI_I2S_FLAG_RXNE) == RESET); SPI_I2S_ReceiveData(SPI5); for(i=0; i while(SPI_I2S_GetFlagStatus(SPI5, SPI_I2S_FLAG_TXE) == RESET); SPI_I2S_SendData(SPI5, 0x00); while(SPI_I2S_GetFlagStatus(SPI5, SPI_I2S_FLAG_RXNE) == RESET); pData[i] = SPI_I2S_ReceiveData(SPI5); } MPU_DISABLE; return 0;}

● AK8963數據處理得到磁力數據

調用 Mpu_Read_Bytes 函數獲取測量數據,其中 MPU_BUFF[15] 到 MPU_BUFF[20] 這六個字節的數據就是磁力計的數據。此時的磁力計數據還不穩定不能直接用來計算指南針的角度,還需要進行濾波處理,此處用到的濾波算法是滑動均值濾波。數據處理代碼如下:

Mpu_Read_Bytes(MPUREG_ACCEL_XOUT_H, MPU_BUFF, 28);if(MPU_BUFF[14] == 1) { // 從 MPU_BUFF[]中提取磁力數據 Mpu_Data.mag_x = (MPU_BUFF[16] << 8) | MPU_BUFF[15]; ? ?Mpu_Data.mag_y = (MPU_BUFF[18] << 8) | MPU_BUFF[17]; ? ?Mpu_Data.mag_z = (MPU_BUFF[20] << 8) | MPU_BUFF[19]; ?// 對x軸方向磁力計數據進行濾波,取滑動平均 ?for(i=0;i<14;i++) { ? ?mag_x_buff[i] = mag_x_buff[i+1] ? //滑動 ?} ? ? ?if(Mpu_Data.mag_x > -500 && Mpu_Data.mag_x < 500) { ? ? ? ?mag_x_buff[14] = Mpu_Data.mag_x; ? ?} ? ?//取平均值 ? ?Mpu_Calc.mag_x = ( mag_x_buff[0] + mag_x_buff[1] + mag_x_buff[2] \ ? ?+ mag_x_buff[3] + mag_x_buff[4] + mag_x_buff[5] + mag_x_buff[6] \ ? ?+ mag_x_buff[7] + mag_x_buff[8] + mag_x_buff[9] + mag_x_buff[10] \ ? ?+ mag_x_buff[11] + mag_x_buff[12] + mag_x_buff[13] ? ?+ mag_x_buff[14] )/15.0f; ? ? // 對y軸方向磁力計數據進行濾波,取滑動平均 ? ?for(i=0;i<14;i++){ ? ? ?mag_y_buff[i] = mag_y_buff[i+1]; ?//滑動 ? ? ? ? ? ?} ? ? ? ? ? ?if(Mpu_Data.mag_y > -500 && Mpu_Data.mag_y < 500){ ? ? mag_y_buff[14] = Mpu_Data.mag_y; ? ?} ? ?//取平均值 ? ?Mpu_Calc.mag_y = ( mag_y_buff[0] + mag_y_buff[1] + mag_y_buff[2] \ ? ?+ mag_y_buff[3] + mag_y_buff[4] + mag_y_buff[5] + mag_y_buff[6] \ ? ?+ mag_y_buff[7] + mag_y_buff[8] + mag_y_buff[9] + mag_y_buff[10] \ ? ?+ mag_y_buff[11] + mag_y_buff[12] + mag_y_buff[13] ? ?+ mag_y_buff[14] )/15.0f; ? ?// 對磁力計z軸方向進行濾波 ? ?mag_z_buff[0] = mag_z_buff[1]; ? ?mag_z_buff[1] = Mpu_Data.mag_z; ? ?Mpu_Calc.mag_z = (int16_t)((mag_z_buff[0] + mag_z_buff[1])/ 2.0f);}

● 角度數據計算

磁力計數據通過濾波后得到 x y z 三個軸方向的磁力分量,計算出 x 和 y軸的 tan 值,再通過反正切計算出角度,角度經過滑動平均得到最終需要顯示出來的指南針角度值,計算過程見如下代碼。

angle_buff[0] = angle_buff[1]; angle_buff[1] = angle_buff[2]; angle_buff[2] = ((uint16_t)(atan2((Mpu_Calc.mag_y - Mag_y_OffSet),\ (Mpu_Calc.mag_x - Mag_x_OffSet)) *180 / PI + 180 )); angle = ((uint16_t)((angle_buff[0] + angle_buff[1] + angle_buff[2]) \ / 3.0 + 0.5));

指南針數據的傳輸

Geek_Lite_Board 開發板外掛 ESP8266 Wi-Fi 模組通過局域網 TCP 通信的方式將角度數據傳輸給潤和 RK3568 開發板,潤和 RK3568 開發板通過 NAPI 接口獲取底層網絡數據,從網絡數據中解析出角度數據,并在顯示屏上顯示出來。

角度數據的顯示

角度數據的顯示由潤和 RK3568 開發板實現,主要分為指南針顯示頁面的繪制和 NAPI 從局域網上獲取角度數據并展示到界面上。

指南針顯示頁面

指南針的顯示頁面主要通過 Canvas 組件畫圖完成,包含方位角度、指南針針盤和指示線,顯示整體效果如下圖所示。

b133ae84-0616-11ed-9ade-dac502259ad0.png

指南針針盤由一個 Canvas 組件構成,包含了三個部分,分別為刻度盤、角度數字、方位文字,他們的效果圖分別如下:

● 刻度盤

b17f1aa4-0616-11ed-9ade-dac502259ad0.png

● 角度數字

b194e26c-0616-11ed-9ade-dac502259ad0.png

● 方位文字

b1aaf804-0616-11ed-9ade-dac502259ad0.png

Canvas組件相關知識可以參考:https://gitee.com/openharmony/do ... ts-canvas-canvas.md

NAPI

NAPI(Native API)是 OpenHarmony 標準系統的一種 JS API 實現機制,適合封裝 IO、CPU 密集型、OS 底層等能力并對外暴露 JS 接口,通過 NAPI 可以實現 JS 與 C/C++ 代碼互相訪問。潤和 RK3568 應用端通過 NAPI 來接收設備端發出的檢測信息。

底層 NAPI 模塊封裝

● 本應用封裝的模塊名為 tcpserverapi,先下載源碼,源碼路徑為:


https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/dev/team_x/napi_tcpservermodule/tcpservermodule

● 下載完成后放到 OpenHarmony 3.1 Release 版本源碼根目錄,并配置編譯腳本;第一次編譯完成需要燒寫整個鏡像,請參考[開發板上新 | RK3568 開發板上絲滑體驗 OpenHarmony 標準系統]:


https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/docs/rk3568_quick_start

● 后面修改模塊源碼,只需將庫send到板子里面。命令如下:

先掛載,再sendhdc_std shell mount -o remount,rw /hdc_std file send libtcpserverapi.z.so system/lib/module/libtcpserverapi.z.so應用端導入NAPI模塊import tcpserverapi from '@ohos.tcpserverapi'應用端NAPI接口調用//調用initServer接口 初始化 TCP 服務器tcpserverapi.initServer()//調用recvMsg 獲取并解析SMT32板子發送過來的角度tcpserverapi.recvMsg().then((result) => { var resultAngle = result.angle; })

更多 NAPI 相關知識請參考《標準設備應用開發 Native Api》視頻課程。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Nullmax感知規劃大模型進化提速

    近日,2025年度浦東新區科技發展基金社會領域數字化轉型專項擬支持項目名單公布。經評審,Nullmax申報的《面向城市高級別輔助駕駛的感知規劃大模型》項目入選。
    的頭像 發表于 12-22 16:39 ?500次閱讀

    格靈深瞳靈感實驗室推出開發平臺AI Edge Studio

    在AI定制化開發過程中,開發者往往遇到模型訓練門檻高、邊緣部署難度大、項目難以實現閉環等共性問題,影響AI應用開發的效率提升。
    的頭像 發表于 12-17 15:28 ?630次閱讀

    補償技術詳解:確保高低溫試驗臺熱電偶測溫精度的關鍵電子處理

    在高低溫試驗臺的溫度測量體系中,熱電偶憑借其環境適應性成為核心傳感元件,但熱電偶的測溫原理決定了其精度易受冷溫度變化影響。冷補償技術作為針對性的電子處理方案,通過智能修正冷
    的頭像 發表于 12-11 09:13 ?531次閱讀
    冷<b class='flag-5'>端</b>補償<b class='flag-5'>技術</b>詳解:確保高低溫試驗臺熱電偶測溫精度的關鍵<b class='flag-5'>電子</b>處理

    偉創力珠海B11工廠完成SMT示范驗證

    近日,偉創力珠海B11工廠成功通過全球電子協會的評估,榮獲“IPC HERMES Demo Line 智能制造設備互聯通信標準示范生產線“榮譽,成為全球首家獲此權威驗證的SMT(表面貼裝技術
    的頭像 發表于 12-08 16:35 ?669次閱讀

    如何訓練好自動駕駛模型?

    [首發于智駕最前沿微信公眾號]最近有位小伙伴在后臺留言提問:算法是怎樣訓練的?是模仿學習、強化學習和離線強化學習這三類嗎?其實(end-to-end)算法在自動駕駛、智能體
    的頭像 發表于 12-08 16:31 ?1427次閱讀
    如何訓練好自動駕駛<b class='flag-5'>端</b>到<b class='flag-5'>端</b>模型?

    智駕模擬軟件推薦——為什么選擇Keymotek的aiSim?

    隨著自動駕駛技術的快速發展,車企和科技公司對于模擬測試平臺的需求越來越強。從L2/ADAS到L4/L5等級的自動駕駛,虛擬模擬已經成為其中的關鍵一環。特別是對于「」智駕(
    的頭像 發表于 11-18 11:35 ?811次閱讀

    電話光端機發射和接收怎么接

    在現代通信工程和安防監控系統中,廣州郵科(YK)的電話光端機因其穩定可靠的性能而被廣泛應用。對于許多初次接觸該設備的工程師或用戶而言,如何正確連接發射(TX)和接收(RX)是確保整個系統暢通無阻的關鍵第一步。本文將為您提供一
    的頭像 發表于 11-08 11:21 ?1331次閱讀
    電話光端機發射<b class='flag-5'>端</b>和接收<b class='flag-5'>端</b>怎么接

    ?TE Connectivity ES-Cap 0號端接技術解析與應用指南

    封,防止任何可能導致腐蝕問題的水分進入。 這種粘接層在溫度范圍很廣的環境中表現良好。通常情況下,使用熱氣槍或紅外線加熱設備裝置可輕松安裝蓋。TE的0號端接蓋適用于汽車T2和多種商用環境。
    的頭像 發表于 11-06 14:04 ?589次閱讀

    高壓單探頭使用指南:安全精確測量的關鍵技術

    高壓單探頭使用需嚴格遵循安全規范、設備檢查、接地原則及校準流程,確保測量準確與操作安全。
    的頭像 發表于 11-06 11:45 ?344次閱讀

    自動駕駛中常提的一段式(單段)是個啥?

    自動駕駛技術的發展,催生出技術的應用,一段式(end-to-end single-s
    的頭像 發表于 10-18 10:16 ?1688次閱讀

    光纜怎么分ab

    光纜分AB是通信工程中的關鍵步驟,主要用于確保光纖連接的極性正確,避免信號傳輸錯誤。以下是光纜分AB的詳細說明: 一、AB的定義與作用 定義: A:光纜的起始
    的頭像 發表于 09-28 09:38 ?1949次閱讀

    Nullmax自動駕駛最新研究成果入選ICCV 2025

    Nullmax 在一段式核心技術上的深厚積累與創新實力,尤其在自動駕駛系統設計領域的研究已處于行業領先水平。
    的頭像 發表于 07-05 15:40 ?1801次閱讀
    Nullmax<b class='flag-5'>端</b>到<b class='flag-5'>端</b>自動駕駛最新研究成果入選ICCV 2025

    華邦電子創新存儲賦能側智能

    人工智能技術的飛速發展,#側AI 正在成為智能設備發展的重要趨勢。華邦電子正憑借其卓越存儲技術和豐富的產品,積極布局端側 AI 市場,為智
    的頭像 發表于 05-14 09:59 ?1550次閱讀
    華邦<b class='flag-5'>電子</b>創新存儲賦能<b class='flag-5'>端</b>側智能<b class='flag-5'>端</b>側

    一文帶你厘清自動駕駛架構差異

    [首發于智駕最前沿微信公眾號]隨著自動駕駛技術飛速發展,智能駕駛系統的設計思路也經歷了從傳統模塊化架構到大模型轉變。傳統模塊化架構將感知、預測、規劃和控制等子任務拆分開,分別由不同模塊完成;而
    的頭像 發表于 05-08 09:07 ?1027次閱讀
    一文帶你厘清自動駕駛<b class='flag-5'>端</b>到<b class='flag-5'>端</b>架構差異

    小米汽車智駕技術介紹

    隨著智能駕駛技術的發展,越來越多企業紛紛進入汽車行業,希望能分得獨屬于自己的一杯羹。但在市場的選擇下,已有一部分品牌走入了歷史的塵埃。但也有部分車企,卻穩穩地站穩了腳跟,小米就是其中一個,作為
    的頭像 發表于 03-31 18:17 ?5250次閱讀
    小米汽車<b class='flag-5'>端</b>到<b class='flag-5'>端</b>智駕<b class='flag-5'>技術</b>介紹