rzegkly 发表于 2019-12-30 14:30:14

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


善跑的骏马,可以日行千里,掌控板的生态越来越友好!
2019年10月,百灵鸽正式问世;11月,小鸽子的伙伴千里马也来了!
12月29日,收到了桃李科技寄来的“千里马智能机器人”,
很高兴成为20名内测用户中的一员!今天分享一个《【mPythonX】N+千里马智能机器人——无线控制》。



一、思路:
利用无线广播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端千里马停止;
二、环境:
1.软件:mPythonX0.5.0
2、硬件:
(1).千里马
(2).掌控板
(3).百灵鸽

三、组装
1.巡线模块两路红外巡线传感器,方便实现老马识途,保证不会迷失方向。
2.动力模块两个金属电机为千里马提供动力,最大转速:45转/转;减速比:1:150
.
3.电源模块千里马有700MAH锂电池,超10H小时奔跑能力。
4.超声波模块为千里马配上识别远方的眼睛,不会迷失方向。
5.灯光模块12路1600万RGB彩灯,加上掌控板3路,渲染节日气氛。6.颜色模块颜色识别传感器,千里马识别黄色红色等颜色。
7.控制模块通过Radio无线通信,A端掌控板控制B端千里马。
8.声音模块内置音频功放及小喇叭,3.5mm音频接口,播放动听音乐。

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



2.创建一个N+的目录文件名:N+.zip
(1).N+文件解压缩
(2).将整个文件夹复制到mPythonX安装目录下 plugins 目录
(3).打开 mPythonX,左侧有扩展选项,找到”N+”


3.编写程序(1).控制A端掌控板

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



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代码:


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 + (t-t0)*(_rgb-_rgb))*_bright)>>8
      g = round((_rgb + (t-t0)*(_rgb-_rgb))*_bright)>>8
      b = round((_rgb + (t-t0)*(_rgb-_rgb))*_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)五、视频回放:
https://v.youku.com/v_show/id_XNDQ4ODIzODc1Ng==.html?spm=user.playlsit.page.36
六、知识拓展:
   超声波传感器
   声波,人的耳朵能听到的声波频率为20-200002,当声波动频率大于20000H2时,人耳无法听到。超声波因其频率下限大约等于人的听觉上限而得名。因此,我们把频率高于2000的声波称为“超声波”,超声波传感器是将超声波信号转换成电信号的传感器,有两个探头,一个发射超声波,另一个接收。有效测距面围为2--400CM,2CM以内为盲区。
感谢各位技术老师大力支持,谢谢你们,本产品来源:N+


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

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

很完整,把一个团队活全包了,很牛。能合伙做一个项目吗?一种在关键时刻可救人一命的可穿戴臂环式水上智能自救机器人(可提供项目方案、CAD模型、电路图、编程等资料)。

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

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

{:5_144:}
页: [1]
查看完整版本: 【mPythonX】N+千里马智能机器人——无线控制