熟悉MicroPython,编写简单的程序并写入开发板

  • A+
所属分类:micropython系列

#第一个实验点亮一个led灯

由于我手上没有买LED灯,这里就使用micropython官网提供的一个模拟程序。

访问一下地址http://micropython.org/unicorn/

090720 1600 MicroPython1 - 熟悉MicroPython,编写简单的程序并写入开发板

 
 

在支持的模块位置我们选择LED,可以观察到模块边上多了一个LED灯以及串联在上面的电阻

090720 1600 MicroPython2 - 熟悉MicroPython,编写简单的程序并写入开发板

我们在console上输入以下代码。即可实现点灯的操作

import machine
#导入模块,这是micropython常用的一个基础模块

led=machine.Pin("Y12",machine.Pin.OUT) #操作一个针脚。告诉这个针脚是一个输出模式,Y12就是LED灯链接的针脚

led.on()
#告诉针脚输入高电平,既输出电压。这时候观察到LED就发光

a.off() #告诉针脚输入低电平,既输出电压。这时候观察到灯已经灭了。

当然我们也可以使用以下的方式控制。

a.value(1)

a.value(0)

模拟程序还有其他的更多的demo环境,我们可以切换进行研究。选择对应的demo然后选择Run Script运行脚本。

090720 1600 MicroPython3 - 熟悉MicroPython,编写简单的程序并写入开发板

#第二个实验、配置开发板连接Wifi

下面使用我们真实的物理板子进行开发

既然是支持Wifi功能的模块首先我们就把Wifi配置起来

#使开发版连接到我们的无线网络

import network
#导入网络模块

net = network.WLAN(network.STA_IF)
#配置网络wifi 使用STA_IF模式

关于模式一共有如下几种

STA_IF 我们做为设备端去链接其他热点

AP_IF 我们做一个热点,其他设备进行链接

net.active(True) # 启用无线

net.scan() #进行扫描,确认能链接到的wifi,这个步骤不是我们必须的

net.connect("Lily", "Meiyoumima") # 连接无线,第一个WiFi的名,后面是密码

net.isconnected()
#查看是否连接成功,如果是True表示我们已经连接成功,如果是False表示没有连接上

net.ifconfig()
#查看获取到的ip地址

更多的内容请参考官方文档说明:

http://docs.micropython.org/en/latest/library/network.WLAN.html

以下是查看MAC硬件地址,由于是bit数据我们进行转换

bmac = net.config('mac')

mymac = ('%02x-%02x-%02x-%02x-%02x-%02x') %(bmac [0],bmac [1],bmac [2],bmac [3],bmac [4],bmac [5])

 
 

#第三个实验给开发版配置NTP时间同步

前提条件,可以连接到互联网络或者内部的ntp服务器

import ntptime
#导入ntp时间同步模块

import time
#导入时间模块,用于查看

time.localtime() # 查看当前开发版的时间

ntptime.NTP_DELTA = 3155644800 # 设置NTP时间偏移量,就是我们所谓的时区
,中国在UTC +8 的时区计算方式: 3155673600 - 8*3600 = 3155644800 3155673600 是默认的UTC,以秒计算偏移量,可选,默认是UTC

ntptime.host = 'ntp1.aliyun.com' # 设置ntp服务器,可选,默认是"pool.ntp.org"

ntptime.settime() # 修改设备时间,到这就已经设置好了

time.localtime() #查看修改后的时间,确认时间已经同步

 
 

#第四个实验,启用webrepl实现远程访问

我们在使用开发板的时候,需要通过console去连接,意味着需要开发板和电脑相链接。这样实在不方便,前期我们学习还正常,如果已经投入生产使用,然后又想修改一点代码。这样就不方便了,Micropython提供也远程访问的方式,webrepl,可以通过网络的方式链接到开发板,上传文件,查看console。大大方便了我们

注意有些版本默认已经启用,如果没有启用按照如下步骤启用。

>>> import webrepl_setup
#导入设置模块,用于配置webrepl,默认直接开始初始化

WebREPL daemon auto-start status: disabled

 
 

Would you like to (E)nable or (D)isable it running on boot? #这里问你是否需要开机启用E是启用,D是不启用

(Empty line to quit)

> e
#这里输入e让他开机启用

To enable WebREPL, you must set password for it

New password (4-9 chars): 1234
#输入密码4到9个字符

Confirm password: 1234
#再次确认密码,

Changes will be activated after reboot

Would you like to reboot now? (y/n) y
# 现在是否需要重启开发板,选择是

 
 

重启后我们在链接上wifi,得到IP地址就可以访问了,步骤参考之前的。

 
 

在线工具地址,当然这个项目也是开源的我们可以吧html文件下载到本地,在没有互联的环境也可以使用

http://micropython.org/webrepl/#

在地址栏输入我们的开发板IP地址,按照demo格式填写就行(ws://192.168.31.220:8266/),链接口发现就可以看到console的页面,webrepl和Console是同步的。

090720 1600 MicroPython4 - 熟悉MicroPython,编写简单的程序并写入开发板

 
 

 
 

 
 

#第五个知识,了解micropython启动的的过程

如果我们需要吧程序放到开发板上,让开机就能自动运行,首先需要了解开机启动顺序我们才能支持我们的程序该往什么地方放。

MicroPython在启动时,顺序执行以下三个模块。

_boot.py

_boot.py在文件系统中不可见(在MicorPython中称为internal frozen modules,也就是编译好的内部模块)。

这个模块主要完成的功能包括创建/加载文件系统,在首次启动时初始化网卡配置等。不建议对这个模块进行任何变动。

 
 

boot.py

boot.py 位于文件系统根目录,这个模块主要是系统层面的一些启动项,比如WebREPL、串口设置等。对这个文件的修改建议谨慎。

 
 

main.py

main.py位于文件系统根目录中。这个模块主要放置用户需要的一些启动项。我们的程序应该从这个文件开始加载,我们也可以直接把代码写到这个文件中也是没有问题的,默认这个是没有的我们直接上传就可以。

 
 

参考链接http://docs.micropython.org/en/latest/esp8266/general.html#boot-process

 
 

#第六个实验,编写第一基础程序,并上传开发板

准备main.py文件

''''代码如下

import network

import ntptime

import time

 
 

net = network.WLAN(network.STA_IF)

if not net.isconnected():

net.active(True) # 启用无线

net.connect("Lily", "Meiyoumima") # 连接无线,第一个WiFi的名,后面是密码

while not net.isconnected(): # 判断是否已经连接成功,如果连接成功,继续

time.sleep(1)

 
 

 
 

ntptime.NTP_DELTA = 3155644800 # 可选 UTC+8偏移时间(秒),不设置就是UTC0 3155673600 - 8*3600 =

ntptime.host = 'ntp1.aliyun.com' # 可选,ntp服务器,默认是"pool.ntp.org"

ntptime.settime() # 修改设备时间,到这就已经设置好了

 
 

''''''

最后我们需要把文件上传到服务器上

第一种方法:使用MicroPython File Uploader工具,是一个绿色免安装工具,

插入开发板,打开软件选择com端口,这里可以自己识别,但是,得先插开发板,然后在打开软件才行。

然后点击open,我这是已经链接上了所以是close

选择我们的文件,然后点击send,这样我们就把文件上传上去了。然后点击,run/reset 按钮进行软重启。

下载地址https://www.wbudowane.pl/download/

 
 

090720 1600 MicroPython5 - 熟悉MicroPython,编写简单的程序并写入开发板

 
 

 
 

上面的方法有局限性,就是我们得一直把开发板插在电脑上。对于后期来说很不方便,我们可以使用webrepl进行通过网络的方式进行上传。配置方法参考第四个实验。上传完成,我们需要用过命令重启,或者按reset键进行重启

import machine

machine.reset()

http://micropython.org/webrepl/

090720 1600 MicroPython6 - 熟悉MicroPython,编写简单的程序并写入开发板

 
 

第七、一些常用的命令

 
 

import uos

uos.uname() #查看设备的名称

uos.listdir() #查看目录下

uos.mkdir("Alex") #创建一个名字Alex的目录

uos.chdir("Alex") #切换到Alex目录,相当于cd命令

uos.getcwd() #获取当前的目录位置,相当于我们常用的path

====

uos.urandom(5) 生成一个随机的字节数

 
 

import sys

sys.version #遵循的python语言语法版本,

sys.implementation #查看micropython的版本

sys.platform #查看我们开发板的型号

 
 

 
 

import gc

gc.enable() #开启自动内存回收

gc.mem_alloc() #分配的内存,字节

gc.mem_free() #剩余的内存,字节

gc.mem_free() + gc.mem_alloc() # 这就是单片机总共的内存,esp8266。基本都是4k大小

 
 

更多的我们可以参考官方文档说明

http://docs.micropython.org/en/latest/library/uos.html

 
 

 
 

其他分项,一个在线开发板实验,是真实的开发板设备,通过录像反馈信息,提交程序后操作需要排队,基本排不上,

http://micropython.org/live/

 
 

 
 

 
 

头像

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: