简介

墨星stm32-micropython

 

本文来分享一下墨星stm32的MicroPython的上手使用。包括安装驱动,安装软件,使用io引脚,使用电池,使用文件系统,SD卡。

墨星STM32开发板的核心是STM32f405,拥有超多的IO口,强大的性能。

墨星STM32是墨星系列的主控板,所以你可以使用墨星系列的多款配件。

  • STM32F405RG微控制器
  • 168 MHz Cortex M4 CPU,具有硬件浮点运算
  • 1024K Flask 和192K RAM
  • Micro USB连接器,用于供电和REPL
  • Micro SD卡插槽,支持最高32G SD卡
  • 可以直接用USB给锂电池充电
  • 具有可选电池备份的实时时钟
  • 30个完全可用的引脚
  • 3个12位ADC,可用在16个引脚
  • 2个DAC,(A1和A2引脚)
  • 1个复位按键
  • 3.3V LDO稳压器,能够提供高达300mA的电流,输入电压范围为3.6V至7V的
  • DFU引导加载器在ROM中,便于升级固件

Windows安装驱动

一般来说,插上USB,电脑就会自动安装驱动,但是每个电脑的情况都不一样,有时候会有些意外。

将OpenMV插到电脑。 正常情况下,会自动安装驱动,一切不需要手动安装。在设备管理器中会看到:

但是可能在一些电脑,驱动不会自动安装。 这时在设备管理器中会出现一个叹号,表示没有正常安装驱动。

下载这个文件:http://micropython.org/resources/fresh-pyboard/pybcdc.inf

 

 

 

 

如果安装完成

  • windows:设备管理器会出现
  • MacOS:终端输入 ls /dev/tty.* 会出现/dev/tty.usbmodemxxxx这个设备。

安装软件

你可以使用任何喜欢的终端软件。

windows下推荐putty,MacOS下推荐picocom,波特率为115200。

超级推荐:PyCharm开发MicroPython

MicroPython教程2-PyCharm+micropython配置

picocom命令:sudo picocom /dev/tty.usbmodemxxxx -b 115200 (此处usbmodemxxxx要填入你在命令行下看到的,比如usbmodem1462,不能直接写入usbmodemxxxx)

即可进入MicroPython的REPL。

Pinout

STM32的一大优点是它拥有非常多GPIO。将不必操纵或复用您的IO引脚!有几件事值得注意,所以请仔细阅读引脚说明

微控制器的通用I / O引脚。所有的逻辑是3.3V

STM32有很多的GPIO可以连接LED,按键,开关,传感器,下面是我们推荐的引脚使用方法。所有的引脚(除了已经占用的引脚),可以接任意电平,都不会影响启动。

32个GPIO:

  • P0~P26
  • A1~A4(A0用于检测电池电压)

已经占用的引脚

  • SD SD卡的检测引脚
  • A0 ADC 用于检测锂电池电压

电源引脚

  • GND – 地
  • BAT – 这是用于锂电池的JST插孔的正极
  • USB – micro USB插孔的正极
  • 3V – 这是3.3V稳压器的输出。该稳压器可以提供300mA的峰值。如果你需要大量的功耗用于LED,电动机等。使用USBBAT引脚,并连接一个额外的稳压器

试一试:

from pyb import Pin

p4 = Pin('P4', Pin.OUT_PP)#创建一个p4引脚,输出模式,标号是4

p4.value(1)#引脚置高

p4.value(0)#引脚置低

p5 = Pin('P5',Pin.IN)#创建一个p5引脚,输入模式,标号是5

print(p5.value())#获取p5引脚的电平

stm32有非常多的硬件功能,比如I2C,SPI,ADC,PWM,UART等,可以在这里找到代码:

https://docs.singtown.com/micropython/zh/latest/pyboard/pyboard/quickref.html

 

供电管理

我们希望墨星开发板的供电非常方便,所以我们内置了锂电池充电芯片,当你插入USB和锂电池的时候,USB会最高400ma的电流给锂电池自动充电。

JST座子旁有一个LED,当充电的时候亮,当充电结束时会灭。

如果你使用的是电池,那么你很可能想知道电压是多少!这样你就可以知道电池何时需要充电。锂电池在4.2V时“最大输出”,在电池寿命的大部分时间内保持在3.7V左右,然后在保护电路切断之前缓慢下降到3.2V左右。通过测量电压,您可以快速判断您何时低于3.7V

由于STM32具有大量的ADC引脚,因此我们’牺牲’了一个引脚用于锂电池监控。您可以读取A0的1/4.3电池电压  。不要忘记读取的电压*4.3,因为有一个分压器。

一个很实用的脚本,可以用来测量电池的电压,ESP32的ADC误差很大:

from pyb import Pin, ADC

bat = ADC(Pin('A0'))

print(bat.read()*0.00137,'V')

文件系统

micropython内置了文件系统的功能非常好用。

读取当前文件列表:

>>>import os

>>>os.listdir()

['boot.py', 'a.txt']

写文件:

with open('a.txt','wt') as f:

    f.write('hello world')

读文件:

with open('a.txt','rt') as f:

    print(f.read())

USB大容量设备

当插入USB后,电脑上会出现一个大容量设备,也就是通常的U盘,这个U盘里就是stm32的文件系统的内容。

脱机运行

参考资料:https://docs.singtown.com/micropython/zh/latest/pyboard/pyboard/general.html#sd

当上电后,会先执行boot.py,因为boot.py的内容就是会执行main.py,所以,我们只需要更改main.py就可以让程序脱机运行了。

SD卡

当SD卡插入板子后,上电会自动挂在SD卡,SD卡的文件系统会自动取代内置的flash,电脑上会直接出现SD卡的内容。

这时候,上电就会自动运行SD卡中的main.py。非常方便。

如果你并不想上电从SD卡启动,那么在Flash的根目录,加入一个 /flash/SKIPSD 的空文件,那么就会忽略SD卡。

更多资料

micropython的资料非常多,我们也会分享非常多的资料和项目。