承接第七天:zigbee无线传感网实训---实现LCD开发板播放音乐并切换歌曲(The Seventh day)

一、实验准备器材如图:

            

二:步骤

===============================一、裸机开发-IO控制===========================

1.1 控制流程
    (1)查看原理图
            得到硬件对应的是cc2530的什么引脚
    (2)查看芯片手册
            找到对应的控制方法
    (3)编写代码
            根据芯片手册的说明,写程序控制对应的引脚
    (4)编译程序
    (5)下载运行

1.2 IO寄存器
        IO寄存器共三组,每组以下标0-2命名
        
        1.2.1 PxSEL IO功能选择寄存器
                每个IO口引脚有通用功能和拓展功能(外部设备IO信号)
                通过操作引脚对应的下标注,即可生效
                0:通用功能
                1:外设功能
        1.2.2 PxDIR 引脚功能选择寄存器
                通过操作引脚对应的下标注,即可生效
                0:输入功能
                1:输出功能
        1.2.3 Px_n 具体的引脚使用
                设置对应功能后,可以直接使用。
                    #define BLED P1_0
                    #define KEY3 P1_2
                    写:BLED = 1;
                    读:KEY3 == 1;
----------------------------------------------------------------------
========================二、协议栈的工作原理======================================            
    1.1 有线网的工作原理:
            由三大运营商各自管理唯一的基站管理上网
            --->总基站将网络分发M条网线发送到全国各地基站
            --->各地基站将网络分发到每个城市的服务器(路由)
            --->城市路由将网线分布成每条网线,分发到每家每户
    1.2 无线网络工作原理:
            将上述的有线全部转换为无线
    
    1.3 无线网络的组建
         必须由RF模块向空中发出网络组建信号,在其传播范围内,只要感知到网络信号,就会自动形成一个无线的局域网。
    1.3.1 数据的发送:
            根据无线网络的网段:向空中发送一个特定的某个波形的无线电波,电波自动匹配相同的网络标记。
            完成数据的收/发
    1.3.2 网络标识符的作用:
            在无线网络通信时,由于同一个局域网中,往往不止存在一个网络。但在在数据收发时,应该区分符合条件的网络
            才能接收数据,网络标识符用于区分不同的网络。(类似有线网络中的IP地址)
-------------------------------------------------
 安装Z-stack(先下载:ZStack-CC2530-2.5.1a.exe) --> 在磁盘c中找到“ C:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\SampleApp\CC2530DB ”
    打开“ SampleApp.eww ”
    
    APP:应用程序目录,用户开发程序的位置
    ZMain:协议栈的第一句代码执行的位置
        zmain ---> main ---> osal_init_systeam();
                            --->osalInitTasks();         //创建任务ID,每任务都会有对应的处理函数(9个)
                            --->SampleApp_Init(taskID)  //用户事件初始化
        初始化完成后,准备启动系统
        osal_start_system(); --->系统进入死循环(检测每个任务是否发生)
            do {
                    if (tasksEvents[idx])  // 判断任务事件是否发生,当事件发生,对应的ID会被置1
                    {
                        break;
                    }
                } while (++idx < tasksCnt);
                
            --->执行任务对应的处理函数
                events = (tasksArr[idx])( idx, events );
                      tasksArr数组:保存了每一个任务对应的处理函数 
                      events:(事件对应的任务)
-----------------------------------------------------------------------
打开协议栈之后,进行编译,下载时,注意选择下载的设备模式。
    左边导航栏--->workspace-->coordinatorEB/coordinatorEB-pro

2.1 zigbee终端的模式
        协调器(coodr):专门用于组建网络(没有网络的情况),唯一的管理者。管理整个无线网络(组建、节点加入、路由加入)

路由(route):多级网络的组建,数据的分发。

终端(enddev):只能加入到已有的网络当中,仅仅只能数据的收发。

2.2 网络拓扑结构(结合图示,将工作原理讲述清楚)
        星型:每个节点/路由都是必须直接与协调器相连,连接数少,范围受限
        网状:每个路由器都能进行互联,数据转发速度快,可靠性高
        树状:更好的拓展网络连接数,网络的距离。

-----------------------------------------------------------------------
        组网测试(协调器):
            (1)、修改PID: /Tools/f8wconfig.cfg/PAN_ID = (0x0011 - 0x0024)
                                                            第一排第一组:0x0011
                                                            第一排第二组:0x0012
                                                            第一排第三组:0x0013
                                                            第一排第四组:0x0014 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24

(2)配置IO引脚
                    在ADD--->sampleapp.h 添加头文件 ioCC2530.h
                    在ADD--->sampleapp.c -->SampleApp_Init(180行后)函数中添加LED2的初始化函数(P1DIR |= 0x02)

(3)增加代码:
                (注意先将头文件和IO初始化)
                /app/sampleapp.c/400行/增加YLED=1;(YLED 是自己define定义的)

(4)编译
            
            (5)下载配置
                左边导航栏--->workspece--->coordinatorEB,下载

组网测试(节点)
            (1)修改PID:/Tools/f8wconfig.cfg/58行/PAN_ID=(0x0000-0x3fff)
                        第一排第一组:0x0011   0x0012     0x0013
                        第二排第一组:0x0021   0x0022     0x0023
            (2)配置IO引脚
                    在ADD--->sampleapp.h 添加头文件 ioCC2530.h
                    在ADD--->sampleapp.c -->SampleApp_Init(180行后)函数中添加LED2的初始化函数(P1DIR |= 0x02)

(3)增加代码:
                (注意先将头文件和IO初始化)
                /app/sampleapp.c/400行/增加YLED=1;
            (4)编译
            
            (5)下载配置
                左边导航栏--->workspece--->EnddeviceEB,下载

完整版请下载:coodr_or_endivce.zip

请下载:串口调试器
---------------------------------------------------------------
    初始化串口
            配置串口号、波特率、流控、校验位等以前我们都是配置好寄存器然后使用。
            现在我们在workspace 下找到HAL\Target\CC2530EB\drivers 的chal_uart.c文件,
            我们可以看到里面已经包括了串口初始化、发送、接收等函数
            
    总结:
            在组网的时候一定要注意修改panid 防止串网
            ttySAC0 ---> 对应现在连接电脑的串口
            ttySAC1 ---> com2
            ttySAC2 ---> com3
            ttySAC3 ---> com4

串口调试器显示:


            开发板                           协调器节点
            5v                    5v
            rx                    tx
            tx                    rx
            gnd                    gnd
        T**H**

ZigBee连接开发板显示温湿度        
 
serial.c

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <sys/types.h>
#include <sys/select.h>
#include <stdlib.h>
#include <unistd.h>
#include <netdb.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#include <pthread.h>/*目的:linux中的串口配置效果:我的开发板跟另外一个开发板之间使用串口来收发数据6818的开发板上有四个串口的驱动,分别/dev/ttySAC0  ----/dev/ttySAC3接收端
*/
#define UARTPATH   "/dev/ttySAC1"int ser_fd;//将串口配置封装成函数
int serial_init(int *serialfd)
{struct termios myios;//打开串口*serialfd=open(UARTPATH,O_RDWR);//com2if(*serialfd==-1){perror("打开串口失败!\n");return -1;}//获取现有串口参数tcgetattr(*serialfd,&myios);//原始模式 cfmakeraw(&myios);//设置波特率cfsetispeed(&myios, B115200); cfsetospeed(&myios, B115200);myios.c_cflag |= CLOCAL | CREAD;//8位数据位,无奇偶校验myios.c_cflag &= ~CSIZE;myios.c_cflag |= CS8;myios.c_cflag &= ~PARENB;  //无奇偶校验//1位停止位myios.c_cflag &= ~CSTOPB;//清除串口缓冲区tcflush(*serialfd,TCIOFLUSH);myios.c_cc[VTIME] = 0;myios.c_cc[VMIN] = 1;tcflush(*serialfd,TCIOFLUSH);//让前面的配置生效tcsetattr(*serialfd,TCSANOW,&myios);return 0;}
void *fun(void *arg)
{char message[6];while(1){memset(message,0,6);read(ser_fd,message,6);printf("message = %s\n",message);//打开LCD屏int fd = open("/dev/fb0", O_WRONLY);if(fd == -1){perror("打开LCD失败:\n");exit(0);}write(fd, &message, 4);close(fd);tcflush( ser_fd, TCIOFLUSH); //刷新缓冲区}}int main()
{char buf[30];//配置串口serial_init(&ser_fd);//使用串口收发数据(通过串口接收数据)pthread_t thread;pthread_create(&thread,NULL,fun,NULL);while(1){write(ser_fd,"11",3);sleep(1);write(ser_fd,"10",3);sleep(1);write(ser_fd,"21",3);sleep(1);write(ser_fd,"20",3);sleep(1);}//关闭close(ser_fd);return 0;
}   

在虚拟机上编译:

arm-none-linux-gnueabi-gcc serial.c -o serial -lpthread

在LCD开发板上下载并打开:

tftp -g 192.168.1.182 -r serial
chmod 777 serial
./serial

结果显示:

zigbee无线传感网实训---zigbee显示温湿度以及连接LCD开发板显示温湿度(The Eighth day)相关推荐

  1. zigbee无线传感网实训---在LCD屏上显示JPG图片、 触摸屏、相册(The fourth day)

    b 承接实训第三天:zigbee无线传感网实训---LCD显示bmp图片及一些简单的c语言编程功能( On the third day) 一.修改实训第三天中练习2中的bug(在原码的基础上增加:ls ...

  2. zigbee无线传感网实训---linux命令的简单了解(one day)

    嵌入式软件介绍:         1.VMware 虚拟机             安装虚拟机将芯片虚拟化一块出来运行linux系统         2.Ubuntu18.04            ...

  3. cc2530期末试卷_无线传感网期末考试 zigbee期末考试试题

    无线网传感网的特点是什么? 除了无线网络的移动性和断开性外,无线传感器网络还具有许多其他独特的特性. 1)传感器节点具有体积小.成本低.计算能力有限等优点. 2)传感器节点数量大,容易发生故障. 3) ...

  4. zigbee无线传感网技术与应用开发v2.0_ZigBee网络架构详解

    2020年11月13日 16:16 在万物互联-物联网的背景下,zigbee网络应用越加广泛,zigbee技术具有强大的组网能力,可以形成星型.树型和网状网3种结构,这三种网络结构各有优势,大家可以根 ...

  5. zigbee无线传感网技术与应用开发v2.0_物联网通讯协议——Zigbee

    一.什么是Zigbee ZigBee是一种新兴的短距离.低速率无线网络技术.具有成本低.体积小.能量消耗小和传输速率低等优势. ZigBee是介于无线标识技术和蓝牙之间的一种技术,主要用于近距离无线连 ...

  6. Zigbee无线传感网 CC2530+DHT11DS18B20 温湿度采集 串口上位机显示

    文章目录 一.介绍 二.上位机数据采集 (一)采集数据 (二)拓扑结构 (三)新节点加入网络 (四)节点事件 三.实现分析 (一)配置文件 (二)发送 (三)短地址和数据获取 (四)数据包分析 (五) ...

  7. ZigBee无线传感网络家庭自动化设计

    0 引言 近年来,智能家居这一概念随着物联网新技术的推动,逐渐走入人们的视野,市场需求发展空间巨大.这类新技术包括以ZigBee数传为代表的无线传感器网络,在此次智能家居系统里面将看到ZigBee数传 ...

  8. Zigbee 无线传感网络 无线通信技术 协议体系结构 OSAL

    什么是zigbee 无线传感网络的无线通信技术可以采用zigbee,蓝牙,wifi和红外 Zigbee技术是一种短距离,低复杂度,低功耗,低成本,低数据速率的双向无线通信技术,是一组基于IEEE802 ...

  9. ZigBee无线传感网络概述

    目录 1.ZigBee无线传感网络概述 1.1.定义 1.2.ZigBee无线传感网络的特点 2.ZigBee无线传感网络的组成 2.1.ZigBee无线传感器网络的组成 2.2.ZigBee无线传感 ...

最新文章

  1. 动态规划算法--矩形最小路径和
  2. java 自助更改密码 api_搭建ldap自助修改密码系统--Self Service Password
  3. linux | 网卡驱动
  4. Android 线程 thread 两种实现方法!
  5. Ubuntu下面的Keras可视化+权重维度获取-Netron的安装使用
  6. 4.3.2 基于集合的操作
  7. kotlin数据库_如何在Kotlin应用程序中使用Xodus数据库
  8. 网站的服务器分哪几种,服务器有哪几种分类?_服务器可分为四种类型
  9. Multi GET  API
  10. svg 自己做动画图片 GSAP真的好用
  11. python数据结构-链表
  12. C语言齿轮参数计算程序,C语言程序实现齿轮基本参数几何尺寸计算.pdf
  13. 基于FML的MinecraftMod制作学习笔记——开发环境的配置
  14. cocos creator 背包bag制作
  15. html图片格式有什么,jpeg是一种什么格式?
  16. python“~”符号的用法
  17. (BN)批量归一化全面解析
  18. 计算机ping不通dns,电脑不能上网但是可以Ping通和DNS解析解决办法是什么
  19. Python之安装MySQLdb
  20. 项目上线那些事之Can't connect to X11 window server异常

热门文章

  1. Tableau自定义形状
  2. 区块链 + 网络切片,加快5G垂直行业应用落地
  3. 【对讲机的那点事】图说海能达DS-6210 集群系统
  4. cadence快捷键总结(转)
  5. 《隐秘的角落》结局你真的看懂了吗?(细思极恐)
  6. 最好用的Linux系统磁盘数据修复工具合集!
  7. R语言绘图—甜甜圈图
  8. 数据库制作宽表的方法
  9. manjaro linux_从头开始设置Manjaro Linux
  10. C语言内存分配函数void* malloc(size_t size)的实际分配情况