python真得使用越来越广泛了,记得我在6年前学习python时,当时还只是把它做为一个脚本语言来看,没事学着大神们搞搞网络安全的相关知识。然后,几年用python的应用遍地都是,让人更加吃惊的是,python都可以用于硬件开发了。说到这里,很多人可能想到的是树莓派、香蕉派,因为支持linux系统,可以进行硬件编程,同时带了rpi等python库,让你可以用python控制硬件的gpio口等。实现上,python已经完全可以脱离系统,直接进行单片机的开发了。
MicroPython是在单片机上可以跑的Python,也就是说,你可以通过Python脚本语言开发单片机程序。它遵守MIT协议开源,被授权人拥有复制、修改、发行和再授权的权利。由剑桥大学的理论物理学家乔治•达明设计。和Arduino类似,但MicroPython更强大。它的语法跟Python3基本一致,拥有自家的解析器、编译器、 虚拟机和类库等。目前它支持基于32-bit的ARM处理器,比如STM32F405、STM32f407等,也就是说ARM处理器STM32F405上直接可运行Python语言,用Python语言来控制单片机。当然还有大名鼎鼎的esp32单片机
1 Micropython开发板
Micropython从诞生的那一刻起,就被很多人关注,相应的开发板也迎运而生。
pyboard官方版
当前,支持的开发板有很多,如官方的pyboard,已经有pybv10和pybv11两个版本。该版本又被称为micropython的初型,以stm32f405为mcu,1024KiB flash ROM and 192KiB RAM,带有一个tf卡槽。官方网站为www.micropython.org。
1.2 tpyboard国内版
Tpyboard几乎是国内最早支持micropython的专用开发板,官方网站为www.tpyboard.com。据了解已有基本版V0X,wifi版V202,lan版V201以及GPRS和GPS版V70X等。同时,该网站还发布了较为完整的tpyboard和micropython中文文档(http://docs.tpyboard.com/zh/latest/)
1.png V0X 2.png 支持wifi的esp8266版 3.png 支持lan版本 4.png 支持gprs和gps版本1.3 openmv
随着micropython的发展,一些专用开发板出现,如openmv,带摄像头的支持micropython的开发板,此开发板采用的是STM32f7系列的mcu,对图像的处理能力更强,你可以用几句python代码就能完成一个可控制的摄像头。
8.jpg openmv1.4 lopy
lopy是基于micropyhton支持LoRa, WiFi 和 Bluetooth 三种无线方式的开发板,它可以用于微型无线网关、报警器、机器人控制等,支持arduino IDE、Pymakr IDE(没有找到是什么软件),以及支持Microsoft Azure的云服务。
9.png lopy 除了以上版本外,当前还有pycom等其它版本,这里就不一一描述了。
2、micropython能干什么
既然micropython是用Python语言能来控制单片机,那么单片机能做什么基本能反映出它能做什么。还是让我们一起看一下单片机能干什么?
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
2.1 智能仪器
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。 例如精密的测量设备(电压表、功率计,示波器,各种分析仪)。
2.2 工业控制
单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单片机可以构成形式多样的控制系统、数据采集系统、通信系统、信号检测系统、无线感知系统、测控系统、机器人等应用控制系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
2.3 家用电器
现在的家用电器广泛采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备和白色家电等。
2.4 网络和通信
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
2.5 医用设备领域
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
2.6 模块化系统
某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。 在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。
2.7 汽车电子
单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器、GPS导航系统、abs防抱死系统、制动系统、胎压检测等。
2.8 此外,单片机在工商、金融、科研、教育、电力、通信、物流和国防航空航天等领域都有着十分广泛的用途。
3 向世界说“Hello world”(以tpyboard为例)
3.1 基本的连接方法
程序调试的连接方法:通过 USB 线连接开发板的microusb口与你的 PC 机(windows,mac,linux皆可)的usb口。当连接成功后开发板将上电和进入开机程序,绿色的 LED 灯应该在半秒或更少的时间内亮起,当其熄灭时意味着开机程序已完成。此时,电脑会出现一个u盘设备,容量97K左右。该u盘里存在4个文件:
boot.py 启动文件,确定启动方式,类似引导文件
main.py 主程序,boot.py默认引导启动的程序,也就是你的python代码主要是写在这里。
pybcdc.inf 驱动程序,win7以上基本不需要驱动,个别精简系统需要安装驱动。如果确实需要安装,请参考http://www.micropython.net.cn/support/tutorial/222.html
Readme.txt
使用的连接方法:使用时其实就是给该开发板供电,供电也是用microusb,直接将5V电源通过该口引入,如你可以使用充电宝、pc等具有供电能力的设备,利用usb连接供电。
3.2 点亮板载LED 向世界说”Hello“
学习语言首先要做的就是学会hello world,同样学习单片机首先要做的就是点亮第一盏灯。这里我们来看看如何点亮tpyboard板子上本身带的灯,板子上共有4个LED,分别从里到外是LED1、LED2、LED3、LED4。这里我们以点亮LED3为例。直接修改main.py文件,代码如下:
main.py -- put your code here!
import pyb
pyb.LED(3).on()
对,就这三句话,去了注释只有两句。修改完,点击保存时,板载的第一个灯会亮起,此时一定要等灯熄灭以后,按rst键或者重新拨插下usb。灯亮的过程表示正在存储,因为此时是存在mcu的flash中,所以速度略慢一点。如果后面我们讲了如何使用tf卡后,就会发现不存在这个过程。
重新给板子上电,此时会发现led3亮了。
网友评论