其实我本人对硬件是一窍不通的,作为一个工科生,还是很惭愧的,毕竟当年数电模电单片机可都是必修课。前段时间无聊买了块esp8266的物联网开发板来玩,附带了一块屏幕,使用iic连接屏幕和esp8266,使用iic的话连线比较简单,4根线就搞定了,网上也有很多教程,所以我就不说iic怎么连接了,大家自己去搜。
本来iic连接esp8266完全够用了,但是我脑抽,双十一又去买了块SPI/IIC兼容的屏幕,大小也是0.96英寸,想挑战一下自己,看能不能驱动这块屏幕。esp8266刷的micropython,所以驱动啥的不用自己写,直接import就行了,难点就在连线上了。前面我也说过,我对硬件真的不太懂,所以只好网上爬文,可是百度了好久也没找到一篇文章讲怎么使用spi连接esp8266的,也许是我搜索的关键词不对,一度曾想过放弃,努力了几天都没点亮,后面突然想到了用google,还真搜到一篇github上的帖子,讲了怎么连线的,果断试了下,居然成功了,现在就讲一下怎么连线先,我不会画图,也懒得拍照,所以就纯文字叙述了 ,将就看吧
SSD1306 | NodeMCU | Description |
---|---|---|
VCC | 3.3V | Power supply |
GND | GND | Ground |
D0 | D5 (=GPIO14=HSCLK) | Clock |
D1 | D7 (=GPIO13=HMOSI) | Data (MOSI) |
RES | D0 (=GPIO16) | Reset |
DC | D4 (=GPIO2) | Data/Command |
CS | D8 (=GPIO15) or GND | Chip Select |
说明:vcc和GND大家都知道接什么,不用多说,D0和D1一定只能按表中所示连接,其他的几个自己随意接
接好线以后,我们就可以尝试用python来点亮这块屏幕了,代码如下
import machine
from machine import Pin,I2C,SPI
import ssd1306
import math #这一行应该可以不引入
import time #这一行也是非必填须
spi = SPI(baudrate=10000000, polarity=1, phase=0, sck=Pin(14,Pin.OUT), mosi=Pin(13,Pin.OUT), miso=Pin(12))
oled = ssd1306.SSD1306_SPI(128, 64, spi, Pin(2),Pin(16), Pin(15))
oled.text("Hello", 10, 10, 1)
oled.show()
定义oled参考如下格式:SSD1306_SPI(width, height, spi, dc, res, cs, external_vcc=False)
其中最后一个参数是指显示屏是否使用外部电源,默认为否,我们直接使用板子上的电源,所以不需要外接电源,因为默认是false,所以这个参数不用写。
我们使用putty连接上我们的esp8266,逐行输入以上代码,我们发现屏幕被成功点亮,并显示hello,至此本教程结束。下一步研究输入通过文件来执行python代码,后续有空再研究。