Arduino应用技术 课件 第四章 Arduino通信_第1页
Arduino应用技术 课件 第四章 Arduino通信_第2页
Arduino应用技术 课件 第四章 Arduino通信_第3页
Arduino应用技术 课件 第四章 Arduino通信_第4页
Arduino应用技术 课件 第四章 Arduino通信_第5页
已阅读5页,还剩25页未读, 继续免费阅读

下载本文档

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

文档简介

第四章Arduino通信

经过前面几章的学习,我们对Arduino已经有了初步认识,也可以用它来控制一些电路,这一章主要介绍Arduino在物联网中的应用。

本章学习目标:

串口通信

SPI,IIC通信

Arduino访问网络

蓝牙通信

4.1串口通信前面章节中用到了Serial.begin()和Serial.print()等语句,这些语句就是在操作串口。Arduino与计算机通信最常用的方法就是串口通信,这在之前的学习中已接触过。在Arduino控制器上,串口都是位于0(RX)和1(TX)的两个引脚,Arduino的USB口通过一个转换芯片与这两个串口引脚连接。该转换芯片会通过USB接口在计算机上虚拟出一个用于与Arduino通信的串口。因此当使用USB线将Arduino与计算机连接时,两者之间便建立了串口连接。通过此连接,Arduino便可与计算机互传数据了。要想使串口与计算机通信,需要先使用Serial.begin()函数初始化Arduino的串口通信功能,即Serial.begin(speed);其中参数speed指串口通信波特率,它是设定串口通信率的参数。串口通信的双方必须使用相同的波特率才能正常通信。波特率越大,说明串口通信的速率越高。串口监视器是Arduino自带的一个小工具,可以用来查看串口的信息,也可以向连接的设备发送信息。需要注意的是,在串口的右下角有一个波特率设置下拉菜单,此处波特率的设置必须和程序中的一样才能正常收发数据。除了输出,串口同样可以接收由计算机发出的数据。接收串口数据需要使用Serial.read()函数。在使用串口时,Arduino会在SARM中开辟一段大小为64B的空间,串口接收到的数据会暂时存放在该空间中,称这个存储空间为缓冲区。在使用串口读取数据时,需要搭配使用serial.available()函数使用。4.2SPI通信如果需要使用大量数据或者保存大量数据,那么Arduino自带的EEPROM和Flash存储空间就显得捉襟见肘了。这样可以选择外置的存储器来扩展存储空间,这里使用SD卡。如图4-2所示。SD(securedigitalmemorycard)卡是一种基于半导体快闪记忆器的新一代存储设备,它被广泛引用于便携式设备上,例如数码相机,手机和平板电脑等。以下是此类项目的简要使用方面:记录光照,温度,湿度随时间变化的气象站记录你一天去过哪里的GPS追踪和定位器能报告哪部分过热的台式机温度检测器4.2SPI通信4.2.1格式化SD卡在用Arduino开始记录数据之前,准备好你要用的SD卡。有些用全尺寸的SD卡,有些用微型SD卡。还要准备好SD扩展板。如图4-3所示。为了完成本章的练习,你需要为计算机准备一个SD读卡器。4.2SPI通信4.2.1格式化SD卡图SD扩展板4.2SPI通信4.2.2SD卡类库成员函数4.2SPI通信4.2.3将SD卡接入ArduinoSD扩展板ArduinoGNDGNDVCC5VCSUNO的10号引脚MOSIUNO的11号引脚SCKUNO的13号引脚MISOUNO的12号引脚4.2SPI通信4.2.4

程序的编写#include<SPI.h>#include<SD.h>//将SD.h头文件包含到本程序中,才能调用库函数FilemyFile;

constintcs_pin=10;//设定cs接口

voidsetup(){Serial.begin(9600);Serial.println("Initializingthesdcard...");//串口输出数据pinMode(cs_pin,OUTPUT);if(!SD.begin(cs_pin)){Serial.println("Initializationfailed!!");//如果与sd卡通信失败,串口输出信息failedreturn;}Serial.println("Initializationcomplete");//如果与SD卡通信成功,串口输出信息}4.2SPI通信

前面我们学习过用DHT11传感器记录温湿度,如果我们考虑要把这些温湿度数据存储到SD卡上,该怎么做?读者可以思考一下序的编写4.3IIC通信-------Arduino与实时时钟的连接4.3.1Arduino的IIC接口---RTC时钟模块现在流行的时钟电路很多,如DS1302、DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是美国DALLAS公司的一种具有涓细电流充电能力的低功耗实时时钟芯片,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。我们这里采用的是实时时钟模块,已经外接好晶振,纽扣电池。另外采用IIC的液晶显示模块。实时时钟模块如图所示。4.3IIC通信-------Arduino与实时时钟的连接4.3.1Arduino的IIC接口---RTC时钟模块4.3IIC通信-------Arduino与实时时钟的连接4.3.2电路的连接DS1302时钟模块Arduino引脚VCCVCC(3.3v)GNDGNDCLKArduinoDigital4DATArduinoDigital3RSTArduinoDigital24.3IIC通信-------Arduino与实时时钟的连接4.3.2电路的连接IIC液晶模块Arduino引脚GNDGNDVCCVCC(5v)SDAA4SCLA54.3IIC通信-------Arduino与实时时钟的连接4.3.2电路的连接4.3IIC通信-------Arduino与实时时钟的连接4.3.3程序的设计在开始编写程序之前,调用了wire,LiquidCrystal_I2C,DS1302三个库函数,接下来简单介DS1302中用到的一些函数:4.3IIC通信-------Arduino与实时时钟的连接4.3.3程序的设计#include<Wire.h>#include<LiquidCrystal_I2C.h>#include<DS1302.h>LiquidCrystal_I2Clcd(0x27,16,2);//初始化LCD,如果你的LCD不显示,可以0x27换到其他的地址DS1302rtc(2,3,4); //初始化DS1302voidsetup(){lcd.init(); //初始化LCDlcd.backlight(); //打开背光rtc.halt(false); //设置时钟运行rtc.writeProtect(false); //打开写保护rtc.setDOW(TUESDAY); //星期二rtc.setTime(11,30,00); //时间为11:30:00rtc.setDate(8,8,2017); //日期为2017年8月8号rtc.writeProtect(true); //关闭写保护}4.3IIC通信-------Arduino与实时时钟的连接4.3.3程序的设计voidloop(){lcd.clear();lcd.setCursor(0,0);lcd.print(rtc.getDateStr(FORMAT_LONG,FORMAT_LITTLEENDIAN,'/'));lcd.setCursor(11,0);lcd.print(rtc.getDOWStr());lcd.setCursor(14,0);lcd.print("");lcd.setCursor(0,1); //设置光标到第二行,第一列lcd.print(rtc.getTimeStr());delay(1000); //延时1s}4.5蓝牙通信4.5.1蓝牙模块Blue-Tooth,蓝牙,是一种支持设备短距离通信的无线电技术,但是由于连接简单,支持全双工传输且传输速率快,一般应用在移动电话、笔记本电脑、无线耳机和PDA等设备上。早在1994年,爱立信公司就开始研发蓝牙技术了。经过了多年的发展,蓝牙由最初的一家公司研究逐渐成为现在拥有全球性的技术联盟和推广组织。由于蓝牙的低功耗,低成本,安全稳定并易于使用的特性使得蓝牙在全球范围内使用非常广泛。蓝牙标志如图4-10所示:4.5蓝牙通信4.5.1蓝牙模块4.5蓝牙通信4.5.1蓝牙模块Arduino同样支持蓝牙通信,只需要安装一个蓝牙串口模块,该模块有4个接线引脚,分别是电源5V、GND和串口通信收发端TX,RX。实际上,这个蓝牙模块相当于Arduino与其他设备进行通讯的桥梁,利用这个蓝牙模块,可以替代USB将Arduino连接到电脑上,也可以让Arduino连接其他用于蓝牙功能的设备。在本例中演示安卓智能手机与Arduino的蓝牙模块通信,手机需要安装蓝牙通信软件。4.5蓝牙通信4.5.2HC-05蓝牙模块HC-05蓝牙模块的特点:1.采用CSR主流蓝牙芯片,蓝牙V2.0协议标准。2.输入电压:3.6V--6V,禁止超过7V。3.波特率为1200,2400,4800,9600,19200,38400,57600,115200。4.带连接状态指示灯,LED快闪表示没有蓝牙连接;LED慢闪表示进入AT命令模式。5.板载3.3V稳压芯片,输入直流电压3.6V-6V;未配对时,电流约30mA(因LED灯闪烁,电流处于变化状态);配对成功后,电流大约10mA。6.用于GPS导航系统,水电煤气抄表系统,工业现场采控系统。7.可以与蓝牙笔记本电脑、电脑加蓝牙适配器等设备进行无缝连接。8.HC-05嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行所有AT命令,用户可向模块发送各种AT指令,为模块设定控制参数或发布控制命令。如图所示。在使用HC-05之前,可以先对它进行配置。4.5蓝牙通信4.5.2HC-05蓝牙模块4.5蓝牙通信4.5.3

电路的连接4.5蓝牙通信4.5.3电路的连接ArduinoHC-055VVCCGNDGNDRXDTXDTXDRXD

4.5蓝牙通信4.5.2程序的编写手机端的操作由读者自行搜索蓝牙串口助手等类似软件,安装之后打开并连接上蓝牙模块。用手机软件发送q,串口监视器返回“LEDON!”,同时可看到板载LED灯打开了;发送我,串口监视器返回”LEDOFF!”,同时可看到板载LED灯熄灭了。4.5蓝牙通信4.5.2程序的编写charval;intledpin=13;voidsetup(){Serial.begin(9600);//设置波特率pinMode(ledpin,OUTPUT);}voidloop(){val=Serial.read();//从串口读数据if(val=='q'){digitalWrite(ledpin,HIGH);Serial.println("LEDON");}elseif(val=='w'){digitalWrit

温馨提示

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

评论

0/150

提交评论