Jun 14, 2017 - Esp8266 Lean4


layout: post title: “ESP8266学习笔记(四)模块引脚功能和第一个Micropython程序” date: 2017-06-14 16:25:06 -0700 —

  我买的模块包括ESP8266核心模块和ESP12扩展(第一讲已经有过照片了)包括了:

  • D0-D10,SD0-SD3均可复用为 GPIO,PWM,I2C,1-Wire,驱动能力15ma
  • A0 :1路 ADC
  • USB供电
  • USB转串口调试接口 当你要做一些自动控制时,必须了解模块各个引脚的功能。因为有不同以esp8266为核心的模块,所以找对应的引脚功能费了一番功夫,请各位对照自己购买模块是否和我的一样。 模块引脚:

引脚

名称

功能(ES8266)

15

AD0

ADC

14

RSV

保留

13

RSV

保留

12

SD3

GPIO10

11

SD2

GPIO9

10

SD1

SPI INT

9

CMD

SPI MOSI

8

SO0

SPI MISO

7

CLK

SPI CLK

6

GND

5

3V3

3.3v

4

EN

芯片使能EN

3

RST

ESP12E复位RST

2

GND

1

VIN

电源4.5-9V

1

3V3

3.3v

2

GND

3

TX/D10

UART输出

4

RX/D9

UART接收

5

D8

GPIO15

6

D7

GPIO13

7

D6

GPIO12

8

D5

GPIO14

9

GND

10

3V3

3.3v

11

D4

GPIO2

12

D3

GPIO0

13

D2

GPIO4

14

D1

GPIO5

15

D0

GPIO16

  注:其中16只能做DIO,不支持PWM和中断。[9, 10]是ESP - 12E以后才提供的,但是GPIO9不能做通用IO,GPIO10和GPIO16类似。
  GPIO就是通用的输入输出端口,使用micropython操作GPIO特别简单。在模块GPIO2引脚上有一个LED,下面的程序可以使LED间隔3秒钟闪烁。

  from machine import Pin
  import time
  p2 = Pin(2, Pin.OUT)    # create output pin on GPIO2
  p2.value(1)             # set pin to high
  while True:
      p2.low()                # set pin to low
      p2.value()
      time.sleep(3)           # sleep for 3 second
      p2.high()               # set pin to high
      p2.value()
      time.sleep(3)           # sleep for 3 second

  模块启动后会自动执行main.py程序,根据第一讲的方法,把上面的程序保存成main.py,然后上传到模块上,重新启动一下就可以看到LED在一闪一闪。   好了,你已经完成第一个micropython程序,是不是很简单?

  本人的更多原创文章请加入个人微信公众号。

Jun 2, 2017 - ESP8266学习笔记(三)编辑环境及设置wifi和文件系统命令

  前面已经介绍了如何烧录Micropython的固件、上传文件以及Micropython和Cpython的差别,这次继续介绍基于ESP8266的编辑环境及设置wifi和文件系统命令。

在终端中输入程序

  一般情况下,我们都是在REPL交互模式下输入代码,在python的命令提示符(»>)后就可以输入代码,可以用左右方向键改变字符位置,插入新的字母。也可以用Del或者BS键删除字母。输入时,可以灵活使用TAB键进行代码补全。完成一行后用回车键换行。这些和标准的python环境一样。   在终端下,灵活使用快捷键可以帮助我们。常用的快捷键有:

  • CTRL-A – on a blank line, enter raw REPL mode(这个快捷键不是为了输入程序,一般不要使用)
  • CTRL-B – 在空命令行下,回到正常 REPL 交互模式
  • CTRL-C – 中断正在运行的程序
  • CTRL-D – 软复位
  • CTRL-E – 粘贴模式
  • 上下方向键 – 调出以前输入命令

  运行程序时,如果出现问题可以随时用Ctrl-C中止运行,或者在空命令行下用Ctrl-D软复位。如果还不能解决问题,就直接按复位键进行硬复位。   遇到有疑问的地方,可以输入help()查看帮助,甚至可以查看一个函数或者库的帮助,如help(machine)。   还可以用dir()查看已经载入的模块、函数、变量,也可以用dir查看一个库里面包含的内容,如dir(machine)。

Wifi命令

  可以在启动时设置ESP8266的wifi,适合应用的工作模式,命令的意思很容易理解

  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

文件系统命令 ====   在ESP8266上,没有USB接口(只有USB转TTL串口),所以只能通过串口或者Wifi方式访问文件系统。先看看下面例子,列出当前目录下的文件和目录:

  import os
  os.listdir()
  ['boot.py', 'demos', 'drive', 'main.py']
  os模块提供文件函数和随机数函数
  uos.chdir(path)改变当前目录 
  uos.getcwd()获取当前目录 
  uos.listdir([dir])无参数时列出当前目录文件,否则列出指定目录的文件 
  uos.mkdir(path)创建新目录 
  uos.remove(path)删除文件 
  uos.rmdir(path)删除目录 
  uos.rename(old_path, new_path)文件改名 
  uos.stat(path)获取文件或目录状态 
  uos.statvfs(path)获取文件系统状态
  uos.urandom(n)返回 n 字节的随机数,随机数由硬件随机数发生器产生。 
  MicroPython没有提供Linux下的cat或者windows的type这样直接查看文件的方法,但是可以通过文件读写的方式查看文件内容。如:
  f = open('main.py', 'r')
  f.read()

  本人的更多原创文章请加入个人微信公众号。

May 30, 2017 - MicroPython1.9发布

  2017年5月26日MicroPython官方网站发布了MicroPython1.9,今天(5月30日)很多硬件的固件版本又进行了一次更新,特别是官方网站第一次公布了ESP32的固件,真是普大喜奔,小伙伴快来看看1.9版本有什么主要的变化。

  1. 此版本增加了一些基本的新组件,允许更多的Python操作不使用堆的操作,减少了代码大小和堆栈使用。
  2. 一个新的通用VFS子系统,允许安装任意文件系统(甚至是用Python写的)在根或任意点挂载。FatFs驱动已经替换为一个面向对象的版本(oofatfs),允许完全可定制文件系统层次结构。
  3. 调度框架已经在核心实现,提供”尽快”的回调功能。这使得端口可以实现软IRQ中断处理。新micropython的schedule()函数可以完成调度功能。
  4. 多线程已经通过_thread模块实现,但此功能默认情况下禁用,必须在编译时启用 micropy_thread和micropy_thread_gil选项
  5. 其它包括:常量可以是一个big-number类型;增加了一个帮助工具mpy_cross_all.py;字节代码格式有变化,原来的.mpy文件需重新编译。有些C api的改变,比如mp_uint_t改成size_t等。 进一步的介绍和具体各版本的改变请参考: http://micropython.org/resources/micropython-ChangeLog.txt

  本人的更多原创文章请加入个人微信公众号。