扫码或搜索:进击的Coder
发送
即可立即永久解锁本站全部文章

Hi,大家好。
想必大家平时都在用各种的智能家居,智能硬件相关的东西,比如小米手环,智能音箱,智能插座…
那么,大家知道吗?这些东西都离不开一个东西,那就是处理器。通知这类东西,需要的处理器性能不必太强,如果用电脑或者手机的处理器那不太现实,而且也很大材小用。所以,在这类设备种,少不了的通常就是单片机,而现在大部分使用的是STM32的单片机.
看到单片机,我估计大家就会想到复杂的电路,汇编语言,C/C++语言这些东西
但是今天,我们不用C/C++代码,也不会讲一大堆术语,而是用Python。
没错,就是Python,你可以用Python去控制电路,去让一个LED小灯亮灭,去连接WIFI,去接入你家的网络,如果你有小米的AI音箱这类东西,你可以自己去DIY自己的小玩意,让小爱同学去操控它。这一切都可以不用C/C++,而只用Python,而且不用烧录之类的,把写好的代码就像复制到U盘,直接放在板子里,然后重启板子就可以了,并且不需要很大的板子,而是很小的一小块。
什么是MicroPython
MicroPython是Python3的精简高效的实现,实现了一部分的标准库,比如OS,Socket等等..
也就是说,MicroPython有Python3的解释器,可以跑Python代码,你可以直接用平时常用的Python的IDE.
MicroPython同时是一个开源项目,你可以直接编译源代码,生成固件文件,使用官方的工具将固件烧入到一些原本不能跑Python代码的单片机,这些单片机就可以跑Python3代码了。
MicroPython大致可以烧录这些芯片
- STM32F4:没错,通常家里用的智能硬件也是用的这玩意,其实这玩意运算很强,家里的智能设备很常见其实就是STMF1。
- ESP8266: 是一个自带WIFI功能的开发板,当然,并不是说只有这个才能有WIFI,只要买一个WIFI模块,任何开发板基本都可以连接WIFI,或者蓝牙之类的连接。
- ESP32:比ESP8266 更强,不止性能上,还有功能上也有好多突破。
- NUCLEO-F401RE
- Espruino Pico
通常在市面上流行Pyboard就是STM32F405,还有其他板子,大家不用担心,不要看板子型号不同,其实用法是一样的,不同的是性能,功能的差别,很多功能只要买些模块自己搞一些就补上了。
准备工作
硬件:
- 一块MicroPython的板子,淘宝上直接搜MicroPython开发板,找一个价格在20-50之间的就可以,我建议ESP32或者Pyboard。(我用的Pyboard cn v2,大家随意,只要是MicroPython,除了性能,都一样的流程。)

类似这样的,有插口,有针的,最好联系卖家,让他给你把排针焊好
- 一根可以将开发板和电脑的USB口连接的数据线。
- 两根导线,一个LED小灯
- 一台电脑,系统Mac,Linux,Windows都不影响。
- 5V电源 通常电脑,或者通常手机充电器的充电头都是5V,电源电压大致在3.3~6V之间,不要用高压!!会瞬间烧掉板子。
软件:
- Python3 编辑器或者IDE都可以
- Putty,Xshell 都可以,为了快速上手。
心态:
- 在家在宿舍躺尸不如起来捣鼓一下?
点亮LED灯.
首先要说一下一个板子上通常最基础的东西
- 引脚:就是一个电路板种可以外接的东西,通常是小圆孔或者小长针,通常引脚也叫Pin,以下我要表示第一个引脚,我就说成Pin1

最简单引脚图示
- VCC:在上面这张图中可以找到VCC,Pin 40就是,VCC通常就是电源,单片机最常见的电压就是3.3V或者5V
- GND:在上面这张图中,也可以找到,Pin20。GND表示接地,它不是负极,它就像是零势面。但是你可以先把它当负极用
- P1,P2,P3:可以看到,图中有P1.0,P1.1,P2.0,P3.0……它是八个引脚是一组(主要取决与处理器),而这八个引脚也表示8个位,操作一个引脚就是操作一个位….这里不用太深入,我们是直接就可以用,而不用进行位操作来调用
连接MicroPython开发板
用数据线连接开发板和电脑,然后没问题的情况下会默认出现一个USB闪存驱动器,这就是开发板。这也是为什么说买任何MicroPython开发板都可以,因为所有MicroPython开发板打开都是这样。

MicroPython板内的东西,这里的驱动是可写可读的。如果不用SD卡,通常只有几十KB的大小。
- boot.py:在板子开启的时候会先执行这个里面的内容,主要提供配置。(它也可以让你的开发板成为键盘鼠标)
- main.py:这里放着你的主要程序功能的代码,当然你也可以在驱动里再写几个core,然后用main.py导入。
- pybcdc.inf:Windows驱动,用来配置这个USB内存驱动器。
- README.txt:这里包含着很多十分基本的信息,你懂的。
问题: Windows没识别到USB内存驱动器怎么办?
- 缺少驱动程序,
下载pybcdc.inf文件
下载点这里 - 打开
设备管理器
,找到其他设备
会通常有一个有叹号,找到他。 - 双击它,然后安装驱动程序,驱动选择
pybcdc.inf
使用Putty与板子内的Python进行交互
我使用的是Putty,大家用Xshell等有Serial的工具就可以。
我们点击Open进行连接,如果当连接的时候出现黑屏,就像卡住一样的情况的话,就按下Ctrl+C
试试.
可以看到,MircroPython支持很多的东西,WIFI,舵机(Servo),SD卡,I2C,SPI,UART等总线。
到了这里,我们已经完成了90%。
我们需要输入以下代码让照片中的三个不同颜色的LED灯亮起来.
1 2 3 4 5 6 7 |
>>> from pyb import LED # 从MircoPython自带的pyb库中引出LED方法。 >>> led = LED(1) # 选取第一个LED >>> led.on() # 点亮 >>> led2 = LED(2) # 选取第二个 >>> led2.on() # 点亮 >>> led3 = LED(3) # 选取第三个 >>> led3.on() # 点亮 |
可以看到,成功点亮自带的LED小灯。
当然,你也可以不用解释器,而是直接把代码写入到板子里。
然后保存,重启板子(暴力重插电源,如果板子上有RST按键,按一下),就可以看到板子运行了main.py
中的代码,灯都打开了.
这里要说一下LED()
方法.
LED是MicroPython的pyb库中的一个方法,如果你的板子上自带LED的实验小灯的话,pyb能够识别到你的小灯,而LED()的参数就是小灯的编号,而LED下又有四个方法。
- LED().on():打开小灯
- LED().off():关闭小灯
- LED().toggle():取反状态,比如你的灯是亮的,这时候就给关闭,如果是关闭的,就让它亮。
- LED().intensity():参数是数字,取值在0~255(满),如果没有参数,就返回LED灯的强度。你可以用此函数调整灯的亮度。
控制引脚Pin
刚刚我们尝试打开了LED的小灯。
而我们在刚刚提到了引脚,也就是Pin,现在我们来说以下Pin是什么?
引脚是所谓的O/I,也就是输出(output)输入(input)。
那么输出什么呢?通常情况无非是高低电平,你可以理解成高电压,低电压(相对的高低,比如5V,0V)。
那么输入什么呢?通常情况下也还是高低电平。
就是这样,如果想深入就是数电和模电的相关知识,就是专业知识了。
查看自己的所有的引脚编号,用来选择引脚来控制
我们进入交互,我们之间用以下方法查看

所有引脚映射都在Pin.board下,我们可以使用table让他们出来,也可以使用内置dir()函数进行查看
可以看到,我们刚刚点亮的LED灯的映射也在其中(LED_RED,LED_BLUE…),所以,其实板子中的一切都离不开引脚。现在我们得到了我们所有的引脚,现在我们需要去淘宝店铺要你买的板子的引脚图了,然后再继续接下来的东西。
PyboardCN V2引脚图
现在,我们就要用引脚来做有趣的事情了。
我们用引脚来点亮外接的LED灯,先接线。

前面说过,引脚就是O/I。现在我们要输出一个高电平,电压就在3.3V-5V之间,还需要一个接地。
注意的是,LED灯是单向导电的,你需要正极接PinX1引脚,负极接地。如果分不清楚,就看二极管的两个引脚,哪个长哪个就是正极,如果还分不清,就看灯里面,哪个小哪个就是正极。(这里是为了帮助大家模仿,因为你们的板子和我的板子长的不同,引脚号也会不同.)
线接好以后,我们来写代码.
保存以后,重启板子,然后就可以看到接好的LED灯亮了。
可以看到,我们成功点亮了LED小灯。
做个小总结,在选择号引脚和模式后 Pin()下有以下常用方法:
- high():拉高成为高电平
- low():拉低成为低电平
- value():参数是一个值(0~255)和LED的调节亮度的函数相同
- debug(): 开启(True)/关闭(False)调试模式
- name():返回此引脚名称
- names():返回此引脚和CPU板的名称
- pin():返回引脚号
- port():获取pin端口
我们现在需要再Get一个知识点,就是按钮。
按钮来点亮关闭LED灯.
我的这个板子上有一个用户按钮,就是用来练习用的。现在,我们就来用它制作一个按钮的点亮关闭LED的简单功能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# main.py -- put your code here! from pyb import Pin,Switch # 导入Pin方法 sw = Switch() # 实例化按钮 Pin_X1 = Pin.board.X1 # 赋值给Pin_X1,这里只是为了方便 Pin_Control = Pin(Pin_X1,Pin.OUT_PP) # 将Pin_X1设置为输出模式(OUT_PP) # 进入循环 while True: if sw.value(): # 按钮按下为True,未按为False Pin_Control.high() # 如果按下则灯亮 else: Pin_Control.low() # 没有按下则灯灭 |
保存,重启板子。我们来看效果。
结束语
MicroPython就是如此的简单。本来想给大家演示WIFI或者蓝牙来传输数据的,但是手头没板子,只能用这个凑一下了。
大家喜欢的话可以自己买一个来玩玩,然后自己用WIFI写传输,自己实现一下传输的细节等等,还有屏幕。
有心思的话可以自己做一些小东西玩,比如WIFI遥控小车……。
今天演示的只是冰山一角。感兴趣的同学可以自己去查资料学习。
关于MicroPython
首先MicroPython用Python3的语法,接口方法,这可以快速上手,但是对于以前主要用C/C++开发的朋友们一下很不习惯。
MicroPython可以很快的让一个物联网产品出现,可能有人说Arduino也可以啊。但是随着性能过剩,MicroPython的未来更大,但是MicroPython有一个遗憾,就是社区太弱。
我是一个萌新,但是蹭了一些大佬的好友位,问过一些大佬关于MicroPython的问题,其中有一个大佬使用MicroPython做嵌入式系统开发,它在MicroPython嵌入了汇编,他做的很多产品都是用了MicroPython。而且Python这个万能语言,如果一些东西整套用Python,有时候就会十分方便。
我总结了网上一位大佬的文章,其中说了MicroPython的优势:
- 编译环境
- 操作难度
- 程序结构
- 编写方式
- 易读性
而IOT通常在软硬件,云,端的结合才能做好,而这些概念很多都可以只用Python开发结合到一起。而且现在有大佬把人脸识别,文字识别都等等机器学习的项目搬到了MircroPython搞。
我想MicroPython在随着性能过剩时代,发展前途还是很大的。
交个朋友
如果在文章中哪些地方有误或者遇到什么问题,欢迎来询问哦。
转载请注明:现金捕鱼游戏平台 » 【Python3急速”玩”IOT】MicroPython你需要”玩”一下