今年运气爆棚,首先是参加麦昆脑洞全开赛报名获得资格,得到免费小麦昆一台。
参加麦昆脑洞挑战赛居然拿了个第四名的好成绩,运气真好。
但是接着居然还要参加一个麦昆赛道挑战赛,这可愁怀我了。
上次是运气好才得了第四名,好运气都用完了,剩下的比赛怎么办?
我该怎么蒙混过去,让别人看不出我其实是个弱鸡呢?
这个问题很难!
但是任务始终还在那里
终于有一天我觉悟了……
不在堕落,我要奋斗
奋斗的第一步是什么?
那就是躺着,然后……
运气真的会光顾奋斗的人
运气再一次爆棚,我参加小MU视觉传感器抽奖,居然抽到了一块小MU视觉传感器
其实一开始我不知道小MU是什么,只是看到有免费抽奖,那自然就试一试
居然运气爆棚
很快就收到了小MU,认真看了小MU的说明书……
然后我就知道自己要做什么了……
麦昆来自未来,但是被封印了超能力,而小MU就是来解封麦昆超能力的
有人说下雨天和巧克力很配
我觉得麦昆和小MU才是绝配。
拿人家的手短,我还是要给小MU打打广告
当然小MU确实很不错。
先来看看她
就是这块小小的传感器
别看她小,能力可不小
她能快速识别各种颜色,球状物体,人体,各种卡片……
识别率超级高,识别距离还很远
而且她还提供了arduino,Mixly,Makecode等各种平台的库文件
使用起来非常简单,通过I2C接口或者串口连接
设置小MU
然后就使用……
我来两张图大家感受一下
是不是超级简单
可能她现在的功能还不算很强大
但是对于我们创客教育来说,足够了,小朋友很容易理解,也很容易上手
真的是很不错。
现在正在搞活动,限量65折,大家可以去看看
https://item.taobao.com/item.htm?spm=a230r.1.14.51.74ca559eXiW0dK&id=593621076472&ns=1&abbucket=12#detail
好了,广告打完,希望DFROBOT不要介意,麦昆和小MU是绝配的
也是我要做的东西两大主角
我要做的就是智能无人驾驶小车赛道。
无人驾驶要有哪些功能呢?
1、走规定的路——巡线传感器
2、遇到红绿灯会识别,红灯停,绿灯行。——巡线传感器
3、遇到各种交通标识要会认——视觉传感器
4、遇到特殊情况要会停下来,比如跟前面的车跟太紧了——超声波传感器
因此我设计了一条赛道,它有几个障碍点
1、按制定线路前进
2、有一段路在进行道路施工,要按交通指示行驶
3、有一个红绿灯,遇到红灯要停下,绿灯继续前进
4、有一个门闸,要停下,门闸打开继续前进
5、看到停车标志P,停车。
看起来还不错吧,尽量模仿城市道路情况
但是最近实在太忙了,有了想法但是没时间
最近几个比赛把我和学生都搞得很忙
只好拿出之前玩循迹比赛时候的地图,稍加改造
实际上只是用胶布增加了一条线,用来做施工区域,强制麦昆换道
效果如下
思路很简单
1、麦昆巡黑线
2、识别到交通标识就按交通标识行驶
3、识别到红绿灯就按红灯停绿灯行
4、识别到门闸停下,门闸开了继续行驶
5、到了终点看到停车标识停下。
还可以扩展
1、前面有一个老爷车慢慢悠悠的开,麦昆不能碰撞到前车,适当进行超车
2、遇到其他突发情况要能做出相应的反应,比如前面突然跑出来一只漂亮狗狗,马上停车。如果前面突然跑出来一个外星人,加油撞过去……
……
想起来很简单,做起来却又是一波三折
步骤1 武装麦昆,把可爱麦昆打造成终结者
首先,把小麦昆武装起来
先加小MU
再加巡线传感器识别红绿灯
最好再加一个超声波识别前面障碍
中间的过程就不说了,又是一把辛酸泪,直接看最终结果
是不是有点像终结者,^-^
这里要注意几点
1、因为小MU要占用I2C接口,所以我们必须另外购买超声波传感器,使用P2接口,一般的超声波传感器是4个接口,而DFROBOT的URM09只有三个接口,可以接到P2接口。使用更简单,而且很灵敏,为DFROBOT赞一个。而且这个是我用150代金卷买的,^-^
2、还要另外接一个巡线传感器,用来感应红绿灯,接到P1接口上。
3、我自己改造了电池。
大家忽略我的接线,有点乱。最好能做一个外壳,最近学生要准备期末复习,自己懒得动,将就着……
步骤2 选择合适的软件平台
第二步,选择软件平台。
用麦昆当然是用mind+了,但是mind+不支持扩展库,所以用不了小Mu只能放弃。
最终选择了makecode,既支持麦昆又支持小MU
熟练的打开makecode3.4,打开扩展
输入麦昆的地址:https://github.com/DFRobot/pxt-maqueen
输入小Mu的地址:tianli/MuVisionSensor-makecode
开心的干活,编写了最简单的程序
结果一直说编译失败,请检查代码
用在线版的还是不行
怎么办?有问题当然问大神
跑到麦昆群里一问,果然有大神
有个大神叫李亮,他说用谷歌浏览器可以
是这样吗?
赶紧下载谷歌浏览器,之前是有的,最近特朗普封杀华为,谷歌跳出来支持特朗普反对华为,我就卸载了
插播一句,支持华为,华为新系统出来了,不管多难用,我都支持
不然一辈子被别人掐着脖子
华为好样的,期待鸿蒙,华为加油
……
好了,先放下家仇国恨,师夷长技以制夷嘛
装好浏览器,打开makecode
真的可以,大神就是大神
剩下的就简单了
编写代码,调试
中间也有各种问题就不摆了。直接上代码和视频
步骤3 编写程序代码进行调试
function jiaotong() {
if (MuVisionSensor.get_traffic_card_type(MuVisionSensor.SENSORS.MU00, MuVisionSensor.TRAFFIC_CARD_TYPE.TRAFFIC_CARD_FORWARD)) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 50)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 50)
}
if (MuVisionSensor.get_traffic_card_type(MuVisionSensor.SENSORS.MU00, MuVisionSensor.TRAFFIC_CARD_TYPE.TRAFFIC_CARD_LEFT)) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 0)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 50)
basic.pause(500)
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 50)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 50)
}
if (MuVisionSensor.get_traffic_card_type(MuVisionSensor.SENSORS.MU00, MuVisionSensor.TRAFFIC_CARD_TYPE.TRAFFIC_CARD_RIGHT)) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 50)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 0)
basic.pause(500)
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 50)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 50)
}
if (MuVisionSensor.get_traffic_card_type(MuVisionSensor.SENSORS.MU00, MuVisionSensor.TRAFFIC_CARD_TYPE.TRAFFIC_CARD_TURN_AROUND)) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 0)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 50)
basic.pause(1000)
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 50)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 50)
}
if (MuVisionSensor.get_traffic_card_type(MuVisionSensor.SENSORS.MU00, MuVisionSensor.TRAFFIC_CARD_TYPE.TRAFFIC_CARD_PARK)) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 0)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 0)
}
}
function xunxian() {
if (maqueen.readPatrol(maqueen.Patrol.PatrolLeft) == 0 && maqueen.readPatrol(maqueen.Patrol.PatrolRight) == 0) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 50)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 50)
} else {
if (maqueen.readPatrol(maqueen.Patrol.PatrolLeft) == 1 && maqueen.readPatrol(maqueen.Patrol.PatrolRight) == 0) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 50)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 0)
}
if (maqueen.readPatrol(maqueen.Patrol.PatrolLeft) == 0 && maqueen.readPatrol(maqueen.Patrol.PatrolRight) == 1) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 0)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 50)
}
if (maqueen.readPatrol(maqueen.Patrol.PatrolLeft) == 1 && maqueen.readPatrol(maqueen.Patrol.PatrolRight) == 1) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CCW, 20)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CCW, 20)
}
}
}
MuVisionSensor.begin(MuVisionSensor.SENSORS.MU00, MuVisionSensor.PORT.I2C)
MuVisionSensor.VisionBegin(MuVisionSensor.SENSORS.MU00, MuVisionSensor.ENABLES.enable, MuVisionSensor.VISION_TYPE.VISION_TRAFFIC_CARD_DETECT)
basic.forever(function () {
if (pins.digitalReadPin(DigitalPin.P1) == 1) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 0)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 0)
} else {
if (pins.analogReadPin(AnalogPin.P2) < 15) {
maqueen.MotorRun(maqueen.aMotors.M1, maqueen.Dir.CW, 0)
maqueen.MotorRun(maqueen.aMotors.M2, maqueen.Dir.CW, 0)
} else {
if (MuVisionSensor.detected(MuVisionSensor.SENSORS.MU00, MuVisionSensor.VISION_TYPE.VISION_TRAFFIC_CARD_DETECT)) {
jiaotong()
} else {
xunxian()
}
}
}
})
步骤4 测试成果,欣赏战果
最后来欣赏一下无人驾驶智能小车——麦昆
是不是很帅
最后还是要感谢DFROBOT公司给了我机会接触麦昆,越来越喜欢这个小家伙,而且有了新的想法,利用麦昆做一个很好玩的项目,不过需要很多个麦昆,但是做好了,一定是很棒的。不知道学校支持不支持。或者DFROBOT可以支持支持我,^-^
还有就是也要借机感谢杭州摩图科技公司送给我一块小MU视觉传感器,虽然可能比起专业级的要简单很多,但是就因为简单,可以在中小学中推广,让更多的孩子可以学会视觉传感。
两次好运气,让麦昆和小Mu走进我的世界,希望有更多的好运降临我,呵呵!
其实可以做得更好,只是临近期末,最近比赛又多,暂时没有时间去完善
暑假有时间可以搭建一个复杂得城市模型,这样麦昆可以在里面玩得更嗨^-^
罗罗嗦嗦说了一堆,希望收到大家的好建议。谢谢!
DeadWalking2023.12.23
厉害啊!
许培享2019.07.31
666666
Rich6662019.07.06
厉害了
DFSJ7U1sO1S2019.06.22
不错膜拜大神不错膜拜大神
爱因思考2019.06.18
老铁,源程序给下吧1249704037@qq.com