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

原文地址:https://www.cnblogs.com/tuzhuke/p/12077671.html

时间: 2024-10-28 05:27:31

UWB DWM1000 开源项目框架 之 温度采集的相关文章

android开源项目框架大全:《IT蓝豹》

android开源项目框架大全: 1.多页切换TabHost9 高仿网易云音乐客户端的Home页面切换Tabhost 高仿网易云音乐客户端的Home页面切换Tabhost,并且三角形是透明的,实现方式,自定义AnimTabsView继承 RelativeLayout 里面对当前选中的item 处理 三角形变成透明效果,即在onDraw 里面对三角形图片经行透明度处理,AnimTabsView提供 setOnAnimTabsItemViewChangeListener方法的onChange()用来

七款android地图 [Map] 开源项目框架分类总汇

七款android地图 [Map] 开源项目框架分类总汇: 1.AmapDemo仿照一号专车的地图界面 2.基于高德地图写的不同功能的地图应用 3.基于高德地图的gps.wifi.基站的智能选择定位 4.基于高德SDK搭建的出行类APP,高仿滴滴快的 5.高德地图便民搜索 6.百度地图 7.Android 高德地图gps定位

基于arm的多路温度采集控制系统(1)项目介绍

嵌入式项目实践–多路温度采集控制系统(1)项目介绍 项目实践说明: 本实践项目是嵌入式开发培训(阶段1)基础应用开发视频课程的综合实践项目. 项目开发使用的技术知识点包括:C语言编程,文件编程,串口编程,网络编程,多线程编程,进程间通信,嵌入式交叉开发,嵌入式Web服务器开发,HTML编程. 本文档对应视频教程多路温度采集系统–项目介绍 系统硬件 主控模块:NanoPI开发板(arm9 s3c2451) 功能: 1.运行后台采集控制程序,实时动态采集多路串口与网络的温度数据. 2.运行嵌入式we

基于arm的多路温度采集控制系统(2)需求分析

嵌入式项目实践–多路温度采集控制系统(2)需求分析 本文档视频教程多路温度采集系统–需求分析 项目实践流程: 1.设计项目需求文档 说明项目设计目的,项目功能,项目模块,实现技术. 2.项目编码设计 程序要求模块结构化(函数),编码风格良好,多文件结构实现. 3.项目测试 设计测试用例,说明测试步骤,测试结果. 4.项目总结与演示 编写项目总结文档,PPT演示文档,进行项目演示说明. 项目提交内容: 1.项目需求规格说明书. 2.项目源代码,makefile文件,可执行文件,项目实施说明书. 3

基于arm的多路温度采集控制系统(3)配置文件

嵌入式项目实践–多路温度采集控制系统(3)配置文件 本文档对应视频教程多路温度采集系统–配置文件 配置文件使用 菜单程序会读取配置文件数据.     char cmd[16];//命令数据缓冲区     load_dev(g_dev);     while(1){ 主控程序会读取与保存数据. int init_sys(void) {        printf("init system struct,LED flash.\n");     load_dev(g_dev); }    g

MVC+EF+Autofac(dbfirst)轻型项目框架

前言 原来一直使用他人的开源项目框架,异常的定位会很麻烦,甚至不知道这个异常来自我的代码还是这个框架本身.他人的框架有一定的制约性,也有可能是我对那些框架并没深入了解,因为这些开源框架在网上也很难找到高效并且规范的文档.比如别人的框架可能调用了Enterprise Library来实现权限的验证,但在我的项目中,权限验证有可以复用的模块,所以在整合时会非常不灵活.... 参考了很多网上的优秀框架,看了几本书后,突然意识到易用才是开发和使用框架的出发点与立足点,框架并不是越复杂越好,评价一个框架的

【转】android开源项目和框架

特效: http://www.androidviews.net/ http://www.theultimateandroidlibrary.com/ 常用效果: 1. https://github.com/novoda/ImageLoader  异步加载图片,缓存,生成缩略图, 基本上每个应用都会需要这个lib.    android-query框架2. https://github.com/chrisbanes/Android-PullToRefresh   类似新浪微博,twitter,下拉

我所研究过的 ASP.NET MVC 或者 .NET 或者 ORM 或者框架的开源项目

ASP.NET MVC 的开源项目有很多,这里列出我所研究过的: SocialGoal v1.0.0 prodinner nopCommerce SmartStore.NET 由于今天才做收集工作,可能以前研究了很多开源项目,这里却没有列出来,以后会及时更新上来,谢谢! 谢谢浏览! 我所研究过的 ASP.NET MVC 或者 .NET 或者 ORM 或者框架的开源项目,布布扣,bubuko.com

android开源项目和框架 .

特效: http://www.androidviews.net/ http://www.theultimateandroidlibrary.com/ 常用效果: 1. https://github.com/novoda/ImageLoader  异步加载图片,缓存,生成缩略图, 基本上每个应用都会需要这个lib.    android-query框架2. https://github.com/chrisbanes/Android-PullToRefresh   类似新浪微博,twitter,下拉