本帖最后由 leekuip 于 2016-8-23 22:21 编辑
先大致说下对ESP8266的认识。ESP8266是一枚国产芯片,是内置了WiFi功能的单片机,ESP8266模块则是在芯片基础上扩展出的最小系统,包含了I/O的引出和板载PCB天线。
MicroPython是兼容Python语法及文件的微型Python系统,该系统由作者移植到诸如pyboard、wipy等硬件平台上,ESP8266也是MicroPython支持的硬件平台之一。MicroPython的初衷和Arduino类似,都是为了能够让没有电子电路基础的软件开发人员可以快速的实现对常用电路的控制。
向ESP8266烧写固件就是类似于向电脑上安装操作系统,完了之后一上电,整个系统便开始启动,如果需要让与ESP8266相连的外部电路执行某些指令,可以通过串口终端在控制台输入指令,也可以将想要实现的程序做成Python文件,放到Python系统中,类似于在Windows中运行EXE可执行文件。MicroPython是默认来执行命名为main.py的文件的。
MicroPython的官方网站是micropython.org ,大家可以在这里找到micropython的固件、文档等资料。这里值得一提的是MicroPython支持多个硬件平台,在官网Doc部分的左侧可以选择对应的硬件平台,这个是ESP8266部分的链接:网址 (这里吐槽下,之前一直没有看到这部分的文档,以至于一直没明白WLAN连接的指令是怎么样的)
下面就是拿到各种板子之后的第一个实验了——点灯。
本次活动的ESP8266板子上只有8266模块自带的一个蓝色LED灯,该LED灯连接的是Pin2,所以就拿Pin2来做实验了。GPIO的相关指令描述如下:
Pins and GPIOUse the machine.Pin class:
from machine import Pin
p0 = Pin(0, Pin.OUT) # create output pin on GPIO0
p0.high() # set pin to high
p0.low() # set pin to low
p0.value(1) # set pin to high
p2 = Pin(2, Pin.IN) # create input pin on GPIO2
print(p2.value()) # get value, 0 or 1
p4 = Pin(4, Pin.IN, Pin.PULL_UP) # enable internal pull-up resistor
p5 = Pin(5, Pin.OUT, value=1) # set pin high on creation
在控制台中要先引入machine.Pin类,然后才能对引脚做对应的操作,执行的指令如下:
from machine import Pin #引入类
p2 = Pin(2, Pin.OUT) #定义Pin2
p2.high() #Pin2置高,LED灯灭
p2.low() #Pin2置低,LED灯亮
下面是WLAN的连接,同样在官网找到的指令描述如下:
NetworkingThe network module:
import network
wlan = network.WLAN(network.STA_IF) # create station interface
wlan.active(True) # activate the interface
wlan.scan() # scan for access points
wlan.isconnected() # check if the station is connected to an AP
wlan.connect('essid', 'password') # connect to an AP
wlan.config('mac') # get the interface's MAC adddress
wlan.ifconfig() # get the interface's IP/netmask/gw/DNS addresses
ap = network.WLAN(network.AP_IF) # create access-point interface
ap.active(True) # activate the interface
ap.config(essid='ESP-AP') # set the ESSID of the access point
一样需要先做引用,至于network这个是叫做库还是叫做什么还没有具体看。然后按照指令描述中的步骤及返回的相关提示进行WLAN的设置后即可连接到指定的路由器。摸索的时候忘记截图了,大家就自己尝试吧。
连接好WLAN之后就可以尝试一项比较酷的实验了,作者在官网给出了网络访问板载MicroPython的工具:
WebREPL (web browser interactive prompt)WebREPL (REPL over WebSockets, accessible via a web browser) is anexperimental feature available in ESP8266 port. Download web clientfrom
https://github.com/micropython/webrepl (hosted version availableat
http://micropython.org/webrepl), and start the daemon on a deviceusing:
import webreplwebrepl.start()
连接好后如下图所示,界面与串口终端的控制台一样,可以在浏览器中控制LED的亮灭,是不是
挺好玩儿的呢。貌似还可以导入导出文件的,暂时还没研究,后面捣鼓清楚了再说。
暂时就先写这么多吧,后面有进展了再继续发帖。
上述中仅为个人理解,可能有存在偏差的地方,请大侠们对错误的地方加以指正。
最后附一个官方指令描述的截图。