《ZigBee开发笔记》第五部分 外设篇 - 协议栈实验 第1章 CC2530温度传感器DS18B20

本文主要是介绍《ZigBee开发笔记》第五部分 外设篇 - 协议栈实验 第1章 CC2530温度传感器DS18B20,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1实验目的

  1. 掌握 ZStack 的工作原理;
  2. 知道如何添加 DS18B20 驱动到协议栈上;
  3. 知道如何在协议栈上读取、发送、接收温度。

2实验设备

硬件:PC 机一台; ZB2530(底板、核心板、仿真器、USB 线、OLCD) 两套 ;DS18B20 一个

软件:win7 系统,IAR 8.20 集成开发环境、串口助手

3实验相关电路图

这里写图片描述

图 1

4实验分析

注意:本实验是以点播为依托,终端节点(或者路由)读取温度传感器 DS18B20 的温度值,然后发送给协调器,协调器负责接收温度值,并将其通过串口发给电脑显示出来。DS18B20 驱动程序,是在裸机实验上的驱动程序略作修改的,具体读者可以打开工程看看。下面分别讲解温度读取、发送和接收:

 温度读取
(1) 步骤一:将 ds18b20.c 和 ds18b20.h 添加到如图所示的文件夹下;

这里写图片描述

图2 驱动移植到 ZStack 的路径

(2) 步骤二:在 workspace 里添加 ds18b20.c 到 App 文件夹下,然后,在 SampleApp.c 里将 ds18b20.h 包括进去,如下图所示;
这里写图片描述

(3) 步骤三:对 ds18b20.c 和 ds18b20.h 进行修改,初始化传感器引脚。
这里写图片描述

(4)步骤四:DS18B20.c 文件还需要修改一个地方。打开文件将原来的延时函数改成协议栈自带的延时函数,保证时序的正确。同时要包含#include"OnBoard.h"。
将基础实验中的延时函数

void Ds18b20Delay(unsigned int k) //时钟频率为 32M
{unsigned int i,j;for(i=0;i<k;i++)for(j=0;j<2;j++);
}

改成

void Ds18b20Delay(unsigned int k) //时钟频率为 32M
{while (k--){asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");}
}

这里写图片描述

 温度信息发送
调用周期性点播函数将温度信息发送给其它 Zigbee 节点,具体带代码如下:
这里写图片描述
这里写图片描述

 温度信息接收
调用接收函数,接收温度信息,具体代码如下:
这里写图片描述

5实验现象

1)选择 CoodinatorEB-Pro, 下载到开发板 A;作为协调器,通过 USB 线跟电脑连接.

2)选择 EndDeviceEB-Pro, 下载到开发板 B;作为终端设备无线发送数据给协调器,也通过 USB线跟电脑连接.

3)给两块开发板上电,打开串口调试助手,设为:115200 8N1 并打开串口,设置如下图所示(串口请选择自己的端口号)。 终端连网成功后会向协调器发数据,编者的开发板上OLED,所以下载好程序后就可看到OLED上有温度显示。当然也能通串口显示,笔者就不演示了,有兴趣的可以看看串口显示的是否和OLED有差异。

【注】关于DS18B20的理论知识课参看笔者的另一篇博客。
基础实验 第1章CC2530温度传感器DS18B20

本章参考代码

点击进入

这篇关于《ZigBee开发笔记》第五部分 外设篇 - 协议栈实验 第1章 CC2530温度传感器DS18B20的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120922

相关文章

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis