无线传感网络课件_第1页
无线传感网络课件_第2页
无线传感网络课件_第3页
无线传感网络课件_第4页
无线传感网络课件_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、无线传感网络(wsn)(wsn)无线传感网络关键词英文:wireless sensors networkingl传感l无线网络概念l无线传感器网络是一种分布式传感网络,它的末梢是可以感知和检查外部世界的传感器。wsn中的传感器通过无线方式通信,因此网络设置灵活,设备位置可以随时更改,还可以跟互联网进行有线或无线方式的连接。通过无线通信方式形成的一个多跳自组织网络。课程内容l传感技术应用l无线传感网络通信基础l无线传感网络应用6考核办法l平时成绩:20%l期末大作业:80%zigduinozigduino开发平台larduino体系l优点:易上手,可实现快速应用l单片机开发实质:配置寄存器硬件平

2、台软件平台leclipse,相比arduino ide、keil、iarlarduino程序特点arduinoarduino核心库函数和系统库函数lvoid setup()/初始化配置函数,在main函数中首先被执行,只执行一次lvoid loop()/无限循环函数ldelay()/延迟函数lzigduinozigduino基础实验l通用数字io口点亮ledl串口的使用ladc口光敏传感器控制l外部中断点亮ledl定时器的使用l1602型lcd的应用备料lledl电阻若干:150ohm、10kohm、2kohml光敏电阻l面包线l按键开关常用传感器驱动开发和应用ldht11:温湿度传感器lad

3、xl345:三轴加速度传感器lbh1750fvi :光照传感器lds18b20:温度传感器单片机ioio接口li/o口是输入/输出的简写,i/o口分数字i/o口和外设i/o口两种。l外设i/o口有adc接口,timer接口(时钟),中断接口,i2c接口,串口等等。l一个芯片的i/o口引脚是用于数字i/o口还是外设i/o口,可以通过寄存器配置进行选择。 io io口实验一l第一步: 连接电路 数字io口实验一ioio口实验一l第二步:写程序,新建名字叫io1的工程项目;l在setup()函数里面写入:l在loop()函数里面写入:pinmode(3,output);digitalwrite(3,

4、high);delay(1000);/延时1000msdigitalwrite(3,low);delay(1000);怎么理解delay( )函数?就好像一个要走路的人在原地踏步!mcu一旦上电,根本停不下来arduinoarduino包含的以下数字ioio口库函数lvoid pinmode(uint8_t pin, uint8_t mode):设置管脚的方向,pin表示管脚的序号,mode表示方向,只能取input,output两个值,如下面的代码把管脚10设成输入: lpinmode(10,input); lvoid digitalwrite(uint8_t pin, uint8_t va

5、l):设置管脚的数字电平, pin表示管脚的序号,value表示电平,只能取high,low两个值,如下面的代码把管脚5设成高电平: ldigitalwrite(5,high); lint digitalread(uint8_t pin):返回管脚的数字电平, pin表示管脚的序号,返回值只能是high或low,如下面的代码将返回管脚7的数字电平: lval = digitalread(7); ioio口实验二l电路连接新建io2io2工程项目下载程序后,led红灯亮了。然后你用黑色导线的另外一端插入到gnd即地,此时就可以发现灯灭了,因为3号引脚读取的电平是低电平。(默认情况下管脚输入的读取

6、值是高电平)l#include io2.hlvoid setup() l lpinmode(3,output); /配置3号数字引脚为输出模式lpinmode(1,input); /配置1号数字引脚为输入模式l lvoid loop() l lif (digitalread(1) /读取1号引脚的电平判断是否为高电平ldigitalwrite(3,high); /将3号引脚的电平设置为高电平lelse /否则ldigitalwrite(3,low); /将3号引脚的电平设置为低电平l 总结l数字io口既可以是输入,也可以是输出。但是无论是输入还是输出,它是都是数字型的,要么是0(零电压low)

7、,要么是1(电源电压high)。l当它为高电平即电源电压,它相当于电源正极,但是它的输出电流受限于单片机io口。为低电平时,相当于gnd即地。(uart)(uart)串口:串行通信接口zigduinozigduino里面串口的英文单词用serialseriall串口通信有两个方向:发送和接收l串口有一个参数:波特率,(单位是bps)即数据通信的传输速率。常用波特率数值有( 300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200bps)。通信的接收方需要设置与发送方一致的波特率才可以正确接收到数据。l假定我们自己是单片机,

8、单片机读,是输入;写则是输出。串口库函数lvoid begin(unsigned long baud):串口使能,并工作在数值为baud的波特率下,如下面的代码启动了uart,并工作在57600的波特率下: lserial.begin(57600); lint available(void):返回串口缓冲区中有多少字节没有读取的数据; lint read(void): 返回串口读取到的当前数据,同时从缓冲区中删除此数据; lsize_t write(uint8_t):往串口写入一个字节; lsize_t write(const char *str):往串口写入一个字符串; lsize_t wr

9、ite(const uint8_t *buffer, size_t size):往串口写入一个字节数组的前面的大小为size的部分; lprint(data):往串口写入数据,可以是数字型的也可以是字符串; lprint(data, encoding):往串口写入格式化数值数据,encoding 可以是十进制(dec),十六进制(hex),八进制(oct),二进制(bin),字符(byte),如下面的输出; lserial.print(75); / 输出75 lserial.print(75, dec); / 输出75 lserial.print(75, hex); /输出4b lserial

10、.print(75, oct); /输出113 lserial.print(75, bin); /输出1001011 lserial.print(75, byte); / 输出k,75代表的字符lprintln(data):和print(data)基本相同,不过在最后加上了回车换行。串口实验一:serial.printserial.print和serial.writeserial.write的区别lint i=52;lvoid setup() lserial.begin(57600);llvoid loop() lserial.print(i);l serial.println();lseri

11、al.write(i);lserial.println();ldelay(1000);lserial.print( )打印的是原来的内容;而serial.write( )打印出来的是ascii码值串口实验二:实现单片机与计算机之间的串口通信l台式机也有串口,所以可以与单片机通信l只需要usb线连接台式机和单片机开发板就可以了l用到acessport串口软件l这里程序的功能是将计算机发给单片机的数据发回给计算机思考:为什么这里serial.writeserial.write没有打印出asciiascii码值?lvoid setup() lserial.begin(57600);llvoid lo

12、op() lwhile (serial.available()lserial.write(serial.read();ldelay(1000);ladcadcladc,英文解释为analog-digit convert(模拟数字转换),简单意思是单片机可以读取外部的模拟电压值转化成数字值。zigduinozigduino一共有6 6个adad管脚即模拟输入管脚l为了实现zigduino管脚的模拟输入,我们需要了解最基本的ad采样。所谓ad采样就是把模拟信号转换成数字信号,在转化的过程中需要关注采样精度、采样频率和采样范围,对于zigduino使用的atmega128rfa1来说,它内置的是10

13、位的ad采样精度,即采集出来的数值范围是0-1023,采样频率则和应用程序相关,但最快不能超过mcu的限制,采样范围表示的是允许的模拟信号的幅度。对于atmega128rfa1来说,用户可以选择1.5v,1.6v,1.8v或任意外部输入的在0-1.8v之间的电压作为参考电压,也是采样的最高电压,iduino默认的采样范围是0-1.8v,用户可以通过下面的函数来改变参考电压: lvoid analogreference(uint8_t mode) l其中mode可选列表如下: l internal1v5:1.5v内部参考电压; l internal1v6:1.6v内部参考电压; l defaul

14、t:默认内部1.8v参考电压; l external:通过aref管脚输入的外部参考电压。 lint analogread(uint8_t pin):返回管脚的模拟电平,即ad采样的结果,只能用在模拟管脚上, pin表示管脚的序号,返回值的范围是0-1023,如下面的代码将返回管脚a0的采样结果: lval = analogread(a0);l在实际应用中,对于某些温敏、光敏、压敏、热敏传感器来说,为了测出它们的电阻变化,必要的分压电路也是必须的,下面是一个简单的光敏测量电路:io口d1拉高,相当于电源。为了使信号的输入符合zigduino的电压采样范围,对信号进行必要的分压是必须的。adca

15、dc实验一:自动光感ledled灯l用到的元器件:l电阻470欧姆一个,(左)用于限流。l电阻2k欧姆一个,(右)用于分压。l10k光敏电阻一个lled一个l导线5根程序lint sensevalue=0;lvoid setup() lpinmode(0,output);lpinmode(1,output);lserial.begin(38400);llvoid loop() ldigitalwrite(0,high); /供电lsensevalue=analogread(a1); /读取adc0口模拟值lif (sensevalue500)ldigitalwrite(1,high); /当光

16、线暗时,点亮led灯lelseldigitalwrite(1,low);lserial.print(sensevalue);ldelay(1000);l串口可以调试你的程序,很方便中断interrupt(int)interrupt(int)l什么是中断l中断的类型l中断三要素l中断作用什么是中断l 单片机暂停正在运行的程序,保存现场,自动转去执行相应的程序,执行完以后再返回断点继续执行被打断的程序。这个过程就叫中断。中断的类型l可分为:内部中断和外部中断l内部中断有:内部定时器中断、串口中断、ad中断、spi中断等。这些设备或者接口都集成在单片机内部。l外部中断有:外部信号引起的中断中断三要素

17、1.中断源:中断产生的来源。2.中断方式(外部中断):高电平、低电平、上升沿、下降沿等。3.中断服务程序:中断产生以后,单片机去执行的程序。中断如何使用l三个步骤:l1. 设置需要开启的中断源。l2. 设置中断方式。l3. 编写中断服务程序。中断的作用l中断使得单片机实现系统调度,实时响应。l使用中断,可以实现定时报警、外部中断报警等功能。中断库函数lvoid attachinterrupt(uint8_t interruptnum, void (*userfunc)(void), int mode) 其中的第一个参数表示arduino中的中断号,第二个参数是中断处理函数名称(需要用户定义),

18、第三个参数是中断模式,就是什么情况下触发中断,一共有四种模式:low表示低电平触发,change表示电平改变时触发,rising表示电平由低变高时触发,falling表示电平由高变低时触发。lvoid detachinterrupt(uint8_t interruptnum) l有些中断是会持续产生的,如低电平产生的中断,此时如果不加以控制,系统会陷入持续的中断处理中,为此在处理中断函数时首先需要把中断禁止掉,detachinterrupt就是用于完成此目标,后面的唯一参数就是中断号。外部中断的中断号与管脚号对照表中断号中断号int0int1int2int3int4int5int6管脚号管脚号

19、632122012中断实验用一个按键开关连接到一个外部中断口,当中断触发时就改变一次led灯的状态代码lvoid myhanlder() /中断服务程序l ldetachinterrupt(1); /关中断ldigitalwrite(0,!digitalread(0); /将led灯的状态改变一次l lvoid setup() l lpinmode(0,output); lpinmode(3,input_pullup); /将中断口上拉l lvoid loop() l lattachinterrupt(1, myhanlder, falling); /开中断,设置中断触发方式为下降沿方式lde

20、lay(1000); l attachinterrupt(1, myhanlder, falling)表表示的是当由下降沿触发的示的是当由下降沿触发的中断中断1产生时系统会自动产生时系统会自动去执行去执行myhanlder函数,函数,从而让绿灯的状态发生变从而让绿灯的状态发生变化。化。扩展实验l将int1的中断触发方式设置成低电平触发,并实现当触发中断时打印出“interrupt triggered!”总计l外部中断总共有8个,它们可以组合起来使用。定时/ /计数器l定时器/计数器(timer/counter,tc)是一种计数装置,若计数内部的时钟脉冲,可视为定时器;若计数外部的脉冲,可视为计

21、数器。实质都是计数。定时器(timertimer)l定时功能也是通过计数器的计数来实现的。不过此时的计数脉冲来自单片机的内部。每个机器周期产生一个计数脉冲,也就是每个机器周期计数器加1。定时器中断l定时器的应用之一:设置内部定时器中断l原理:专门有一个寄存器(8位或12位或16位)存放计数,每个机器周期计数器加1,加满就产生计数溢出中断。l设置一个一秒一次的定时器中断,改变一次led的状态。定时器中断timeronetimerone实例#include timerone.hvoid callback() digitalwrite(3, !digitalread(3) );void setup(

22、) pinmode(3, output); timer1.initialize(500000); / 初始化定时器1,设置中断周期为半秒 timer1.attachinterrupt(callback); / 设置一个定时器溢出中断服务程序void loop() / your program here.对比用delay()delay()lcd1602lcd1602l工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)l1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一

23、个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义cgram,显示效果也不好)。l市面上字符液晶大多数是基于hd44780液晶芯片的,控制原理是完全相同的,因此基于hd44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 引脚1602采用标准的16脚接口,其中:第1脚:gnd为电源地第2脚:vcc接5v电源正极第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10k的电位器调整对比度)。第4脚:rs为寄存器选择,高电平1时选择

24、数据寄存器、低电平0时选择指令寄存器。第5脚:rw为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:e(或en)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:d0d7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。字符集1602液晶模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“a”的代码是01000001b(41h),显示时模块把地址41h中的点阵字符图形显

25、示出来,我们就能看到字母“a”。写0 x38设置为8-bit接口.写0 x06输入方式设定写0 x0e开启显示屏写0 x01屏幕清空写0 x80设置显示位置写0 x01屏幕清空写0 x8x或0 xcx写数据写0 x01或0 x02屏幕清空,光标位置归零或者新文字替换老文字写数据zigbeezigbee无线通信原理l短距离、低功耗、低速率的无线组网通信技术l可使用2.42.485g之间的16个频段通信zigbeewifi频段频段2.4g、900m等等2.4g、5g等等距离(最远)距离(最远)300m20m数据通信速率数据通信速率250k10m/100m无线通信数据包格式包头包头包类型包类型目的地

26、址目的地址源地址源地址有效数据有效数据包结束包结束1字节字节1字节字节4字节字节4字节字节1-116字节字节1字节字节l只有在同一频段的无线节点之间才能进行数据收发。zigduinoradiozigduinoradio库使用说明l1. 初始化zigduinoradio库 lvoid begin(int chan); l以上函数必须在使用zigduinoradio之前调用。chan表示通讯频段,取值范围是11-26zigduinoradiozigduinoradio库使用说明l2. 发送数据包 l 发送数据有一般模式和精简模式两种,不管在何种模式下,都是以数据包为最小传输单位。在复杂模式下,发送数据需要三步: l 开始发送 lvoid begintransmission(); lvoid begintransmission(uint16_t destaddress); l 写入数据前,用户必须调用begintransmission方法,传入参数表示目标地址,如果没有参数,则表示发送广播数据。 l写入要发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论