所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
手机管家精灵盒
云天 云天 2019-08-31 16:21:23
1
1
简单

设计背景:

    孩子有手机了,本以为与孩子的联系会更便捷,谁知却让家长有“失控”的感觉,孩子经常玩起手机时间很长。

    孩子使用手机要不要管,答案是肯定的。未成年的孩子需要父母的引领,扶正这棵小苗是父母的责任也是应尽的义务。但很多家长又不能长时间陪在身边,及时控制好孩子玩手机的时间。应运而生,为了能够帮助那些自制能力差,快近视,接近手机依赖症的小朋友们,设计了“手机管家精灵盒“

projectImage

设计思路:

    家长端APP通过物联网设置“开启收纳手机”时间、“结束收纳”时间。精灵盒中的手机APP接收到时间,开始计时,当“开启收纳手机”时间到后,通过蓝牙发出指令让Micro bit通过电机驱动板控制电机推出收纳盒。小朋友在手机上开启验证APP,放入盒中,点击盒上按钮,收回盒子。

    开启验证。精灵盒中的手机APP随机生成1-5随机数,发送给小朋友手机,小朋友的手机按收到的随机数开始黑白背景闪烁。精灵盒的环境光传感器开始检测,查看闪烁次数与随机数是否一致,以此验证盒中是否为所要收纳的手机。并将结果发送到时家长端。家长就能及时了解手机的状态。

projectImage

一、家长端APP程序编写

    编写环境为MIT App Inventor2 WxBit 汉化增强版。

    1、页面设计

    “连接状态”为物联网连接状态,“手机状态”为当到了收纳时间,显示手机是否被收纳。

    “当前时间”,调用显示手机系统时间。

    两个输入框为:启动收纳时间和结束收纳时间

projectImage

     2、逻辑设计

    物联网连接,使用 MIT App Inventor2 WxBit 汉化增强版提供的MQTT,服务器UIR使用默认:tcp://broker.hivemq.com:1883。因其不需要其它设置,使用方便简单。但可能安全性不高。

projectImage

连接物联网,并接收手机收纳状态信息

    对提交的时间格式进行校验,并通过物联网发送给“精灵盒手机APP”

projectImage

    显示当前手机系统时间

projectImage

    二、精灵盒手机APP

    1、界面设计

    界面中主要是蓝牙的相关操作、手动连接物联网(屏幕启动时已自动连接)及收到启动时间后进行“倒计时”

projectImage

    2、逻辑设计

    物联网连接

projectImage

    通过物联网收到开启收纳时间信息,进行时间计算,开始倒计时。倒计时结束,通过蓝牙发送指令,Micro bit 控制电机推出盒子,准备收纳手机。当收纳完毕,开启结束收纳倒计时。

projectImage

    MIT App Inventor2与Micro bit 蓝牙连接方法,可以查看本人的另一个帖子:[高级教程]Micro bit 与 App Inventor2 蓝牙通信http://mc.dfrobot.com.cn/thread-297491-1-1.html

projectImage

    当小朋友手机APP通过物联网主题“验证手机程序开启”,发来“start"消息,产生随机验证数,再发送给小朋友手机APP。

projectImage

    并通知Micro bit 开始验证。

projectImage

    Micro bit 发回验证结果,如正确,向家长端APP发送成功信息,否则发送失败信息,并推出盒子,要求再次收纳手机。

projectImage

    三、小朋友手机APP

     1、界面设计

     只有一个启动按钮,通知开启手机收纳验证。

projectImage
    2、逻辑设计

    物联网连接

projectImage

     点击“开启”按钮,发送“start”开启验证指令。

projectImage

    当收到随机验证数,在等待10秒后,按照验证数开始屏幕黑白间隔闪烁。闪烁完毕后发送“stop”指令。

projectImage

    发送“stop”指令完成后,退出APP。

projectImage

四、硬件设计

    控制板使用Micro bit,Micro bit 集成了蓝牙模块,加上micro:bit及 电机驱动扩展板,但在应用中未使用电机驱动接口,而是另加了一个“L298N直流电机驱动模块”与电机相连。

    P14,P13接电机驱动模块。P14为高电平,P13为低电平,电机正转,精灵盒被推出。P14为低电平,P13为高电平,电机反转,精灵盒被收回。


projectImage

    “模拟环境光线传感器”接P2引脚,“数字触摸开关”接P1引脚。

代码 代码
	                    					let nowtime = 0

let tempsum = 0

let uartData = ""

let wb = 0

let connected = 0

let start = 0

basic.showString("UART")

start = 0

connected = 0

wb = 0

pins.digitalWritePin(DigitalPin.P13, 0)

pins.digitalWritePin(DigitalPin.P14, 0)


basic.forever(function () {
	
})

bluetooth.onBluetoothDisconnected(function () {//蓝牙断开时,点阵显示
    basic.showString("D")

    connected = 0

    start = 0
})

bluetooth.onBluetoothConnected(function () {//蓝牙连通
    basic.showString("C")

    connected = 1

    while (connected == 1) {

        uartData = bluetooth.uartReadUntil(":")//接收字符串以“:”结束
        if (uartData.substr(0, 1).compare("K") == 0) {//收到“K”,停止电机
            pins.digitalWritePin(DigitalPin.P13, 0)

            basic.showIcon(IconNames.No)

        }

        if (uartData.substr(0, 1).compare("G") == 0) {//收到“G”,电机推出盒子
            basic.showIcon(IconNames.Yes)

            pins.digitalWritePin(DigitalPin.P13, 1)

            basic.pause(500)

            pins.digitalWritePin(DigitalPin.P13, 0)

        }

        if (uartData.substr(0, 1).compare("T") == 0) {//收到“G”,电机推出盒子
            basic.showIcon(IconNames.Yes)

            pins.digitalWritePin(DigitalPin.P13, 1)

            basic.pause(500)
 
           pins.digitalWritePin(DigitalPin.P13, 0)

        }

        if (uartData.substr(0, 1).compare("M") == 0) {//收到“M”,环境光检测标识置1
            start = 1

            tempsum = 0

        }
 
       if (start == 1) {//开启环境光检测
            if (pins.analogReadPin(AnalogPin.P2) < 200 && wb == 1) {

                wb = 0

                tempsum = tempsum + 1

                nowtime = input.runningTime()

            }

            if (pins.analogReadPin(AnalogPin.P2) > 200 && wb == 0) {

                wb = 1

                tempsum = tempsum + 1

                nowtime = input.runningTime()

            }

            if (input.runningTime() - nowtime > 12000) {//当闪烁时间停止超过12秒

                start = 0//停止检测
                bluetooth.uartWriteString(convertToText(tempsum))//通过蓝牙发送检测结果
            }

        }

    }
})

input.onPinPressed(TouchPin.P1, function () {
//当触摸按钮被点击,收回盒子
    pins.digitalWritePin(DigitalPin.P14, 1)

    basic.pause(500)

    pins.digitalWritePin(DigitalPin.P14, 0)
})


	                    				

五、硬件制作过程

    1、制作箱体

    使用装修剩余木料,用热熔胶安装箱体,并安装电机和电机驱动。

projectImage

采用电机+齿轮驱动齿条带动盒子推出,拉回。

    2、 安装扩展板及面包板

projectImage

    3、安装“环境光传感器”

projectImage

外面

projectImage

里面

    4、安装“数字触摸开关”及电源(充电宝)

projectImage

    5、箱体顶后半部分使用“PVC”透明板

projectImage

    6、安装精灵盒子手机


projectImage

    六、视频演示

Makelog作者原创文章,未经授权禁止转载。
1
1
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]