您好, 访客   登录/注册

基于Arduino开发环境的智能小车编程教具设计

来源:用户上传      作者:杨铠睿 姜锐函 徐红梅

  摘要:面向中小学生设计一种基于Arduino开源电子平台的编程教具,由基础模块、循迹模块、传感器模块、显示模块等部分组成,能够实现自动循迹、数据监测及显示的功能。使用者可以在基础模块上组装其他拓展模块实现不同的功能,程序简短易懂,便于初学者掌握基础编程能力。
  关键词:编程教学;Arduino;传感器;显示器
  中图分类号:TP319 文献标识码:A
  文章编号:1009-3044(2020)08-0079-02
  随着人工智能的兴起,我国开始注重少儿编程教育对青少儿综合能力的培养。在国家政策的引领下,2018年浙江省将信息技术(含编程)列入了高考选考科目[1],山东省中小学信息技术教材中也新增了大量Scratch、Python等编程内容,青少年的编程教学正加快进入公共教育领域[2]。可拼装编程机器人能够培养学生的创造力、团队协作能力和逻辑思维能力[3],是实施编程教育的良好载体。为此设计一款面向中小学生或其他零基础编程爱好者的编程教具小车,利用简短的程序即可控制小车的行进速度和方向,此外还可以自由组装循迹模块、传感器模块等拓展模块以实现更多功能。
  1 基础模块
  小车的核心模块采用Arduino UNO开发板,具有14路数字I/O口,6路模拟I/O口,一个16MHZ的晶体振荡器、一个USB接口、一个电源插座、一个异步串行口和一个复位按钮。ArduinoIDE能够在Windows、Mac OS X等主流操作系统上运行[4],能够实现跨平台开发;Arduino语言以C语言为基础,程序结构简单,便于初学者理解掌握。同时,Arduino语言提供大量库文件,用户可以自由扩展相关功能;此外,Arduino开发方式简单,可扩展性强,所以本次设计选择Arduino UNO开发板。
  驱动部分选择N20直流电机,转速高力矩小,适用于对精度和力矩要求不高的场合。由于电机为大电流设备[5],不能直接用Arduino引脚控制,所以需使用H桥驱动芯片L293D进行驱动。
  2 拓展模块
  2.1 自动循迹模块
  循迹模块由两个安装在小车前端朝向地面的红外传感器组成,能够实现在浅色地面上遵循黑色轨道自动行进。当红外传感器位于反光能力强的浅色地面上方时,反射回的红外线较多,光电传感器的阻值较小;当红外传感器位于反光能力弱的黑色轨道上方时,反射回的红外线较少,此时光电传感器的阻值较大。将电压比较器与左右两侧的红外传感器连接,即可通过电压比较器的输出电平判断小车的位置,进而做出相应的调整。
  2.2 光感模块
  光感模块的功能主要由光敏电阻实现,光敏电阻是利用半导体的光电效应制成的电阻,光照强烈时,阻值减小,光照减弱时,阻值增加。光感模块的具体电路如图1所示,根据OUT端的输出电压即可实现光电转换,完成光照强度的显示等功能。
  2.3 测温模块
  测温模块选择LM35温度传感器,能够实现测量温度的功能,其输出电压与温度成正比,将温度用T表示,则电压与温度的转换公式如式(1)所示。
  测温模块的具体电路如图2所示。
  2.4 超声波模块
  超声波模块可以实现2cm-400cm的距离测量功能,共有四个接口,其中VCC接5v电源,GND接地,TRIG(控制端)和ECHO(接收端)接I/O口[6]。初始化时将TRIG和ECHO端置为低电平,首先给TRIC发送至少10us的高电平信号,模块自动发送8个40khz的方波。若有信号返回,则ECHO输出高电平,高电平持续的时间即为超声波从发射至返回的时间。测量距离的计算公式为:
  测量距离=(高电平时间*声速(340M/S))/2 (2)
  2.5 显示模块
  显示模块有七段数码管显示器和LCD1602两种。七段数码管显示器使用动态显示方式,连线方式如图3所示。由四个共阳极七段数码管构成,所有段码线由一个8位I/O口控制,4位位码线分别控制不同的LED。
  LCD1602显示器是点阵字符型液晶显示屏,可以显示两行的16位字符,有5个电源引脚,3个控制引脚和8个数据引脚,每个字符位都有对应的RAM地址。
  3 程序设计
  由于本次设计面向中小学生,所以程序设计基于循序渐进的原则,便于使用者掌握Arduino程序基础知识,了解元器件基本原理,使学生在编写程序控制小车和拓展功能的过程中,将抽象问题具体化,分析程序功能,提高逻辑思维能力。
  图4为小车自动循迹功能的程序,程序构架的第一部分为变量及接口的声明;第二部分调用setup0函数,设置各引脚的输入输出类型和配置串口参数;第三部分在loop0函数中实现循迹的功能。程序编写简单,结构清晰,适于初学者理解掌握。此外,在实现其他功能时还可以调用其他库文件,如LCD控制程序库LiquidCrystal、舵机控制程序库Servo等,初学者即使不了解器件的驱动原理,也能够利用库文件实现相关功能。
  4 总结
  本文设计了一种面向初学者的编程教具小车,基本构造以Arduino UNO开发板为控制中心,L293D芯片驱动四个直流电机。在此基础上可以安装红外传感器实现循迹的功能,还可以安装光敏电阻、LM35温度传感器、超声波传感器等传感器模块测量数据并通过七段数码管或LCD1602显示器显示。让学生通过编写程序实现相关功能的过程,提高对编程学习的兴趣,掌握基础编程知识。
  参考文献:
  [1]张晓东.基于计算思维培养的小学编程教学模式研究——以Scratch编程教学为例[J].中国信息技术教育,2019(24):35-37.
  [2]谢丽华.C语言程序设计教学中如何培养学生的逻辑思维能力[J].电脑知识与技术,2020,16(2):171-172.
  [3]劉天阳,基于STEAM教育的可拼装编程机器人调查与分析[J].中国农村教育,2019(15):75-77.
  [4]张本任,熊勇,张加,等.基于Arduino开发环境的无人艇控制系统设计[J].舰船科学技术,2019,41(5):83-87.
  [5]黄海来.新型智能消防小车的研究与实现[J].华东交通大学学报,2018,35(3):127-133.
  [6]吕淑芳.基于STC89C52单片机的汽车倒车防撞警报系统[J].电子技术与软件工程,2020(1):70-71.
  【通联编辑:朱宝贵】
  收稿日期:2020-01-15
  作者简介:杨铠睿(1999-),男,吉林安图人,本科在读,主要研究方向为混沌动力学;姜锐函(2001-),男,吉林德惠人,本科在读,主要研究方向为混沌动力学;通信作者:徐红梅(1975-),女,博士,副教授,主要研究方向为混沌动力学。
转载注明来源:https://www.xzbu.com/8/view-15200770.htm