首发于micropython
ESPY教程1-Hello world

ESPY教程1-Hello world

人生苦短,快用Python!

1. 前言

上一篇文章<<物联网微控制器的快速开发时代>>发出后,很多人询问我后续的计划以及更详细的资料。在回答这个问题之前,我想先给我们的核心模块定一个型号,以后就称其为ESPY-core。其中ESPY取easypython联合之意,core指该模块是一块核心板。后续,我们会改进模块,使其更加稳定和易用,同时会放出更多的扩展模块,包括温度,湿度,气压,加速度,OLED显示等。更为详细的资料会在该专栏中以教程的形式持续放出(本来是计划用网站的,但是一直没有弄好),逃~



本篇是系列教程中的第一篇。该教程的前置知识要求是,基本掌握Python语法,无需电路方面知识。如果你还不会Python的话,那就快去学去吧!(推荐资料:Python3 教程 | 菜鸟教程

本篇教程的主要内容如下:

  1. ESPY-core模块简介
  2. 配置串口工具
  3. 连接ESPY-core到PC
  4. 使用Python点亮一颗LED
  5. 了解LED点亮原理

2. ESPY-core模块简介

ESPY-core模块是OOPY开源团队的(skaiu @江峰 )和(magi @董子汉 )共同开发的一款物联网模块。该模块使用乐鑫公司 @乐鑫 Espressif 的ESP系列芯片为主控,移植了micropython环境。从而能够在在esp8266和esp8285芯片上直接运行python3程序,为物联网开发者和爱好者快速开发带来超神体验。(真的超爽,有种再也不想写C/C++的快感QAQ)

Micropython
MicroPython is a lean and efficient implementation of the Python 3programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.
MicroPython aims to be as compatible with normal Python as possible to allow you to transfer code with ease from the desktop to a microcontroller or embedded system.


[ESPY-core工程样机v0.3]

尺寸: 35x35x15mm

主要芯片:

ESP8266或ESP8285 (主控)

HT42B534 (USB转串口芯片)

SN74AHC1G04 (电源管理芯片)

74HC595 (逻辑芯片)

74LS16 (逻辑芯片)

外部引脚:

micro-usb接口

20Pin排座x2

其中GPIO口9个
扩展可读引脚8个
扩展可写引脚8个
电源引脚5个


3. 配置串口工具并将ESPY-core连接到PC

ESPY-core模块与电脑连接的方式有两种,一种是通过串口建立连接,使用串口工具可以获得一个REPL,进而很方便的进行交互。另一种方式是通过无线网络,名称叫做webREPL,在后续会进行介绍。本文主要介绍REPL方式。

REPL(Read Evaluate Print Loop)与Python自带终端一样,是一个与Micropython交互的接口。

使用一根micro-usb线ESPY-core模块与电脑相连接(如下图所示):


MAC平台Linux平台上执行如下命令:

picocom /dev/tty.xxx -b 115200


其中tty.xxx为ESPY-core的对应的端口号,具体可以通过ls /dev/* 命令查看:

MAC平台上一般对应为tty.usbmodem0001
可以使用brew install picocom命令安装
Linux平台上一般对应的为ttyUSB0
可以使用sudo apt-get install picocom命令安装
picocom -d 参数用来指定串口通信的波特率

windows平台下可以通过硬件管理器->端口查看具体的端口号,一般形式为COMx:


windows平台可以下载Download PuTTY: latest release (0.70)这个工具进行串口连接:

(根据实际情况选择x64或x32)

安装完成后打开软件:

选择Serial选项,输入上一步中查找到的端口号,并在speed中设置波特率115200,点击Open即可连接到ESPY-core。

如果上述一切正常,按下enter键后,你应该能够看到如下画面:

(windows系统下)

(mac系统下)


在上面多次提到串口,那什么是串口呢?
UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用于单片机和电脑之间以及单片机和单片机之间的通信。

4. 开始用Python编程

如同刚学习一门语言时,我们喜欢打印出一行Hello world一样,硬件狗在刚摸到一块新的开发板时候也喜欢点亮一盏灯,作为自己的第一个项目。在这一节,我们先来做,然后再来理解。这样更符合发现新事物的直觉,更有探秘其中的乐趣感:-D

from machine import Pin
led = Pin(0, Pin.OUT)
led.value(0)  # 灯亮了
led.value(1)  # 灯灭了



https://www.zhihu.com/video/872222768219955200

from machine import Pin

从ESPY-core自带的machine库中导入Pin类

led = Pin(0, Pin.OUT)

设置gpio0引脚为输出状态,并创建实例led。

led.value(0)

设置gpio0引脚输出为低电平,LED亮了。

led.value(1)

设置gpio0引脚输出为高电平,LED灭了。


5.背后的原理

在数字世界中,一切信息都是由0和1来表示。而对于不同的器件,对0和1的规范不尽相同,一般3.3v电源情况下,低电平<0.7V高电平>2V,我们的ESPY-core模块符合该条件。

ESPY-core模块,使用ESP8266/8285芯片,引出了9个GPIO。

GPIO0 GPIO2 GPIO4 GPIO5
GPIO12 GPIO13 GPIO14 GPIO15 GPIO16

General Purpose Input Output (通用输入/输出)简称为GPIO,每个芯片上都有很多引脚,有些是特殊功能实现很复杂的总线操作,而有些很简单很通用,比如GPIO。通过GPIO我们可以输出高低电平,读取输入信号电平高低。

LED属于二极管类,具有单向导通的特性,当有电流通过时,LED就会被点亮,从而发出光芒。上述原理图中有3个LED,分别用字母R,G,B表示。三个LED的正极均被接入到3.3V的电源上,负极分别与GPIO0,GPIO2,GPIO16相连接。当我们刚给ESPY-core模块通电时,GPIO均为高电平状态。此时LED正负两端电压保持一致,无电流流动,LED不发光。

当我们执行,

led = Pin(0, Pin.OUT)

时,将GPIO0的状态变为输出,并创建一个实例,命令为led

led.value(0)

该代码,让GPIO0输出低电平,此时LED-R两端,正极为高电平,负极为低电平,有电流流动,LED点亮

led.value(1)

该代码,让GPIO0输出高电平,此时LED-R两端电平保持一致,LED-R熄灭。

LED-G和LED-B所连接的GPIO2和GPIO16我们未进行控制,所以绿灯和蓝灯的状态保持不变。

作为练习,你可以自行尝试点亮R灯或点亮B灯。

6.总结

这篇文章并未涉及一些复杂的事物,只是告诉了大家怎么安装串口工具,怎么将ESPY-core模块与电脑连接,如何通过REPL进行编写代码,希望大家能够对ESPY-core下的程序开发有一个直接的了解。可能这些对有技术基础的同学来说过于简单,不过不要捉急,Keep patient。在下一篇文章中,我们会讲解如何将ESPY-core连接上WIFI,以及如何将ESPY-core变成一个web server(mini)。再次希望有更多的同学可以和我们一道,一起学习,一起探索物联网和深度学习构建的美好世界。

编辑于 2017-07-26

文章被以下专栏收录