精华内容
参与话题
问答
  • 那么在micropython中,又该如何保护源程序呢? 贴心的micropython创始人也提供了类似的功能,可以将.py文件编译成.mpy文件。接下来,介绍一下具体的实现步骤。(本文主要以Linux Ubuntu系统为例)搭建micropython...

    接触过Python语言的人都知道,Python可以编译成.pyc文件,它是一种二进制文件,可以提高程序的加载速度,同时 也是一种保护源代码的有效方法。那么在micropython中,又该如何保护源程序呢? 贴心的micropython创始人也提供了类似的功能,可以将.py文件编译成.mpy文件。接下来,介绍一下具体的实现步骤。(本文主要以Linux Ubuntu系统为例)

    搭建micropython编译环境

    1.安装arm-none-eabi-gcc交叉编译工具和gcc编译器。

    2.下载micropython源码包到本地,我下载到了home目录下。

    生成mpy文件

    1.切换到/home/micropython/mpy-cross目录执行make,编译生成mpy-cross工具。图片描述

    2.在mpy-cross目录新建一下test.py文件,输入点亮LED4,用于测试。

    import pyb

    图片描述
    pyb.LED(4).on()

    3.执行编译mpy文件的命令。

    其他相关功能可查看同目录下的README.md文件。

    4.命令执行成功后,你就能发现同目录下出现了一个test.mpy文件。

    5.将test.mpy文件拷贝放到TPYBoard v10x的TPFLASH中,直接在main.py中import即可。

    import test

    6.重置TPYBoard使其重新运行程序,大家就会看到LED4亮起来了。

    注意: 如果运行时出现“ValueError: invalid .mpy file”错误的话,需要更新一下TPYboard的micropython固件(最新版本是1.9.3)。

    micropython官方下载地址:http://micropython.org/download

    DFU-USB接口烧写固件参考:http://tpyboard.com/support/reference11/302.html

    ST-LINK烧写固件参考:http://tpyboard.com/support/reference11/239.html

    虽然是进行了加密编译成了mpy文件,但是还有一些缺陷,毕竟mpy文件仍然是存放在TPFLASH或TF卡中,很容易被别人拷贝,也很有可能会被反编译出来。 是否可以直接将Python脚本文件直接编译在固件中呢?答案显然是可以!想知道的话,

    下一篇我分享下《TPYBoard Micropython 添加自定义类库》的教程。

    展开全文
  • 0x00前言 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串行通信协议。CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探测和管理模块。 本篇文章以TPYBoardv102开发板为...

      0x00前言

      CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串行通信协议。CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探测和管理模块。

      本篇文章以TPYBoardv102开发板为例,为大家介绍一下如何使用STM32自带的CAN控制器,来实现两个开发板之间的CAN通讯。

      0x01实验器材

      TPYBoardv102开发板2块

      杜邦线若干

      CAN总线收发器模块VP230(SN65HVD230)2个

      0x02前期准备

      1. TPYBoardv102的CAN控制器。

      v102上有两个CAN控制器,分别为CAN1和CAN2,对应引脚如下:

    CAN1(RX) Y3
    CAN1(TX) Y4
    CAN2(RX) Y5
    CAN2(TX) Y6

      v102上虽然已经有两个CAN控制器,但是想要完成两个板子之间的CAN通讯,还需要搭配CAN收发器模块。CAN收发器就是CAN控制器和物理总线之间的接口,主要作用就是将CAN控制器的逻辑电平转换为CAN总线的差分电平,在两条有差分电压的总线电缆上传输数据。

      2. 去tpyboard的官网看看CAN类库的介绍。

      http://docs.tpyboard.com/zh/latest/library/pyb.CAN/?highlight=pyb.CAN

      看一下官方的实例代码,这些基本上够用了。

    from pyb import CAN
    can = CAN(1, CAN.LOOPBACK)
    can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))  # set a filter to receive messages with id=123, 124, 125 and 126
    can.send('message!', 123)   # send a message with id 123
    can.recv(0)                 # receive message on FIFO 0
    

      0x03硬件连接

      两个v102我用的都是CAN1。具体连接示意图如下:

    TPYBoard v102 (CAN1) CAN收发器模块
    3.3V VCC
    GND GND
    Y3(RX) RX
    Y4(TX) TX

      两个收发器之间H接H、L接L即可。

      0x04源代码

      第一个板子等待接收,当接收到数据再发送。

    import pyb
    from pyb import CAN
    
    can = CAN(1, CAN.NORMAL)
    can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))  # set a filter to receive messages with id=123, 124, 125 and 126
    while True:
        if can.any(0):
            data=can.recv(0)            # receive message on FIFO 0
            print('DATA:',data)
            can.send(b'message1',222)
    

      第二板子是先发送,然后等待接收。

    # main.py -- put your code here!
    from pyb import CAN
    can = CAN(2, CAN.NORMAL)
    can.setfilter(0, CAN.LIST16, 0, (222,221,231,241))  # set a filter to receive messages with id=123, 124, 125 and 126
    can.send('message!', 123)   # send a message with id 123
    while True:
        if can.any(0):
            data=can.recv(0)            # receive message on FIFO 0
            print('DATA:',data)
    

      0x05效果图

      图片描述

    展开全文
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

        实验目的

        学习在PC机系统中扩展简单I/O 接口的方法。
        进一步学习编制数据输出程序的设计方法。
        学习8*8点阵与TPYBoard的接线方法,点亮点阵。(萝卜学科编程tpyboard。com)

        所需元器件

        8*8 LED点阵屏 1个
        TPYBoard v102板子 1块
        micro USB数据线 1条
        杜邦线 若干
        (萝卜学科编程tpyboard。com)

        点亮8*8 LED点阵

        8*8 LED点阵屏原理图:

        点阵后面有两排针脚,一排以1开头,即1-8针脚,一排以9开头,即9-16针脚,上图中圆圈内的数字即为针脚的对应数字。当ROW 的针脚为高电平,COL的针脚为低电平时候,我们的LED即全部点亮。 为了方便操作行和列,我们可以将ROW的8个引脚接到我们TPYBoard v102的X1-X8,COL的8个引脚接到我们TPYBoard v102的Y1-Y8。这样我们通过控制X引脚和Y引脚的高低电平就可以控制每一个LED的亮与不亮,这样就可以设计想显示的任何字符和图形,快来试试吧。(萝卜学科编程tpyboard。com)

        8*8 LED点阵显示心形

        效果图:

        我们按照上面的步骤接线完毕后,编写main.py文件,下面是显示心形图案的源代码:

    # main.py -- put your code here!
    import  pyb
    from pyb import Pin
    x_PIN = [Pin(i, Pin.OUT_PP) for i in ['X1','X2','X3','X4','X5','X6','X7','X8']]
    y_PIN = [Pin(i, Pin.OUT_PP) for i in ['Y1','Y2','Y3','Y4','Y5','Y6','Y7','Y8']]
    hanzi=['11111111','11011101','10001000','10000000','10000000','11000001','11100011','11110111']
    def displayLED():
            flag=0
            for x_ in range(0,8):
                    for b in range(0,8):
                            print(b)
                            if b!=flag:
                                    x_PIN[b].value(0)
                    li_l = hanzi[x_]
                    y_PIN[0].value(int(li_l[:1]))
                    y_PIN[1].value(int(li_l[1:2]))
                    y_PIN[2].value(int(li_l[2:3]))
                    y_PIN[3].value(int(li_l[3:4]))
                    y_PIN[4].value(int(li_l[4:5]))
                    y_PIN[5].value(int(li_l[5:6]))
                    y_PIN[6].value(int(li_l[6:7]))
                    y_PIN[7].value(int(li_l[7:8]))
                    x_PIN[flag].value(1)
                    flag=flag+1
                    pyb.delay(2)
    while 1:
            displayLED()


     

    转载于:https://my.oschina.net/micropython/blog/2991371

    展开全文
  • 大家应该都看到过机器人的手臂啊腿脚啊什么的一抽一...(萝卜教育学科编程tpyboard。com) 舵机主要有以下3个优点: 一是体积紧凑,便于安装; 二是输出力矩大,稳定性好; 三是控制简单,便于和数字系统接口。 本次...

    大家应该都看到过机器人的手臂啊腿脚啊什么的一抽一抽的在动弹吧...是不是和机械舞一样的有节奏,现在很多机器人模型里面的动力器件都是舵机。

    但是大家一般见到的动力器件都是像步进电机,直流电机这一类的动力器件,应该对舵机比较陌生。(萝卜教育学科编程tpyboard。com)

    舵机主要有以下3个优点:

    一是体积紧凑,便于安装; 二是输出力矩大,稳定性好; 三是控制简单,便于和数字系统接口。

    本次教程中使用的是SG90的舵机,个人感觉性能一般,但是比较稳定和耐用,做DIY实验器材用还是比较不错的。

    舵机的基本介绍

    舵机,又称伺服马达,是一种具有闭环控制系统的机电结构。舵机主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。 其工作原理是由控制器发出PWM(脉冲宽度调制)信号给舵机,经电路板上的IC处理后计算出转动方向,再驱动无核心马达转动, 透过减速齿轮将动力传至摆臂,同时由位置检测器(电位器)返回位置信号,判断是否已经到达设定位置,一般舵机只能旋转180度。(萝卜教育学科编程tpyboard。com)

     


    舵机的接线

    舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同。

    舵机的控制原理

    舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的。

    占空比

    1.指高电平在一个周期之内所占的时间比率。

    2.正脉冲的持续时间与脉冲总周期的比值。例如:正脉冲宽度1μs,信号周期10μs的脉冲序列占空比为0.1。即:脉冲的宽度除以脉冲的周期称为占空比。标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms之间,但是,事实上脉宽可由0.5ms到2.5ms之间,脉宽和舵机的转角0°~180°相对应。(萝卜教育学科编程tpyboard。com)


    Python语言驱动舵机的方法

    其实说了以上这些呢,都是为了给大家介绍利用Python语言来控制舵机的转动角度,和普通单片机一样的,都是需要用不同宽度的脉冲来控制器转动的角度。 说白了,我们需要做的就是使用Python语言来输出不同宽度的脉冲信号,来给到信号线里面去。现在一般的舵机脉宽那都是在0.5ms到2.5ms之间,这就可以计算了。 0.5MS-2.5MS这两毫秒里面可以控制转动到180度,这样算下来,转一度的脉冲时间大约就是2毫秒/180度=0.011毫秒/度,这样依次计算就可以了。剩下的就是写一个脉冲信号了,相信写脉冲信号的程序大家都很熟悉啦。 但是,在舵机里面有一些几点几的毫秒的延时脉冲,这个在Python语言里如果想要利用delay()函数来做延时的话,很难做到每个角度都可以转到,甚至说是很难做到转动到大多数的角度。所以,你需要找到一个比毫秒延时还要精确的延时函数来作为脉冲的计时延时函数。我现在用的是time.sleep(i)这个函数,这个函数里面的i,建议设置在0.0000-0.0035之间。不能说精确的转动到每个角度吧,但是百分之九十的角度都是可以转到。如果想让舵机进行循环摆动,一定要记得加上适当的延时,因为程序可以飞快的跑,但是舵机转动也是需要一点时间的。舵机转动时间肯定要比程序跑一遍的时间要长的多啦。(萝卜教育学科编程tpyboard。com)


    实验目的

    通过加速度传感器的X方向控制舵机的转动,让舵机随TPYBoard 的转动而转动

    实验材料

    TPYBoard v10x 开发板 1块
    SG90舵机 1个
    杜邦线 若干

    实验线路图

    这里电路图很简单,只需要给舵机接上VCC和GNG(这是最基本的,这个开发板上好多电源和地可以用)。 然后把舵机的信号线接到任意一个GPIO口(后面程序里面要在这个GPIO往外输出脉冲的,我用了X1,还有很多其他的GPIO口可以用。)就可以了。 接线原理图:

    import pyb
    import time
    from pyb import Pin
    xlights = (pyb.LED(2), pyb.LED(3))
    ylights = (pyb.LED(1), pyb.LED(4))
    M0 = Pin('X1', Pin.OUT_PP)
    accel = pyb.Accel()
    i=0.0001
    j=0.0000
    while True:
        x = accel.x()
        print("x=")
        print(x)
        Y=x+20
        M0.high()
        time.sleep(i*Y)
        M0.low()
        time.sleep(i*Y)
        pyb.delay(12)
        if x > 0:
            xlights[0].on()
            xlights[1].off()
        elif x < 0:
            xlights[1].on()
            xlights[0].off()
        else:
            xlights[0].off()
            xlights[1].off()

     


    虽然舵机只是能实现转动指定的角度,看起来功能很单一,但是单一的功能结合起来,就能完成很复杂的任务。

    转载于:https://www.cnblogs.com/xxosu/p/10086633.html

    展开全文
  • 智能小车现在差不多是电子竞赛或者DIY中的主流了,寻迹,壁障,遥控什么的,相信大家也都见得很多了,这次就大家探讨一下寻迹小车的制作方法,不同于以往的是这次的程序不用C语言写,而是要使用python语言写。...
  • 实验目的 学习在PC机系统中扩展简单I/O接口的方法。 进一步学习编制数据输出程序的设计方法。 学习蓝牙模块的接线方法及其工作原理。 学习L298N电机驱动板模块的接线方法。 学习蓝牙控制小车的工作原理。...
  • 众所周知,iPhone6/6Plus内置气压传感器,不过大家对于气压传感器还是很陌生。跟字面的意思一样,气压传感器就是用来测量气压的,但测量气压对于普通的手机用户来说又有什么作用呢? 海拔高度测量 对于喜欢登山的人...
  • 1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法。 2.... 3.... 4. 学习LCD5110接线方法 5. 学习TPYboard控制超声波模块测距。(萝卜学科编程教育tpyboard。... 超声波模块一个 TPYBoard板子一块 5110...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

空空如也

1 2 3 4 5 ... 20
收藏数 788
精华内容 315
关键字:

tpyboard