UWB DWM1000 开源项目框架 之 温度采集
在之前博文开源一套uwb 框架,后面几篇博文会基于这个开源框架进行简单开发。 让uwb使用者更清楚了解基于这个basecode 开发工作。
这里所做内容是,采集dwm1000 温度,并发送到另一个节点,另一个节点通过串口打印,也就是这里是一个远程采集温度的工程。当然可以使用主控stm32 采集任何传感器,按照本文思路将数据打包发送到另外一个节点。
1 在tx_main.c增加温度采集函数,并做验证。
温度采集函数
uint16 BPhero_UWB_Get_Temperature(void)
{
uint16 register_result;
uint16 Temperature = 0;
/* Note on Temperature: the temperature value needs to be converted to give the real temperature
* the formula is: 1.13 * reading - 113.0
* Note on Voltage: the voltage value needs to be converted to give the real voltage
* the formula is: 0.0057 * reading + 2.3
* input parameters:
* @param fastSPI - set to 1 if SPI rate > than 3MHz is used
*
* output parameters
*
* returns (temp_raw<<8)|(vbat_raw)
*/
register_result = dwt_readtempvbat(1);
//Temperature = (((register_result&0xFF00)>>8)*1.13 - 113)*100;
return (register_result>>8);
}
在tx_main 函数读取温度信息,验证可以正确采集到温度信息。tx_main 验证代码如下:
int tx_main(void)
{
bphero_setcallbacks(Tx_Simple_Rx_Callback);
char temp_result[5];
int temp = 0 ;
/* Infinite loop */
dwt_enableframefilter(DWT_FF_DATA_EN);
dwt_rxenable(0);
while(1)
{
// BPhero_Distance_Measure_Specail_TAG(); Delay_us(10000);//5ms
Delay_us(10000);//5ms temp = (BPhero_UWB_Get_Temperature()*1.13 - 113);
temp_result[0] = (temp/100)+0x30;
temp_result[1] = (temp%100/10)+0x30;
temp_result[2] = (temp%10)+0x30; temp_result[3]='\n';temp_result[4]='\0';
USART1DispFun(temp_result);
}
}
主要是读取温度,并将温度百十个位分开并发送到串口显示。 tx_main 函数相对之前basecode,除了读取温度函数以外,在while(1) Enable RX,在while(1)内注释掉发送代码,这样做主要是,rx 功耗较大,可以明显看到温度变化。实际后面会回复原样。
编译下载后,串口收到温度信息:

可以看到使能接收的时候,dwm1000的文档可以稳定在53度左右,使用热风枪加热,温度会更高。
2 以上测试已经完成,开始修改tx_main,将发送的数据放到tx_message中。
A tx_main函数恢复原样,里面只保留调用发送函数,与basecode一致
int tx_main(void)
{
bphero_setcallbacks(Tx_Simple_Rx_Callback);
while(1)
{
BPhero_Distance_Measure_Specail_TAG();
}
}
B 在发送message 中把温度信息打包进去
void BPhero_Distance_Measure_Specail_TAG(void)
{
int temp = 0 ;
// dest address = SHORT_ADDR+1,only for test!!
msg_f_send.destAddr[0] =(SHORT_ADDR+1) &0xFF;
msg_f_send.destAddr[1] = ((SHORT_ADDR+1)>>8) &0xFF; /* Write all timestamps in the final message. See NOTE 10 below. */
final_msg_set_ts(&msg_f_send.messageData[FIRST_TX], tx_node[(SHORT_ADDR+1) &0xFF].tx_ts[0] );
final_msg_set_ts(&msg_f_send.messageData[FIRST_RX], tx_node[(SHORT_ADDR+1) &0xFF].rx_ts[0] ); msg_f_send.seqNum = distance_seqnum;
msg_f_send.messageData[0]='D';
msg_f_send.messageData[1]=(SHORT_ADDR+1) &0xFF; temp = (BPhero_UWB_Get_Temperature()*1.13 - 113);
msg_f_send.messageData[2]=(temp/100)+0x30;
msg_f_send.messageData[3]=(temp%100/10)+0x30;
msg_f_send.messageData[4]=(temp%10)+0x30;
可以看到与之前basecode 相比,在messageData[2'3'4] 把温度信息打包了,只需要在rx阶段,同样读取messageData[2'3'4] 即可。
注意 psduLength 这个长度,不要小于要发送的数据长度,不然会收不全数据。
dwt_writetxdata(psduLength, (uint8 *)&msg_f_send, 0) ;
C rx_main.c 读取同样读取messageData[2'3'4]
switch(msg_f->messageData[0])
{
case 'D'://distance
msg_f_send.messageData[0]='d';
msg_f_send.messageData[1]=msg_f->messageData[1]; temp_result[0] = msg_f->messageData[2];
temp_result[1] = msg_f->messageData[3];
temp_result[2] = msg_f->messageData[4];
temp_result[3] = '\n';
temp_result[4] = '\0';
temp_result[5] = 1;
其中temp_result[5] 为接收成功标志位,当接收成功后将其置位1,while(1)中根据这个,将temp_result 打印出来
while (1)
{
if(temp_result[5] ==1)
{
USART1DispFun(temp_result);
temp_result[5] = 0;
}
}
到此,本文完
代码开源网址:www.51uwb.cn
UWB DWM1000 开源项目框架 之 温度采集的更多相关文章
- UWB DWM1000 开源项目框架
UWB 目前比较火热,不论国内还是国外目前都掀起一股热潮. 但是实际工程代码很少,开源代码更少. 目前代码主要有 1 DecaWave Release的定位源码,代码基于TWR,一个非常大的状态机. ...
- android开源项目框架大全:
android开源项目框架大全: 1.多页切换TabHost9 高仿网易云音乐客户端的Home页面切换Tabhost 高仿网易云音乐客户端的Home页面切换Tabhost,并且三角形是透明的,实现方式 ...
- Android非常实用的开源项目框架
我将文章中所描述的项目都集成在一个apk中,可以直接运行查看效果,2.2以上的机器都可以运行.因为不让直接上传apk文件,我压缩成了zip包 1. Universal-Image-Loader 实现异 ...
- 0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架
前言 原来一直使用他人的开源项目框架,异常的定位会很麻烦,甚至不知道这个异常来自我的代码还是这个框架本身.他人的框架有一定的制约性,也有可能是我对那些框架并没深入了解,因为这些开源框架在网上也很难找到 ...
- .NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍
Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器 ...
- android开源项目和框架(转)
特效: http://www.androidviews.net/ http://www.theultimateandroidlibrary.com/ 常用效果: 1. https://github.c ...
- android开源项目和框架
特效: http://www.androidviews.net/ http://www.theultimateandroidlibrary.com/ 常用效果: 1. https://github.c ...
- Facebook开源项目:我们为什么要用Fresco框架?
(Facebook开源项目)Fresco:一个新的Android图像处理类库 在Facebook的Android客户端上快速高效的显示图片是非常重要的.然而多年来,我们遇到了很多如何高效存储图片的问题 ...
- 【转】android开源项目和框架
特效: http://www.androidviews.net/ http://www.theultimateandroidlibrary.com/ 常用效果: 1. https://github ...
随机推荐
- 一分钟 - 创建python虚拟环境
python创建虚拟环境 python安装第三方库大都是通过pip命令安装,这个命令确实是很简便的,而对于每个独立的项目来说,需要用到的库或许会不同,如果删除或更新原来已有的版本库,或许会导致其他的项 ...
- python基础 — turtle 介绍
一.基础概念 1.画布:画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置.常用的画布方法有两个:screensize()和setup(). (1)turtle.screen ...
- linux shell程序常用功能
一.循环读取文件 循环读取文件方式有多种,推荐下列方法 while read line;do local include=$(echo ${line} | grep "filter" ...
- [LOJ2541] [PKUWC2018] 猎人杀
题目链接 LOJ:https://loj.ac/problem/2541 Solution 很巧妙的思路. 注意到运行的过程中概率的分母在不停的变化,这样会让我们很不好算,我们考虑这样转化:假设所有人 ...
- java.lang.SecurityManager、java.security包
学习java大概3年多了,一直没有好好研究过java安全相关的问题,总是会看到 SecurityManger sm = System.getSecurityManager(); if(sm!=null ...
- CCF 2016-04-2 俄罗斯方块
CCF 2016-04-2 俄罗斯方块 题目 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏. 游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,或者 ...
- NIO开发Http服务器(4):Response封装和响应
最近学习了Java NIO技术,觉得不能再去写一些Hello World的学习demo了,而且也不想再像学习IO时那样编写一个控制台(或者带界面)聊天室.我们是做WEB开发的,整天围着tomcat.n ...
- python3基础之“小练习(1)”
(一)打印3个不同的字符 # a=int("123") # b="123" # c=1.2 # print(type(a),a) # print(type(b) ...
- C++遍历磁盘驱动器
#include <stdio.h> #include <windows.h> typedef struct tagDRIVER { // (1)磁盘盘符 wchar_t di ...
- mybatis异常:nested exception is org.apache.ibatis.builder.BuilderException: Error resolving JdbcType
异常详细 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.Builde ...