【UWB定位】 - DWM1000模块调试简单心得 - 2
UWB定位 - DWM1000模塊調試簡單心得 - 1 上一篇搭建了下軟硬件的基礎環境,這篇開始記錄調試需要注意的地方或者”坑”。先以一基站一標簽來進行。
1、將我們的模塊連接后上電。注意這里DWM1000模塊(也就是stm32開發板)一定要使用獨立電源(5v / 1.5A ↑↑↑)單獨供電,如果你用USB to TTL或者電腦的USB接口給stm32開發板供電(dwm10003.3V與stm32引腳3.3連接)后續多半會出現數據大幅度波動(波動單位為米級別!!!),亦或是基站與標簽通信時直接斷開。博主調試的時候遇到過查了不少資料,據說dwm1000模塊峰值電流可以達到1A,建議基站采用電源5v/1.5A以上單獨供電給stm32開發板。標簽可以采用移動電源供電,當然這不代表這標簽會省電,功耗關鍵還是在于程序控制(包括算法的不同耗電量也根不同,目前最省電最理想的測距算法還是TDOA 。對于定位來說我們的TWR 也就是TOA 也可以實現功能,但當我們的項目工程需要多標簽多基站時,還是需要TDOA的方式來進行。TWR 定位方式當多個標簽的時候會遇到事件輪詢排隊的情況,當然這都是后續的,可以自己根據需要選擇,目前咱們先調試官方的模塊代碼)
2、基站部分代碼調試
??????? 打開我們的標簽項目project,其實現在直接分別編譯-燒錄-運行 到我們的開發板 ,然后基站的stm32開發板外接一個usb to TTL (程序內串口已經初始化,具體初始化在port.c 文件中,主程序部分點進入peripherals_init()即可看見,波特率默認115200)。
????? 為了方便我們串口調試,打開port.c文件加入我們自己的串口打印函數
void USART_putc(char c)//向串口輸出字符 {//while(!(USART2->SR & 0x00000040));//USART_SendData(USART2,c);/* e.g. write a character to the USART */USART_SendData(USART1, c);/* Loop until the end of transmission */while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) ; }void USART_putstr(const char *s)//向串口輸出字符串 {int i;for(i=0; s[i]!=0; i++){USART_putc(s[i]);} }?
記得在port.h里聲明
void USART_putc(char c); void USART_putstr(const char *s);?
?
可以將代碼中顯示屏部分的代碼直接去掉,在輸出顯示數據部分加入我們的串口打印字符串函數
?
?
sprintf(dist_str, "DIST: %3.2f m", distance); USART_putstr(dist_str); USART_putc('\n');基站、標簽上電,或許你就可以看到串口輸出的DIST: xx m 。
?
如果沒有,不要著急。先檢查代碼和硬件接線部分,確保沒有問題后,那就是我們程序的發送和接收延時需要修改(依據個人模塊合理修改,如果沒有通信成功 可將延時倍數增大,調整部分如下截圖)這里的延時是標簽與基站發送接收對方數據的延時。
以下是我的個人調整(如還是不行繼續加大,基站與標簽延時部分代碼 都需要加大,并不是只改基站部分的,注意!!):
下一篇傳送門:UWB定位 - DWM1000模塊調試簡單心得 - 3
總結
以上是生活随笔為你收集整理的【UWB定位】 - DWM1000模块调试简单心得 - 2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学会Java输入输出流,看这一篇就够了,
- 下一篇: 中望cad自定义快捷键命令_中望CAD快