【UWB定位】 - DWM1000模块调试简单心得 - 2
UWB定位 - DWM1000模塊調(diào)試簡單心得 - 1 上一篇搭建了下軟硬件的基礎(chǔ)環(huán)境,這篇開始記錄調(diào)試需要注意的地方或者”坑”。先以一基站一標簽來進行。
1、將我們的模塊連接后上電。注意這里DWM1000模塊(也就是stm32開發(fā)板)一定要使用獨立電源(5v / 1.5A ↑↑↑)單獨供電,如果你用USB to TTL或者電腦的USB接口給stm32開發(fā)板供電(dwm10003.3V與stm32引腳3.3連接)后續(xù)多半會出現(xiàn)數(shù)據(jù)大幅度波動(波動單位為米級別!!!),亦或是基站與標簽通信時直接斷開。博主調(diào)試的時候遇到過查了不少資料,據(jù)說dwm1000模塊峰值電流可以達到1A,建議基站采用電源5v/1.5A以上單獨供電給stm32開發(fā)板。標簽可以采用移動電源供電,當然這不代表這標簽會省電,功耗關(guān)鍵還是在于程序控制(包括算法的不同耗電量也根不同,目前最省電最理想的測距算法還是TDOA 。對于定位來說我們的TWR 也就是TOA 也可以實現(xiàn)功能,但當我們的項目工程需要多標簽多基站時,還是需要TDOA的方式來進行。TWR 定位方式當多個標簽的時候會遇到事件輪詢排隊的情況,當然這都是后續(xù)的,可以自己根據(jù)需要選擇,目前咱們先調(diào)試官方的模塊代碼)
2、基站部分代碼調(diào)試
??????? 打開我們的標簽項目project,其實現(xiàn)在直接分別編譯-燒錄-運行 到我們的開發(fā)板 ,然后基站的stm32開發(fā)板外接一個usb to TTL (程序內(nèi)串口已經(jīng)初始化,具體初始化在port.c 文件中,主程序部分點進入peripherals_init()即可看見,波特率默認115200)。
????? 為了方便我們串口調(diào)試,打開port.c文件加入我們自己的串口打印函數(shù)
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);?
?
可以將代碼中顯示屏部分的代碼直接去掉,在輸出顯示數(shù)據(jù)部分加入我們的串口打印字符串函數(shù)
?
?
sprintf(dist_str, "DIST: %3.2f m", distance); USART_putstr(dist_str); USART_putc('\n');基站、標簽上電,或許你就可以看到串口輸出的DIST: xx m 。
?
如果沒有,不要著急。先檢查代碼和硬件接線部分,確保沒有問題后,那就是我們程序的發(fā)送和接收延時需要修改(依據(jù)個人模塊合理修改,如果沒有通信成功 可將延時倍數(shù)增大,調(diào)整部分如下截圖)這里的延時是標簽與基站發(fā)送接收對方數(shù)據(jù)的延時。
以下是我的個人調(diào)整(如還是不行繼續(xù)加大,基站與標簽延時部分代碼 都需要加大,并不是只改基站部分的,注意!!):
下一篇傳送門:UWB定位 - DWM1000模塊調(diào)試簡單心得 - 3
總結(jié)
以上是生活随笔為你收集整理的【UWB定位】 - DWM1000模块调试简单心得 - 2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学会Java输入输出流,看这一篇就够了,
- 下一篇: 综述 | 近年来深度学习的重要研究成果(