投稿    登录
欢迎来访~

【Python3急速”玩”IOT】MicroPython你需要”玩”一下

Python 蒋翔宇 6832浏览 14评论

扫码或搜索:进击的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:在上面这张图中可以找到VCCPin 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内存驱动器怎么办?

  1. 缺少驱动程序,下载pybcdc.inf文件 下载点这里
  2. 打开设备管理器,找到 其他设备 会通常有一个有叹号,找到他。
  3. 双击它,然后安装驱动程序,驱动选择pybcdc.inf

 

使用Putty与板子内的Python进行交互

我使用的是Putty,大家用Xshell等有Serial的工具就可以。

我们点击Open进行连接,如果当连接的时候出现黑屏,就像卡住一样的情况的话,就按下Ctrl+C试试.

可以看到,MircroPython支持很多的东西,WIFI,舵机(Servo),SD卡,I2C,SPI,UART等总线。

到了这里,我们已经完成了90%。

我们需要输入以下代码让照片中的三个不同颜色的LED灯亮起来.

可以看到,成功点亮自带的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的简单功能。

保存,重启板子。我们来看效果。

结束语

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你需要”玩”一下

更多文章、联系博主、技术交流、商务合作

扫码或搜索:进击的Coder

进击的Coder

微信公众号 扫一扫关注

喜欢 (49)or分享 (0)

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(14)个小伙伴在吐槽
  1. 生成四
    iipip2019-09-10 15:26 回复
  2. 不错
    xiaomi2019-09-10 15:06 回复
  3. 1232019-09-04 19:10 回复
    • 11111我
      1232019-09-04 19:10 回复
      • 11111去
        1232019-09-04 19:13 回复
  4. 。。。。吧北京爱德华
    烦不烦邱娥国2019-08-31 17:05 回复
  5. 厉害了,尝试下
    永恒情书微2019-08-22 11:44 回复
  6. 不错不错,可玩性很高
    Ken2019-08-20 21:39 回复
    • 哈哈
      xq2019-08-21 17:35 回复
    • 23我
      1232019-09-04 19:12 回复
      • 啊人情味
        136227502982019-09-10 15:28 回复
        • 啊啊大大
          136227502982019-09-10 15:29 回复
          • i屁哦皮皮
            136227502982019-09-10 15:29
  7. 这个不错,谢谢分享
    小菜鸟2019-08-19 15:03 回复