ESP8266 UART连接电路

ESP8266 UART连接电路

ESP所使用的电压为3.3V,意谓著GPIO输出电压HIGH准位3.3V,然而输入容忍最大电压也是3.3V,如果要透过ESP提供的UART与其他开发板连接时就要注意电压准位问题,

Arduino UNO板子为例,它主要是以5V电压为主,输出电压HIGH准位为5V。这种有输入与输入的电压差需要转换叫作Logic Level Shift,作法有很多种,依照你连接电路的方式选择适合你的,下面提供几个作法:

分压法

分压法与其名称一样,是利用电阻分压的方式让最高准位为3.3V,所以这理使用的是10K、20K电阻串联,一端接到Arduino的输出,另一端接地,串联两端另外接线至ESP输入,如下:

当Arduino输出时,经过分压的方式:

out = Vcc * (R2/(R1 + R2)


得到约为3.3333333333的电压,刚好与3.3V接近,如此一来就能当做ESP的输入。

稳压法

使用齐纳(Zener)二极体稳压的方法,让电压超过3.3V时电压稳定输出在3.3V,如此就能保护输入至RX的电压不会超过3.3V

二极体法

二极体具有顺向导通与逆向不导通的特性,所以利用Arduino UNO TX输出时产生的5V让二极体顺向导通,导通后就像开关打开一样。

电路中二极体采用1N4148,其顺向压降约为0.45V~0.55V,所以先计算在电阻上所产生的压降:

电阻压降 = 总电压 – 二极体顺向压降 – 终点电压

    5v - 0.45v - 3.3v = 1.25v


计算得到压降后再用输入电压减掉压降得到端点电压:

    5v - 1.25v = 3.75v


或是用推导的方式,可以更快算出结果,终点电压3.3v,再加上二极体顺向压降0.45v得到3.75v的端点电压。

ESP8266 Datasheet的4.3版本中的GPIO章节曾经提到一点有关于保护电路的说明:

All digital IO pins must add an overvoltage protection circuit (snap back circuit) between the pin and ground. Usually bounce (snap back) voltage is about 6V, while maintaining the voltage is 5.8V. This prevents excessive voltage and generating ESD. Diodes also avoid reverse voltage output devices.


所以上述结果得到3.75v输入到ESP8266是可被接受的。

汇流排收发器(BUS TRANSCEIVER)

使用汇流排收发IC对于数位输出波形来说是最接近方波,在数位电路是较可靠的,但此类的IC体积还有价格上或许不那么容易被考虑,以下为电路连接方式:

结论

此篇介绍许多逻辑位准转换的方法应用在ESP上连接UART的使用,对于后面会介绍如何将程式码烧写于Flash及使用官方支援AT command控制WiFi来说是必需要了解,当然你也可以将此篇的逻辑位准转换方法应用在其他开发板上面也是可行的。

参考资料

5V to 3.3V Logic Level Shifting Stragety Notes

Effects of Varying I2C Pull-Up Resistors