机器人制作开源项目 | 滑板助力器项目

原创 机器谱 2023-08-23 22:20
我们可以用一块废滑板做些什么

如今,越来越多的人选择电动滑板作为代步工具或娱乐方式,市场上也涌现出越来越多的电动滑板产品。

应用项目-【A004】滑板助力器项目-0.1版-图1-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

应用项目-【A004】滑板助力器项目-0.1版-图2-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

图片来源:https://www.backfireboards.com/products/backfire-zealot-x-belt-drive-electric-skateboard

应用项目-【A004】滑板助力器项目-0.1版-图3-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

图片来源:https://boostedusa.com/collections/evolve-skateboards

那么,这是不是就意味着传统的"原始"滑板会被冷落呢?

应用项目-【A004】滑板助力器项目-0.1版-图4-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用


我们团队里有几个滑板爱好者,他们认为可以发明一种滑板助力器,让原始滑板焕发新生命,摆脱对人体能量的依赖。安装滑板助力器之后,我们的原始滑板就可以得到电动助力,延长滑行距离,提高速度,并且不再依赖个人体力续航。同时也要保留传统滑板的操作方式,尽量不改变滑板玩家的操作习惯(比如上下板的动作),这样既能享受电动滑板的便利和效率,又能保留一些“原始情结”。

应用项目-【A004】滑板助力器项目-0.1版-图5-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

既然要做电动的助力器,那么选择一个合适的电机是少不了的。经过对比,我们选择了robodyno一体化可编程电机Pro-P12型。该电机采用驱控一体设计,全钢齿轮组1:12.45行星减速器,14位绝对位置磁编码器,IIC总线接口,额定功率35W,最高转速310rpm,堵转扭矩2.79N·m。借助一块小小的通信模块与电脑连接后,即可使用python语言直接编程,非常适合开发。

应用项目-【A004】滑板助力器项目-0.1版-图6-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

曾经用于开发机械臂、机器狗、智能车等开发项目。

应用项目-【A004】滑板助力器项目-0.1版-图7-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

电机选定后,接下来的关键就是轮子,我们从网上挑选了一款搅拌机用的摩擦轮,改造后便可作为助力器的轮子。

应用项目-【A004】滑板助力器项目-0.1版-图8-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

接下来准备好全套零部件及装配工具。

应用项目-【A004】滑板助力器项目-0.1版-图9-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

去掉摩擦轮原先的轮毂并安装上Robodyno Pro-P12电机配套的轮毂零件,以及3D打印的轮毂外圈,轮子部分就完成了。

应用项目-【A004】滑板助力器项目-0.1版-图10-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

然后给电机装上轮架侧板,再和轮子装配在一起。

应用项目-【A004】滑板助力器项目-0.1版-图11-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

应用项目-【A004】滑板助力器项目-0.1版-图11-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

将轴承、轮架顶板、轮架外板装上(在上图中,轮架顶板和轮架外板已经装成了L型,即图中右侧第一个零件),助力轮便装配完成了。

应用项目-【A004】滑板助力器项目-0.1版-图12-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

最后,在滑板板尾和合适位置上打孔,并将助力轮安装在滑板上面。

应用项目-【A004】滑板助力器项目-0.1版-图13-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

装配完成。

应用项目-【A004】滑板助力器项目-0.1版-图14-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

下面是我们选择的控制器,采用ESP32-Pico-D4芯片,安装了一块OLED屏幕用于显示操作界面以及一个旋钮按键用于操作。这个控制器里已经集成一个电机通信模块,因此不需要额外安装电机通信模块了。

应用项目-【A004】滑板助力器项目-0.1版-图15-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

我们编写了一套固件,让它可以用于控制滑板。

应用项目-【A004】滑板助力器项目-0.1版-图16-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

通过拨动旋钮,可以控制助力轮的输出力矩,数字越大,力矩越大,旋转速度也就越快使用者可以根据自身体重和期望的起步速度来选择合适的数值。

应用项目-【A004】滑板助力器项目-0.1版-图17-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

点击下方的正方形按钮,就可以控制助力轮启停。

应用项目-【A004】滑板助力器项目-0.1版-图18-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

然后接上11.1V动力电池,并电池和控制器用轧带固定在滑板上。

应用项目-【A004】滑板助力器项目-0.1版-图19-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

我们最期待的功能是要让滑板像普通滑板一样,蹬一脚就能走,用脚摩擦地面就能停。换句话说,就是开机后,电机在未受力的情况下静止,受到一定的推力后开始转动,受到一定的阻力后停止转动。Robodyno Pro电机使用python即可编程,非常方便。

应用项目-【A004】滑板助力器项目-0.1版-图20-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

程序源代码如下:

main.py

Python
import lvgl as lv
from ili9XXX import ili9488, LANDSCAPE
SCR_WIDTH = 480
SCR_HEIGHT = 320
disp = ili9488(mosi=4, miso=18, clk=5, cs=14, dc=13, rst=12, \
               power=-1, backlight=15, backlight_on=1, factor=32, \
               width=SCR_WIDTH, height=SCR_HEIGHT, rot=LANDSCAPE)
from ft6x36 import ft6x36
touch_rst = Pin(2, Pin.OUT)
touch_rst.on()
touch = ft6x36(sda=27, scl=26, width=SCR_HEIGHT, height=SCR_WIDTH, inv_x=True, swap_xy=True)

style = lv.style_t()
style.init()
style.set_radius(0)
style.set_bg_color(lv.color_hex(0x2E3234))
style.set_text_color(lv.color_hex(0xC2C1C1))
style.set_border_width(0)

screen = lv.scr_act()
screen.add_style(style, 0)

from motor_controller import MotorController
           
controller = MotorController(screen)

import time
while True:
    controller.update()
    time.sleep(0.01)
boot.py


Python
# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
#import webrepl
#webrepl.start()
from machine import Pin
import time
power = Pin(32, Pin.OUT)
_roller_btn = Pin(36, Pin.IN)
_enc_a = Pin(37, Pin.IN)
_enc_b = Pin(38, Pin.IN)
_a0 = 1
_b0 = 1
_ab0 = 1
enc_pos = 0
def on_enc_change(pin):
    global _a0, _b0, _ab0, enc_pos
    a = _enc_a.value()
    b = _enc_b.value()
    if not a == _a0:
        _a0 = a
        if not b == _b0:
            _b0 = b
            enc_pos += 1 if a == b else -1
            if not (a == b) == _ab0:
                enc_pos += 1 if a == b else -1
            _ab0 = (a == b)
           
_enc_a.irq(handler = on_enc_change)
time.sleep(2)
power.on()
encoder.py


Python
from machine import Pin
class Encoder:
    def __init__(self):
        self.btn_pin = Pin(36, Pin.IN)
        self.enc_a = Pin(37, Pin.IN)
        self.enc_b = Pin(38, Pin.IN)
        self.a0 = 1
        self.b0 = 1
        self.ab0 = 1
        self.pos = 0
        self.enc_a.irq(handler = self.on_change)
   
    def on_change(self, pin):
        a = self.enc_a.value()
        b = self.enc_b.value()
        if not a == self.a0:
            self.a0 = a
            if not b == self.b0:
                self.b0 = b
                self.pos += 1 if a == b else -1
                if not (a == b) == self.ab0:
                    self.pos += 1 if a == b else -1
                self.ab0 = (a == b) 
motor_controller.py


Python
from encoder import Encoder
import lvgl as lv
from machine import Pin
import time
from robodyno import *

class MotorController:
    def __init__(self, container):
        self.running_flag = False
        self.encoder = Encoder()
        self.container = container
        self.power = Pin(32, Pin.OUT)
        self.can = CanBus()
        self.motor = Motor(self.can, 0x10, ROBODYNO_PRO_12)
        self.motor.torque_mode()
        self.max_torque = 3
        self.draw_power_btn()
        self.draw_bar()
        self.draw_btn()
   
    def draw_bar(self):
        self.label = lv.label(self.container)
        self.label.set_text(str(self.encoder.pos))
        self.label.set_style_text_font(lv.font_montserrat_24, 0)
        self.label.align(lv.ALIGN.TOP_MID, 0, 50)

        self.bar = lv.bar(self.container)
        self.bar.set_size(200, 20)
        self.bar.align(lv.ALIGN.TOP_MID, 0, 90)
        self.bar.set_value(self.encoder.pos, lv.ANIM.OFF)
   
    def draw_btn(self):
        self.btn = lv.btn(self.container)
        self.btn.align(lv.ALIGN.TOP_MID, 0, 150)
        self.btn.set_size(100,100)
        self.btn.set_style_bg_color(lv.color_hex(0x4EB181), 0)
        self.btn_label = lv.label(self.btn)
        self.btn_label.set_style_text_font(lv.font_montserrat_24, 0)
        self.btn_label.set_text(lv.SYMBOL.PLAY)
        self.btn_label.center()
        self.btn.add_event_cb(self.on_btn_click, lv.EVENT.CLICKED, None)
   
    def on_btn_click(self, e):
        btn = e.get_target()
        label = btn.get_child(0)
        if self.running_flag:
            self.motor.set_torque(0)
            self.motor.disable()
            self.running_flag = False
            btn.set_style_bg_color(lv.color_hex(0x4EB181), 0)
            label.set_text(lv.SYMBOL.PLAY)
        else:
            self.motor.set_torque(0)
            self.motor.enable()
            self.running_flag = True
            btn.set_style_bg_color(lv.color_hex(0xF44336), 0)
            label.set_text(lv.SYMBOL.STOP)
   
    def draw_power_btn(self):
        self.power_btn = lv.btn(self.container)
        self.power_btn.align(lv.ALIGN.TOP_RIGHT, -40, 40)
        self.power_btn.set_size(40,40)
        self.power_btn.set_style_bg_color(lv.color_hex(0xF44336), 0)
        self.power_btn_label = lv.label(self.power_btn)
        self.power_btn_label.set_style_text_font(lv.font_montserrat_24, 0)
        self.power_btn_label.set_text(lv.SYMBOL.POWER)
        self.power_btn_label.center()
        self.power_btn.add_event_cb(self.on_power_off, lv.EVENT.CLICKED, None)
   
    def on_power_off(self, e):
        self.power.off()
   
    def update(self):
        if self.encoder.pos > 100:
            self.encoder.pos = 100
        if self.encoder.pos < 0: self.encoder.pos = 0 self.bar.set_value(self.encoder.pos, lv.ANIM.OFF) self.label.set_text(str(self.encoder.pos)) if self.running_flag: b = 0.002 + self.encoder.pos / 100 * 0.3 vel = self.motor.get_vel() if vel is not None: vel = -vel torque = 0 if vel > 3:
                    torque = max(-0.107 - b * vel, -self.max_torque)
                elif vel < -3: torque = min(0.1 - b * vel, self.max_torque) self.motor.set_torque(torque)

以上4个程序文件拷贝到控制器的内存中,即可被固件调用。

接下来测试一下起步


应用项目-【A004】滑板助力器项目-0.1版-图21-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用


然后再试一下转弯,表现效果还不错。

应用项目-【A004】滑板助力器项目-0.1版-图22-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

最后试一下刹车

应用项目-【A004】滑板助力器项目-0.1版-图23-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

这些稳如狗的表现自然是通过一次又一次的调试和数不清的翻车换来的。

应用项目-【A004】滑板助力器项目-0.1版-图25-一体化关节,电动滑板、滑板改造,DIY,机器人制作,机器人技术应用.gif应用项目-【A004】滑板助力器项目-0.1版-图26-一体化关节,电动滑板、滑板改造,DIY,机器人制作,机器人技术应用.gif

应用项目-【A004】滑板助力器项目-0.1版-图27-一体化关节,电动滑板、滑板改造,DIY,机器人制作,机器人技术应用.gif应用项目-【A004】滑板助力器项目-0.1版-图28-一体化关节,电动滑板、滑板改造,DIY,机器人制作,机器人技术应用.gif

现在,我们的报废滑板又获得赛博新生啦~(可以踩着它出去浪了)

应用项目-【A004】滑板助力器项目-0.1版-图25-一体化关节,电动滑板、DIY,机器人制作,机器人技术应用

本项目已经开源,资料可在下方链接处下载。如果您对本项目有任何建议,欢迎留言

附:Robodyno Pro一体化可编程电机购买链接

附:主要零件清单



附:开源资料



更多资料详见 A004】滑板助力器项目

机器谱 机器人开源项目方案分享~
评论
  • 国产光耦合器正以其创新性和多样性引领行业发展。凭借强大的研发能力,国内制造商推出了适应汽车、电信等领域独特需求的专业化光耦合器,为各行业的技术进步提供了重要支持。本文将重点探讨国产光耦合器的技术创新与产品多样性,以及它们在推动产业升级中的重要作用。国产光耦合器创新的作用满足现代需求的创新模式新设计正在满足不断变化的市场需求。例如,高速光耦合器满足了电信和数据处理系统中快速信号传输的需求。同时,栅极驱动光耦合器支持电动汽车(EV)和工业电机驱动器等大功率应用中的精确高效控制。先进材料和设计将碳化硅
    克里雅半导体科技 2024-11-29 16:18 157浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 59浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 57浏览
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 86浏览
  • By Toradex胡珊逢简介嵌入式领域的部分应用对安全、可靠、实时性有切实的需求,在诸多实现该需求的方案中,QNX 是经行业验证的选择。在 QNX SDP 8.0 上 BlackBerry 推出了 QNX Everywhere 项目,个人用户可以出于非商业目的免费使用 QNX 操作系统。得益于 Toradex 和 QNX 的良好合作伙伴关系,用户能够在 Apalis iMX8QM 和 Verdin iMX8MP 模块上轻松测试和评估 QNX 8 系统。下面将基于 Apalis iMX8QM 介
    hai.qin_651820742 2024-11-29 15:29 150浏览
  • 国产光耦合器因其在电子系统中的重要作用而受到认可,可提供可靠的电气隔离并保护敏感电路免受高压干扰。然而,随着行业向5G和高频数据传输等高速应用迈进,对其性能和寿命的担忧已成为焦点。本文深入探讨了国产光耦合器在高频环境中面临的挑战,并探索了克服这些限制的创新方法。高频性能:一个持续关注的问题信号传输中的挑战国产光耦合器传统上利用LED和光电晶体管进行信号隔离。虽然这些组件对于标准应用有效,但在高频下面临挑战。随着工作频率的增加,信号延迟和数据保真度降低很常见,限制了它们在电信和高速计算等领域的有效
    腾恩科技-彭工 2024-11-29 16:11 106浏览
  • 学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&
    youyeye 2024-11-29 14:30 118浏览
  • 艾迈斯欧司朗全新“样片申请”小程序,逾160种LED、传感器、多芯片组合等产品样片一触即达。轻松3步完成申请,境内免费包邮到家!本期热荐性能显著提升的OSLON® Optimal,GF CSSRML.24ams OSRAM 基于最新芯片技术推出全新LED产品OSLON® Optimal系列,实现了显著的性能升级。该系列提供五种不同颜色的光源选项,包括Hyper Red(660 nm,PDN)、Red(640 nm)、Deep Blue(450 nm,PDN)、Far Red(730 nm)及Ho
    艾迈斯欧司朗 2024-11-29 16:55 155浏览
  • 学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&
    youyeye 2024-11-30 14:30 63浏览
  • 光耦合器作为关键技术组件,在确保安全性、可靠性和效率方面发挥着不可或缺的作用。无论是混合动力和电动汽车(HEV),还是军事和航空航天系统,它们都以卓越的性能支持高要求的应用环境,成为现代复杂系统中的隐形功臣。在迈向更环保技术和先进系统的过程中,光耦合器的重要性愈加凸显。1.混合动力和电动汽车中的光耦合器电池管理:保护动力源在电动汽车中,电池管理系统(BMS)是最佳充电、放电和性能监控背后的大脑。光耦合器在这里充当守门人,将高压电池组与敏感的低压电路隔离开来。这不仅可以防止潜在的损坏,还可以提高乘
    腾恩科技-彭工 2024-11-29 16:12 117浏览
  • 在现代科技浪潮中,精准定位技术已成为推动众多关键领域前进的核心力量。虹科PCAN-GPS FD 作为一款多功能可编程传感器模块,专为精确捕捉位置和方向而设计。该模块集成了先进的卫星接收器、磁场传感器、加速计和陀螺仪,能够通过 CAN/CAN FD 总线实时传输采样数据,并具备内部存储卡记录功能。本篇文章带你深入虹科PCAN-GPS FD的技术亮点、多场景应用实例,并展示其如何与PCAN-Explorer6软件结合,实现数据解析与可视化。虹科PCAN-GPS FD虹科PCAN-GPS FD的数据处
    虹科汽车智能互联 2024-11-29 14:35 149浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 54浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 70浏览
  • 在电子技术快速发展的今天,KLV15002光耦固态继电器以高性能和强可靠性完美解决行业需求。该光继电器旨在提供无与伦比的电气隔离和无缝切换,是现代系统的终极选择。无论是在电信、工业自动化还是测试环境中,KLV15002光耦合器固态继电器都完美融合了效率和耐用性,可满足当今苛刻的应用需求。为什么选择KLV15002光耦合器固态继电器?不妥协的电压隔离从本质上讲,KLV15002优先考虑安全性。输入到输出隔离达到3750Vrms(后缀为V的型号为5000Vrms),确保即使在高压情况下,敏感的低功耗
    克里雅半导体科技 2024-11-29 16:15 119浏览
  • 随着航空航天技术的迅猛发展,航空电子网络面临着诸多挑战,如多网络并行传输、高带宽需求以及保障数据传输的确定性等。为应对这些挑战,航空电子网络急需一个通用的网络架构,满足布线简单、供应商多、组网成本相对较低等要求。而以太网技术,特别是TSN(时间敏感网络)的出现,为航空电子网络带来了新的解决方案。本文将重点介绍TSN流识别技术在航空电子网络中的应用,以及如何通过适应航空电子网络的TSN流识别技术实现高效的航空电子网络传输。一、航空电子网络面临的挑战航空航天业专用协议包括AFDX、ARINC等,这些
    虹科工业智能互联 2024-11-29 14:18 100浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦