Arduino开发

2024-07-05

Arduino开发(精选七篇)

Arduino开发 篇1

近年来, 随着开源硬件大热, 市场上出现了越来越多性能强大并且成本低廉的开发板。而有许多设计就选择了用Ariduino来开发“导盲”装置。

“导盲”帽子

出自一位网友之手, 采用了Arduino Uno、超声波传感器以及蜂鸣器等元件。其中通过传感器可检测到前方是否有障碍物, 并通过蜂鸣器发出不同频率的声音来反馈与障碍物之间的距离, 提醒佩戴者前方是否有危险。

整个装置的结构非常简单, 将超声波传感器嵌于鸭嘴帽的帽檐, 装有Arduino、蜂鸣器和电池等主体电子设备的“黑盒”挂于帽子的后面。

不过一块Arduino Uno和超声波传感器, 再加上电池、外壳以及其他元器件, 整个装置的重量约为10磅。很难想象戴着这顶帽子的人会有什么舒适感, 哪怕经过优化, 在帽子上加装这些装置仍然有许多不尽人意的地方。

“光环”视觉雷达

相比于上面的“导盲”帽子, “光环”视觉雷达的功能相对更加完善, 但在使用上也相对的复杂了。

使用者需要将装置套在头上, 位于前额的传感器就能为佩戴者探测出前方的路况, 然后并利用不同方向上的马达震动来反馈路况信息, 告知佩戴者行走路线的畅通与否。因此即使是失明人士也能通过这套装置了解自己前行路上的具体路况。

整套设备主要由Arduino Mega 2560以及五个超声波距离传感器配以马达模块组成。将五个传感器设置在不同的方向上, 使超声波可覆盖前方180度的范围, 然后探测并反馈路线上的“障碍信息”。

Arduino与电子制作 篇2

Arduino是一个小的计算机,可以用作一个嵌入式系统的大脑。它是一种易学易用的硬件软件开发环境,是原型平台,是我们完成接下来的章节的完整的基础。

单片机,是带有控制许多日常设备的功能的处理器和存储器的一种小型电脑。有些单片机被设计成可以方便地连接到计算机上来做程序下载。Arduino就是这样一种容易编程的单片机。因为可以通过程序代码来控制单片机的功能,用单片机就可以很容易地做出电子设备来。单片机用输入和输出的形式来做控制和执行。例如,你可以使一个LED灯闪烁只要把它连接到特定的Arduino管脚,并且利用代码指示它点亮灯一秒再熄灭一秒。

LED只是输出的一个例子,然后使用传感器、按钮、开关或与其他任何形式的输入来控制那个输出。当然,大部分的程序要做更多更复杂的任务。单片机能让我们一步一步解决这些复杂的问题。

初学电子为什么选择Arduino?

最适合初学者的单片机的选择是Basic Stamp以及Ar duino。Basic Stamp自20世纪90年代初就已经存在,并已经在对其爱好者中流行起来。它采用了Basic编程语言,但是对于Arduino所用的C语言比起来或多或少还是有些限制的。

在功能上,Arduino和Basic Stamp颇为相似,但是它解决了许多Stamp以前受到困惑的很多问题。对于业余爱好者来说它具有一个显着特点就是Arduino的成本更低:Ar duino基本配置大约是Stamp配置价格的四分之一。Ardui no除了价格更便宜之外,还有更强大的处理器和更大的内存。Arduino的体积也比Stamp小,这个特点在许多制作项目中是非常有利的。

Arduino Uno型(参见图1,左)比Stamp略微小一些,而Arduino的迷你Nano型(图1右)和装在Stamp模块板上的Stamp核心板(就在图2的串口正上方一点的地方的那个小板)的尺寸是差不多相同的。

为了便于比较,图2显示了Stamp和Nano放在一起的比较图。

Arduino的几种型号

Arduino板有几个不同的型号。我们现在主要介绍的是Arduino的Uno型和Nano型。Uno是一种廉价并坚固健全的型号,是Arduino团队的研发的最新版本(2012年6月有了更新的版本)。它公开发布于2010年9月,是Ardui no Diecimila和Arduino Duemilanove两种型号的后继者。Nano型体积明显较小、但较为脆弱易碎,价格比较贵。

首先,你必须买一块Arduino板和一条兼容的USB电缆。Uno和Nano与计算机的通信(上传新的程序或来回的发送数据)是通过USB的,它们还可以通过USB获得供电。Uno使用的是USB-B电缆,Nano使用的是Mini-B,两种电缆连接到电脑的都是USB-A接头。所有三个连接器如图3所示。

Arduino的型号带有内置的蓝牙(Arduino BT),不过用Arduino做蓝牙作品时,更灵活的办法是使用第三方的蓝牙适配器,比如Spark Fun的蓝牙伴侣(http://www.spar kfun.com/products/10393)。这方法可以在不同的作品之间使用的蓝牙模块,或者用另一种无线模块取代蓝牙,比如XBee无线。

安装Arduino软件

接下来,需要为您的操作系统安装Arduino开发环境和编译的第一个测试程序。这个“Hello World”代码是开始学习新设备的最重要的部分。一旦学会在Arduino上编写简单的小灯闪烁的程序代码,其余的程序编写起来都是容易的。

本篇文章中的制作项目是在Arduino开发环境下,0021版本里进行测试(0021是1.0以前的旧版本,现在最新的版本是1.0.1),如果您决定使用一些其他的版本,安装的过程可能会有所不同。如果您正在使用Windows以外的操作系统,Ubuntu Linux操作系统或Mac OS X操作系统,或者你用的Arduino不是Uno或Nano,请在http://Ardu ino.cc/中找到相应的安装说明。记住,在http://Bot Book.com/中,你可以找到所有完整的程序代码例子、链接和程序安装包。

■Windows 7系统

以下说明如何在Windows 7系统中安装和Windows7环境下运行:

1.从http://arduino.cc/en/Main/Software下载Ardu ino开发环境,按一下右键并选择“全部提取”,把它解压缩到所需的文件夹。

2.将USB线连接到您的计算机,另一端连到Arduino的USB端口,此时Arduino上的一个LED指示灯应亮绿色。

3.Windows会自动搜索并安装必要的驱动程序,安装完成时会通知您。如果Windows没有找到驱动程序,请这么做:

a.通过点击开始菜单,右击我的电脑,打开设备管理器,选择属性,然后单击设备管理器中在左边的选项列表;

b.在设备列表中找到Arduino(它应该在叫做“其他设备”的区域里)。右击它并选择“更新驱动程序软件”;

c.选择“我的电脑浏览以查找驱动程序软件”;

d.浏览到您提取的Arduino文件夹,选择“驱动程序子目录,按“下一步”;

e.如果系统提示您允许安装此驱动程序,选择“安装此驱动程序软件。

当驱动程序安装成功,你会看到如图4所示的对话框。

■Windows XP系统

在一般情况下,对于大多数的Windows XP系统程序的安装是非常类似Windows7系统,但Arduino的安装有所不同。如果您的电脑是XP系统,首先下载Arduino环境,解压该文件到您的电脑上,同时将Arduino连接到您的计算机上。然后按照这些附加说明操作:

1.在Windows中打开“找到新硬件向导”;

2.在窗口中选择“从列表或指定位置安装”选项,然后点击“下一步”。

3.在“搜索可移动媒体”中,取消选择该复选项并且选上“在搜索中包括这个位置”,然后导航到你提取的Arduino文件夹,选择驱动程子目录,然后按下一步。如果你正在使用Arduino的旧型号,或者Nano型,可能需要选择FTDI的USB驱动程序子目录。

4.点击完成

■乌班图Linux操作系统

虽然你可以安装在乌班图和其他Linux环境的Arduino使用图形用户界面工具,但是下面的步骤使用图5所显示的终端可以简化这些操作。

通过选择应用程序→附件→终端打开终端。在下面列出的命令行开始的美元标识符是计算机生成的命令提示,不需要输入这个美元标识符,只需输入在它后面的字符就可以了。

我们在乌班图9.04上测试了安装过程,但它也应该与其他版本兼容(可能会有一些不同)。

让我们从通用程序库开始,这个程序库里有免费的和开源的程序,公开了可用的源代码:

当sudo询问密码时,输入你的密码。sudo命令后面的命令将使用root用户权限执行。用下面的命令更新可用的软件列表:

现在就该先安装依赖软件:Arduino开发环境能执行所需的所有程序包括Java(openjdk)、用于AVR芯片的编程工具gcc-avr、avr-libc和avrdude。新的64位电脑还需要32位兼容的ia32-libs库。

接下来,从Arduino的官网网页(http://Arduino.cc/en/Main/Software)下载并打开Arduino的开发环境,在那你可以发现两个包:“Linux(32bit)”和“Linux(AMD 64bit).”较新的电脑都是基于64位技术。如果你不知道下载哪个包,使用uname-m命令来确定您的计算机是否是较新的64位模式(x86_64)下或较旧的32位模式(i386)。

解压你下载的软件包,(这将在你当前的目录下创建一个Arduino-<版本号>的目录):

启动Arduino的开发环境。因为要从一个特定的文件夹中执行命令,所以要给出该文件夹的完整路径:

Arduino的开发环境将启动。

■Mac OS X

下面是如何在Mac OS X上获得并执行Arduino软件:

1.从http://Arduino.cc/en/Main/Software上下载Ard uino的开发环境并打开扩展名是.dmg的文件。

2.一个新的Finder窗口会出现并带有三个图标(Ardui no、一个到你的应用程序文件夹的链接和FTDI USB的串口驱动程序包)。

3把Arduino的图标拖动到你的应用程序文件夹。

4如果您使用的是Arduino Uno之前的版本的硬件,安装FTDIUSBSerial Driver包。

5当你连接到Arduino时,你可能会看到消息“一个新的网络接口已被发现”。点击“网络优先权”设置,然后单击“应用”。完成这些后可以关闭“网络优先权”。

Arduino的“Hello World”结构

现在你可以上传你的第一个Arduino程序。打开Ardui no开发环境:

■Windows

双击Arduino的图标(在你之前提取的Arduino文件夹内能找到它)。

■Linux

直接改变当前路径到Arduin文件夹并运行Arduino:

■Mac OS X系统

双击Arduino图标(在Arduino文件夹中可以找到)。

选择Tools→Board→Arduino Uno,如图6所示,如果要使用不同的Arduino型号,也可以选择它来代替Uno。

选择File→Sketchbook→Examples→1.Basic→Blink。这个例子程序让第13脚上接着的LED闪烁,(Uno在板上有一个连在第13脚上的发光二极管)。

如何判断Arduino用了哪个串口

■Windows

打开开始菜单,在我的电脑上右键点击,选择属性,就能打开系统性能对话框。在Windows XP系统下,点击硬件;在vista或win7环境下,看左边的链接列表,从列表中选择设备管理器。然后打开“端口”结点,看哪个串行通讯接口被标记为USB串行通讯接口,如图7所示。

■Linux和Mac OS X

把Arduino拔出来,在Arduino开发环境的菜单选择Tools→Serial Port,观察列出来的串口列表。例如在Linux里的/dev/tty USB0、在Mac OS X里的BluetoothModem。在屏幕上的其他位置点击来取消菜单。插上Ardu no,并再次选择相同的菜单选项(Tools→Serial Port)。

观察新出现的端口,那些就是Arduino使用的串口。

在Arduino的发展环境中,选择Tools→Serial Port并且选择在上一步中找到的端口。

点击方框中带有右箭头的那个工具条图标,或者选择File→“Upload to I/O Board。”Arduino的传输指示灯将短暂闪烁,你应该看到消息“上传完成。”

现在你应该在闪烁的Arduino板上看到的标有“L”的黄色LED灯(见图8)。这意味着你已经成功安装了Ar duino的开发环境并且上传你的第一个Arduino程序到单片机。如果指示灯没有闪烁,再次按照指示,看那里安装出现了错误。如果这个不起作用你就不能继续。如果你仍然有问题,看网上的Arduino的故障排除指南:http://www.Arduino.cc/en/Guide/Troubleshooting。

如果以后在运行时遇到问题,可以回到这里来重复这些步骤。闪灯的例子是一个很好的测试,可以确保各部分都正常工作。如果LED不闪,就需要确定电源线是否插上或者是否你的计算机、Arduino板存在问题。一旦能使得像闪烁的LED一样简单的东西正常工作,就能更容易解决后面会出现的复杂问题。

“Hello World”的结构

通过运行“Hello World”,你刚刚迈出了重要的一步:闪灯。这个程序会使Arduino上内部的LED闪烁。如果你能让这个灯闪烁,就可以相信你已经可以编译和上传程序到Arduino了。

所有的Arduino程序具有类似的结构。既然闪灯是一个很简单的程序,通过检查程序结构,就很容易理解它了。

这里我们提供Arduino中闪灯的源代码,并加入我们的注释:

让我们回顾一下代码的每个部分。

(1)一个星号加斜线(/*)标记一个注释块的开始(结束是*/)。两个斜线(//)表明,这一行剩下的内容是注释。评论只是给人阅读的信息,Arduino软件不会对他们做出反应。在编译过程中注释将会被删除,并且不会被载入到Ardui no板上。注释指出这段代码的标题和目的。大多数注释都描述了代码特定的一行或一块。

(2)setup()函数在程序的开始执行一次,而且只执行这一次。在Arduino上电后或者上传程序后,setup()函数会立即地被自动调用。它是个函数,因为它有函数的返回类型(空类型),有括号里的参数列表。这个函数没有参数,所以括号里是空的。这个函数也不返回值,所以它的类型是void(空)。当调用一个函数的时候,列在花括号({})里的代码块里的命令会被执行。

(3)setup()函数只包含一个命令,设置连接到LED的引脚为输出模式。它调用pin Mode()函数,这个函数定义在Arduino库里。

(4)OUTPUT是在Arduino里定义的一个常量。在Ar duino上使用数字引脚时,你总得设置某个引脚为OUTPUT或者INPUT模式。

(5)由于Arduino是基于C语言开发的,所以要以分号结束。

(6)程序执行的主要时间会重复执行loop()函数。在set up()函数完成后,loop()函数会被自动地(重复地)调用。

(7)要使用已经被设置为OUTPUT的数字引脚,我们用digital Write()函数。设置数字引脚13为HIGH(意思是+5V)。数字引脚13是独特的,因为Arduino板上有LED和电阻连在它上面,这主要是用于调试的目的。输出HIGH后,LED会点亮。引脚会保持高电平,直到我们下一次用di gital Write()函数改写它的值。

(8)等待1000毫秒(毫秒是1秒的千分之一,所以总数就是1秒),这期间LED会一直发亮。

(9)关闭引脚(LOW),并且再等1秒钟。这是loop()函数中最后一条命令,它结束了就表示loop()函数执行结束。

这个程序将自动地反复调用loop()函数。程序会从loop()函数的第一行继续执行,并将LED设置为高电平。程序会反复调用loop()函数继续执行,直到Arduino断电才停止。

Arduino Uno板

Arduino UNO(如图9)是初次接触Arduino的很好的选择,它廉价并且可靠。当USB的电线连接到计算机上时,Uno会用USB提供的电源。如果必要的话,它还可以用外部电源供电,例如电池。当你从计算机上上传源代码时,程序保存到单片机内部。这意味着你可以从计算机上断开Arduino,使得它成为一个独立运行的设备。

Uno的插座上是插孔,这样使你不用焊接就能连接。这加快了简单原型的开发速度,但是长期使用并不是很好,因为导线比较容易脱落。

Arduino Nano板

如图10所示,Arduino Nano要比之前提到的Uno主板小得多。它还有可以直接连接到做原型的面包板上的插针。这些都可以让你不用焊接就能很容易的建立起更复杂的电路。

Nano比Uno更贵也更加娇气,例如,可能某种短路就会导致Nano的永久性损坏。它的另一个缺点是,在读取插针上的标记时更加困难,这样就容易把电线放错位置。

加上一块小型面包板和一条USB线,Arduino Nano就成了旅行行囊中的便携品了(见图11)。

现在你知道开始你的第一个项目的的基本要素是什么了吧。在下一章,你将会在创建Stalker Guard的时候在实践中尝试应用Arduino。

Arduino开发 篇3

Arduino是一款便捷灵活、方便上手的开源电子原型平台, 它包含可以用来做电路连接的Arduino电路板和配套的程序开发环境 (Arduino IDE) 。基于Arduino的项目, 可以只包含Arduino, 也可以包含Arduino和其他一些在PC上运行的软件, 如Processing、VB、Python等。

当我们使用Python语言通过串口控制Arduino读取设备状况并实施控制的时候, 就构成了上位机下位机系统。安装有Python之类软件实施控制的计算机为上位机, 能够控制设备并获取设备状况的Arduino为下位机, 它们相互之间可以通过串行口或无线的方式进行通讯, 进而实现控制与被控制。

● 安装Python

Python主要分为两大类, 即Python2和Python3。Python2是目前应用最广泛的一个版本, 最新版本号为2.7.11, 适合初学者学习使用。Python3相对于Python2而言, 有很多接口发生了变化并且可用的第三方库不多且不成熟, 虽然它代表以后的发展趋势, 但还是不建议初学者使用。Python下载地址为:https://www.python.org/downloads/。本例是下载了2.7.11版本, 文件名为python-2.7.11.msi, 安装在文件夹“C:Python27”, 安装过程中注意在如图1的设置中添加可执行文件搜索路径。

● 安装Arduino

Arduino主控板部分可在淘宝网上通过关键词“arduino uno”“arduino mini”“arduino mega”搜索购买。Arduino集成开发环境 (Arduino IDE) 可访问“https://www.arduino.cc/en/Main/Software”, 根据需要下载安装, 最新版本为1.6.7, 历经Arduino 00xx、Arduino 1.0.x、1.5.x BETA、Arduino 1.6.x四个系列的版本。本例硬件使用了Arduino Uno, 软件使用了Arduino1.5.8版本。软件安装在文件夹“C:arduino158”, 当Arduino Uno主控板与计算机通过USB连接后, 需要安装驱动, 驱动文件默认在文件夹“C:arduino158drivers”, 安装完成后, 在设备管理器中可以看到Arduino Uno占用的串行端口号, 如图2所示。

● 安装Pyserial

Pyserial是协助Python控制串口通讯的第三方库。pyserial V2.7下载地址为:http://sourceforge.net /projects/pyserial /, pyserial V3.0下载地址为:https://github.com/pyserial/pyserial。

若非Wi ndow s 64位操作系统, 下载pyserial-2.7.win32.exe直接安装即可, 否则需要使用pyserial-2.7.tar.gz文件手动进行安装。安装方法为:将pyserial-2.7.tar.gz解压至C盘根目录后, 运行CMD命令, 进入文件夹“C:pyserial-2.7”, 执行安装命令:“python setup.py install”。具体执行过程可参考图3的步骤。

● 启动Arduino IDE作为下位机进行通讯调试

当Arduino主控板连上PC主机并安装好相应的驱动程序后, 我们使用鼠标双击Arduino安装文件夹中的arduino.exe可以达到启动Arduino集成编辑环境的目的。

启动完成后, 可通过菜单“file→preferences”设置中文环境, 通过菜单“工具→板”设置“Arduino Uno”, “工具→端口”设置“Com3 (Arduino Uno) ”。如表1所示, 输入相关程序代码后, 点击“上传”按钮烧录程序至Arduino主控板中。启用串口监视器后, 根据程序代码, 输入字符o, 点击按钮“发送”可以发现Arduino主控板与数字引脚13相连的Led灯会变亮, 输入字符c, 点击按钮“发送”可以发现Arduino主控板与数字引脚13相连的Led灯会停止发光。具体程序代码的功能, 请查看表1中相应的注释。

● 启动Python并进行初步通讯调试

安装完成Python运行与编辑环境及涉及串口通讯的第三方库pyserial后, 通过“开始→所有程序→Python 2.7→IDLE (Python GUI) ”或“Python (command line) ”直接启动Python, 亦可以找到Python安装文件夹下的“python.exe”双击启动。启动完成后, 在命令提示符“>>>”下依次输入import serial、ser=serial.Serial (2) 、ser.write (“o”) 、ser.write (“c”) 等命令就可以实现对Arduino主板上与数字引脚13相连Led灯的控制, ser.close () 关闭打开的串行口, exit () 退出Python运行环境。

注意:本例Arduino使用串行口3, 故serial.Serial () 中的参数为2, 参数始终比串行口序号小1。

有关pyserial的详细用法, 可以参考http://pythonhosted.org/pyserial/。以下的例子是先定义串行口ser, 然后再对串行口ser进行配置。

● 趣味拓展:随论坛在线人数变化的灯

我们在访问论坛时, 经常会看到类似的统计数据:。结合Python和Arduino各自擅长的功能, 可以轻松做到读取在线人数并根据在线人数多少决定亮灯情况。表2所示代码是简化情况, 我们可以根据需要修改Python及相应的Arduino程序, 让亮灯更加人性化。

尤其应引起注意的是:①字符编码问题。安装chardet模块, 可以准确知道网络中获取字符的编码, 从而正确处理。②多空一行。Python构成语句块的代码需要多增加一个空行。详见第18行代码。③适当延时。在程序执行方式下, 串行口对象ser来不及初始化, 就迅速执行后面代码, 导致无效write, 当加了第13行代码后, 则一切正常。④确保论坛首页有“总计”“人在线”相关关键字, 若无, 请根据实际情况修改。

● 后记

Python第三方库——Pyserial提供了丰富的函数对串行口进行操作, 从而使Phthon能够很方便地对Arduino进行通讯。

在编写程序代码进行控制的过程中, 要注意Python、Arduino使用同样的通讯速率并且不要太大, 建议都使用9600, 否则容易出现数据错误。

经过试验, 若上位机PC、下位机Arduino均安装蓝牙, 亦可以使用Pyserial进行无线通讯达到控制的目的, 有兴趣的同仁可以自行尝试。

Arduino开发 篇4

Arduino源于意大利的一位教授的研究, 它一个开源的单板机控制器, 向所有人开放其源代码、软硬件平台和开发环境, 目前有大量的学者使用这一平台进行研究。

我们所说的智能小车应该区别于普通的遥控汽车和玩具, 它应该具有环境的感知能力, 通过各种传感器采集环境信息并做出相应反应, 能按要求自动行驶, 不需要人工操纵和干预。

2 智能小车车体结构

设计智能小车首先应该确定小车的基本结构, 其主要包括以下几个部分: (1) 循迹模块:指小车利用红外发射装置发射红外线后, 照射物体表面返回量的多少来测定小车的具体的位置, 以进行循迹。 (2) 舵机转向模块:指通过设置一定占空比的方波来控制舵机转过的角度, 舵机由于力矩大, 响应速度快等优点, 经常使用在自动小车转向装置中。 (3) 电机驱动模块:指通过专用电路对电机进行驱动, 单片机给出控制信号控制电机正常运转。 (4) 单片机模块:这是小车的控制中心, 为设计方便, 文章使用51单片机。 (5) 电源模块:因设计需要, 我们给小车单独供电, 设置独立的电源模块, 使之稳定运行。

3 硬件设计

3.1 电源模块设计

小车电源是整个系统稳定工作的前提, 所以因此电源设计合理, 小车电池电压要求在6-8V左右, 在考虑电池损耗和稳压的情况下, 我们采用低压差的稳压芯片。同时为防止大电流器件对单片机形成的干扰, 大电流器件和单片机要分开供电。

3.2 单片机系统设计

单片机是小车的控制中心, 设计一个小巧单片机系统是智能小车平稳运行重要保证, 在设计单片机系统时需要合理考虑调试扩展的需要, 原则上要把所有IO口引出, 合理集成LED显示、蜂鸣器等外围模块。同时考虑单片机的电源设计, 以确保系统稳定供电。

3.3 循迹模块设计

在本设计中我们采用红外一体式发射接收器。小车循迹就是利用红外线照射在不同颜色的物体表面具有不同的反射强度的特点, 在小车行驶过程中首先由发射器不断地外界发射红外光, 当红外光在遇到黑色表面时, 由于黑色吸光, 红外线遇到黑线将被大部分吸收, 那么反射到接收管的红外光就较少, 在电路上表现为电阻较大, 当红外光照射到白色表面时会发生漫反射, 反射到接受管的红外线就比较多, 在电路上表现为电阻较小, 这样通过外接的电路检测电路电阻的大小就可以判断小车的行动状态。单片机就可以依据反射回来的红外光多少确定黑线位置和小车行走路线, 使智能小车在不需要人工干预的情况下自动行驶。

3.4 舵舵机转向模块设计

舵机也叫做伺服电机, 它可以通过程序连续控制其转角, 故经常应用在智能小车中以实现转向要求。舵机是智能小车转向的控制机构, 舵机一般由舵盘、减速齿轮组、直流电机、位置反馈电位计、控制电路等几部分组成。它的工作原理是, 由控制电路板通过控制信号控制电机转动, 电机带动齿轮组, 齿轮组减速, 舵机转动。同时齿轮组将带动位置反馈电位计, 电位计的变化将即时输出一个电压信号, 控制电路板根据获得的信号就可以决定电机的转动方向和速度, 从而控制目标。另外舵机所需电压较大, 单片机不能直接供应, 因此要求舵机要和单片机分开供电, 一般额定工作电压为6V。

3.5 后轮电机驱动模块设计

一般情况, 单片机的驱动能力无法驱动电机, 故必须外加驱动电路。最为常见的比如H桥电路, 这种电路由4个三极管和一个电机所组成。其基本原理是通过导通驱动电路对角线上的一对三极管, 形成基本回路使电机转动。电流在流经电机时, 由于导通方式不同, 可能会从左右不同的2个方向流过电机, 以控制电机的向左转还是向右转。虽然这种电路可以方便的实现电机正反转, 但在实际使用中, 因电路设计不当, 较容易烧坏三极管, 故在设计电路时, 我们考虑用硬件电路控制三极管的开关, 以避免导通错误。在原有基电路的基础上设计增加4个与门和2个非门。每一侧与门控制2个三极管, 非门用于区别同一侧的三极管。4个与门由同一个“使能”导通信号相连, 2个非门通过提供一种方向输人。由于非门的使用, 则无论电流从哪个方向流入, 在驱动电路的同侧都只会有一个三极管导通, 以确保电流无论从哪个方向导入都将流经电机, 而不会烧坏三极管。 (见图1)

通过改进, 电机的运转只需要用到一个使能信号和两个方向信号。其导通原理如图2所示, 在使能信号为1的情况下, 令DIR-R信号为1, DIR-L信号为0, 则左侧三极管Q1和右侧三极管Q4将导通, 电流将从Q1流经电机, 再从Q4流出;反之DIR-R信号变为0, DIR-L信号变为1, 那么左侧三极管Q2和右侧三极管Q3导通, 电流则从右至左流过电机。

4 程序设计

4.1 PWM程序设计

脉冲宽度调制简称PWM, 它是通过对一系列脉冲的宽度进行调制, 对模拟电路进行控制的一种技术, 它在通信、测量等领域被广泛应用。PWM使用高分辨率的计数器对具体的模拟信号进行编码, 本质上, 它依旧是数字形式, 理论上, 只有有足够的带宽, 任何模拟信号都能用PWM来编码。文章设计的51单片机的PWM的程序如图3。

4.2 程序总体设计

程序设计是智能小车能否完成的重要环节, 在设计时需要考虑全面仔细, 在巡线模块、舵机的转动角度、后轮的驱动等几个部分进行设计和测试。智能小车程序设计一般使用查询方式, 程序启动, 先初始化后, 首先查询光电管的状态, 小车进入循迹模式后, 将不停地开始扫描I/O口是否有变化, 如果有变化, 则程序开始进行判断, 选择舵机的控制信号, 根据控制信号电机转动控制舵机转动角度, 同时后轮驱动模块控制后轮的转速, 实现小车智能控制行驶的目的。

5 结束语

目前, 研究Arduino人越来越多, 众多技术爱好者都希望能亲手设计一个智能小车, 智能小车的设计应该包括硬件设计和软件设计两部分, 在硬件设计部分包括电源模块、单片机系统、循迹模块、鸵机转向模块、后轮电机驱动模块等内容, 在软件设计部分包括PWM设计、舵机控制、后轮电机控制、主程序设计等几部分。

参考文献

[1]胡长晖, 叶梦, 等.基于电磁技术的智能车路径识别的研究[J].湖北师范学院学报 (自然科学版) , 2011 (2) .

[2]纪欣然.基于Arduino开发环境的智能寻光小车设计[J].现代电子技术, 2012 (15) .

Arduino开发 篇5

“姆潘巴现象”实验装置的设计

在设计实验装置之前, 我们需要确定实验器材。由于需要将器材放入密闭状态下的冰箱, 所以必须使装置脱离电脑处于离线状态, 因此我们首先需要解决数据的传输、保存问题。

既然是密封状态, 我们不仅要放弃用数据线传输的方式, 也不能考虑蓝牙、Wi Fi等方式, 只能考虑如何将数据保存下来。当然, 将一部手机或者树莓派和Arduino一起放进冰箱, 似乎也是一种方案, 但感觉有些大材小用。

既然不能实时传输, 我们还可以选择保存。Ar d u i n o自带的空间肯定是不够用的。有一款E E P R O M数据存储模块, 是通过I2C总线来与Arduino进行连接, 并且采用可插拔的芯片, 是可行的方案。但是我们翻了翻创客空间的器材, 发现了现成的SD卡模块, 这比EEPROM方便得多, 因为Mixly0.95已经增加了读写SD卡的功能 (如表1) 。

为了测量液体牛奶的实时温度, 我们本来可以用普通的LM35温度传感器, 用薄膜包一下做防水处理。但考虑到测量效果, 最后还是买了2个防水的温度传感器。

综上所述, 具体的“姆潘巴现象”装置连接图如图1所示, 制作本品所需要的材料和说明如表2所示。

由于本装置需要放置在潮湿的冰箱中, 我们需要将各种传感器和Ardunio封装起来, 所以我们利用身边的3D打印机制作了一个封装模块 (如图2) , 其实直接找个纸盒封装也是可以的。

代码编写

本次实验代码比较简单, 无非是获取温度, 然后写到SD卡中。很遗憾Mixly0.95还不支持DS18B20防水温度传感器, 我们只好使用Arduino IDE来编写。相信大家看到这篇文章的时候, Mixly就能够支持防水温度传感器了。

具体的代码如图3所示, 限于篇幅, 我们去除了get Temp ( ) 和get Temp01 ( ) 这两个函数代码。完整的代码将提供在谢作如的新浪博客上。

测试效果

为了测试实验效果, 我们选择同样300ML, 日常饮用的57度热纯牛奶放入-5℃的冰箱中, 通过一段时间的观察后, 将搜集到的数据从SD卡中复制到Excel中, 制作出T-t的图像 (如图4) 。

通过实验我们发现, 为了获得准确的实验结果, 我们需要注意以下内容:1将各种装置连接好之后, 务必要封装, 以防止潮湿的冰箱环境对装置产生损害。2为了搜集到准确的数据, 需要将防水温度传感器固定在纯牛奶中, 在测量的过程中要确保不打开冰箱, 以免影响测量效果。

其实, 在真实的测量过程中, 我们还发现了种种问题, 如一开始使用口香糖电池, 结果电池在冰箱一冻就没电了, 白等了几个小时。而且我们发现在加电前要先插好SD卡, 否则数据没法正常写入。

知识拓展

我们通过身边的工具完成一个传统物理实验并不是一件很难的事情, 现在创客运动已经将电子技术、传感器技术的门槛降得很低。我们还可以通过数据采集去探究一些有争议的科学现象, 关键是选择合适的传感器和简单的编程。因此开设相关课程, 让学生学习一些传感器和编程知识是很有必要的。至于这个“姆潘巴现象”实验, 我们还会继续用这个实验装置测量更多的数据, 以深入探究背后有什么样的科学原理。

Arduino开发 篇6

据世界卫生组织统计, 全球近一半的人处于室内空气污染中, 35.7%的呼吸道疾病、22%的慢性肺病和24.5%的肺癌是由室内空气污染引起的。而据我国室内环境监测中心发布报道, 我国75.5%的呼吸道疾病与室内空气污染有关的, 65.5%的肺癌源于室内污染, 远超世界平均水平。2002年12月18日由我国质量监督检验检疫总局/国家环保总局/卫生部联合颁布《中国室内空气质量标准》 (GB/T18883-2002) 于2003年3月1日正式实施, 其中要求:室内空气应无毒、无害、无异常嗅味, 要求每人每小时新风量不低于30立方米。

长期处于新风量不足的室内易患“室内综合症”, 因为在室内新风量不足时, 会使二氧化碳浓度升高, 过多吸入会造成二氧化碳中毒。其表现为胸闷、头痛头晕、浑身无力、精神萎靡、睡眠不足, 免疫力下降等。在新装修的房间内如果新风量不足, 装修材料中甲醛、苯、二甲苯等挥发性有机物体就无法有效排出, 易引起呼吸系统疾病如:肺癌、支气管炎、皮炎、再生障碍性贫血、月经异常等以及精神系统等疾病, 这些都是因为室内空气污染及新风量不足造成的。

2 检测器设计

2.1 系统功能特色简介

⑴实时测量。

⑵数据云端可查。

⑶数据保存。

⑷可根据地点查询。

2.2 系统功能特色简介

⑴温度、湿度、PM2.5、气压、光照可精确到

⑵数据可储存到云端,

⑶网络断线有短信报警

⑷数据异常短信报警

3 硬件部分

硬件部分是由传感器和Arduino单片机组成的, Arduino单片机使用的是Arduino UNO R3;传感器使用了DSM501A、BMP085、BH1750、DHT11;网络使用的时W5100扩展板。

Arduino是2005年1月由意大利米兰交互设计学院的两位教师David Cuartielles和Massimo Banzi一起设计, 是一块基于开放原始代码的Simple I/O平台。该平台由两部分组成:硬件 (包括微处理器、电路板等) 和软件 (编程接口和语言) 。Arduino的两部分都是开源的, 如果需要, 可以在其官网上下载到关于Arduino的开源内容、购买需要的所有独立部件、切割电路板并制作一个电路板。Arduino的软件环境是兼容Java、C等基本编程语言, 使得开发者可以快速完成作品。Arduino能够使用开发完成的电子元件.如Switch、Sensors或其它控制器、LED、步进电机或其它输入/输出装置, 同时, Arduino也可以成为独立与软件沟通的平台.如flash、Processing、Max/MSP或其它互动软件。

Arduino UNO R3是Arduino USB接口系列的最新版本, 作为Arduino平台的参考标准模板。UNO的处理器核心是ATmega328, 同时具有14路数字输入/输出口 (其中6路可作为PWM输出) , 6路模拟输入, 一个16MHz晶体振荡器, 一个USB口, 一个电源插座, 一个ICSP header和一个复位按钮。Arduino UNO的开发环境方便且简单易懂, 所以在互动产品创新设计等方面应用较多。

DSM501A是一款可以检测到1微米以上的微小粒子的粉尘传感器, 其工作原理是:, 通过DSM501A内含加热器加热, 让空气产生涡流, 从而使空气流经传感器, 如果空气中含有粉尘颗粒, DSM501A检测到粉尘颗粒, 产生相应的脉冲, 被检测粒子的浓度大小与脉冲的占空比关, 粒子浓度与产生的脉冲占空比成线性关系。输出量脉冲为可检测的数字量, 采集电路设计简单, 数据易分析处理。

BMP085是一款高精度、超低功耗的数字气压传感器, 采用8-pin陶瓷无引线芯片承 (LCC) 封装, 适合应用于移动设备中。BMP085由电阻式压力传感器、AD转换器、控制单元组成, 其中控制单元包括E2PROM和12c接口, 可以通过12C总线直接与Arduino连接通信。它的E2PROM存储11个校准系数, 这些校准系数用于对传感器进行温度补偿, 从而减少周围环境对其造成的误差。BMP085的压强测量范围在300~1100 h Pa (海拔高度一500 m~9 000 m) , 温度测量范围在一40℃~85℃, 符合产品开发与应用的需求。

BH1750是一种两线式串行总线I2C接口的数字型光强度传感器集成电路。它可以根据收集的光线强度数据来进行环境监测, 其具有1~65 535Lux的高分辨率, 可支持较大范围的光照强度变化, 数字输出, 使用方便简单。控制器通过BH1750采集环境光的强弱的数据Arduino与BH1750之间的通信使用标准的I2C协议, Arduino通过内部的I2C通信接口与BH1750的I2C接口相连, 容易实现编程和控制。

DHTll是一款含有已校准数字信号输出的温湿度复合传感器。DHTll摄氏温度测量范围0~50℃, 摄氏温度测量精度:±1~±2℃;相对湿度测量范围:20%RH~90%RH, 相对湿度测量精度:±4%RH~±5%RH。DHTll包括一个电阻式感湿元件和一个NTC测温元件, 并与一个高性能8位单片机连接, 具有响应迅速、抗干扰能力强、性价比高等优点。内部使用数字模块采集技术和温湿度传感技术, 具有较高的可靠性与稳定性, 满足精密卧式加工中心空调间温湿度检测需求。

W5100是一款多功能的单片网络接口芯片, 内部集成有10/100M以太网控制器。由于W5100内部集成了经过多年验证的、且全硬件的TCP/IP协议栈、以太网介质传输层MAC和物理层PHY, 支持TCP、UDP、IPv4, ICMP、ARP、IGMP和PPPo E。同时w5100内部还集成有16KB存储器用于数据传输。使用W5100不需要考虑以太网的控制, 只需要进行简单的端口Socket编程, 所以在使用W5100的时候, 可以在没有操作系统的平台上实现Internet连接。主要应用于高集成、高稳定、高性能和低成本的嵌入式系统中。

4 Arduino程序

检测器的软件部分采用模块化设计。整体软件由主程序、PM2.5采集子程序、气压采集子程序、光照采集子程序、温湿度采集子程序、网络发送子程序组成。主程序是整个系统管理控制的核心, 系统上电后, 首先是初始化各种传感器;之后是PM2.5、气压、光照、温湿度等数据串行采集;最后将采集来的数据通过TCP/IP协议传输到网络服务器上, 以供用户查询。

5 总结

研究了基于arduino的室内空气检测器, 系统中运用几种气体传感器对室内空气进行实时监测, 使用高可靠性的硬件来进行制作, 同时辅助以网络查询和数据储存。此方案进一步完善了人们对于室内空气数据的感知, 具有硬件设计简单、可靠性高、稳定性好及价格较低等点。然而, 本设计同时可以扩展用于室外PM2.5、温湿度、气压等参数的采集, 具有一定运用价值。

参考文献

[1]程晨.Arduino可发实战指南.机械工业出版社, (2013) .

[2]袁本华, 董铮.基于Arduino控制板的温室大棚测温系统设计[期刊论文].安徽农业科学, 2012 (08) .

[3]广州奥松电子有限公司.数字温湿度传感器DHT11说明书, 2009.

[4]张星, 王向军, 文鹏程.基于TCP/IP协议的无线远程温湿度监控系统[期刊论文].仪表技术与传感器, 2008 (06) .

[5]王丽, 李春玲.室内空气质量检测与传感器应用[期刊论文].黑龙江科技信息, 2012 (08) .

[6]Buechley, Leah Eisenberg, Michael.The Lily Pad Arduino:toward wearable engineering for everyone, 2008 (02) .

Arduino开发 篇7

“闪烁灯”是Arduino创意电子设计课程第二章第一节的内容。学生经过了第一章的学习,了解了Arduino控制板的接口,掌握了Arduino驱动程序的安装,也熟悉了可视化编程环境ArduBlock,心中产生了亲手制作一个作品的强烈欲望。通过这一节课的学习,学生开始真正去体验Arduino强大的吸引力,从搭建硬件、编写程序到完成调试,直至产生个性化的闪烁灯作品。

教学目标

1.通过制作闪烁灯,学会LED与Arduino控制板数字口的连接,了解编程的一般过程,掌握ArduBlock的基本模块与语法。

2.体验由自然语言描述到程序编写的一般过程。

3.在使用可视化编程环境中,激发学生对编程的兴趣。

教学重难点

重点:硬件的搭建,数字口的输出。

难点:个性化的ArduBlock编程。

教学准备

Arduino三合一控制板、黄色红色蓝色LED各一块、USB线、面包线三条,在学生机房环境中并安装可视化编程环境ArduBlock,学生四人一组。

教学过程

1. 由生活实例引发教学情境

师:在我们的生活中,会有各式各样不同形状、不同功能的灯出现,甚至也有个性鲜明的灯(如图1)。

师:请同学们讨论一下这三种灯的不同作用以及它们是如何进行控制的?

师:前一章的学习中,我们已经体验了Arduino电子作品的魅力,但是我们并没有自己动手去完成制作,现在我们就要来一起制作一个属于自己的LED闪烁灯。

2. 练习室阶段:一个LED闪烁灯

教师介绍硬件环境的搭建:LED(Light Emitting Diode,发光二极管)是一种能够将电能转化为可见光的固态半导体器件,颜色有白、绿、蓝等;高低电平可以驱动LED的亮灭。LED发光模块有三根针脚,接线的时候黑线接GND,红线接VCC,绿线接数字口。数字口0和1不能接,它们用于Arduino与计算机通信。

学生四人一组开始硬件环境的搭建。

教师引导学生具体分析一个LED闪烁灯的实现,并用语言描述。数字口的输出只有两种情况,0(LOW)或1(HIGH),我们既可以读取数字口的值,也可以给它输入一个值(0或者1)。以LED为例,我们给数字口一个1(高电压),LED被点亮;给数字口一个0(低电压),LED被熄灭,同时还可以给予时间上的控制。

教师演示ArduBlock编程,如图2所示。

学生四人一组完成调试,强调LED发光模块针脚的区别与Arduino控制板对应的数字接口。

设计意图:在教师的带领下,学生尝试设计一个简单的LED闪烁灯的全过程。硬件环境搭建、自然语言描述、ArduBlock编程和完成调试这四个步骤,为下一步设计更加复杂的作品打下扎实的基础。

3. 提高阶段:模拟交通灯设计

教师引导学生分析模拟交通灯的现象:红灯亮A秒之后灭掉,绿灯亮B秒之后灭掉,黄灯亮C秒之后灭掉,依此类推。

学生四人一组进行硬件环境的搭建。教师提示:将三个不同颜色的LED分别接在Arduino控制板的数字口上时,注意针脚的数字值是什么。

教师引导学生用自然语言描述模拟交通灯的实现。如红灯亮A秒之后灭掉的现象,我们给数字口一个1(高电压),LED被点亮,给予时间上的控制为A秒,再给数字口一个0(低电压),LED被熄灭,其他颜色灯也如此。

学生开始ArduBlock编程,如图3。

设计意图:在模拟交通灯的设计过程中,学生主要运用可视化编程环境Ardu Block中的基本模块与语法来尝试实现生活中的一个现象,为下一步实现自己的创意作品打下基础。

4. 创意阶段:跳动的音符灯

教师引导:在“中国好声音”节目中,你见过随着音乐而跳动的灯吗?如图4。

师:在设计跳动的音符灯时,主要考虑什么问题?

生:LED灯的点亮时间、持续时间与熄灭时间。

师:如何同时点亮两个或多个LED灯?

学生针对自己的个性化音符灯进行具体分析,教师组织学生四人一组讨论可视化编程环境ArduBlock中的基本模块,如延迟与时间的设置。

学生四人一组在编程环境ArduBlock进行编程,以实现自己的个性化音符灯。

设计意图:跳动的音符灯的设计,是让学生在掌握Ardu Block中的基本模块与语法的基础上,通过自己思考、动手实践,来设计出个性化的Arduino创意电子作品,进一步增强学好Arduino创意电子选修课程的信心。

5. 作品评价

学生以小组为单位,向大家展示音符灯的设计,并在ArduBlock中说明设计思路。

教师引导学生如何去评价Arduino创意电子作品的设计:一是作品的硬件搭建是否正确与接口连接的整洁。二是编程设计是否正确并调试效果明显。三是作品的设计是否融入自己的想法。

专家点评:

Arduino创意电子设计是一门涉及信息技术、电子电工、传感技术等多领域的交叉学科,其教育实施正是促使学生整合科学、技术、数学领域的知识,以工程标准化的思想进行综合实践的过程,具有较强的教育价值。该选修课程的开发与实践也对教师在多领域交叉学科上的知识、如何进行交叉学科的教学等方面提出了挑战,张秀常老师敢于尝试的勇气与努力是值得肯定的。

从闪烁灯教学案例的设计过程上看,由练习阶段、提高任务到创意作品的三步教学,不但照顾到了不同学习起点、不同认知水平的高一新生,而且在学习可视化编程环境ArduBlock的梯度上,也做到了环环相扣、层层递进。随堂听课时我发现,学生学习积极性高涨,学习的效果也非常不错。

上一篇:举手发言下一篇:展览作品