殷佳宝 , 韩四满 , 祁学祥 , 朱永琪
(宁夏工商职业技术学院,宁夏 银川 750021)
目前,学校各类工科类专业实训室工具存放多以工具箱为主,然而工具箱内并未对各类工具进行明确的区域划分,致使工具箱中工具多是杂乱无章的[1],对于学校的工具管理员来说是一项繁重的工作。为了解决企业和学校当中烦琐的发放和收纳管理工具的问题,项目小组设计了一种基于Arduino 开源电子原型平台的智能工具箱。通过压力传感器、RC522射频传感器、按键模块、显示模块、蜂鸣器等,实现智能工具箱的密码开锁、工具检测、工具缺失报警等功能。
系统总体设计方案如图1所示。本系统主要由Arduino UNO开发板、传感器(压力传感器、RC522射频传感器)、按键模块、显示模块、继电器、电磁锁、蜂鸣器组成[2]。系统供电有三种方式:1)电源插座供电;2)由外部电池供电,电池连接电源连接器的GND和VIN引脚;3)USB接口供电。当外部直流电源接入电源插座时,可以通过VIN向外部继电器和电磁锁供电;也可以通过此引脚向UNO开发板直接供电;VIN有电时将忽略从USB或者其他引脚接入的电源。通过主板与压力传感器、RC522射频传感器、按键模块相连,实现工具的重量检测和密码设置。工具使用者通过按键模块输入密码,打开工具箱获得使用权限。当工具使用完毕闭合工具箱后,通过显示模块显示工具箱内工具是否齐全,若工具有缺失则有蜂鸣报警声,便于提醒工具管理者检查工具情况。
图1 系统总体设计方案
工具箱只允许有权限的人打开。此功能有利于追踪使用工具箱的人,若工具有损坏则可以确定目标。
通过设定工具箱内部工具类型、工具位置、工具数量,在特定位置安装检测元件,用于检测工具的特征点,用于检测工具是否按要求归位、是否齐全。若工具缺失或者摆放不到位,关闭工具箱时报警,不允许关闭,显示缺失工具类型。通过警报声提醒工具使用者及管理员,管理人员只需处理有报警情况的工具箱,便于管理人员监管工具,减轻管理人员的工作强度,同时减少工具的丢失,实现工具的精细化管理,并更加有效地提高了工具损坏后的追查效率。
本研究选用Arduino UNO开源平台作为核心部件,其主要优势在于性价比高、便捷灵活、方便上手,配合外围器件传感器、控制开关、LED屏等,任何稍有电子电路基础的人都可以基于这个平台快速搭建出具有各种有趣功能的实用电子电路。Arduino UNO开发板以ATmega328 MCU控制器为基础,有6个模拟输入,14个数字输入/输出管脚,可以由程序自己定义为输入或者输出,还可以外接各种扩展板,连接各种功能的传感器,可拓展性很大。Arduino UNO集成开发环境为Arduino IDE,使得编写代码以及将代码上传到板上非常容易。
为了简化硬件接线,选用开发板配套的传感器扩展板 V7.1,把Arduino的端口扩展成直插3P传感器模块,14个数字口(6个PWM口),6个模拟口,丰富的通信和存储模块,外部电源扩展为Arduino开发板负载持续供电,扩展板角落接线柱为主控器和扩展板供电,中部接线柱为数字口上的舵机供电[3]。图2为Arduino主板。
图2 Arduino主板
压力传感器选择电阻应变片式压力传感器。它是通过粘贴在弹性敏感元件上的应变片的阻值变化来测量压力值的,这样就把弹性的机械力转化为电阻应变片的阻值变化[4]。把4个电阻应变片按照四臂全桥的方式进行连接,两输入端施加一定的电压值,两输出端输出的共模电压随着桥路上电阻阻值的变化增加或者减小,找到压力变化和输出共模电压变化的对应关系,就可以通过测量共模电压得到压力值,再由HX711模数转换器将采集到的模拟信号转换为数字信号交给Arduino UNO板进行处理,对其他外部元件进行控制[5]。图3为 HX711数模转换传感器。
图3 HX711数模转换传感器
在开锁的选型上采用了密码输入和身份验证两种方式开锁。密码输入解锁工具箱时需要权限输入,在保证满足功能的前提下选择性价比更高的4×4矩阵键盘模块,需占用8个标准的I/O口,用于连接Arduino UNO主板的4~11数字串口,实现开发板与按键间的通信,完成工具箱的解锁功能;身份验证则采用射频传感器进行身份ID认证进行开锁,当ID磁卡进入到磁场后,接收读写器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息,读写器读取到信息并解码后,送至处理单元进行数据处理,将处理完成的身份信息发送给Arduino UNO板,主板在得到认证成功的信息后,再对电磁锁进行开锁动作[6]。图4为本系统使用的RC522射频传感器。
图4 RC522射频传感器
使用Fritzing 软件绘制系统电路图。图5为系统电路图,该电路图只以一种工具的检测、报警为例绘制,为了接线方便、清晰,使用面包板完成,并加入二极管使实验现象更加直观。
图5 系统电路图
系统软件设计流程如图6所示。系统上电开机后,首先需要进行初始化,然后进入待机模式,红色指示灯亮,当使用者需要打开工具箱时,输入身份账号或者刷身份卡,认证成功后电磁锁打开并亮起绿色指示灯,则可以取用工具;若认证失败则电磁锁不会开启,闪烁黄色指示灯并发出警报。当归还工具后合上工具箱盖子时需输入1,工具箱进行自检,确认工具是否全部归还,若未全部归还则亮红色指示灯并发出警报,管理员利用权限再次打开工具箱检查工具,如出现误报警的情况,只需管理员复位即可;若出现丢失,及时查找追回或者记录,实现工具的精细化管理。
图6 系统软件设计流程
在Arduino程序运行时首先要调用setup()函数,用于初始化变量、设置针脚的输出输入类型、配置串口、引入类库文件等。本系统定义了波特率、监视管脚、工具最大重量、指示灯接口、继电器接口等,每次Arduino 上电或重启后,setup()函数只运行一次[7]。图7为部分主程序。
图7 部分主程序
在主程序setup()函数中初始化和定义变量,然后在图8所示的循环运行程序中执行loop()函数。loop()函数在程序运行过程中不断地循环,通过该函数将数值动态反馈给Arduino主程序[8]。循环程序主要是用于压力传感器检测工具,当几个检测点检测到工具,并达到设定工具的重量时检测成功,若未检测到工具或者工具重量不满足要求,则检测失败[9-10]。
图8 循环运行程序
智能工具箱系统搭建完成后,通过试验可实现工具箱的解锁、工具检测、报警等功能。本系统设计的工具箱按照不同功能和工具箱中
固定位置存放指定工具,如要改变工具箱的功能,需要重新调整工具箱内部结构,调整重量。该系统设计思路可复制、可迁移,可为相关产品设计人员提供思路。