69浏览
查看: 69|回复: 1

【行空板】物联网“行空车”

[复制链接]
本帖最后由 云天 于 2022-5-12 22:50 编辑

ThuMay-202205125581..png

【行空板“行动”起来】

在Python教学过程中,从初级时在屏幕上画各种图形,中级控制LED灯、按键、温湿度等各种传感器,高级我个人认为要让实物动起来,如控制舵机、风扇等一直到小车。再加上摄像头,利用AI控制。

行空板是一款专为Python学习和使用设计的新一代国产开源硬件,采用单板计算机架构,集成LCD彩屏、WiFi蓝牙、多种常用传感器和丰富的拓展接口。同时,其自带Linux操作系统和Python环境,还预装了常用的Python库,让广大师生只需两步就能进行Python教学。

ThuMay-202205124418..png

【硬件准备】

1、micro:bit掌控I/O扩展板

金手指:引脚编号兼容micro:bit, 19路独立I/O(支持1路I2C、1路UART、2路SPI、6路12位ADC、5路12位PWM)
ThuMay-202205123587..png

2、电机驱动

TB6612FNG微型双路直流电机驱动模块

ThuMay-202205129334..png

3、供电降压模块

给行空板稳定5V供电。

ThuMay-202205125989..png

DC-DC降压模块6~14V转5V8A 模块输出5V/8A,这是一款40W大功率DC-DC降压型电源模块,电压输入范围是6-14V,最大输出5V/8A,大电流输出,支持所有5V主控板供电,转换效率极高。模块体型小巧,散热极强,可作为贴片元件模组焊接到PCB板上使用。

【硬件组装】
ThuMay-202205121694..png

【程序编写】

1、连接物联网siot
利用Mind+图形模块,获取Python代码。
ThuMay-202205121749..png


  1. #  -*- coding: UTF-8 -*-

  2. # MindPlus
  3. # Python
  4. import siot


  5. siot.init(client_id="siot_120",server="192.168.137.4",port=1883,user="siot",password="dfrobot")
  6. siot.connect()
  7. siot.loop()
  8. siot.getsubscribe(topic="topic")
  9. siot.publish(topic="car/control", data="hello")

  10. while True:
  11.   pass

复制代码
发布主题是为了在Siot新建项目“car”、设备“control”,主题为:"car/control"

2、订阅主题
ThuMay-202205123521..png

自动生成代码中应改为: if (msg.payload.decode("utf-8")  == 'G'):


  1. import siot

  2. # 事件回调函数
  3. def on_message_callback(client, userdata, msg):
  4.    if (msg.payload.decode("utf-8")  == 'G'):
  5.     pass


  6. siot.init(client_id="siot_370",server="192.168.137.4",port=1883,user="siot",password="dfrobot")
  7. siot.connect()
  8. siot.loop()
  9. siot.set_callback(on_message_callback)
  10. siot.getsubscribe(topic="car/control")

  11. while True:
  12.   pass
复制代码
ThuMay-202205128848..png

3、测试控制电机

  1. #  -*- coding: UTF-8 -*-

  2. # MindPlus
  3. # Python
  4. from pinpong.extension.unihiker import *
  5. from pinpong.board import Board,Pin
  6. import time
  7. from unihiker import GUI
  8. u_gui=GUI()
  9. Board().begin()
  10. p_p8_out=Pin(Pin.P8, Pin.OUT)
  11. p_p9_out=Pin(Pin.P9, Pin.OUT)
  12. p_p0_pwm=Pin(Pin.P0, Pin.PWM)
  13. p_p2_pwm=Pin(Pin.P2, Pin.PWM)
  14. xianshi=u_gui.draw_text(text="开始",x=50,y=100,font_size=50, color="#0000FF")
  15. while True:

  16.   p_p8_out.write_digital(1)
  17.   p_p0_pwm.write_analog(200) #PWM输出
  18.   p_p9_out.write_digital(1)
  19.   p_p2_pwm.write_analog(200) #PWM输出
  20.   xianshi.config(text="前进")
  21.   time.sleep(5)

  22.   p_p8_out.write_digital(0)
  23.   p_p0_pwm.write_analog(200) #PWM输出
  24.   p_p9_out.write_digital(0)
  25.   p_p2_pwm.write_analog(200) #PWM输出
  26.   xianshi.config(text="后退")
  27.   time.sleep(5)

复制代码
4、测试电机视频


【完整程序】
ThuMay-202205124652..png

电机驱动板DIR1接P8,PWM1接P0,驱动右电机;电机驱动板DIR2接P9,PWM2接P2,驱动左电机;接收物联网命令,“G”前进、“S”停止、“B”后退、“L”向左、“R”向右。

  1. import siot
  2. from pinpong.extension.unihiker import *
  3. from pinpong.board import Board,Pin
  4. import time
  5. from unihiker import GUI
  6. u_gui=GUI()
  7. xianshi=u_gui.draw_text(text="开始",x=50,y=100,font_size=50, color="#0000FF")
  8. # 事件回调函数
  9. def on_message_callback(client, userdata, msg):
  10.   
  11.   if (msg.payload.decode("utf-8")  == 'G'):
  12.       p_p8_out.write_digital(1)
  13.       p_p0_pwm.write_analog(500) #PWM输出
  14.       p_p9_out.write_digital(1)
  15.       p_p2_pwm.write_analog(500) #PWM输出
  16.       xianshi.config(text="前进")
  17.   if (msg.payload.decode("utf-8")== 'S'):
  18.       p_p8_out.write_digital(1)
  19.       p_p0_pwm.write_analog(0) #PWM输出
  20.       p_p9_out.write_digital(1)
  21.       p_p2_pwm.write_analog(0) #PWM输出
  22.       xianshi.config(text="停止")   
  23.       
  24.   if (msg.payload.decode("utf-8") == 'B'):
  25.       p_p8_out.write_digital(0)
  26.       p_p0_pwm.write_analog(200) #PWM输出
  27.       p_p9_out.write_digital(0)
  28.       p_p2_pwm.write_analog(200) #PWM输出
  29.       xianshi.config(text="后退")  
  30.       
  31.   if (msg.payload.decode("utf-8") == 'L'):
  32.       p_p8_out.write_digital(1)
  33.       p_p0_pwm.write_analog(500) #PWM输出
  34.       p_p9_out.write_digital(0)
  35.       p_p2_pwm.write_analog(0) #PWM输出
  36.       xianshi.config(text="向左")  
  37.       
  38.   if (msg.payload.decode("utf-8") == 'R'):
  39.       p_p8_out.write_digital(0)
  40.       p_p0_pwm.write_analog(0) #PWM输出
  41.       p_p9_out.write_digital(1)
  42.       p_p2_pwm.write_analog(500) #PWM输出
  43.       xianshi.config(text="向右")
  44.       

  45. siot.init(client_id="siot_192",server="192.168.137.4",port=1883,user="siot",password="dfrobot")
  46. siot.connect()
  47. siot.loop()
  48. siot.set_callback(on_message_callback)
  49. siot.getsubscribe(topic="car/control")
  50. Board().begin()
  51. p_p8_out=Pin(Pin.P8, Pin.OUT)
  52. p_p9_out=Pin(Pin.P9, Pin.OUT)
  53. p_p0_pwm=Pin(Pin.P0, Pin.PWM)
  54. p_p2_pwm=Pin(Pin.P2, Pin.PWM)
  55. while True:
  56.     pass
复制代码

【演示视频】




rzegkly  版主

发表于 4 天前

行空板小车漂亮 ,动手造一个
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail