【mPythonX】N+千里马智能机器人——无线控制

2019-12-309121
AI 快速预览详细 收起
本文介绍了如何使用mPythonX 0.5.0软件和掌控板实现对千里马智能机器人的无线控制。通过A端掌控板的触摸按键,可以发送不同的命令,如前进、后退、左转、右转等,控制B端千里马智能机器人的运动状态。项目难度适中,适合8-14岁的孩子进行STEM教育,帮助他们理解无线通信和编程基础。
【mPythonX】N+千里马智能机器人——无线控制图1

善跑的骏马,可以日行千里,掌控板的生态越来越友好!

2019年10月,百灵鸽正式问世;11月,小鸽子的伙伴千里马也来了!

12月29日,收到了桃李科技寄来的“千里马智能机器人”,

很高兴成为20名内测用户中的一员!今天分享一个《【mPythonX】N+千里马智能机器人——无线控制》。



【mPythonX】N+千里马智能机器人——无线控制图2

一、思路:

利用无线广播radio,通过A端掌控板控制B端千里马运行状态,
当A端掌控板P触摸按键,发送命令:qianjin, B端千里马前进;
当A端掌控板Y触摸按键,发送命令:houtui, B端千里马后退;
当A端掌控板T触摸按键,发送命令:zuozhuan,B端千里马坐转;
当A端掌控板H触摸按键,发送命令:youzhuan,B端千里马右转;
当A端掌控板O触摸按键,发送命令:xuanzhuan,B端千里马自转;
当A端掌控板N触摸按键,发送命令:stop, B端千里马停止;
【mPythonX】N+千里马智能机器人——无线控制图3

二、环境:
1.软件:mPythonX0.5.0
2、硬件:
(1).千里马
(2).掌控板
(3).百灵鸽
【mPythonX】N+千里马智能机器人——无线控制图4

【mPythonX】N+千里马智能机器人——无线控制图5

三、组装

1.巡线模块两路红外巡线传感器,方便实现老马识途,保证不会迷失方向。
2.动力模块两个金属电机为千里马提供动力,最大转速:45转/转;减速比:1:150
.【mPythonX】N+千里马智能机器人——无线控制图6

3.电源模块千里马有700MAH锂电池,超10H小时奔跑能力。
4.超声波模块为千里马配上识别远方的眼睛,不会迷失方向。【mPythonX】N+千里马智能机器人——无线控制图7
5.灯光模块12路1600万RGB彩灯,加上掌控板3路,渲染节日气氛。6.颜色模块颜色识别传感器,千里马识别黄色红色等颜色。【mPythonX】N+千里马智能机器人——无线控制图8

7.控制模块通过Radio无线通信,A端掌控板控制B端千里马。

8.声音模块内置音频功放及小喇叭,3.5mm音频接口,播放动听音乐。
【mPythonX】N+千里马智能机器人——无线控制图9

9.气象模块搭载BME280传感器,检测温度、湿度、大气压、海拔高度。
四、编程准备工作1.将Horse.py和 horse.pbm上传掌控板中
(1).mPythonX图形化对应的库叫lark.py, horse.py改名lark.py;文件名:horse.py
(2).板载文件管理中,将ark.py上传到掌控板根目录下;
(3).在板载文件管理中,新建“文件夹”pbm,将千里马图片上传pbm文件夹中。
【mPythonX】N+千里马智能机器人——无线控制图10

【mPythonX】N+千里马智能机器人——无线控制图11

【mPythonX】N+千里马智能机器人——无线控制图12

【mPythonX】N+千里马智能机器人——无线控制图13

2.创建一个N+的目录文件名:N+.zip

(1).N+文件解压缩
(2).将整个文件夹复制到mPythonX安装目录下 plugins 目录
(3).打开 mPythonX,左侧有扩展选项,找到”N+”
【mPythonX】N+千里马智能机器人——无线控制图14

【mPythonX】N+千里马智能机器人——无线控制图15


3.编写程序
(1).控制A端掌控板
【mPythonX】N+千里马智能机器人——无线控制图16

【mPythonX】N+千里马智能机器人——无线控制图17

(2).授控B端千里马

1.运动千里马参考清者淡老师的“掌控板&如何让屏幕显示的图片动起来”。
文件名:gif分离.rar(1)利用gif分离工具,将horse.gif分解5个bmp图片,
(2)pbm格式转换,打开链接:将你的文件格式在线转换成*.pbm格式;
(3)打开mpythonX,连接掌控板,打开文件管理,新建文件夹(命名为pbm),然后将转好的pbm文件一个一个的上传至掌控板。
【mPythonX】N+千里马智能机器人——无线控制图18


【mPythonX】N+千里马智能机器人——无线控制图19

2.horse代码说明:

详细请见:文件名:千里马使用说明(简易版)
3.无线广播图形切换到代码模式。
(1)代码模式去掉motor = Motor()
(2)前进:car.forward()
(3)后退:car.backward()
(4)停止:car.stop()
(5)右转:car.turn_r()
(6)左转:car.turn_l()
B端千里马python代码:

【mPythonX】N+千里马智能机器人——无线控制图20

【mPythonX】N+千里马智能机器人——无线控制图21

[mw_shl_code=python,true]from mpython import *
from machine import Timer
import radio
import ubinascii
from lark import *
import neopixel
import time

_radio_msg_list = []
def radio_callback(_msg):
    global _radio_msg_list
    try: radio_recv(_msg)
    except: pass
    if _msg in _radio_msg_list:
        eval('radio_recv_' + bytes.decode(ubinascii.hexlify(_msg)) + '()')

tim13 = Timer(13)

def timer13_tick(_):
    _msg = radio.receive()
    if not _msg: return
    radio_callback(_msg)

tim13.init(period=20, mode=Timer.PERIODIC, callback=timer13_tick)

my_rgb = neopixel.NeoPixel(Pin(Pin.P7), n=12, bpp=3, timing=1)

def make_rainbow(_neopixel, _num, _bright, _offset):
    _rgb = ((255,0,0), (255,127,0), (255,255,0), (0,255,0), (0,255,255), (0,0,255), (136,0,255), (255,0,0))
    for i in range(_num):
        t = 7 * i / _num
        t0 = int(t)
        r = round((_rgb[t0][0] + (t-t0)*(_rgb[t0+1][0]-_rgb[t0][0]))*_bright)>>8
        g = round((_rgb[t0][1] + (t-t0)*(_rgb[t0+1][1]-_rgb[t0][1]))*_bright)>>8
        b = round((_rgb[t0][2] + (t-t0)*(_rgb[t0+1][2]-_rgb[t0][2]))*_bright)>>8
        _neopixel[(i + _offset) % _num] = (r, g, b)

car=Car()

_radio_msg_list.append('qianjin')
def radio_recv_7169616e6a696e():
    global m
    car.forward(100)

_radio_msg_list.append('houtui')
def radio_recv_686f75747569():
    global m
    car.backward(-100)

_radio_msg_list.append('zuozhuan')
def radio_recv_7a756f7a6875616e():
    global m
    car.turn_l(50,100)

_radio_msg_list.append('youzhuan')
def radio_recv_796f757a6875616e():
    global m
    car.turn_r(100,50)


#_radio_msg_list.append('xuanzhuan')
#def radio_recv_7875616e7a6875616e():
    # global m
    #car.revolve(-100,100)

_radio_msg_list.append('stop')
def radio_recv_73746f70():
    global m
    car.stop()

image_picture = Image()


radio.on()
radio.config(channel=13)
m = 0
while True:
    for m in range(0, 256, 10):
        make_rainbow(my_rgb, 12, 25, m)
        m = m + 1
        my_rgb.write()
    oled.fill(0)
    oled.blit(image_picture.load("pbm/horse1.pbm", 0), 0, 0)
    oled.show()
    time.sleep_ms(50)
    oled.fill(0)
    oled.blit(image_picture.load("pbm/horse4.pbm", 0), 0, 0)[/mw_shl_code]
五、视频回放:

六、知识拓展:
   超声波传感器
   声波,人的耳朵能听到的声波频率为20-200002,当声波动频率大于20000H2时,人耳无法听到。超声波因其频率下限大约等于人的听觉上限而得名。因此,我们把频率高于2000的声波称为“超声波”,超声波传感器是将超声波信号转换成电信号的传感器,有两个探头,一个发射超声波,另一个接收。有效测距面围为2--400CM,2CM以内为盲区。
感谢各位技术老师大力支持,谢谢你们,本产品来源:N+


N+.zip

7 KB, 下载次数: 0

售价: 1 创造力  [记录]

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
大海986
大海986
rzegkly
rzegkly
作者
回复大海986
评论内容
rzegkly
rzegkly
作者
谢谢
gada888
gada888
很好的分享
gada888
gada888
很好的分享
kylinpoet
kylinpoet
楼主强大,多谢分享。
rzegkly
rzegkly
作者
回复kylinpoet
谢谢
rzegkly
rzegkly
作者
mPythonX图形化对应的库叫lark.py, horse.py改名lark.py;文件名:horse.py
千里马使用说明(简易版)
(3).docx3.无线广播图形切换到代码模式。
(1)代码模式去掉motor = Motor()
(2)前进:car.forward()
(3)后退:car.backward()
(4)停止:car.stop()
(5)右转:car.turn_r()
(6)左转:car.turn_l()
- 没有更多了 -