目 录
目 录 ...................................................................... 1 摘 要 ...................................................................... 3 第一章 绪论 ................................................................. 5
1.1 选题背景 ............................................................ 5 1.2 国内外发展现状和趋势 ................................................ 5 第二章 系统总体方案设计 ..................................................... 7
2.1智能终端设计 ......................................................... 7 2.2 Atmega128物联网应用系统 ............................................. 7 2.3 基于KingView与单片机实时对智能终端的控制及数据采集 ................. 8 2.4 本章小结 ............................................................ 8 第三章 系统硬件的选择 ....................................................... 9
3.1 智能终端硬件的选择 .................................................. 9
3.1.1单片机的选择 ................................................... 9 3.1.2模数转换芯片的选择 ............................................ 10 3.1.3步进电机驱动芯片的选择 ........................................ 10 3.1.4 通信芯片的选择 ................................................ 11 3.1.4 红外遥控和红外接收管的选择 .................................... 12 3.1.5 温度传感器的选择 .............................................. 13 3.1.6 步进电机的选择 ................................................ 13 3.1.7 液晶显示器的选择 .............................................. 14 3.1.8 光敏电阻的选择 ................................................ 14 3.2 物联网应用系统硬件的选择 ........................................... 15
3.2.1 单片机的选择 ................................................ 15 3.2.2 网络接口芯片的选择 ............................................ 16 3.2.3 锁存器的选择 ................................................ 17 3.2.3 存储器的选择 ................................................ 18 3.3 本章小结 ........................................................... 19 第四章 硬件电路设计 ........................................................ 19
4.1 智能终端硬件电路设计 ............................................... 19
4.1.1晶振振荡电路及复位电路 ........................................ 19 4.1.2 光强采集及AD转换电路 ......................................... 20 4.1.3 串口通信电路 .................................................. 21 4.1.4 步进电机驱动电路 .............................................. 21 4.1.5 液晶驱动电路 .................................................. 22 4.1.5 红外接收电路 .................................................. 22 4.1.5 智能终端系统总图 .............................................. 23 4.2 物联网应用系统硬件设计 .......................................... 23 4.3 本章小结 ........................................................... 24 第五章 软件设计 ............................................................ 25
5.1 智能终端软件设计 ................................................... 25
5.1.1 红外解码程序 .................................................. 25 5.1.2 AD转换程序 ................................................... 27 5.1.3 串口发送与接收程序 ............................................ 28
1
江苏师范大学科文学院 基于AVR单片机物联网系统设计
5.1.4 步进电机驱动程序 .............................................. 29 5.1.5 液晶驱动程序 .................................................. 29 5.1.6 DS18B20温度传感器驱动程序 .................................... 31 5.1.6 单片机与Kingview 6.55通信程序 ................................ 35 5.1.7 主程序 ........................................................ 37 5.2 物联网应用系统软件设计 ............................................. 38
5.2.1嵌入式中的WEB页设计 .......................................... 38 5.2.2 HTTP服务程序设计 ............................................. 40 5.2.3 串口中断uart1服务程序 ........................................ 42 5.3 本章小结 ........................................................... 42 第六章 系统调试 ............................................................ 43
6.1 物联网系统调试 ..................................................... 43 6.2 本章小结 ........................................................... 47 结 论 ...................................................................... 48 致 谢 ...................................................................... 49 附录 ....................................................................... 50 参考文献 ................................................................... 51
2
江苏师范大学科文学院 基于AVR单片机物联网系统设计
摘 要
本论文中介绍了关于AVR单片机以太网通信系统、系统的结构组成及工作原理,提供了基于Atmega128单片机和RTL8019的硬件电路图,并介绍了NUT/OS实时操作系统和RTL8019的特点。本设计介绍了基于51单片机的智能终端系统,如何采集室内环境参数,设计了终端系统原理图以及说明如何将数据通过串口将采集的数据传输到AVR单片机中,然后用户可以通过IE浏览器查询。在离线状态时,本设计介绍了51单片机与组态王KingView的通信协议,以及单片机在组态王中的通讯格式及通讯设置。通过实践证明,系统能够满足对室内环境的检测和控制,如室内温度、光强以及百叶窗的旋转角度等。电路设计方法简单成本低,而且模块具有良好的扩展性。设计中的物联网控制系统与需要联网的设备连接,可以远程实时操纵设备,并通过单片机采集数据,传输到本地计算机,并且用浏览器将信息图文并茂的显示,这样可以方便的得到实验数据,实现硬件设备的共享,也可以大大节省人力物力。
【关键词】:物联网、NUT/OS、组态王
3
江苏师范大学科文学院 基于AVR单片机物联网系统设计
Abstract
This paper is described in the Ethernet communication system on the AVR Microcontroller, the structure and working principle of the system, provides a hardware circuit based on the
Atmega128 MCU and RTL8019, and describes the characteristics of the NUT / OS real-time op- erating system and RTL8019.This design also introduces intelligent terminal system based on 51 micro controller, how to collect the indoor environmental parameters, The design of the terminal system schematic diagram and description of how the data will be collected through the serial port to transfer data to the AVR micro controller, then the user through the IE browser queries. In the offline state, the design MCU of 51 and KingView communication protocols, and MCU in King- view communication formats and communication settings. Practice has proved that the system canmeet the detection and control of indoor environments, such as indoor temperature, light inte- nsity and the rotation angle of the blinds. The circuit design method is simple and low cost, and the module has good scalability. Internet of Things in the design of control systems and equipment to be networked connectivity, remote real-time manipulation of equipment and collect data through the micro controller, transmit to the local computer and the browser will be illustra- ted display, so you can easily get the experimental data, to achieve the sharing of hardware devi- ces,can also be significant savings in manpower and resources.
【Keywords】Internet of Things,NUT/OS,Kingview
4
江苏师范大学科文学院 基于AVR单片机物联网系统设计
第一章 绪论
1.1 选题背景
随着科技的发展,计算机电子技术迅猛发展,已经成为生活中不可缺少的部分。目前人们绝大多数都是采用PC进行网络数据传送,但由于成本高,限制了应用的范围。而嵌入式系统却越来越受到人们的青睐。它采用嵌入式的微处理器,支持TCP/IP协议,它已成为网络发展新阶段的标志。
物联网是新一代信息技术的重要组成部分。其英文名称是“The Internet of things”。顾名思义,物联网的意思就是物物相连的互联网。这有两层意思:第一,物联网是建立在互联网之上的,是互联网的拓展和延伸;第二,其用户端扩展和延伸到了物品与物品之间,进行信息通信和交换。物联网有如下特征:
首先,广泛应用了各种感知技术。在物联网中部署了大量的多种传感器,每个传感器都能从外界采集信息,不同类的传感器捕获的信息不同。而且获得的数据具有实时性,按照一定的规律来采集数据,不断更新数据。
其次,它是建立在互联网上的网络。物联网技术的核心和基础仍是互联网,通过各种无线和有线网络与互联网结合起来,将物体的信息准确实时地传递出去,数据传输过程中必须适应各种网络协议。
还有,物联网本身也具有一种智能处理的能力,能够智能控制物体。物联网从传感器中获得数据,然后进行分析,处理处有意义的数据,来适应不同用户的需求。 1.2 国内外发展现状和趋势
物联网是建立在互联网技术之上的。目前,我国物联网发展与全球同处于起步阶段,初步具备了一定的技术、产业和应用基础,呈现出良好的发展态势。把单片机应用系统和Internet连接也已经是一种趋势。
目前无线通信网络已经覆盖各地,是实现“物联网”必不可少的设施,可以将安置在每个物品上的电子介质产生的数字信号通过无线网络传输出去。“云计算”技术的运用,使数以亿计的各类物品的实时动态管理变得可能。
物联网技术的推广已经取得一定的成效。在多方面已经开始应用,如远程抄表,电力行业,视频监控等等。以及在物流领域和医疗领域也都日趋成熟,如物品存储及运输监测,远程医疗,个人的健康监护等。除此之外在环境监控,楼宇节能,食品等方面也开展了广泛应用。
尽管在这些领域已经取得一些进展,但应认识到,物联网发展技术还存在一系列制约和瓶颈。有几个方面可以表现出来:核心技术与国外差距较大,集成服务能力不够,缺乏骨干企业,应用水平不高,信息安全存在隐患。我们国家在PC架构领域还没有主动权,软件产品很少。目前,计算环境正在向以网络为中心发展,有很多产品不必也windows兼容,因此,研究单片机系统接入网络,前途宽广。
5
江苏师范大学科文学院 基于AVR单片机物联网系统设计
1.3 设计内容
设计主要是关于基于AVR+RTL8019设计的物联网应用系统,采用UTP接口与以太网相连,通过IE浏览器访问此系统,通过单击所设计WEB页中的超链接,可以实现用户密码设置,家用电器的启动与停止,电器的运行情况的测控,如温度、湿度等及并将采集到的信息反馈到IE网页等功能。以及用组态王软件作为上位机软件对数据进行采集。
硬件设计时,掌握AVR单片机的用法,以及最小系统的搭建。应了解RTL8019AS的工作模式,寻址方式,与AVR之间的接口电路以及周围电路等,以及智能终端的设计和终端与AVR之间的接口电路等。终端的设计主要针于室内环境的测控以及智能窗帘的设计。设计内容包括用步进电机控制百叶窗的开合角,测量室内的光强,以及用采光系统来控制窗帘等等。
软件设计时,基于AT89S52单片机的终端设计而言,近距离采用红外遥控,控制的内容主要有步进电机转动的角度,室内光强的测量以及温度的测量功能的切换。此时需要编写32位红外遥控码的识别程序,步进电机的驱动程序,DS18B20的驱动程序,对于采光系统所需要的AD转换程序,以及1602液晶驱动程序等等。采集到的数据需要通过串口传给AVR单片机,此时需要编写串口通信程序。对于AVR而言,重点在于数据的网络传输,此时需要编写或者调用RTL8019的驱动程序。通过学习html语言,编写嵌入式系统中的WEB页设计。进行http服务程序设计时,设计的要点在于动态页面的返回,单片机程序对带参数连接的处理,对所传送过来的表单数据的处理,从而可以控制设备的状态和设备做如何运转。研究TCP/IP协议,并结合嵌入式系统的具体应用对各个协议进行不同程度的简化和改写,将改写后的TCP/IP协议嵌入单片机,完成以太网的驱动程序,保证数据能够准确传输。这个这是整个系统设计的难点。 1.4 设计的目的及其意义
设计以AVR单片机为控制器,结合太网控制芯片RTL8019AS,通过RTL8019AS实现智能终端采集的数据与Internet网络上的数据进行互传,可以远程控制各类家用设备以及对工业环境中的数据进行采集和控制。将WEB页写入到单片机内,通过这些页面远程操控智能终端。通过单片机采集室内的温度、光强以及窗叶的角度,传输到本地计算机,并且通过浏览器显示,可以方便的得到数据。
选用的AVR单片机已广泛地应用于工业、军事、智能玩具、便携式智能仪表和机器人制作等领域,使产品功能、精度和质量大幅度提升,且电路简单,故障率低,可靠性高,成本低廉。最重要的是简单易学,容易开发。
里面添加了用组态王来对室内环境的实时监控,不仅可以查看实时数据,也可以查看历史数据。所以整个设计对于终端的控制分为三个方面,一个是组态王控制,网络控制,以及红外控制。当不在线的时候,可以用组态王进行控制,以及现场可以用红外控制等等。实现多功能测控。
6
江苏师范大学科文学院 基于AVR单片机物联网系统设计
第二章 系统总体方案设计
2.1智能终端设计
智能终端的功能主要是实现对室内环境的参数进行采集及对日常家庭用具的控制,如对温度,光强的采集,以及对窗帘的摆动的角度进行控制。本设计是以STC89C52RC单片机为控制芯片,采用DS18B20温度传感器来采集室内温度,利用光敏电阻在太阳光的照射下阻值迅速减少的特性制成的传感器来对室内光线进行采集采集,输出的电压值在通过AD芯片进行模数转换,通过读取单片机引脚相应的高低电平,获取相应的数值,达到获取室内光强的目的。通过控制步进电机来达到控制窗叶旋转的角度。如果在室内,终端上安装了红外一体化接收头,通过编程,可以用专用遥控器或者一般的电视机遥控器等来查询室内环境的参数以及对窗叶的控制。
智能终端的设计分为硬件和软件两部分组成。硬件部分主要是对环境变量的采集用到的传感器及显示装置,控制窗叶的步进电机,红外接收装置等。涉及到传感器与单片机的接口电路设计、步进电机驱动以及AD转换等等。软件部分主要为温度传感器的驱动编写,AD转换程序、步进电机驱动编写红外解码程序编写以及LCD液晶显示程序的编写等等。系统框图如图2-1所示。
数字式温度传感器 STC89C52 步进电机 光强采集传感器 AD转换 红外接收头 LCD数据显示 串口 PC机/AVR 红外遥控器
图2-1 智能终端系统框图
2.2 Atmega128物联网应用系统
物联网应用系统主要是以Atmega128为控制芯片来控制以太网接口芯片实现与
Internet网络的通信。其中,单片机中不仅要嵌入实时操作系统,还要完成对和以太网接口芯片的控制。而以太网接口芯片除了本身实现了物理层和数据链路层协议,还要通过RJ45接口与Internet网络进行通信。
本设计是基于Etnernut-4.10的http应用案例进行设计,通过设计嵌入式系统中的WEB页,通过浏览器来对智能终端采集的信号进行显示和对智能终端进行控制。Atmega128有双串口,UART0在仿真时接入了虚拟终端,用于显示网络连接情况以及IP地址的分配情况,UART1主要用于和智能终端的通信,实现采集的数据和控制信号的传输等等。设计与调试主要分为以下几个方面:
1.以太网控制器RTL8019的选择 2.Nut/OS的安装与编译 3.嵌入式系统中WEB页设计
7
江苏师范大学科文学院 基于AVR单片机物联网系统设计
4,http服务程序设计 5.编译设置
6.系统安装调试
系统框图如图2-2所示。
单片机以太网接口芯片 RJ 45 接头 PC1 集线器以太网PC2 2.3 基于KingView与单片机实时对智能终端的控制及数据采集
本设计采用KingView 6.55组态王设计软件设计的组态画面,其实控制页面来对室内温度以及光强进行实时采集,生成实时数据曲线,因为实时数据曲线只能表示当前的数据变化情况。而历史数据不能显示,所以历史数据要在历史趋势曲线画面中进行查询,以备今后查看。也可以对步进电机进行控制,并在控制页面中显示当前电机旋转的角度。
在组态王软件中除了要放置各种控件之外,还要对各个控件的地址进行设置,并且与单片机中的地址相对应,单片机的数据地址就是指对应的单片机程序中定义的变量。一个单片机下可定义很多变量,每个变量对应一个寄存器。组态王在和单片机进行通信时要遵循通信协议。组态王提供的单片机的通信协议可以支持HEX和ASCII,其中ASCII开发比较简单,所以本设计采用ASCII传输协议编写了单片机程序。设计好的组态画面可以做成安装包,倘若电脑中没有安装组态软件,则可以直接对安装包进行安装,则可使用。系统图如图2-3所示。
主页面 历史数据页面 控制页面
智能终端
图2-3 KingView控制系统框图
2.4 本章小结
系统总体方案分为三个部分,智能终端设计、物联网系统设计、组态王数据采集等等。包括硬件制作和软件的编写。可分别在不同的控制状态对智能终端进行控制来对室内环境数据的采集,避免了在一种状态失效就对数据的无法采集的状态。
8
图2-2 物联网系统设计框图
江苏师范大学科文学院 基于AVR单片机物联网系统设计
第三章 系统硬件的选择
3.1 智能终端硬件的选择 3.1.1单片机的选择
STC89C52是一种低功耗、高性能CMOS8位微控制器,单片机引脚如图3-1所示。
输入/输出口线
P0.0-P0.7:P0口8位双向口线 P1.0-P1.7:P1口8位双向口线 P2.0-P2.7:P2口8位双向口线 P3.0-P3.7:P3口8位双向口线 ALE:地址锁存控制信号ALE PSEN:外部程序存储器选通信号 EA:访问程序存储器控制信号 RST:复位信号
XTAL1和XTAL2外接晶体引线端 Vss:地线 Vcc:+5V电源
STC89C52RC单片机有如下特点: 1.8K字节程序存储空间 2.512字节数据存储空间
3.内带4K字节EEPROM存储空间 4.可直接使用串口下载 5.AT89S52单片机
6.8K字节程序存储空间 7.256字节数据存储空间 8.没有内带EEPROM存储空间
图3-1 STC89C52引脚图
9
江苏师范大学科文学院 基于AVR单片机物联网系统设计
3.1.2模数转换芯片的选择
在A/D转换器中,是将模拟信号转换成数字信号,一般的A/D转换过程通过采样保持、量化和编码这三个步骤完成的,即首先对输入的模拟电压信号采样,采样结束后进入保持时间,在这段时间内将采样的电压量转化为数字量,并按一定的编码形式给出转换结果,然后开始下次采样。模拟量到数字量的转换过程框图如图3-2所示。
模拟信号 采样 量化 数字信号
图3-2 模拟量-数字量转换过程框图
本设计中选取逐次比较型单片集成A/D转换器ADC0804。它是早期的A/D转换器,因其价格低廉而要求不高被广泛应用。采用CMOS工艺20引脚集成芯片,分辨率为8位,转换时间为100微秒,输入电压范围为0-5V。芯片内具有三态输出数据锁存器,可直接连接在数据总线上。ADC0804引脚分布图如图3-3所示。
各引脚作用如下:
VIN(+)、VIN(-):两个模拟信号输入端。 DB7-DB0:数字信号输出端。 AGND:模拟信号接地。 DGND:数字信号接地。 CLK:时钟信号的输入端。
CLKR:内部时钟发生器的外接电阻端。 CS:片选信号输入端。
WR:写信号输入,低电平启动A/D转换。 RD:读信号输入,低电平输出端有效。
INTR:A/D转换结束信号,低电平表示本次转换已完成。 VREF/2:参考电平输入,决定量化单位。 VCC:芯片电源5V输入。
图3-3 ADC0804引脚图
3.1.3步进电机驱动芯片的选择
ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。该电路的特点如下:
ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
10
江苏师范大学科文学院 基于AVR单片机物联网系统设计
ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。
ULN2003 采用DIP—16 或SOP—16 塑料封装。
ULN2003内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL COMS。
ULN2003是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA,9脚可以悬空。比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。
ULN2003由七个硅NPN达林顿管组成。
ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
ULN2003芯片引脚介绍:
引脚1-7:CPU脉冲输入端,端口对应一个信号输出端。 引脚8:接地。
引脚9:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。用于感性负载时,该脚接负载电源正极,实现续流作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。
引脚10~16:脉冲信号输出端,对应7~1脚信号输入端。 引脚如图3-4所示:
图3-4 ULN2003内部原理及引脚图
3.1.4 通信芯片的选择
MAX232 是MAXIM公司为RS-232串口设计的电平转换芯片,使用+5v电源供电。 引脚介绍:
第一部分是由1、2、3、4、5、6脚和4只电容构成电荷电路。为的是产生-12v和+12v两个电源,提供给串口电平需要。
第二部分是由7、8、9、10、11、12、13、14脚组成双数据通道。其中的13脚、12脚、11脚、14脚为第一个数据通道。7脚、8脚、9脚、10脚构成第二个数据通道。
第三部分是供电,15脚GND、16脚VCC(+5v)。 主要特点:
1.符合所有的RS-232C标准
2.只需要单一的+5V电源提供电压 3.功耗低,典型供电电流5mA 4.内部集成2个RS-232C驱动器
5.高集成度,片外最低只需4个电容即可工作
11
江苏师范大学科文学院 基于AVR单片机物联网系统设计
引脚如图3-5所示。
图3-5 MAX232引脚图
3.1.4 红外遥控和红外接收管的选择 1.红外遥控器编码
遥控器编码分好几种,常见的32位编码码和42位编码,目前我手中遥控器就是32位编码,如图1所示,当有按键时就会产一个9.12ms低电平和4.5ms高电平的起始码,接着是16位系统码,系统码能区别不同的电器设备,防止不同的遥控码互相干扰,接下来是8位数据码和8位数据反码,间隔23ms的高电平后,再发一个结束码,与启始码完全一样的。发送波形如图3-6所示。
图3-6 遥控码波形
2.硬件连接
接收电咱我们使用一化红外接红外接收管1838,不需要任何外接无件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,实物如图3-7所示。
12
江苏师范大学科文学院 基于AVR单片机物联网系统设计
图3-7 红外一体接收管
3.1.5 温度传感器的选择
在本设计中采用DS18B20作为温度传感器。省去了模数转换芯片,直接读取度数。 1.DS18B20的主要特性
1)单线接口:仅需一根接口线与MCU连接; 2)无需外围元件;
3)可由接口线提供能量,也可由5V电源供电;
4)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃; 5)9~12位温度读数;
6)在使用12位分辨率时,A/D转换最长为750ms,使用9位分辨率时,转换时间为93.75ms;
7)用户可以自设定温度报警上下限,其值在断电后仍可保存; 8)报警搜索命令可识别哪片DS18B20超温度限。 DS18B20的引脚如图3-8。 DS18B20引脚定义:
1)I/O:数字信号输入/输出端; 2)GND:为接地端;
3)VDD:为外接电源输入端。
图3-8 DS18B20引脚图
3.1.6 步进电机的选择
本设计中选择的步进电机为28BYJ-48步进电机,如图3-9简单介绍一下步进电机的工作原理。步进电机脉冲转化为角位移,就是说当步进驱动器每接收到一个脉冲时,步进电机按规定的方向转动一个步进角。于是角位移量就可以通过控制脉冲个数来控制。从而准确定位。同时又可以通过调整脉冲频率,从而达到调速的目的。
图3-9 28BYJ-48步进电机
步进电机28BYJ-48型四相八拍电机,电压为DC5V-DC12V。常见的通电方式有单(单
13
江苏师范大学科文学院 基于AVR单片机物联网系统设计
相绕组通电)四拍(A-B-C-D-A。。。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。)。绕组通电方式如表3-1所示。
表3-1 步进电机各绕组通电方式
号线颜色 5红 4橙 3黄 2粉 1蓝 1 + + 2 + + + 3 + + 4 + + + 5 + + 6 + + + 7 + + 8 + + +
3.1.7 液晶显示器的选择
本设计选用的1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)。1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。实物如图3-10所示。
图3-10 1602液晶
1.工作参数如表3-2:
表3-2工作参数
显示容量: 工作电压: 工作电流: 最优电压: 字符尺寸:
2.接口信号说明如表3-3:
16X2个字符 4.5v-5.5v 2.0mA(5.0V) 5.0V 2.95X4.35(WXH)mm 表3-3 接口信号说明 编号 符号 引脚说明 1 VSS 电源地 2 VDD 电源正极 3 VL 偏压信号 4 RS Data命令选择 5 R/W 读写选择端(H/L) 6 E 使能信号 7 D0 Data I/O 8 D1 Data I/O 3.1.8 光敏电阻的选择 14
编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D7 BLA BLK 引脚说明 Data Data Data Data Data Data 背光电源正极 背光电源负极 江苏师范大学科文学院 基于AVR单片机物联网系统设计
对于室内光线的采集,采用光敏电阻制成的一个对光线采集的传感器电路。光敏电阻两端的输出电压经过AD转换后输出,其数值由单片机读出。再送入液晶显示或者经串口发送。光敏电阻如图3-11所示。
图3-11 光敏电阻外形
3.2 物联网应用系统硬件的选择 3.2.1 单片机的选择
在物联网应用系统中,单片机选择Atmega128,因为在本次设计中,要在单片机里面嵌入实时操作系统。NUT/OS实时操作系统支持两种AVR单片机,一种是Atmega128,一种是Atmega103,综合考虑,选择Atmega128。引脚如图3-12所示。 引脚说明
VCC 数字电路的电源。 GND 地。
端口A(PA7..PA0) 端口A 为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口A 为三态。
端口B(PB7..PB0) 端口B 为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口B为三态。
端口C(PC7..PC0) 端口C 为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口C 为三态。在ATmega103 兼容模式下,端口C 只能作为输出,而且在复位发生时不是三态。
端口D(PD7..PD0) 端口D 为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口D为三态。
端口E(PE7..PE0) 端口E 为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口E 为三态。
端口F(PF7..PF0) 端口 F 为ADC 的模拟输入引脚。如果不作为ADC 的模拟输入,端口 F 可以作为8 位双向I/O 口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。
端口G(PG4..PG0) 端口G 为5 位双向I/O 口。 RESET复位引脚。
XTAL1:片内时钟和反向振荡器放大器输入。 XTAL2:反向振荡器放大器输出。
15
江苏师范大学科文学院 基于AVR单片机物联网系统设计
AVCC AVCC:为端口F以及ADC转换器的电源。 AREF AREF: 为ADC 的模拟基准输入脚。 PEN PEN:是SPI串行下载的使能引脚。
图3-12 tmega128引脚图
3.2.2 网络接口芯片的选择
网络接口芯片选用RTL8019AS,RTL8019AS收发可达到10Mbps的速率,内置16KB的SRAM,可以方便的与微处理器进行连接。
RTL8019AS采用100脚PQFP封装,其主要引脚功能如下: 引脚1-4,97-100:中断控制INT0-7
引脚33:复位控制
引脚34:使能控制角AEN,低电平有效
引脚6,17,70,89:数字电源,+5V 引脚14,28,83,86:数字地GND 引脚47,57:模拟电源:+5V 引脚44,52:模拟地
引脚5,7-13,15,16,18-27:ISA地址总线 引脚36-43,87,88,90-95:ISA数据总线 引脚31: ROM读操作控制 引脚32: ROM写操作控制 引脚62:RX接收数据 引脚63:TX发送数据 引脚58,59:接收数据 引脚45,46:发送数据 引脚50,51:外接晶体 引脚29:ISA I/O读使能 引脚30:ISA I/O写使能 引脚77:9346连续数据输出 引脚78:9346连续数据输入 引脚79:9346连续数据时钟 如图3-13所示:
16
江苏师范大学科文学院 基于AVR单片机物联网系统设计
图3-13 RTL8019AS
3.2.3 锁存器的选择
这里选择锁存器的作用是扩展PA口,使其8个引脚既可以作为数据线使用也可以用作地址线使用。锁存器选择为74HC573。
74HC573 跟LS/AL573 的管脚一样,如图3-14。器件的输入是和标准CMOS 输出兼容的;加上拉电阻,他们能和LS/ALSTTL 输出兼容。
当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存,具体功能如表3-4。其中X=不用关心,Z=高阻抗。
输出能直接接到CMOS,NMOS 和TTL 接口上 操作电压范围:2.0V~6.0V 低输入电流:1.0uA
CMOS 器件的高噪声抵抗特性
图3-14 74HC573
表3-4 74hc573功能表 输入 17
输出 江苏师范大学科文学院 基于AVR单片机物联网系统设计 输出使能 L L L H 引脚分配情况如表3-5。
所存使能 H H L X D H L X X Q H L 不变 Z 表3-5 74HC573引脚分配情况 引脚号 1 2、3、4、5、6、7、8、9 12、13、14、15、16、17、18、19 11 10 20 符号 OE D0-D7 QO-Q7 LE GND VCC 名称及功能 三态输出使能输入(低电平) 数据输入 三态锁存输出 锁存使能输入 接地(0V) 电源电压
3.2.3 存储器的选择
NUT/OS实时操作系统通常都被使用在需要创建嵌入式以太网或一些复杂且实时性要求较高的场合,一般需要扩展32k的SRAM,所以这里选择62256。
62256是32k的低功耗静态RAM存储器,用PA和PC来扩展RAM。该芯片共有地址线15根,可提供32k的字节空间。 62256引脚功能如表3-6。
表3-6 62256引脚说明 引脚号 引脚说明 A0-A14 地址总线 D0-D7 输入/输出口 CS 端口选择 WE 输入使能 OE 输出使能 VCC 电源使能 VSS 接地 管脚图如图3-15所示。
18
江苏师范大学科文学院 基于AVR单片机物联网系统设计
图3-15 62256管脚图
3.3 本章小结
上述元器件为设计中的主要元件,有核心控制器、设备驱动元件以及传感器等等,原件根据设备的运作条件选取,皆符合设备的运转要求,本章中注明了元件的各参数,元件管脚图等等,为电路设计做了良好的铺垫。
第四章 硬件电路设计
4.1 智能终端硬件电路设计 4.1.1晶振振荡电路及复位电路
1.晶振振荡电路
单片机芯片中的高增益反相放大器,其输入端为引脚XTAL1,输出端为引脚XTAL2 。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(通常取30pF)。石英晶体为一敏感元件,与电容构成振荡回路,为片内放大器提供正反馈和振荡所需的相移条件,从而构成一个稳定的自激振荡器。电路如图4-1所示。
19
江苏师范大学科文学院 基于AVR单片机物联网系统设计
图4-1 晶振电路
2.复位电路
复位电路用于产生复位信号,是单片机系统中有一不可或缺的部分。它通过RST引脚送入单片机,与单片机的第9引脚连接,进行复位操作。复位电路的好坏直接影响单片机系统工作的可靠性。
复位方式有两种:手动和加电复位。加电复位是指通过专用电路产生复位信号。它是系统的原始复位方式,发生在开机加电时,是系统自动完成的。加电复位是基本的、任何单片机系统都具有的功能。而手动复位也应通过专用电路实现。在单片机系统中,手动复位是必须具有的功能。在调试或运行程序时,若遇到死机、死循环等情况,手动复位是摆脱这种局面的最常用的方法。这时,手动复位所完成的是一次重新启动操作。在实际系统中,总是把加电复位电路和手动复位电路结合在一起,形成一个既能加电复位又能手动复位的公用复位电路。本设计中采用手动复位,电路如图4-2所示。
图4-2 复位电路
4.1.2 光强采集及AD转换电路
光强采集电路由光敏电阻和一个1K电阻组成,然后取光敏电阻两端电压接A/D转换器ADC0804。ADC0804的D0至D7脚于单片机AT89S52的P1口相接。在本设计中Vref/2接一个0-10K电位器作为A/D转换器ADC0804调节输入电压,从而一定程度上调整测量精确度。如图4-3光强采集电路。
20
江苏师范大学科文学院 基于AVR单片机物联网系统设计
图4-3 光强采集及AD转换电路
4.1.3 串口通信电路
采集的光强信号参数经A/D转换后,在单片机中进行处理。MAX232的第7脚T2OUT接单片机TXD端P3.1发送数据,第8脚R2IN接单片机RXD端P3.0接收数据。 TTL电平从单片机的TXD端发出,经过MAX232转换为RS-232电平后从MAX232的14脚T1OUT发出,连接至PC机的串口座的第2脚RXD端,至此计算机接收到数据。MAX232的13脚连接PC机串口座的第3脚TXD端,PC机发送数据。串口通信电路如图4-4所示。
图4-4 串口通信电路
4.1.4 步进电机驱动电路
21
江苏师范大学科文学院 基于AVR单片机物联网系统设计
在Proteus中,选择motor-stepper,这是四相步进电机,六个端子,其中两个公共端与ULN2003A的COM端相连接,并且一同连接到+5V电源上,ULN2003的ABCD四相与P2口相连接。具体接线如图4-5所示。
图4-5 步进电机驱动电路
4.1.5 液晶驱动电路
液晶显示电路主要有YJD1602A-1组成,其中D0-D7连接至单片机的P1口,其中命令选择端RS连接到P3.6,读写选择端连接至P3.7,使能端连接到P2.7,具体的液晶驱动电路如图4-6所示。
图4-6 液晶驱动电路
4.1.5 红外接收电路
红外接收电路采用红外一体化接收头,其中三个引脚,一个接地,一个接电源,还有一个数据输出引脚接外部中断0,采用中断的方式对红外波形进行解码。其红外电路如图4-7所示。
22
江苏师范大学科文学院 基于AVR单片机物联网系统设计
图4-7 红外接收电路
4.1.5 智能终端系统总图
智能终端系统总图由温度采集电路、光强采集电路、步进电机驱动电路、液晶显示屏驱动电路、红外接收电路、晶振电路、复位电路、AD转换电路、串口通信电路等组成。 智能终端系统总图如图4-8所示。
图4-8 智能终端系统总图
4.2 物联网应用系统硬件设计
Atmeta128的位数据总线AD0~AD7直接和RTL8019AS的数据总线低8位SD0~SD7相连接,RTL8019AS的高8位数据总线AD8~ADl5浮空不使用。RTL8019AS地址总线SA0~SA4与74HC573锁存后的51单片机地址总线低5位A0~A4相连,SA5~SA7接地,SA8~SA9接高电平,SAl0~SAl9接地, RTL8019AS的I/O地址为300H。
当访问外部RAM或I/0接口时,单片机通过PA口和PC口输出地址信息,ALE输出地址锁存信号,WR、RD输出读写控制信息,通过PA口传数据。因此,系统的数据总线由PA口提供,标号为D0-D7,系统的地址总线由PC口和锁存器的输出O0-07提供,标号为A0-A15。 RTL8019AS中断输出为INT0~INT7,分别对应于IRQ2/9、IRQ3、IRQ4、mQ5、IRQl0、IRQll、
23
江苏师范大学科文学院 基于AVR单片机物联网系统设计
IRQl2和IRQl5,此处选择INTO是由中断请求是通过选择引脚IRQS0~IRQS2决定的。由于IRQS0~IRQS2都处于悬空状态,决定了INT0(IRQ2/9)中断输出引脚,中断输出引脚与IRQS0~IRQS2的对应关系如表4-1所示。
表4-1 中断输出引脚与IRQS0-IRQS2对应关系表
IRQS2 IRQS1 IRQS0 中断输出引脚 中断号 0 0 0 INT0 IRQ2/9 0 0 1 INT1 IRQ3 0 1 0 INT2 IRQ4 0 1 1 INT3 IRQ5 1 0 0 INT4 IRQ10 1 0 1 INT5 IRQ11 1 1 0 INT6 IRQ12 1 1 1 INT7 IRQ15 RTL8019AS的R与Atmega128的复位引脚直接相连,IOCSl6B引脚通过27k的电阻连接到GND,存储器读写SMEMWB、SMEMRB连接到VCC。JP连接到电源电压VCC,选择跳线方式。 由LEDl、LED2控制的发光二极管的状态由RTL8019AS寄存器页面3的CONFIG3配置寄存器决定,用来指示RTL8019AS的工作状态。 电路如图4-9所示。
图4-9 物联网应用系统总图
4.3 本章小结
本章中主要说明了各个模块电路的接线方式以及各系统总图接线,说明了各个模块电路的功能,以及在整个系统的具体实现方式。经过proteus仿真后运行良好,为下一步的电路焊接做好基础。
24
江苏师范大学科文学院 基于AVR单片机物联网系统设计
第五章 软件设计
5.1 智能终端软件设计 5.1.1 红外解码程序
以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图5-1所示。
图5-1 “0”、“1”组合波形
用Cool Edit Pro 2.1软件对红外信号进行采集
因为本身条件有限,没有用示波器对红外一体接收头输出的波形进行采集和判别。所以就用音频软件对红外输出波形进行识别和记录。将平时不用的废旧耳机的功放部分剪掉,露出部分铜线。然后在铜线外接一个1K的电阻,因为红外管脚输出的电流较大,所以电阻起限流作用。另外一头直接插在麦克的输入端。此时确保无误后,此时可按下红外遥控器上的按键,观察输出波形,如图5-2所示。
图5-2 红外遥控码波形
得到红外遥控码波形之后,需要对其进行解码,也就是“0”,“1”的判别,具体的判别方式如图5-3。
图5-3 “0”、“1”的判别方式(左图为“0”,右图为“1”)
所以得知图5-2的红外遥控码波形用户码为00000000,用户反码为11111111,数据码为00011000,数据反码为11100111。在编写红外解码程序可以参考波形下方的时间轴来确定波形的跳变的时间,可以更方便的进行程序的编写。
本设计采用终端方式对红外进行解码,将解出来的数值存储在数组中,程序如下:
25
江苏师范大学科文学院 基于AVR单片机物联网系统设计
void tim0(void) interrupt 1 {
uchar count;
count++; //对从一次中断到下一次中断进行计数 }
void intersvr1(void) interrupt 2 using 1 {
delay_10us(10); //红外波形去抖动 TR0=1; //打开定时器
Tc=TH0*256+TL0; //提取中断时间间隔时长 TH0=0; //将定时器清零 TL0=0;
if((Tc>Imin)&&(Tc sign=1; //将标志位置1 return; } delay_10us(10); if(sign==1) //找到启始码 { Tc=Tc+20; //红外前后去抖20ms,得加上总时间 if(Tc>Inum4&&Tc if(Tc>Inum2&&Tc if(n==32) //全部接受完 { n=0; sign=0; if(Im[2]==~Im[3]) //将数据码和数据反码进行比较 { IrOK=1; //确定收到正确的码值 } else IrOK=0; //否则接收错误,重新接收 } } } 26 江苏师范大学科文学院 基于AVR单片机物联网系统设计 5.1.2 AD转换程序 ADC0804工作过程分为三部分: 1.复位中断触发信号 信号表明ADC0804转换已结束,它提示单片机随时可以读取转换结果,是ADC0804的一个输出信号。一般情况下,启动A/D转换前应该复位这个信号,以等待新的转换完成后ADC0804发出新的信号,这样才可以读到新的转换结果。 复位信号的时序图如图5-4所示,在实现片选(CS=0)的前提下,使用一个读信号的下降沿就可以复位信号。 2.启动ADC0804的A/D转换 ADC0804的A/D转换器在满足一定条件时开始一个转换过程,这个条件是实现片选(CS=0)的前提下,引脚上出现一个上升沿。 启动A/D转换的时序图如图5-4所示,实现片选以后,使用一个信号就可以转换一个过程。 3.读取转换结果 在A/D转换结束以后,ADC0804的引脚将给出一个低脉冲,如果把这个引脚直接连到单片机的外部中断引脚,这个低脉冲将引起单片机中断,单片机可以在中断处理程序中读取ADC0804的转换结果。在读取结果时,必须在RD为低电平期间读取相应的数据。 图5-4 ADC0804工作时序 27 江苏师范大学科文学院 基于AVR单片机物联网系统设计 void change1() { CS=0; //选通ADCS WR=0; //写信号输入AD写入 _nop_(); WR=1; CS=1; //关闭CS delay_ad(50); //足够的AD转换时间 if(adval==255) lcd_position=0; if(adval>242&&adval<255) //将P1口的数值分成16等份送入液晶显示 lcd_position=1; „„ if(adval>47&&adval<60) lcd_position=16; P1=0xff; //读取P1口之前先给其写全1 CS=0; //选通ADCS RD=0; //AD读使能 adval=P1; //AD数据读取赋给P1口 RD=1; //关闭读 CS=0xff ; //关闭ADCS WR=0; //AD写入 } 5.1.3 串口发送与接收程序 89C52的串行口虽然是既能实现同步通信,又能实现异步通信的全双工串行口,但在单片机的串行数据通信中,最常用的是异步方式通常写为UART。在发送数据时只需要将需要发送的数据放在发送寄存器SBUF中,将被单片机自动从TXD引脚发送出去。接收数据采用中断方式接收,同样也是在SBUF接收状态下从RXD引脚接收到数据。在通信过程中,一旦SUBF(TX)变空,或SUBF(RX)变满,便向CPU发出中断请求。 串口发送程序如下: for(fs=0;fs<4;fs++) { ES=0; //关闭串口中断 SBUF=buff_web[fs]; //将数组中的元素送入SBUF中 while(!TI); //如果最后一个数据位发送完成之后,TI置1 TI=0; //软件清0 ES=1; //开启中断 } 串口接收程序如下: void com() interrupt 4 { RI=0; //接收中断标志位清零 RecDat=SBUF; //接收数据 if(TI) { TI=0; //清发送中断 28 江苏师范大学科文学院 基于AVR单片机物联网系统设计 } } 5.1.4 步进电机驱动程序 该电机为四相电机,通电方式为八拍方式(A-AB-B-BC-C-CD-D-DA-A。。。)。这样的通电方式使得电机逆时针旋转。 驱动程序如下: unsigned char idata jiepai[]={0xe3,0xf3,0xd3,0xdb,0xcb,0xcf,0xc7,0xe7}; void step_motor(unsigned int step) { unsigned int a,b; for(b=step;b>0;b--) { for(a=0;a<8;a++) { P1=jiepai[a]; //按照八拍通电方式将各绕组通电 delay_bujin(); } } } 5.1.5 液晶驱动程序 1.控制器接口说明(HD44780及兼容芯片) 1)基本操作时序 读状态:输入:RS=L,RW=H,E=H 写指令:输入:RS=L,RW=L,D0-D7=指令码,E=高脉冲 读数据:输入:RS=H,RW=H,E=H 写数据:输入:RS=H,RW=L,D0-D7=数据,E=高脉冲 2)状态字说明如表5-1: 表5-1 状态字说明 STA7 D7 STA6 D7 STA5 D5 STA4 D4 STA3 D3 STA2 D2 STA1 D1 STA0 D0 STA0-6 STA7 当前数据地址指针的数值 读写操作使能 1:禁止 0:允许 3)RAM地址映射图内部带有80X8位(80字节)的RAM缓冲区,映射关系如图5-5所示。 图5-5 RAM缓冲区 29 江苏师范大学科文学院 基于AVR单片机物联网系统设计 2指令说明 1)初始化设置 设置显示模式如表5-2。 表5-2 显示模式设置 指令码 0 0 1 1 1 0 0 0 显示光标及开/关设置如表5-3。 功能 设置16X2显示,5X7点阵 表5-3 显示光标及开/关设置 指令码 0 0 0 0 1 D C B 0 0 0 0 0 1 N S 功能 D=1显示开; D=0 显示关 C=1光标开; C=0光标关 B=1闪烁光标; B=0光标不闪烁 N=1光标加一,地址指针在读写1个字符后加1 N=0光标减一,地址指针在读写1个字符后减1 S=1屏幕移动,光标不移,整屏左移(N=1)或右移(N=0) S=0 当写1个字符时,整屏不移动 2)数据控制 通过数据地址的指针,可以访问内部RAM。数据地址指针设置如表5-4。 表5-4 数据地址指针设置 指令码 功能 80H+地址码(0-27H,40H-67H) 设置数据地址指针 其它设置如表是5-5。 表5-5 其它设置 指令码 功能 01H 显示清屏:1.数据指针清零2.所有显示清零 02H 显示回车:1.数据指针清零 液晶写命令、写数据、初始化程序如下: void write_com(uchar com) { lcdrs=0; //选择写指令 P0=com; //写入需要的指令 delay(5); lcden=1; //打开使能,写入命令 delay(5); lcden=0; //关闭使能 } void write_data(uchar date) { lcdrs=1; //选择写数据 30 江苏师范大学科文学院 基于AVR单片机物联网系统设计 P0=date; //写入需要写入的数据 delay(5); lcden=1; //打开使能,写入数据 delay(5); lcden=0; //关闭使能 } void init_lcd() { rw=0; //选择向液晶写入 lcden=0; //使能关闭 write_com(0x38); //设置16X2显示,5X7点阵,8位数据接口 write_com(0x0e); //开显示并显示光标 write_com(0x06); //当读或写一个字符后地址指针加一,且光标加一 write_com(0x01); //显示清屏:1.数据指针清零2.所有显示清零 write_com(0x80); //设置数据地址指针 } 5.1.6 DS18B20温度传感器驱动程序 1.DS18B20工作原理 DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,重新转入计数器1的预置值,于是,计数器1对低温系数晶振产生的脉冲信号进行重新计数,当计数器2计到0时,温度寄存器停止数值累加,此时所测温度为寄存器中的数值。温度与输出数值的关系如表5-6: 表5-6 DS18B20温度数据表 由于DS18B20是在一根I/O线上读写数据,因此,在读写数据时要遵循一定的时序。并且遵循通信DS18B20的通信协议,该协议定义了:读时序、写时序、初始化时序。每次都是主机发送命令进行写时序和读时序的,数据传输时,低位在前,高位在后。DS18B20的复位时序如图5-6: 31 江苏师范大学科文学院 基于AVR单片机物联网系统设计 图5-6 DS18B20复位时序图 DS18B20具有读1时序和读0时序。是在从机把单总线拉低之后,15秒之内释放总线,让DS18B20把数据传输到总线上。这一个过程至少需要60us才能完成。时序图如图5-7: 图5-7 DS18B20读时序图 对于DS18B20具有写1时序和写0时序。当要写0时序时,拉低总线60us,保证DS18B20在15us到45us之间能够准确的采样“0”电平,写1时,总线拉低后,在15us之内放开。时序图如图5-8: 5-8 DS18B20写时序图 根据DS18B20的通讯协议要求,单片机控制DS18B20来完成温度转换需要经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功之后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定操作。ROM指令表和RAM指令表如表5-11和表5-12所示。 32 江苏师范大学科文学院 基于AVR单片机物联网系统设计 表5-11 ROM指令表 指 令 读ROM 符合 ROM 搜索 ROM 跳过 ROM 告警搜索命令 约定代码 33H 55H 0FOH 0CCH 0ECH 功 能 读DS1820的8位产品系列编码、唯一的48位序列号及8位CRC 此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址 搜索ROM命令允许总线控制器用排除法识别总线上所有从机的64位编码 允许通过总线主机不提供64位ROM编码而访问存储器操作来节省时间 仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令做出相应 表5-12 RAM指令表 指 令 温度变换 读暂存器 写暂存器 复制暂存器 重调EEPROM 读供电方式 约定代码 44H 0BEH 4EH 48H 0B8H 0B4H 功 能 启动DS1820温度转换而无需其他数据 从0开始直到9字节读内部RAM 写上、下限温度数据命令,之后是传送两字节的数据。 将暂存器的内容拷贝到DS18B20的E2中。 把存储在E2中温度触发器的值重新调至暂存存储器。 对于在此命令发送至DS18B20之后发出的第一个读数据时间片,器件都会给出其电源方式的信号:0=寄生电源供电,1=外部电源供电。 DS18B20驱动程序如下: void dsreset(void) //发送初始化命令 { uint i; DS=0; i=103; while(i>0)i--; //复位脉冲,总线拉低480微妙 DS=1; i=4; while(i>0)i--; } bit tmpreadbit(void) //读位 { uint i; bit dat; DS=0;i++; //单总线拉低15微妙之内释放总线,让DS18B20把数据传到单总线上 DS=1;i++;i++; 33 江苏师范大学科文学院 基于AVR单片机物联网系统设计 dat=DS; i=8;while(i>0)i--; return (dat); } uchar tmpread(void) //读数据 { uchar i,j,dat; dat=0; for(i=1;i<=8;i++) { j=tmpreadbit(); dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里 } return(dat); } void tmpwritebyte(uchar dat) //写数据到DS18B20 { uint i; uchar j; bit testb; for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) //写“1” { DS=0; i++;i++; //单总线拉低5微妙 DS=1; //释放单总线 i=8;while(i>0)i--; } else { DS=0; //写“0” i=8;while(i>0)i--; //单总线拉低60微妙 DS=1; //释放总线 i++; i++; } } } void tmpchange(void) { dsreset(); delay(1); 34 江苏师范大学科文学院 基于AVR单片机物联网系统设计 tmpwritebyte(0xcc); //跳过ROM tmpwritebyte(0x44); //启动温度转换 } uint tmp() { float tt; //获取温度 uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); //跳过ROM tmpwritebyte(0xbe); //发出读温度命令 a=tmpread(); b=tmpread(); temp=b; temp<<=8; temp=temp|a; tt=temp*0.0625; temp=tt*10+0.5; return temp; } void display(uint temp) //温度送液晶显示器显示 { uint temp_ge,temp_shi,temp_fen; int fasong; fasong=temp/10; temp_shi=temp/100; temp_ge=temp%100/10; temp_fen=temp%100%10; „„ } 5.1.6 单片机与Kingview 6.55通信程序 单片机与组态王通信协议格式: 读写格式如表5-13。 表5-13 组态王读写格式 字头 设备地址 标志 数据地址 数据字节数 数据„ 异或 CR 说明: 字头:1个字节1个ASCII码,40H; 设备地址:0—255(即0---0x0ffH); 标志:2个ASCII码1个字节表示,bit0~bit7; bit0=0:读,bit0= 1:写; bit1=0:不打包; bit3bit2=00,字节; bit3bit2=01,字; bit3bit2=1x,浮点; 数据地址:0x0000~0xffff; 35 江苏师范大学科文学院 基于AVR单片机物联网系统设计 数据字节的个数:1—100; 数据„:实际数值转成ASCII码,字节数乘2为其个数; 异或:从设备地址异或到异或字节前,其值转成2个ASCII码; CR:0x0d; 读命令如表5-14所示。 表5-14 读命令格式 字头 设备地址 标志 数据地址 数据字节个数 异或 CR 应答:若正常,则应答格式如表5-15。 表5-14 正常情况下下位机应答格式 字头 设备地址 数据字节数 数据„ 异或 CR 若不正常,则应答格式如表5-16: 表5-16 不正常情况下下位机应答格式 字头 设备地址 ** 异或 CR 上位机发送写命令,格式如表5-17。 表5-17 上位机发送写命令格式 字头 设备地址 标志 数据地址 数据字节数 数据„ 异或 CR 若正常,下位机应答格式如表5-18。 表5-18 正常情况下下位机应答格式 字头 设备地址 ## 异或 CR 不正常情况下,下位机应答格式如表5-19。 表5-19 不正常情况下下位机应答格式 字头 设备地址 ** 异或 CR 程序如下: if(RecDat==HEAD) //如果检测到字头,则开始接收 { Count1=0; king=1; } else { if(RecDat==0x0d) //检测到结束标志,表明接收结束 { RecOk=1; } else { RecBuf[Count1]=RecDat; //将接收到的数据放入数组中 Count1++; } } 36 江苏师范大学科文学院 基于AVR单片机物联网系统设计 5.1.7 主程序 主程序里主要包含对室内环境测试的变换,其流程图如图5-5所示: 图5-5 主程序流程图 主程序如下: void main(void) { init_lcd(); //各部分初始化程序 init_hongwai_uart(); mode=1; „„ while(1) { „„ if(mode==1) { „„ //步进电机转动相应的转角 } if(mode==2) //温度显示 { if(changemode==0) { write_com(0x01); lcd_write_temperature(); changemode=1; } else { 37 江苏师范大学科文学院 基于AVR单片机物联网系统设计 tmpchange(); display(tmp()); } } if(mode==3) //光线强度显示 { if(changemode==0) { write_com(0x01); lcd_write_light(); changemode=1; } else { ad_change(); } „„ } } 5.2 物联网应用系统软件设计 在设计开发中,在系统中应用了实时操作系统,通过将应用程序分割成若干个独立的线程,RTOS的应用使得应用程序大为简化,设计和扩展变得容易,不需要大的改动就可以增加新的功能。本设计采用了NUT/OS实时操作系统,作为开源软件,在使用中不需要支付任何费用,有利于降低产品的生产成本。NUT/OS提供I/O管理功能,包含了大多数应用所需的I/O接口API函数,如文件管理系统,串行通信驱动,网络驱动、声音驱动和显示驱动等。 设计是基于Ethernut-4.10的http应用案例文件夹进行设计,通过IE浏览器访问Atmega128与RTL8019为核心设计的以太网应用系统,通过点击所设计的WEB页中的超链接,可实现对室内温度、光强、窗叶角度的查询、对窗叶的角度控制、admin用户密码设置等功能。 5.2.1嵌入式中的WEB页设计 在程序设计之前,要先设计出将存放于Atmega128单片机的WEB页文件,这些文件通过网页设计工具DreamWeaver设计,先存放于http/web_file下。下面是该文件夹中的所有相关文件: index.html——首页文件,由框架topp与框架main构成框架集页面; topp.html——topp中的页面文件,显示标题及所有操作连接等; main.html——初始时显示在主框架中的页面文件 setpassword.html——设置admin用户密码的页面文件; control——步进电机的控制页面; indoor_status——返回温度、光强、当前步进电机角度状态的页面; 上述文件的钱5个文件在运行调试过程中保持不变,第6个文件所显示的是当前温度、光强、角度的状态,其内容是变化的。 前5个文件以静态文件形式被固定生成到urom.c,每个文件所有的字节将都被生成到该文件内的一个数组中。 最后一个文件仅仅是为了便于后续C程序设计中动态生成状态页面的编写而提供的一个样板页面,它的所有的HTML标记语言将被移植到httpserve.c程序内的相关函数中, 38 江苏师范大学科文学院 基于AVR单片机物联网系统设计 标记语言中有关当前温度、当前角度、当前光强的部分将会由fprintf_P函数动态生成,然后返回到客户端的浏览器内。以下列举部分网页程序: index.html网页程序如下: indoor_status.html网页程序如下: s% main.html网页程序如下: 指导老师: 季广中 设计者:虞风 39 江苏师范大学科文学院 基于AVR单片机物联网系统设计 5.2.2 HTTP服务程序设计 对于静态页面的返回,C程序中不需要单独提供动态生成响应页面的函数,NUT/OS会自动响应并返回客户端单击链接所请求的html页面。本程序设计的要点在于动态页面的返回,单片机程序对带参数链接的处理,对所传送过来的表单数据的处理。 下面是3个链接所指向的URL,通过它们来获取温度、光强和角度。 admin/mcu_control.cgi?para=wendu admin/mcu_control.cgi?para=lightstrong admin/mcu_control.cgi?para=jiaodu 为了保护mcu_control.cgi程序,链接前面添加了admin/,程序中通过调用NUT/OS的API函数NutRegisAuth来保护admin路径下的文件,调用语句如下: NutRegisterAuth(”admin”,admin_password); 函数说明: 注册一个授权条目保护指定目录,防止未经授权的读取。 参数说明: admin:需要保护的目录名。 admin_password:读取该目录必须注册,这个字符串应该包含用户名和密码,中间用冒号隔开。如”yufeng:123456” 上述3个链接中的某一个被最先请求时,由于URL前面添加了admin/,浏览器会弹出对话框,要求输入拥有该目录权限的用户账号和密码。本例中将初始账号和密码设置为“yufeng”、“123456”。 由于主程序中将cgi请求mcu_control.cgi注册给函数mcu_control,执行语句如下: NutReqisterCgi(”mcu_control.cgi”,mcu_control); 函数说明: 注册一个CGI函数。 参数说明: mcu_control.cgi为函数名。 mcu_control为客户端调用以注册的CGI函数应该使用的名字。 返回值: 0,其他返回-1。 通过密码验证后,对mcu_control.cgi的请求将交由函数mcu_control来处理,该函数的参数为文件流对象stream和请求对象req,通过调用Nut/OS的API函数NutHttpGetParameterName与NutHttpGetParameterValaue分别获得URL中“?”后面所带的参数名及参数值,由所获取的参数信息即可得知用户发出了何种请求。 Para_name = NutHttpGetParameterName(req,0); 函数说明: 取得一个请求函数的名字。 参数说明: Req:请求对象。 Para_name = NutHttpGetParameterValue(req,0); 函数说明: 取得一个请求参数的值。 参数说明: Req:请求对象。 在设计中,对于系统中的温度、光强、角度以及步进电机的角度完全由浏览器控制。其中这些状态的返回通过调用函数create_status_webpage来完成。 40 江苏师范大学科文学院 基于AVR单片机物联网系统设计 部分程序如下: create_status_webpage(FILE *stream, int temper, int light, int angle) { u_char i;//待输出状态WEB页的HTML标记 static char *html_x[] = { \" 江苏师范大学