2020-7-15 11:22:14 [显示全部楼层]
3347浏览
查看: 3347|回复: 2

[平台测评] 【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇

[复制链接]
       近期我们参与了DFRobot与Intel举办的AI开发者大赛,我们制作的项目是“智能冰箱食材管理系统”,用来管理冰箱内的食材。本篇就来介绍整个项目的硬件组成,包括用到的器件、结构、以及每个部分所涉及到的功能。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图7


       我们在过程中遇到了一个很bug的问题:原本计划是通过LattePanda板子上自带的协处理器Arduino Leonardo来实时检测外接的两个干簧管磁控开关。但在LattePanda上安装的Ubuntu18.04系统下,无论使用apt源或从Arduino官网安装的Arduino都无法将程序正常上传至Arduino Leonardo。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图22

       无奈之下,我们考虑了再外接一个Arduino Nano的方法来实现检测磁控开关的状态。

【硬件清单】

       主控板:由DFRobot提供的LattePanda Delta套装与Intel®神经计算棒组成。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图3【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图1

       屏幕:7英寸便携式超薄触摸屏(eDP)

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图4

       摄像头:Microsoft Cinema

       用于采集图像实现人脸识别功能,以及利用其自带的麦克风进行录音,实现语音识别功能。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图2

       喇叭:5WUSB供电喇叭

       用于播放声音,进行语音提醒。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图13

       USB拓展坞:USB一分三接口

       3个自带USB接口难以满足需要,故选择了一款体积较小的USB拓展坞

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图5

       ArduinoNano主控板(含USB转Mini-USB转接头)

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图8【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图9

       传感器开关:用来检测冰箱门开关的干簧管磁控开关:常开型GPS-23

       两根线,当磁铁接近检测端时(小于1.5cm),两个导线导通。为了让Arduino准确识别到开关信号,我们还在这里利用贴片电阻给磁控开关增加了下拉电阻。原理图参考DFRobot按键模块电路方案。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图11【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图10

【安装过程】

       首先,我们通过SolidWorks绘制了安装所有零部件的外壳。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图12

       使用3D打印机将模型打印出来。由于体积过长(254mm),故只能使用竖放的方式来进行3D打印。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图16【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图14

       打印好以后,我们开始准备所需要的零件。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图15

       固定摄像头的地方使用一个回形针与螺丝配合,将摄像头下方可弯曲部分固定在后背板上。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图6

       接下来,首先需要把主板的WiFi天线撕下贴纸,粘贴在3D打印件的背板上。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图17

       然后将所有零件组装到整体的空间内(尚未安装Arduino Nano)。在后续安装Arduino时,我们发现当Intel®神经计算棒插在主板USB端口上时,计算棒的体积比较宽,会影响到边上的USB接口,我们为了解决这个问题,甚至还用小刀将其他USB接口削窄了一些,才可以正常安装上。USB的冲突是安装以及设计外壳时需要考虑的部分,这里有两个改进建议:第一,增加USB端口,可以增加双排叠式的USB端口;第二,也可以考虑USB端口的封装更改为竖向立式(当前为卧式)这样就可以解决端口冲突的问题。此外,LattePanda Delta的3个USB口有些情况下不太够用,数量建议适当增加。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图18

       最后,需要安装前面板及在面板上安装屏幕。首先将屏幕穿过前面板,利用屏幕上自带的双面胶,粘贴固定在前面板上。摄像头的位置由于考虑可能需要调整摄像头的角度,没有完全固定,暂时留出了一个比摄像头稍大的孔位。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图19

       盖上顶板,硬件安装过程完成。

【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图20【行业AI开发者大赛】智能冰箱食材管理系统·硬件篇图21

       在结束组装以后,我们还进行了Arduino的安装与测试,利用Python通过外接的Arduino Nano监听开关状态,从而识别冷藏室和冷冻室门的开闭。

【检测开关部分代码】
[mw_shl_code=python,false]from pyfirmata import Arduino, util

import time

board = Arduino('/dev/ttyUSB0')
pin_ref = board.get_pin('d:2:i')  # 冷藏箱开关接口,关门为高电平,打开为低电平
pin_fre = board.get_pin('d:3:i')  # 冷冻箱开关接口,关门为高电平,打开为低电平
pin_fre_vcc = board.get_pin('d:12:o')  # 冷冻箱开关正极
pin_fre_vcc.write(1)  # 将正极设为高电平

# 开启对输入电平的监听
it = util.Iterator(board)
it.start()
pin_ref.enable_reporting()
pin_fre.enable_reporting()

# 确定初始状态
ref_status = pin_ref.read()
fre_status = pin_fre.read()

while True:
    time.sleep(0.1)  # 每0.1秒读取一次信号

    # 当电平状态由高电平转为低电平时,为开门;反之为关门
    if not pin_ref.read() and ref_status:
        print('冷藏箱开门')
    elif not pin_fre.read() and fre_status:
        print('冷冻箱开门')
    elif pin_ref.read() and not ref_status:
        print('冷藏箱关门')
    elif pin_fre.read() and not fre_status:
        print('冷冻箱关门')

    # 更新状态
    ref_status = pin_ref.read()
    fre_status = pin_fre.read()[/mw_shl_code]
       至此,本次的《智能冰箱食材管理系统·硬件篇》就与大家分享完毕了~!后续我们还会进行对项目的拍摄工作,包括项目的一些技术细节、制作过程以及整体的功能展示,敬请期待~!


#嘉诚欧巴#  高级技师

发表于 2020-7-15 11:27:07

本帖最后由 #嘉诚欧巴# 于 2020-7-15 11:33 编辑

一人血书LattePanda多加几个USB口,2.0的也行~
回复

使用道具 举报

帅猫  高级技师

发表于 2020-8-12 16:16:34

是不是UBUNTU的问题,要不飞几根线到USB上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail