2019-12-30 14:30:14 [显示全部楼层]
4318浏览
查看: 4318|回复: 8

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

[复制链接]
【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 创造力  [记录]

rzegkly  版主
 楼主|

发表于 2019-12-30 14:44:13

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()

horse.zip

1.62 KB, 下载次数: 0

售价: 1 创造力  [记录]  [购买]

千里马使用说明(简易版)(3).zip

14.07 KB, 下载次数: 0

售价: 1 创造力  [记录]  [购买]

回复

使用道具 举报

kylinpoet  初级技神

发表于 2020-2-18 16:26:40

楼主强大,多谢分享。
回复

使用道具 举报

rzegkly  版主
 楼主|

发表于 2020-2-19 09:20:25

kylinpoet 发表于 2020-2-18 16:26
楼主强大,多谢分享。

谢谢
回复

使用道具 举报

gada888  版主

发表于 2020-2-23 12:10:16

很好的分享
回复

使用道具 举报

gada888  版主

发表于 2020-2-23 12:10:21

很好的分享
回复

使用道具 举报

rzegkly  版主
 楼主|

发表于 2020-2-23 13:53:30

谢谢
回复

使用道具 举报

大海986  初级技师

发表于 2023-11-2 14:09:56

回复

使用道具 举报

rzegkly  版主
 楼主|

发表于 2023-11-4 06:33:55

大海986 发表于 2023-11-2 14:09
很完整,把一个团队活全包了,很牛。能合伙做一个项目吗?一种在关键时刻可救人一命的可穿戴臂环式水上智能 ...

回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail