【M5Stack物联网开发】第七章 使用传感器(一)

1. 串口通讯

串口通讯(Serial Communication)是计算机和其他电子设备之间的一种数据传输方式,历史悠久且应用广泛。它的发展过程可以分为几个主要阶段:

1.1 初期发展

20世纪初至1960年代

  • 早期的串口通讯主要用于电信和无线电设备。
  • 最初的串行通讯协议主要集中在电报和无线电波传输,采用莫尔斯电码和调幅(AM)。

1.2 标准化和普及

1960年代至1980年代

  • RS-232标准:1960年代发布,定义了一套标准的串行通讯接口。RS-232成为计算机和外部设备(如调制解调器)之间数据传输的主要标准。
  • UART(Universal Asynchronous Receiver/Transmitter):负责处理串行数据的接收和发送,包括起始位、数据位、校验位和停止位。
  • TTL串口:用于短距离通讯和嵌入式系统。采用5V或3.3V电平,相对RS-232更简单。

1.3 高速发展

1980年代至1990年代

  • 串口通讯速度和可靠性逐渐提高,从最初的几百bps(比特每秒)提升到几Mbps。
  • 随着个人计算机的普及,串行端口(COM端口)成为计算机的重要接口,广泛用于外设连接,如鼠标、键盘、打印机等。

1.4. 多样化与扩展

2000年至今

  • USB(Universal Serial Bus):极大地扩展了串行通讯的应用范围,提供更高的数据传输速率和即插即用的特性,大大简化了设备连接。
  • SPI(Serial Peripheral Interface)和I²C(Inter-Integrated Circuit):成为嵌入式系统和微控制器中常用的串行通讯协议,用于芯片间通讯。
  • CAN(Controller Area Network):主要应用于汽车和工业自动化领域,提供高可靠性和实时性。
  • UART继续应用:虽然有了更多复杂的协议,但UART依然广泛应用于嵌入式系统、调试接口等场景。

1.5 现代化发展趋势

  • 物联网(IoT):串行通信成为物联网设备的重要数据传输方式,特别适用于低功耗和高可靠性要求的场景。
  • 无线串行通讯:蓝牙、Wi-Fi等无线技术的发展,拓展了串行通讯的应用范围,实现了更灵活的设备互联。
  • 高速串行通讯:如USB 3.x及后续版本、Thunderbolt等,提供极高的数据传输速率,支持更复杂和高带宽的应用场景。

2. UART

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)的发展历史与串行通信的发展密切相关。UART作为一种硬件模块和通信协议,广泛应用于计算机、嵌入式系统和通信设备中,用于实现异步串行数据传输。以下是UART的发展过程:

2.1 常见特性

在讨论详细发展历史之前,有必要了解一下UART的基本特性:

  • 异步通信:不需要钟信号对数据进行同步,发送和接收双方使用约定的波特率(Baud Rate)进行通信。
  • 数据格式:通常包括起始位、数据位(5-9位)、校验位和停止位。

2.2 起步阶段

20世纪初至1960年代

  • 串行通信早期发展主要集中在电报和无线电波传输上,但这些系统通常是定制化的,缺乏标准化的硬件模块。
  • 串行端口开始作为远程通信设备的一部分,使用简单的硬件逻辑实现字符传输。

2.3 标准化与应用

1960年代至1980年代

  • UART的产生:随着串行通信的普及,UART应运而生。UART模块负责处理串行数据的格式化,包括添加起始位、停止位和校验位,以及在接收端剥离这些位。较早的UART是使用TTL(Transistor-Transistor Logic)电平,设计简单、成本低。
  • RS-232标准推出:1960年代末,RS-232标准发布,定义了UART硬件的电气特性和协议,使串行通信更加规范化。

3. GPIO

GPIO(General Purpose Input/Output,通用输入输出)是一种广泛应用于嵌入式系统和计算机中的接口,用于与外部设备进行基本数字信号交换。GPIO的发展过程代表了嵌入式系统接口技术的进步,从最初的简单开关控制到现代复杂的多功能引脚,GPIO已经成为电子设备设计中不可或缺的一部分。以下是GPIO的发展过程的详细介绍:

3.1 起步阶段

20世纪70年代至80年代

  • 早期微处理器和单片机:最早的微处理器和单片机(如Intel 8080和Zilog Z80)主要通过特定的I/O端口进行数据输入输出。虽然这些I/O端口能够进行简单的输入输出操作,但通常缺乏灵活性和通用性。
  • 简单开关和指示灯控制:最早的GPIO运用主要集中在基础的开关和指示灯控制上,这些基本的数字输入输出功能可以用来直接控制设备状态。

3.2 GPIO的引入与标准化

20世纪80年代末至90年代

  • 初始GPIO功能:随着微控制器(MCU)的发展,通用输入/输出引脚(GPIO)的概念开始被引入。早期的MCU(如8051、AVR)提供简单的数字电平输入输出功能,这些引脚可以配置为输入或输出状态。
  • 引脚复用:GPIO引脚开始支持复用功能,一个引脚不仅可以作为GPIO使用,还可以配置为其他外设功能如UART、I²C、SPI等。这种设计极大地增强了引脚的通用性和灵活性。

3.3 扩展与多功能化

2000年至今

  • 高性能MCU的出现:随着高性能微控制器的推出,GPIO引脚的功能不再局限于简单的输入输出。许多现代MCU(如ARM Cortex系列)支持高级GPIO配置功能,包括:
    • 中断功能:GPIO引脚可以配置为触发中断,实现对外部事件的快速响应。
    • 上拉和下拉电阻:集成上拉和下拉电阻选择,提高了接口的电平控制能力。
    • 模拟输入/输出:一些GPIO引脚可以配置为模拟输入(ADC)或模拟输出(DAC),增强了MCU与外部模拟设备的接口能力。
  • 可编程逻辑:一些现代MCU支持可编程逻辑单元(PLU),这项功能允许用户在芯片内部自定义逻辑功能,进一步提高了GPIO的灵活性。

4. I2C

I²C(Inter-Integrated Circuit)是一种用于短距离内部通信的多主多从、半双工、同步、串行通信总线标准,由飞利浦公司(现NXP半导体)于1982年发明。它用于将集成电路(IC)连接在一起,特别是在嵌入式系统、传感器、芯片之间的低带宽通信中。以下是I²C的发展过程的详细介绍:

4.1 早期发展阶段

20世纪80年代

  • 标准的提出:I²C协议由飞利浦公司在1982年提出,旨在为芯片之间提供一种简化的通信方式,最初设计用于电视接收器中的音频和视频信号处理。
  • 基本特性:
    • 两线设计:I²C使用两根信号线(SCL - 时钟线和SDA - 数据线)实现通信,通过减少引脚数量,降低了硬件复杂性和成本。
    • 地址:每个设备都有唯一的7位地址(后期扩展为10位地址),实现多设备通信。
    • 仲裁和同步:协议设计允许通过仲裁(Arbitration)和时钟同步(Clock Synchronization)机制支持多主控(Master)设备。

4.2 扩展和标准化

20世纪90年代

  • 速度的提升:最早的I²C版本支持标准模式(Standard Mode),最大传输速率为100kbit/s。随着需求增加,I²C总线标准逐步扩展,增加了快速模式(Fast Mode),最大传输速率提高到400kbit/s。
  • 引脚配置与实现:各大半导体厂商开始在其芯片中集成I²C接口,为各种嵌入式系统和微控制器提供支持。

4.3 高速与多功能化

5. SHT40

SHT40 是 Sensirion 公司推出的环境传感器模块,主要用于测量温湿度。作为 SHT3x 系列的继任者,SHT40 具有更高的精度、更低的功耗和更小的封装尺寸。这使得它适用于广泛的应用场景,如 HVAC(暖通空调系统)、空气净化器、家用电器、汽车电子和物联网(IoT)设备。

主要特性

  • 高精度:SHT40 在标准条件下(25℃和 60%RH)具有 ±1.8% RH 的相对湿度精度和 ±0.2℃ 的温度精度。
  • 低功耗:适用于能量敏感的应用,如电池供电设备。
  • 快速响应时间:能够迅速反映环境变化。
  • 宽工作范围:-40℃ 至 +125℃ 的温度和 0%RH 至 100%RH 的湿度范围。
  • 数字输出:使用 I²C 接口,简化与微控制器的连接。
  • 工厂校准:传感器出厂前已校准,可直接使用,无需用户校准。

规格参数

  • 电源电压:1.08V 至 3.6V
  • 湿度测量范围:0%RH 至 100%RH
  • 温度测量范围:-40℃ 至 +125℃
  • 湿度精度:
    • ±1.8%RH (典型, 25℃, 60%RH)
  • 温度精度:
    • ±0.2℃ (典型, 0℃ 至 60℃)
  • 分辨率:12 位
  • 响应时间:8 秒(湿度)
  • 尺寸:1.5mm × 1.5mm × 0.5mm

引脚定义

SHT40 封装为 DFN (Dual Flat No-leads) 型,具有 4 个引脚:

  • VDD:电源输入引脚
  • GND:地引脚
  • SCL:I²C 时钟线
  • SDA:I²C 数据线

通信协议

SHT40 使用标准的 I²C 接口进行数据通信,支持标准(100kHz)和快速模式(400kHz)。以下是一些基本的 I²C 使用步骤:

  1. 设备地址:SHT40 的 I²C 地址是固定的 0x44(7 位地址)。
  2. 测量命令:发送测量命令以触发一次温湿度测量。
  3. 数据读取:在测量完成后,从传感器读取测量数据。
  4. 校验和(CRC):每次读操作后,接收到的数据包含一个校验和(CRC),用于验证数据完整性。

应用领域

  • 智能家居:如智能恒温器、空气净化器和智能加湿器。
  • HVAC 系统:用于温湿度控制和监测。
  • 汽车电子:如车内空气质量监测系统。
  • 工业自动化:环境监测和控制。
  • 物联网 (IoT):环境数据采集节点。

使用注意事项

  1. 避免污染:传感器对污染物敏感,在焊接和使用过程中,尽量避免有害化学物质的接触。
  2. 湿度漂移校正:虽然传感器已出厂校准,但长期使用中可能会有湿度漂移,建议定期进行校准。
  3. 储存条件:未使用的传感器应储存在干燥、低温的环境中,以延长使用寿命。

6. 小程序6:可上报数据的温度湿度计

6.1 功能分析

  1. 硬件组件

    • ESP32:作为主要的微控制器,提供计算和WiFi连接功能。
    • SHT40:高精度温湿度传感器,用于感知环境中的温度和湿度。
  2. 系统功能

    • 环境数据采集:
      • 使用SHT40传感器实时采集环境温度和湿度数据。
    • WiFi连接:
      • ESP32负责连接到指定的WiFi网络,以确保数据能够通过网络进行传输。
    • HTTP RESTful接口:
      • 提供HTTP RESTful接口,允许客户端通过HTTP请求获取当前的温度和湿度数据。
    • JSON数据传输:
      • 通过RESTful接口返回的数据以JSON格式进行编码,使得数据易于解析和使用。
  3. 流程概要

    1. 初始化阶段
      • 初始化ESP32和SHT40传感器。
      • ESP32连接到指定的WiFi网络。
    2. 数据采集阶段
      • 通过SHT40传感器采集温度和湿度数据。
    3. 数据传输阶段
      • 搭建HTTP服务器,提供RESTful接口。
      • 客户端通过HTTP GET请求获取传感器数据,服务器返回JSON格式的数据。

6.2 伪代码

硬件初始化

  1. 初始化ESP32
  2. 初始化SHT40
  3. 初始化I2C

WiFi连接

  1. 设置WiFi SSID和密码
  2. 连接到指定WiFi网络
  3. 检查WiFi连接状态
    • 如果未连接,重复尝试
    • 如果连接成功,继续

HTTP服务器设置

  1. 初始化HTTP服务器
  2. 定义RESTful接口
    • HTTP GET请求处理函数
      • 读取传感器数据
      • 生成JSON响应
  3. 启动HTTP服务器

主循环

  1. 保持系统运行

详细伪代码

复制代码
Begin

// 硬件初始化
Initialize ESP32
Initialize SHT40
Initialize I2C communication

// WiFi连接
Set WiFi SSID and password
Begin WiFi connection
While WiFi is not connected
    Attempt connection to WiFi
    Delay for a short period
End While

Print "Connected to WiFi"

// HTTP服务器设置
Initialize HTTP server on port 80

// 定义RESTful接口
On HTTP GET request to "/sensor"
    Read temperature from SHT40
    Read humidity from SHT40

    Create JSON response with temperature and humidity data
    Send JSON response

End On

Start HTTP server

// 主循环
While true
    // 处理其他需要的任务或保持运行
    Delay for a short period
End While

End
复制代码

伪代码阶段说明

  1. 硬件初始化:

    • 初始化ESP32和SHT40传感器,并设置I2C通信以确保设备能够通信。
  2. WiFi连接:

    • 设置WiFi的SSID和密码,并且在主循环中反复尝试连接到指定的WiFi网络。连接成功后,输出连接状态。
  3. HTTP服务器设置:

    • 创建和初始化HTTP服务器,绑定到指定端口(如80)。
    • 定义HTTP GET请求的处理函数,当访问特定路径(如/sensor)时读取传感器数据,并以JSON格式返回。
  4. 主循环:

    • 保持系统运行,并根据需要处理其他任务。这部分代码可以根据实际需求进行扩展。

6.3 功能实现

7. 小练习:结合ULTRASONIC-i2C模块,监控用户距离M5Stack的距离,从而打开或关闭屏幕显示信息

 

posted @   庞兴庆  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示