精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

基于RT-Thread os實(shí)現(xiàn)混合定位介紹

冬至子 ? 來(lái)源:jianxiongye ? 作者:jianxiongye ? 2023-11-15 16:19 ? 次閱讀

1、介紹

wayz_iotkit 是上海圖趣信息科技有限公司,針對(duì)RT-thread開(kāi)發(fā)的能夠?qū)崿F(xiàn)定位功能的物聯(lián)網(wǎng)組件。在使用傳統(tǒng)上定位,如 GPS 等信號(hào)的同時(shí),也支持使用基站、Wifi等數(shù)據(jù),通過(guò) WAYZ 定位云來(lái)進(jìn)行定位。當(dāng)前版本已實(shí)現(xiàn)支持wifi、gnss、基站定位,其中wifi定位為自動(dòng)獲取定位數(shù)據(jù),gnss和基站需要開(kāi)發(fā)者手動(dòng)填寫(xiě)相關(guān)信息,后期會(huì)逐步實(shí)現(xiàn)對(duì)其他信號(hào)源的自動(dòng)采集,進(jìn)一步提升定位效果。

1.1 目錄結(jié)構(gòu)

1.jpg

1.2 許可證

wayz_iotkit package 遵循 LGPLv2.1 許可,詳見(jiàn) LICENSE 文件。

1.3 依賴

RT-Thread 3.0+
RT-Thread 開(kāi)發(fā) WLAN 框架
webclient軟件包
cJSON軟件包

2、如何打開(kāi) wayz_iotkit

使用 wayz_iotkit package 需要在 RT-Thread 的包管理器中選擇它,具體路徑如下:

RT-Thread online packages
IOT - internet of things --->
[*] wayz_iotkit: wayz iot location
(wayz123) wifi ssid
(wayz1234) wifi password
Version (v1.0.0) --->

然后讓 RT-Thread 的包管理器自動(dòng)更新,或者使用 pkgs --update 命令更新包到 BSP 中。

3、使用 wayz_iotkit

4、注意事項(xiàng)
該組件是基于wlan框架上運(yùn)用的wifi定位,前提條件必須要有wifi芯片
利用該組件時(shí),需要重新開(kāi)啟任務(wù)處理,防止內(nèi)存過(guò)小引發(fā)堆棧溢出錯(cuò)誤
使用指南
這里主要介紹 wayz_iotkit 程序的基本使用流程,并針對(duì)使用過(guò)程中經(jīng)常涉及到的結(jié)構(gòu)體和重要 API 進(jìn)行簡(jiǎn)要說(shuō)明。

wayz_iotkit 的基本工作流程如下所示:

初始化 wifi、設(shè)備相關(guān)信息
將設(shè)備注冊(cè)到平臺(tái)上
獲取定位結(jié)果(gcj02和wgs84標(biāo)準(zhǔn))以及POI信息
menuconfig 配置說(shuō)明
獲取 wayz_iotkit 軟件包或者修改用戶配置都需要使用 menuconfig。需要用戶打開(kāi) ENV 工具,并將目錄切換到您所用的 BSP 目錄,使用 menuconfig 命令打開(kāi)配置界面。

在 RT-Thread online packages → IOT - internet of things 中選擇 wayz_iotkit 軟件包,操作界面如下圖所示:

詳細(xì)的配置介紹如下所示:

RT-Thread online packages
IOT - internet of things --->
[*] wayz_iotkit: wayz iot location # 打開(kāi) wayz_iotkit 軟件包
(wayz123) wifi ssid # wifi 名字
(wayz1234) wifi password # wifi 密碼
Version (latest) ---> # 選擇軟件包版本,默認(rèn)為最新版
選擇合適的配置項(xiàng)后,使用 pkgs --update 命令下載軟件包并更新用戶配置。

注:wifi 名字和密碼 供軟件包切換模式用

工作原理

設(shè)備中wifi模塊獲取周?chē)h(huán)境中的wifi信息,組包通過(guò)http方式上傳到WAYZ定位云平臺(tái),云平臺(tái)進(jìn)行分析后將經(jīng)緯度等其他信息一并返回到軟件包,軟件包通過(guò)處理可以得到gcj02和wgs84標(biāo)準(zhǔn)的經(jīng)緯度,和POI信息。也可以通過(guò)傳入gnss、基站等相關(guān)數(shù)據(jù)獲取定位結(jié)果及其POI信息

wifi、設(shè)備相關(guān)初始化
typedef struct device_info // 設(shè)備信息
{
char *dev_name; // 設(shè)備名稱
char *manufacturer; // 設(shè)備制造廠家
char *SN; // 設(shè)備序列號(hào)
char *product; // 設(shè)備所屬產(chǎn)品
char *tenant; // 設(shè)備所屬租戶,通常是開(kāi)放平臺(tái)的用戶 ID
}tdeviec_info;
typedef struct wifi_info // wifi 相關(guān)信息
{
char *ssid; // 保存wifi名稱
char *passwd; // 保存wifi密碼
}twifi_info;
twifi_info 用于保存建立連接的 wifi相關(guān)信息,在設(shè)備上傳周?chē)鷚ifi信息時(shí)聯(lián)網(wǎng)使用。用戶在使用 WiFi 建立連接會(huì)話前,必須定義一個(gè)存儲(chǔ)會(huì)話內(nèi)容的結(jié)構(gòu)體,如下所示:

twifi_info *wlan_info;
wlan_info = wifi_param_init(WIFI_SSID, WIFI_PWD);
tdeviec_info 用于保存注冊(cè)到平臺(tái)設(shè)備信息,在設(shè)備注冊(cè)使用。用戶在使用連接會(huì)話前,必須定義一個(gè)存儲(chǔ)會(huì)話內(nèi)容的結(jié)構(gòu)體,如下所示:

tdeviec_info *dev_info;
dev_info = dev_para_init(DEV_NAME, VENDER, PRODUCT, SN, TENANT);

設(shè)備注冊(cè)

應(yīng)用程序使用dev_register_init函數(shù)注冊(cè)設(shè)備到平臺(tái)。其中ACCESS_KEY需要在平臺(tái)申請(qǐng)

示例代碼如下所示:

ret = dev_register_init(wlan_info, dev_info, ACCESS_KEY);
if (ret != DEV_REGISTER_OK)
{
rt_kprintf("?33[31;22mdevice register failure. ?33[0mn");
return ;
}
填充GNSS、基站信息定位
typedef struct gnss_unit
{
uint64_t timestamp; // 數(shù)據(jù)收集的時(shí)間戳(UTC 時(shí)間,單位:毫秒)
double lng; // 經(jīng)度
double lat; // 緯度
float accuracy; // 衛(wèi)星定位水平精度,單位:米
}tgnss_unit;
typedef struct cell_unit
{
uint64_t timestamp; // 數(shù)據(jù)收集的時(shí)間戳(UTC 時(shí)間,單位:毫秒)
uint32_t cell_id; // 小區(qū) ID,當(dāng) CDMA 時(shí),為 BID(Base Station ID)
char radio_type[7]; // 基站類(lèi)型,只能是以下值:gsm, wcdma, lte, cdma
uint32_t mcc; // mobileCountryCode:MCC 碼
uint32_t mnc; // mobileNetworkCode:當(dāng) CDMA 時(shí),為 SID(System ID)碼
uint32_t lac; // locationAreaCode:當(dāng) CDMA 時(shí),為 NID(Network ID);
當(dāng) LTE 時(shí),為 TAC(Tracking Area code)
}tcell_unit;

通過(guò)填充GNSS、基站等數(shù)據(jù),傳入定位接口即可獲取定位結(jié)果信息

獲取定位結(jié)果

應(yīng)用程序使用get_position_info函數(shù)從平臺(tái)端獲取位置信息。其中ACCESS_KEY需要在平臺(tái)上申請(qǐng)

location_print函數(shù)是打印位置相關(guān)信息

示例代碼如下所示:

tlocation_info location = {0};
ret = get_position_info(wlan_info, ACCESS_KEY, RT_NULL, &location);
if (RT_ERROR == ret)
{
rt_kprintf("?33[31;22mthe device failed to obtain latitude and longitude information.?33[0mn");
}
else
{
location_print(location);
}

其中g(shù)et_position_info函數(shù)第三個(gè)參數(shù)為填充的GNSS和基站數(shù)據(jù),相關(guān)操作可以參照示例文檔

打印位置信息結(jié)果

-------------------location result-------------------------------
timestamp: 1606293694990
gcj02:
latitude:30.515105
longitude:114.401555
wgs84:
latitude:30.517407914397
longitude:114.396014616712
POI: {"id": "7SkEZdfXQfS","type": "Residential","name": "中建東湖明珠國(guó)際公館","categories":[{"id": 10200,"name": "住宅"}]}
-------------------location result end---------------------------

定位輪詢頻次

該引用可以通過(guò)循環(huán)的模式來(lái)設(shè)置定位頻次,其中POINT_FRQ為定位頻次的設(shè)置

示例代碼如下所示:

while (1)
{
ret = get_position_info(wlan_info, ACCESS_KEY, RT_NULL, &location);
if (RT_ERROR == ret)
{
rt_kprintf("?33[31;22mthe device failed to obtain latitude and longitude information.?33[0mn");
}
else
{
location_print(location);
}
rt_thread_mdelay(POINT_FRQ);
rt_memset(&location, 0, sizeof (location));
}
wayz_iotkit API
/**

  • Wifi parameter initialized
  • @param ssid: Wifi name
  • @param passwd: Wifi password
  • @return twifi_info: Dynamic allocation wifi info structure
    */
    twifi_info *wifi_param_init(const char ssid, const char passwd);
    /
  • device parameter initialized
  • @param dev_name: device name
  • @param manufacturer: device manufacturer
  • @param product: product name
  • @param SN: product serial number
  • @param tenant: tenant device
  • @return tdeviec_info: Dynamic allocation device info structure
    */
    tdeviec_info *dev_para_init(const char *dev_name, const char *manufacturer, const char *product,
    const char SN, const char tenant);
    /
  • Wifi station mac address
  • @param data: Wifi station mac address data
  • @return void
    /
    void get_sta_mac_addr(char data);
    /
  • Connected to the Internet to register
  • @param wlan_info: wifi name , wifi passwd
  • @param dev_info: device info ,(dev_name、manufacturer、SN、product、tenant)
  • @param key: Visiting the website key
  • @return =0: wifi connect failure
  • =1: device register success
    
  • =2: device register failure
    

*/
char dev_register_init(twifi_info *wlan_info, tdeviec_info dev_info, char key);
/

  • Get the positioning result function
  • @param wlan_info Wifi related information
  • @param key Visiting the website key
  • @param post_data post gnss and cellulars data, obtain positioning results
  • @param location get location result
  • @return >0: success
  • =0: location failure
    

*/
char get_position_info(twifi_info *wlan_info, char *key, tpost_data post_data, tlocation_info location);
/

  • print location result
  • @param location location info
  • @return void:

*/
void location_print(tlocation_info location);

wayz_iotkit 示例程序

1.jpg

運(yùn)行示例

1、申請(qǐng)ACCESS_KEY
需要在平臺(tái)申請(qǐng)ACCESS_KEY,目前只能提供人工申請(qǐng)的方式
在示例代碼中的宏中填寫(xiě)申請(qǐng)的ACCESS_KEY字段,例如:
#define ACCESS_KEY "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

2、填寫(xiě)wifi、設(shè)備相關(guān)信息
修改將所要連接網(wǎng)絡(luò)的AP即用戶名、密碼等;也可以在選擇組件時(shí)指定wifi相關(guān)信息。例如:

ifdef PKG_WAYZ_IOTKIT_WIFI_SSID
define WAYZ_WIFI_SSID PKG_WAYZ_IOTKIT_WIFI_SSID
else
define WAYZ_WIFI_SSID “thread”
endif
ifdef PKG_WAYZ_IOTKIT_WIFI_PASSWORD
define WAYZ_WIFI_PWD PKG_WAYZ_IOTKIT_WIFI_PASSWORD
else
define WAYZ_WIFI_PWD “12345678”
endif
修改設(shè)備相關(guān)信息,例如:
```c
#define  DEV_NAME       "PANDDRA"      // 設(shè)備名稱
#define  VENDER         "ALIENTEK"       // 設(shè)備生產(chǎn)商
#define  PRODUCT        "FINDU01"       // 設(shè)備所屬產(chǎn)品
#define  SN             "1234567"       // 產(chǎn)品序列號(hào)
#define  TENANT         "WAYZ"           // 設(shè)備所屬租戶,通常是開(kāi)放平臺(tái)的用戶 ID
3、GNSS、基站數(shù)據(jù)的填充
tpost_data post_data = {0};                    // 定義上傳數(shù)據(jù)結(jié)構(gòu)體
post_data.gnss.timestamp = 1606729066000;
post_data.gnss.lng = 114.39583641301239;
post_data.gnss.lat = 30.51769862171484;
post_data.gnss.accuracy = 8;
post_data.cellulars.count = 1;
post_data.cellulars.cell[0].timestamp = 1515743846504;
post_data.cellulars.cell[0].cell_id = 149833211;
rt_sprintf(post_data.cellulars.cell[0].radio_type, "%s", "gsm");
post_data.cellulars.cell[0].mcc = 460;
post_data.cellulars.cell[0].mnc = 11;
post_data.cellulars.cell[0].lac = 36558;
// 傳入獲取定位函數(shù)中
get_position_info(wlan_info, ACCESS_KEY, &post_data, &location);
4、在finsh命令行中輸入location_test命令即可調(diào)用示例代碼
示例結(jié)果
timestamp: 1606293694990 ms
gcj02:
    latitude:30.515105
    longitude:114.401555
wgs84:
    latitude:30.517407914397
    longitude:114.396014616712
POI: {"id": "7SkEZdfXQfS","type": "Residential","name": "中建東湖明珠國(guó)際公館","categories":[{"id": 10200,"name": "住宅"}]}
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7452

    瀏覽量

    163598
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2903

    文章

    44262

    瀏覽量

    371211
  • WLAN技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    9270
  • WiFi芯片
    +關(guān)注

    關(guān)注

    4

    文章

    45

    瀏覽量

    36966
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1272

    瀏覽量

    39919
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開(kāi)發(fā)組(2015-03-31)。RT-Thread做為國(guó)內(nèi)有較大影響力的開(kāi)源實(shí)時(shí)操作系統(tǒng),本文是RT-Thread實(shí)時(shí)操作系統(tǒng)的編程指南
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread全球技術(shù)大會(huì):RT-Thread對(duì)POSIX的實(shí)現(xiàn)情況介紹

    RT-Thread全球技術(shù)大會(huì):RT-Thread對(duì)POSIX的實(shí)現(xiàn)情況介紹 ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:52 ?1856次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):<b class='flag-5'>RT-Thread</b>對(duì)POSIX的<b class='flag-5'>實(shí)現(xiàn)</b>情況<b class='flag-5'>介紹</b>

    RT-Thread設(shè)備模型框架及創(chuàng)建注冊(cè)設(shè)備的實(shí)現(xiàn)

    RT-Thread設(shè)備模型框架及創(chuàng)建注冊(cè)設(shè)備的實(shí)現(xiàn)方式介紹如下:
    的頭像 發(fā)表于 05-28 10:38 ?2143次閱讀
    <b class='flag-5'>RT-Thread</b>設(shè)備模型框架及創(chuàng)建注冊(cè)設(shè)備的<b class='flag-5'>實(shí)現(xiàn)</b>

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡(jiǎn)介 作為一名 RTOS 的初學(xué)者,也許你對(duì) RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會(huì)逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類(lèi)型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4482次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread文檔_RT-Thread 簡(jiǎn)介

    RT-Thread文檔_RT-Thread 簡(jiǎn)介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡(jiǎn)介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發(fā)表于 02-22 18:23 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP <b class='flag-5'>介紹</b>與移植

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個(gè)賬號(hào)登陸,開(kāi)啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?3821次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)

    4月10日深圳場(chǎng)RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺(tái)上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請(qǐng)到
    的頭像 發(fā)表于 03-27 08:34 ?485次閱讀
    4月10日深圳場(chǎng)<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b><b class='flag-5'>混合</b>部署新模式!

    4月10日深圳場(chǎng)RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺(tái)上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請(qǐng)到
    的頭像 發(fā)表于 03-27 11:36 ?776次閱讀
    4月10日深圳場(chǎng)<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b><b class='flag-5'>混合</b>部署新模式!

    【4月10日-深圳-workshop】RT-Thread帶你探索混合部署新模式

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺(tái)上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請(qǐng)到
    的頭像 發(fā)表于 04-04 08:34 ?301次閱讀
    【4月10日-深圳-workshop】<b class='flag-5'>RT-Thread</b>帶你探索<b class='flag-5'>混合</b>部署新模式

    4月25日北京站RT-Thread線下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺(tái)上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請(qǐng)到
    的頭像 發(fā)表于 04-16 08:35 ?392次閱讀
    4月25日北京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b><b class='flag-5'>混合</b>部署新模式

    RT-Thread混合部署Workshop北京站來(lái)啦!

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺(tái)上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請(qǐng)到
    的頭像 發(fā)表于 04-19 08:34 ?414次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>混合</b>部署Workshop北京站來(lái)啦!

    5月16日南京站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    5月16日下午我們將在南京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺(tái)上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請(qǐng)到
    的頭像 發(fā)表于 05-01 08:35 ?326次閱讀
    5月16日南京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b><b class='flag-5'>混合</b>部署新模式!

    6月6日杭州站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    6月6日下午我們將在杭州舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺(tái)上實(shí)現(xiàn)同時(shí)運(yùn)行RT-Thread和linux,本次workshop邀請(qǐng)到
    的頭像 發(fā)表于 05-28 08:35 ?408次閱讀
    6月6日杭州站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b><b class='flag-5'>混合</b>部署新模式!