英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
Arduino对高级微控制器课程开发的影响
Juan Carlos Martiacute;nez-Santos, Member, IEEE, Oscar Acevedo-Patino, Member, IEEE,and Sonia H. Contreras-Ortiz, Member, IEEE
摘要:本文描述了以Arduino板为主要平台的数字设计领域课程的开发过程。Arduino提供了直观的开发环境和多种硬件和软件资源,允许快速开发基于微控制器的项目。然而,由于大量的可用信息,学生们正在失去设计自己的原型的能力。我们提出了一种方法,该方法介绍了使用Arduino开发不同类型项目的微控制器的研究,并继续研究系统架构以获得对设备的控制。该方法已应用于微控制器本科课程和数字设计高级技术研究生课程。与之前课程的学生相比,微控制器课程的学生表现出了更好的设计技巧和动机。在数字化设计课程的先进技术方面,学生能够利用Arduino平台对嵌入式系统的软硬件协同设计有了深入的了解。
关键词-教育课程,工程教育,嵌入式系统,微控制器,Arduino,基于项目的学习。
1.引言
在博利瓦理工大学(UTB)的电气、电子和机电一体化工程项目中,有一门微控制器课程始于大约20年前。本课程基于PIC单片机。当时还没有可用的C/ C 编译器,所以编程是用汇编语言完成的。PIC单片机采用RISC架构,只有20条指令,所以熟悉它并不难。然而,使用嵌入式外围设备进行寄存器管理通常是一项具有挑战性的任务。此外,没有用于使用诸如液晶显示器(LCD)等外部设备的代码库,因此它们必须由用户编码。后来出现了用于多个函数的C/ C 编译器和库,使原型开发更加容易。新微控制器品牌的出现,如飞思卡尔和德州仪器,加强了课程,因为主题变得更普遍,较少依赖于使用的微控制器品牌。
现在,我们有了由电子社区开发和支持的框架。例如,Arduino是一个开源程序、基于Atmel单片机的电子系统软硬件开发平台。从2005年开始,2012年作为UTB微控制器课程的平台。与其他微控制器平台相比,它有几个优点。硬件价格低廉,软件IDE可以免费下载。该程序员是内置板,所以不需要额外的硬件程序的设备。额外的硬件以扩展板(盾牌)的形式可用来连接到外围设备,如以太网适配器、无线通信、RFID、蓝牙、GPS和许多其他设备,以及它们各自的驱动器。Arduino的软件包括用于不同目的的各种库。最后,设计人员可以获得大量信息来构建不同的应用程序。
经过几次课程的发布,学生们开发的应用程序达到了高质量的水平。其中大多数包括不同类型的传感器、到其他设备的无线传输和互联网连接。然而,也有人指出,当学生们需要走出Arduino的世界时,他们遇到了困难。他们似乎很难开发出Arduino及其社区的庞大信息网络上没有的应用程序(硬件和软件)。
本文以Arduino单片机为开发平台,介绍了在UTB大学教授IETR1463单片机课程的体会。介绍了近三年来所取得的成绩和存在的问题。课程重新设计的目的是让学生认识到微控制器是Arduino背后的设备,并学习如何使用更专业的工具。他们的主要目标是开发优化的工程项目,从嵌入式系统设计到更精细的物联网(IoT)应用程序。本文是在LACCEI 2016[1]上发表的前一版本的延伸。在这个新版本中,我们扩大了对相关著作的修订,这体现在增加了更多的参考文献。我们还在课程结果分析中加入了额外的学期数据,这使得我们的观察窗口从2年扩大到了3年。最后,我们增加了一个新的部分,在这个部分中,我们展示了在数字设计高级技术研究生课程中使用的方法。
本文的其余部分组织如下。第二节总结了相关工作。第三部分描述了本课程的挑战。第四部分介绍了本课程的教学方法。第五部分描述了波利瓦理工大学的微控制器课程。第六部分是学生对课程的评价。第七节和第八节介绍了Arduino对研究生课程的影响,并提供了最新的讨论。最后,第九部分对全文进行了总结。
2.相关工作
对相关工作的初步回顾表明,有几门嵌入式系统课程在实验室中使用了各种硬件,如微处理器、微控制器和fpga,项目作业为[2]-[4]。我们选择了之前一些使用Arduino作为课程主要平台的作品。
Rodriguez-Sanchez等人的[5]介绍了一门嵌入式系统课程,该课程在无线场景中使用Arduino平台。这是一门基于项目学习(PBL)和协作学习(CL)的课程。他们的目标是尽可能模拟一个典型的行业环境。Arduino平台主要是实现控制软件。根据作者的说法,结果是积极的,不仅作为一个教学过程,而且使学生更接近真实的环境。
Zualkernan[6]使用Arduino板作为平台。根据作者所述,这是一门学生能够在其中以有效的方式构建包含设计模式、多线程、嵌入式编程和无线通信的硬件/软件系统的课程
学期课程。有时候,Arduino的在线社区的使用已经取代了Chancharoen等人提到的演示实验室。作者声称,学生们通过在线社区资源的学习来加快学习进度。
在早期阶段使用Arduino可以帮助学生保持动力。在西班牙,一个由不同地区的学校和公司网络开发的合作项目,已经在使用Arduino方便地开发自动化课程[8]中的新应用程序和硬件模块。尽管结果很有趣,但是要求任何额外的设备都必须适应网络内的工作,对于不完全兼容Arduino的设备,这可能会很困难。
除了类似arduino的shields之外,还开发了基于相同框架的其他平台。这是来自哥伦比亚大学[9]实验室工具包的情况。这些工具包允许学生测试和控制一些硬件设备,如显示器、led、开关和一些传感器。这种方法能够快速发展,但同时也限制了学生的选择。Sarik和Kymissis[9]认为,这是因为所有的实践都基于Arduino的平台。
除了课程活动,在使用Arduino平台的大学里,有很多项目和论文正在开发中。这些例子可以在[10]-[13]中找到,其中一个气象站、一个RFID阅读器、一个Android平台和一个农业机器人。这些项目是用Arduino板作为主要组件创建的。
开源设计和项目的使用带来了新的挑战。如何评估学生的作业。
Jamieson[14]在课程中使用Arduino,观察到学生在代码理解和系统集成方面获得了技能。然而,作者提出了这样的问题:学生对项目的贡献有多大,他们的工作水平是否足够深,可以被认为是成功的学习。这些问题也扩展到其他平台,如Raspberry Pi (raspberrypi.org)和BeagleBone Black Boards (beagleboard.org)。然后,主要的挑战是识别和评估基于开源设计的学生项目。为了解决这个问题,学生们必须突出他们的贡献,并表明他们的方法和原始项目[15]之间的距离。
从之前的作品中可以看出,课程目标和项目评估才是真正定义Arduino是否是一门课程的合适工具。但是,即使在更高级的课程中Arduino可能不是最合适的工具,但它仍然可以使用,并且效果非常好,我们接下来会展示。
3.问题识别
Arduino是一个非常流行的创建项目的平台。原因在于可以附加到主板的硬件、代码库以及作为书籍、教程、视频、diy项目和电子社区的可用信息。为了让每个人(即非工程师)都能使用这个平台,Arduino的开发人员决定将大部分微控制器技术细节隐藏在库函数和扩展板后面。这些函数和板负责在微控制器中运行草图(应用程序)所需的所有实现和配置细节,并将这些任务转换为简单的程序命令。
尽管许多设计问题还是圆满地解决了,还指出,当一个设计问题,需要一些不同的是什么:一个隐藏的参数修改,或外设的使用没有盾牌,它变成了一个挑战的学生,有温和的机会对于一个成功的结束。与面临这些问题的学生的交谈揭示了对Arduino社区信息的依赖。学生们没有走出这个世界去寻找解决他们问题所需要的东西。从这次谈话中得出的结论是,Arduino社区提供的一些不错的功能,在需要一个专门的或优化的解决方案时,会成为工科学生的障碍。
Arduino和它的社区提供的所有功能对于刚接触电子和嵌入式系统的人来说都是很好的。然而,对于工科学生来说,情况可能并非如此,因为他们不仅需要解决设计问题,还需要以更有效的方式解决它。这意味着,在低功耗、减少执行时间和最小硬件等限制下开发功能正确的系统。在Arduino的环境中,这些性能目标并不容易处理,因为实现细节对用户是隐藏的,而且它们不像常规库那样易于访问和修改,以适应特定的情况。使用Arduino平台的问题可以分为四类:与代码相关的问题、与硬件相关的问题、与系统级相关的问题和教学问题。在下面的段落中,将详细讨论这些问题。
A.代码相关问题
编写程序有两个函数:setup()和loop()。前者用于硬件设置和变量初始化。硬件设置最常见的任务是定义端口将用作输入还是输出。后一个函数相当于任何C/ c 程序中的main()函数。当然,可以向程序中添加更多的函数(在同一个文件中)。Arduino的环境是基于Java的,Java有一个main()函数,它在其中开始执行。这表明用户实际上无法访问程序的真正main()函数。他的代码嵌入到一个更大的程序中,而且很难告诉用户程序中添加了哪些其他函数和库,因为它的代码对用户是隐藏的。这不利于代码优化和微控制器的内存使用,而这在基于微控制器的系统中是一个很难约束的问题。
在Ar-duino的编程环境中,编写复杂的程序是另一项困难的任务。良好的编程实践表明,一个大的程序应该被分成不同的文件,因此它可以很容易地处理。应该创建头文件来描述类、数据结构、常量和任何相关信息。目前还不清楚如何在Arduino的IDE上实现这一点。用户似乎需要在一个文件中编写整个代码,这使得程序冗长而混乱。对于单个程序员或编程团队来说,这都不是一个好的编程实践。
在Arduino的环境中,代码优化也是一项困难的任务。ATmega328是Arduino电路板内部的微控制器,内存有限(32K),无法存储用户程序。一个中等规模的应用程序很容易就需要这个内存量。这意味着,程序员必须利用每个可用的内存字节。换句话说,应该优化应用程序代码,使其适合可用内存。没有工具可以在Arduino的环境上执行这种优化。此外,Arduino环境中添加的隐藏代码使优化和测量应用程序所需的实际内存量变得困难。
在Arduino的环境中,代码调试是另一个困难的任务。没有用于此目的的工具。这种情况,添加到一个大的单一文件中,可能使查找错误的任务成为一个真正的挑战。
B.硬件相关问题
硬件的问题源于需要使系统行为适应特定的设计问题。一个典型的情况是时钟频率,为了降低功耗,可以将时钟频率设置为与Arduino当前时钟频率不同的值。时钟频率上的任何变化都会影响delay()函数,该函数是堆栈库的基线时间,也是依赖于固定时钟频率来正常工作的几个外部设备的基线时间。
固定的时钟频率也会影响计时器模块,计时器模块用于生成脉冲宽度
调制信号。PWM通常用于模拟可变直流输出电压。在Arduino中,simulgwrite()函数也使用了这个特性,该函数也用于控制直流电机。然而,产生的信号具有固定的频率,可能不适合特定的电机,这可能需要不同的信号频率。然后,用户需要创建自己的基线时间。如果用户熟悉计时器的寄存器,这就不是问题。
由于采样速率与时钟频率同步,模数转换器模块也受到固定时基的影响。在Arduino中,要重新配置此参数以获得特定的采样率频率并非易事。
一般来说,任何与计时有关的活动都受所选时钟频率的影响。用户需要重新配置函数或创建自己的过程。与此同时,用户必须验证这些更改不会影响连接到主板的任何外部硬件的功能。
C.系统级相关问题
当项目进入开发的最后阶段时,工程师必须决定使用什么硬件和软件。任何额外的硬件或软件都可能被认为是浪费资源。因此,很可能只使用微控制器、传感器和执行器。不需要Arduino的电路板或额外的防护罩。这意味着有必要从Arduino的环境中分离出来,直接处理硬件部件,或者使用其他专门的软件工具。从Arduino转换到其他工具对学生来说可能是一项艰巨的任务,因为有可能Arduino的大部分功能都无法使用。然后,学生将不得不学习什么是微控制器和如何使用它。此外,他们可能需要创建代码中使用的Arduino函数的自己版本。这可能会给开发人员带来压力,并延迟他们的工作。
D .教学问题
据说Arduino环境的使用提高了课程项目的成功率。当学生提交一个使用Ardiuno环境完成的项目时,可能会被问到的一个问题是,这个项目中有多少是学生真正的工作?大量已经完成的示例和项目增加了学生为项目找到完整解决方案的机会。那么,学生的贡献是什么呢?他们学到了什么?
学生也有可能发现他们的项目所需的所有部分都准备好了,所以他们现在的工作是集成这些部分,为他们的设计问题生成一个解决方案。尽管有些人可能会说这是代码重用,这是一种有效的编程实践,但问题是其他学习方面可能会减弱,比如创新或批判性思维。
Arduino板的使用是否适合特定的课程?课程目标是选择最合适的工具来实现它们的指导方针。嵌入式系统及类似课程,包括初级或高级课程,ARTINEZ-SANTOS等人:ARDUINO对高级微控制器课程开发的影响。不仅需要构建功能系统,而且需要获得更深入的知识来寻找最佳解决方案。
4.建议的方法
本节展示了解决上一节中所述问题的建议方法。首先,我们介绍了微控制器课程的内容。其次,我们展示了为满足课程的期望和克服上一节所提出的问题而采取的课程方法。最后,我们展示了我们的方法如何与ABET和IET需求保持一致。
a微控制器的课程目标
UTB微控制器课程的主要目的是让学生了解与嵌入式系统相关的概念,如设计、软硬件协同设计、原型设计、优化
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[19091],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。