在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

基于RT-Thread os實現混合定位介紹

冬至子 ? 來源:jianxiongye ? 作者:jianxiongye ? 2023-11-15 16:19 ? 次閱讀

1、介紹

wayz_iotkit 是上海圖趣信息科技有限公司,針對RT-thread開發的能夠實現定位功能的物聯網組件。在使用傳統上定位,如 GPS 等信號的同時,也支持使用基站、Wifi等數據,通過 WAYZ 定位云來進行定位。當前版本已實現支持wifi、gnss、基站定位,其中wifi定位為自動獲取定位數據,gnss和基站需要開發者手動填寫相關信息,后期會逐步實現對其他信號源的自動采集,進一步提升定位效果。

1.1 目錄結構

1.jpg

1.2 許可證

wayz_iotkit package 遵循 LGPLv2.1 許可,詳見 LICENSE 文件。

1.3 依賴

RT-Thread 3.0+
RT-Thread 開發 WLAN 框架
webclient軟件包
cJSON軟件包

2、如何打開 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 的包管理器自動更新,或者使用 pkgs --update 命令更新包到 BSP 中。

3、使用 wayz_iotkit

4、注意事項
該組件是基于wlan框架上運用的wifi定位,前提條件必須要有wifi芯片
利用該組件時,需要重新開啟任務處理,防止內存過小引發堆棧溢出錯誤
使用指南
這里主要介紹 wayz_iotkit 程序的基本使用流程,并針對使用過程中經常涉及到的結構體和重要 API 進行簡要說明。

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

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

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

詳細的配置介紹如下所示:

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

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

工作原理

設備中wifi模塊獲取周圍環境中的wifi信息,組包通過http方式上傳到WAYZ定位云平臺,云平臺進行分析后將經緯度等其他信息一并返回到軟件包,軟件包通過處理可以得到gcj02和wgs84標準的經緯度,和POI信息。也可以通過傳入gnss、基站等相關數據獲取定位結果及其POI信息

wifi、設備相關初始化
typedef struct device_info // 設備信息
{
char *dev_name; // 設備名稱
char *manufacturer; // 設備制造廠家
char *SN; // 設備序列號
char *product; // 設備所屬產品
char *tenant; // 設備所屬租戶,通常是開放平臺的用戶 ID
}tdeviec_info;
typedef struct wifi_info // wifi 相關信息
{
char *ssid; // 保存wifi名稱
char *passwd; // 保存wifi密碼
}twifi_info;
twifi_info 用于保存建立連接的 wifi相關信息,在設備上傳周圍wifi信息時聯網使用。用戶在使用 WiFi 建立連接會話前,必須定義一個存儲會話內容的結構體,如下所示:

twifi_info *wlan_info;
wlan_info = wifi_param_init(WIFI_SSID, WIFI_PWD);
tdeviec_info 用于保存注冊到平臺設備信息,在設備注冊使用。用戶在使用連接會話前,必須定義一個存儲會話內容的結構體,如下所示:

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

設備注冊

應用程序使用dev_register_init函數注冊設備到平臺。其中ACCESS_KEY需要在平臺申請

示例代碼如下所示:

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; // 數據收集的時間戳(UTC 時間,單位:毫秒)
double lng; // 經度
double lat; // 緯度
float accuracy; // 衛星定位水平精度,單位:米
}tgnss_unit;
typedef struct cell_unit
{
uint64_t timestamp; // 數據收集的時間戳(UTC 時間,單位:毫秒)
uint32_t cell_id; // 小區 ID,當 CDMA 時,為 BID(Base Station ID)
char radio_type[7]; // 基站類型,只能是以下值:gsm, wcdma, lte, cdma
uint32_t mcc; // mobileCountryCode:MCC 碼
uint32_t mnc; // mobileNetworkCode:當 CDMA 時,為 SID(System ID)碼
uint32_t lac; // locationAreaCode:當 CDMA 時,為 NID(Network ID);
當 LTE 時,為 TAC(Tracking Area code)
}tcell_unit;

通過填充GNSS、基站等數據,傳入定位接口即可獲取定位結果信息

獲取定位結果

應用程序使用get_position_info函數從平臺端獲取位置信息。其中ACCESS_KEY需要在平臺上申請

location_print函數是打印位置相關信息

示例代碼如下所示:

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);
}

其中get_position_info函數第三個參數為填充的GNSS和基站數據,相關操作可以參照示例文檔

打印位置信息結果

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

定位輪詢頻次

該引用可以通過循環的模式來設置定位頻次,其中POINT_FRQ為定位頻次的設置

示例代碼如下所示:

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

運行示例

1、申請ACCESS_KEY
需要在平臺申請ACCESS_KEY,目前只能提供人工申請的方式
在示例代碼中的宏中填寫申請的ACCESS_KEY字段,例如:
#define ACCESS_KEY "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

2、填寫wifi、設備相關信息
修改將所要連接網絡的AP即用戶名、密碼等;也可以在選擇組件時指定wifi相關信息。例如:

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
修改設備相關信息,例如:
```c
#define  DEV_NAME       "PANDDRA"      // 設備名稱
#define  VENDER         "ALIENTEK"       // 設備生產商
#define  PRODUCT        "FINDU01"       // 設備所屬產品
#define  SN             "1234567"       // 產品序列號
#define  TENANT         "WAYZ"           // 設備所屬租戶,通常是開放平臺的用戶 ID
3、GNSS、基站數據的填充
tpost_data post_data = {0};                    // 定義上傳數據結構體
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;
// 傳入獲取定位函數中
get_position_info(wlan_info, ACCESS_KEY, &post_data, &location);
4、在finsh命令行中輸入location_test命令即可調用示例代碼
示例結果
timestamp: 1606293694990 ms
gcj02:
    latitude:30.515105
    longitude:114.401555
wgs84:
    latitude:30.517407914397
    longitude:114.396014616712
POI: {"id": "7SkEZdfXQfS","type": "Residential","name": "中建東湖明珠國際公館","categories":[{"id": 10200,"name": "住宅"}]}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲器
    +關注

    關注

    38

    文章

    7492

    瀏覽量

    163829
  • 物聯網
    +關注

    關注

    2909

    文章

    44634

    瀏覽量

    373317
  • WLAN技術
    +關注

    關注

    0

    文章

    23

    瀏覽量

    9277
  • WiFi芯片
    +關注

    關注

    4

    文章

    45

    瀏覽量

    36977
  • RT-Thread
    +關注

    關注

    31

    文章

    1289

    瀏覽量

    40125
收藏 人收藏

    評論

    相關推薦

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發組(2015-03-31)。RT-Thread做為國內有較大影響力的開源實時操作系統,本文是RT-Thread實時操作系統的編程指南
    發表于 11-26 16:06 ?0次下載

    RT-Thread全球技術大會:RT-Thread對POSIX的實現情況介紹

    RT-Thread全球技術大會:RT-Thread對POSIX的實現情況介紹 ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 16:52 ?1889次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:<b class='flag-5'>RT-Thread</b>對POSIX的<b class='flag-5'>實現</b>情況<b class='flag-5'>介紹</b>

    RT-Thread設備模型框架及創建注冊設備的實現

    RT-Thread設備模型框架及創建注冊設備的實現方式介紹如下:
    的頭像 發表于 05-28 10:38 ?2188次閱讀
    <b class='flag-5'>RT-Thread</b>設備模型框架及創建注冊設備的<b class='flag-5'>實現</b>

    RT-Thread學習筆記 RT-Thread的架構概述

    RT-Thread 簡介 作為一名 RTOS 的初學者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發現 RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發表于 07-09 11:27 ?4556次閱讀
    <b class='flag-5'>RT-Thread</b>學習筆記 <b class='flag-5'>RT-Thread</b>的架構概述

    RT-Thread文檔_RT-Thread 簡介

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

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

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發表于 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 介紹與移植
    發表于 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學習

    前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
    的頭像 發表于 05-15 11:00 ?3963次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學習

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

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現同時運行RT-Thread和linux,本次workshop邀請到
    的頭像 發表于 03-27 08:34 ?535次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b><b class='flag-5'>混合</b>部署新模式!

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

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現同時運行RT-Thread和linux,本次workshop邀請到
    的頭像 發表于 03-27 11:36 ?824次閱讀
    4月10日深圳場<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平臺上實現同時運行RT-Thread和linux,本次workshop邀請到
    的頭像 發表于 04-04 08:34 ?345次閱讀
    【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平臺上實現同時運行RT-Thread和linux,本次workshop邀請到
    的頭像 發表于 04-16 08:35 ?423次閱讀
    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北京站來啦!

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現同時運行RT-Thread和linux,本次workshop邀請到
    的頭像 發表于 04-19 08:34 ?447次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>混合</b>部署Workshop北京站來啦!

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

    5月16日下午我們將在南京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現同時運行RT-Thread和linux,本次workshop邀請到
    的頭像 發表于 05-01 08:35 ?371次閱讀
    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平臺上實現同時運行RT-Thread和linux,本次workshop邀請到
    的頭像 發表于 05-28 08:35 ?447次閱讀
    6月6日杭州站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b><b class='flag-5'>混合</b>部署新模式!
    主站蜘蛛池模板: 亚洲综合一二三区| 婷婷资源综合| 色婷婷综合激情视频免费看| 黄色三级三级三级免费看| 偷偷狠狠的日日2020| 插菊综合网| 色综合激情网| www.亚洲.com| 神马三级我不卡| 午夜精品影院| 成人三级视频| 婷婷丁香五月中文字幕| 五月综合久久| wwxxx日本| 成人免费国产gav视频在线| 婷婷激情四月| 真实的国产乱xxxx在线| 美女啪啪91| 色视频一区| 婷婷视频网站| 日本不卡在线视频| 六月婷婷综合网| 九九热精品在线| 亚洲国产欧美日韩一区二区三区| 精品伊人久久大香线蕉网站| 国产小视频在线观看www| 一级毛片免费毛片一级毛片免费| 国产无遮挡床戏视频免费| 91精品福利视频| 色wwwww| 午夜视频在线观看国产www| 日本免费一区视频| 久久国内精品视频| 成人黄色免费看| 色拍视频| 日日爱网址| 亚在线| 天天做天天爱夜夜爽| 激情婷婷在线| 丁香啪啪天堂激情婷婷| 69日本xxⅹxxxxx19|