ESP8266带你玩转智能设备电路图
ESP8266带你玩转智能设备电路图
ESP8266是乐鑫信息科技推出的一款高性价比WiFi芯片,广泛应用于物联网和智能家居领域。它以其强大的可编程性和通信能力,成为智能设备中不可或缺的核心组件之一。本文将详细介绍如何利用ESP8266进行智能家居设备的电路设计和应用开发。
ESP8266基础认知
ESP8266集成了32位Tensilica处理器、标准数字外设接口、天线开关、射频balun、功率放大器、低噪放大器、过滤器和电源管理模块等。仅需很少的外围电路,可将所占PCB空间降低。ESP8266EX专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现了超低功耗。ESP8266EX内置超低功耗Tensilica L106 32位RISC处理器,CPU时钟速度最高可达160 MHz,支持实时操作系统(RTOS)和Wi-Fi协议栈,可将高达80%的处理能力留给应用编程和开发。
电路图解析
供电电路
供电采用ASM1117-3.3,能够将USB的5V转3.3V。除此之外,还用了一个ASM1117-5.0来产生5V的稳压,供其他外围电路使用(如舵机、马达等)。
串口电路
ESP8266烧写和调试一般都是用串口的,因此开发板上需要集成一个串口电路,选择一颗比较便宜的:CH340。其典型电路:
我们使用的电路没有那么复杂,只要电源部分加个滤波,RX和TX各串一个470R的电阻(这颗芯片偏大,还有更小一些的国产串口芯片,也非常好用)。
自动烧写电路
ESP8266工作模式:
- 下载模式:芯片启动时,若IO0为低电平,芯片会进入下载模式;
- 运行模式:芯片启动时,若IO0为高电平,芯片会进入运行模式;
上图的逻辑关系如下:
- DTR = 0,RTS = 0,此时Q1截止,Q2截止,EN = 1,IO0 = 1;
- DTR = 0,RTS = 1,此时Q1截止,Q2导通,EN = 1,IO0 = DTR = 0;
- DTR = 1,RTS = 0,此时Q1导通,Q2截止,EN = RTS = 0,IO0 = 1;
- DTR = 1,RTS = 1,此时Q1截止,Q2截止,EN = 1,IO0 = 1;
显然,这种逻辑关系下EN和IO0不可能同时为0
然而,ESP8266进入下载模式却需要如下条件:
- EN = 0,IO0 = 0,ESP8266芯片掉电复位;
- EN = 1,IO0 = 0,保持IO0为低电平重新上电
此时要看下esp8266的下载烧录脚本(esptool.py):
def _connect_attempt(self, mode='default_reset', esp32r0_delay=False):
""" A single connection attempt, with esp32r0 workaround options """
# esp32r0_delay is a workaround for bugs with the most common auto reset
# circuit and Windows, if the EN pin on the dev board does not have
# enough capacitance.
#
# Newer dev boards shouldn't have this problem (higher value capacitor
# on the EN pin), and ESP32 revision 1 can't use this workaround as it
# relies on a silicon bug.
#
# Details: https://github.com/espressif/esptool/issues/136
last_error = None
# If we're doing no_sync, we're likely communicating as a pass through
# with an intermediate device to the ESP32
if mode == "no_reset_no_sync":
return last_error
# issue reset-to-bootloader:
# RTS = either CH_PD/EN or nRESET (both active low = chip in reset
# DTR = GPIO0 (active low = boot to flasher)
#
# DTR & RTS are active low signals,
# ie True = pin @ 0V, False = pin @ VCC.
if mode != 'no_reset':
self._setDTR(False) # IO0=HIGH
self._setRTS(True) # EN=LOW, chip in reset
time.sleep(0.1)
if esp32r0_delay:
# Some chips are more likely to trigger the esp32r0
# watchdog reset silicon bug if they're held with EN=LOW
# for a longer period
time.sleep(1.2)
self._setDTR(True) # IO0=LOW
self._setRTS(False) # EN=HIGH, chip out of reset
if esp32r0_
智能家居应用实例
环境监测系统
ESP8266可以采集环境数据,如温度、湿度、烟雾检测和人体红外检测。这些数据可以通过WiFi网络上传到云平台,实现远程监控。
数据上传与云平台通信
采用MQTT协议进行数据传输。首先需要在阿里云物联网平台创建产品和设备,定义属性和主题。然后在ESP8266端编写代码,将采集到的数据发送到指定主题。
云平台查看主题:
ESP8266向云平台发送数据:
人体红外传感器部分:
人体红外传感器数据采用中断方式上传,当检测到人体移动时立即触发中断,上传数据。这样可以确保数据的实时性和准确性。
通过以上步骤,可以实现一个基本的智能家居环境监测系统。用户可以通过手机APP实时查看环境数据,并在异常情况下接收警报通知。
总结与展望
ESP8266凭借其强大的功能和低廉的成本,在智能家居领域展现出巨大的潜力。通过本文的介绍,相信读者已经对ESP8266的基本应用有了初步了解。接下来,可以尝试搭建一个简单的智能家居系统,亲身体验ESP8266的强大功能。随着技术的不断发展,ESP8266将在更多领域发挥重要作用,为我们的生活带来更多便利。