回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

新一代终结者——麦昆 简单

头像 肥罗-阿勇 2019.06.13 2199 5

        今年运气爆棚,首先是参加麦昆脑洞全开赛报名获得资格,得到免费小麦昆一台。

       参加麦昆脑洞挑战赛居然拿了个第四名的好成绩,运气真好。

       但是接着居然还要参加一个麦昆赛道挑战赛,这可愁怀我了。

       上次是运气好才得了第四名,好运气都用完了,剩下的比赛怎么办?

       我该怎么蒙混过去,让别人看不出我其实是个弱鸡呢?

       这个问题很难!


project-image

但是任务始终还在那里

终于有一天我觉悟了……

project-image

不在堕落,我要奋斗

奋斗的第一步是什么?

那就是躺着,然后……

project-image

运气真的会光顾奋斗的人

运气再一次爆棚,我参加小MU视觉传感器抽奖,居然抽到了一块小MU视觉传感器

其实一开始我不知道小MU是什么,只是看到有免费抽奖,那自然就试一试

居然运气爆棚

很快就收到了小MU,认真看了小MU的说明书……

  然后我就知道自己要做什么了……

  麦昆来自未来,但是被封印了超能力,而小MU就是来解封麦昆超能力的

  有人说下雨天和巧克力很配

  我觉得麦昆和小MU才是绝配。

  拿人家的手短,我还是要给小MU打打广告

  当然小MU确实很不错。

  先来看看她

project-image

  就是这块小小的传感器

  别看她小,能力可不小

  她能快速识别各种颜色,球状物体,人体,各种卡片……

  识别率超级高,识别距离还很远

  而且她还提供了arduino,Mixly,Makecode等各种平台的库文件

  使用起来非常简单,通过I2C接口或者串口连接

  设置小MU

  然后就使用……

  我来两张图大家感受一下

project-image
project-image
project-image

  是不是超级简单

  可能她现在的功能还不算很强大

  但是对于我们创客教育来说,足够了,小朋友很容易理解,也很容易上手

  真的是很不错。

  现在正在搞活动,限量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,停车。

project-image

看起来还不错吧,尽量模仿城市道路情况

但是最近实在太忙了,有了想法但是没时间

最近几个比赛把我和学生都搞得很忙

只好拿出之前玩循迹比赛时候的地图,稍加改造

实际上只是用胶布增加了一条线,用来做施工区域,强制麦昆换道

效果如下

project-image
project-image
project-image
project-image
project-image

  思路很简单

  1、麦昆巡黑线

  2、识别到交通标识就按交通标识行驶

  3、识别到红绿灯就按红灯停绿灯行

  4、识别到门闸停下,门闸开了继续行驶

  5、到了终点看到停车标识停下。

  还可以扩展

  1、前面有一个老爷车慢慢悠悠的开,麦昆不能碰撞到前车,适当进行超车

  2、遇到其他突发情况要能做出相应的反应,比如前面突然跑出来一只漂亮狗狗,马上停车。如果前面突然跑出来一个外星人,加油撞过去……

  ……

  想起来很简单,做起来却又是一波三折

project-image

材料清单

步骤1 武装麦昆,把可爱麦昆打造成终结者

  首先,把小麦昆武装起来

  先加小MU

  再加巡线传感器识别红绿灯

  最好再加一个超声波识别前面障碍

  中间的过程就不说了,又是一把辛酸泪,直接看最终结果

project-image
project-image

   是不是有点像终结者,^-^

这里要注意几点

  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

project-image

开心的干活,编写了最简单的程序

结果一直说编译失败,请检查代码

project-image

用在线版的还是不行

怎么办?有问题当然问大神

跑到麦昆群里一问,果然有大神

有个大神叫李亮,他说用谷歌浏览器可以

是这样吗?

赶紧下载谷歌浏览器,之前是有的,最近特朗普封杀华为,谷歌跳出来支持特朗普反对华为,我就卸载了

插播一句,支持华为,华为新系统出来了,不管多难用,我都支持

不然一辈子被别人掐着脖子

华为好样的,期待鸿蒙,华为加油

……

好了,先放下家仇国恨,师夷长技以制夷嘛

装好浏览器,打开makecode

真的可以,大神就是大神

剩下的就简单了

编写代码,调试

中间也有各种问题就不摆了。直接上代码和视频

步骤3 编写程序代码进行调试

project-image
project-image
代码
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走进我的世界,希望有更多的好运降临我,呵呵!

其实可以做得更好,只是临近期末,最近比赛又多,暂时没有时间去完善

暑假有时间可以搭建一个复杂得城市模型,这样麦昆可以在里面玩得更嗨^-^

罗罗嗦嗦说了一堆,希望收到大家的好建议。谢谢!

评论

user-avatar
  • DeadWalking

    DeadWalking2023.12.23

    厉害啊!

    0
    • 许培享

      许培享2019.07.31

      666666

      0
      • Rich666

        Rich6662019.07.06

        厉害了

        0
        • DFSJ7U1sO1S

          DFSJ7U1sO1S2019.06.22

          不错膜拜大神不错膜拜大神

          0
          • 爱因思考

            爱因思考2019.06.18

            老铁,源程序给下吧1249704037@qq.com

            0