最近被好基友拉下水,几次鼓动我在单片机上玩一下micropython。经不住诱惑买来了几片ESP8266模块玩,也赶赶物联网的大潮。

  首先要搞清楚什么是micropython(http://www.micropython.org/)。对于python的大名大部分搞程序的人应该都听说过,但micropython我也是刚听说过。问了一下度娘,原来micropython是一位名叫Damien George的计算机工程师在使用python的时候突发奇想,希望能用python语言来控制单片机。牛人果然不一般,这位老兄用了六个月的时间完成了在STM32单片机上的开发,并且开源了所有源代码。之后,micropython被移植到了很多平台,包括ESP8266。再说说ESP8266。这是一块包含了WIFI控制芯片的soc(片上系统),是乐鑫信息科技(上海)有限公司(http://espressif.com)开发的一款芯片。它的特点是体积小、功耗低、内置了功能丰富的32位单片机,还有最最重要的是廉价。某宝上有买esp8266模块已经基于ESP8266进行了二次开发,集成了外围元件,PCB的印刷天线和usb转uart串口的cp2102芯片,这些东东一起打包只卖十几块钱,简直白菜价,所以此模块不流行简直逆天。
  言归正传,便宜归便宜,我们更关心芯片的易用性如何。网上搜相关的文档,有些是讲通过物理串口烧录的,有些是讲如何烧录Nodemcu的,会让你一头雾水。经检验,此模块使用micropython特别方便,从拿到芯片到进入micropython界面只要以下几步(以windows为例),记录下来为节约大家时间:

  1. 插入usb接口。过了一会儿在windows的设备管理里面自动安装的一个串口设备(COM),记住此串口编号。
  2. 更新固件。
      本机上先安装安装此串口变sthon方便,如需要进入易用性如何, ESPtool.py。这是一个用python开发的针对ESP8266的小工具,可以实现底层的操作。它也是一个开源项目,项目在github上进行托管:https://github.com/themadinventor/esptool
      esptool是基于python2.7,所以安装esptool之前先安装python2.7。用pip安装esptool:
    pip install esptool
    因为esptool需要使用串口,所以还需要安装pyserial:
    pip install pyserial
    擦除:python c:\Python27\Scripts\esptool.py –port /COM4 erase_flash
  3. 烧录micropython固件
      到官方网站http://www.micropython.org/download ,找到Firmware for ESP8266 boards,下载最新的固件,我下载的是esp8266-20170108-v1.8.7.bin。   进入下载固件的目录,烧录命令:
      python c:\Python27\Scripts\esptool.py –port /COM4 –baud 460800 write_flash –flash_size=detect 0 esp8266-20170108-v1.8.7.bin
      成功写入固件之后,你可以用putty等telnet软件通过com口连接esp8266,设置如下。
      正常的情况下会出现如下界面:
      这时你可以在micropython的环境下进行编程了,不过还需要解决一个问题,就是本机写好的程序如何上传上去,请继续下面步骤
  4. 设置wifi 此时如果用电脑搜索热点,会发现有micropython-xxxx的热点,说明wifi也工作正常,你可以试着连接,密码是micropythoN(注意最后一个字母大写哦)。链接成功之后可以用ipconfig查看ip地址。
  5. 实现文件管理
      本来想试试中文教程上的图形工具uPyLoader,结果发现不太稳定,后来试用了一下mpfshell,感觉比较稳定,虽然是命令行界面,但也就这几条命令,使用还是so easy的。 安装mpfshell:
    https://github.com/wendlers/mpfshell 网站上下载最新版mpfshell(选择clone or download下载zip文件)。解压zip文件,在解压目录执行如下命令(注意此工具可以安装在python2或python3环境)。
    pip install pyserial
    pip install colorama
    pip install websocket_client
    python setup.py install
    

    安装完之后发现无法如手册上写的执行mpfshell,原来此文件是一个linux下的shell文件无法在windows下执行,正郁闷之时发现在解压文件的mp目录下有mpfshell.py文件,执行python mpfshell.py进入命令行搞定!
      接下来连接esp8266,在mpfshell中输入:open ws:192.168.4.1(注意:ipconfig看到的是本机的地址,此处需要连接esp8266,非本机ip),发现需要输入密码。什么密码?我可没设置过,但看到提示”webrepl password”,灵光一闪原来需要启动webrepl。在用putty登录micropython之后,输入命令import webrepl_setup,设置webrepl启动,并设定登录密码。此时在回到上面的命令,顺利连接ESP8266。mpfshell的主要命令(看着眼熟,就不多解释了):

    mpfs> ls
    mpfs> put boot.py main.py
    mpfs> mput .*\.py
    mpfs> get boot.py my_boot.py
    mpfs> mget .*\.py
    mpfs> rm boot.py
    mpfs> mrm test.*\.py(remove all remote files)
    mpfs> md test
    mpfs> cd test
    mpfs> rm test
    

  总结:通过esptool烧录micropython固件,可以用串口来执行或者调试程序。用自己喜欢的文本编辑器写好程序,通过mpfshell来上传下载文件,这样一个单片机开发环境便搭建好了。想起自己以前玩单片机,要用烧录软件将编译好的程序一次次刷进flash后再做测试,有种恍如隔世的感觉,套用一句话”科技以人为本”。

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