IoT 基础知识
Arduino 介绍
Arduino 是一个基于易用硬件和软件的原型平台(开源)。它包由可编程的电路板(简称微控制器)和称为 Arduino IDE(集成开发环境)的现成软件组成,用于将计算机代码写入并上传到物理板
硬件部分:Arduino 开发板
Arduino 开发板是其核心,它是一个物理的电路板,上面搭载了一个微控制器(通常是 Atmel AVR 系列或更现代的 ESP32 等)。这个微控制器就像一块小型计算机,可以根据你编写的程序来控制各种电子元件。
-
主要特点
-
常见的 Arduino 板型号:
Arduino Uno:
最流行和经典的型号,非常适合初学者。
Arduino Nano:
尺寸更小,适合空间受限的项目。
Arduino Mega:
拥有更多的引脚和内存,适合更复杂的项目。
Arduino ESP32/ESP8266 系列:
内置 Wi-Fi 和/或蓝牙功能,适合物联网(IoT)项目。
软件部分:Arduino IDE (Integrated Development Environment)
Arduino IDE 是一个免费的桌面应用程序,用于编写、编译和上传代码到 Arduino 板。
- 主要特点:
简化编程语言:
Arduino 使用一种基于 C/C++的简化版编程语言,称为 Arduino 语言(或称为“sketch”)。它封装了许多底层复杂的微控制器操作,使得编程更加直观和容易上手。
代码编辑器:
提供代码编辑功能,支持语法高亮等。
编译和上传:
可以将编写的代码编译成机器码,并通过 USB 上传到 Arduino 板的微控制器中。
串口监视器:
用于与 Arduino 板进行串行通信,方便调试和查看数据。
库支持:
Arduino 拥有庞大的社区和丰富的库(libraries),这些库提供了预编写好的代码,可以轻松控制各种传感器、显示器、通信模块等。
Arduino 使用示例:点亮 LED 灯 (Blink)
这是 Arduino 的Hello World
程序,也是最基础的入门示例。
- 所需硬件:
- Arduino Uno 开发板
- USB 数据线
- LED 灯(任意颜色)
- 220 欧姆电阻
- 面包板 (可选,方便连接)
- 跳线 (杜邦线)
- 接线步骤:
-
- 将 Arduino Uno 通过 USB 数据线连接到电脑
-
- 将 220 欧姆电阻的一端连接到 Arduino Uno 的数字引脚 D13
-
- 将 LED 灯的长引脚(正极,通常较长)连接到电阻的另一端
-
- 将 LED 灯的短引脚(负极)连接到 Arduino Uno 的 GND (地) 引脚
代码 (Sketch):
打开 Arduino IDE,复制以下代码:
// setup() 函数在Arduino板上电或复位时只运行一次
void setup() {
// 初始化数字引脚 13 为输出模式。
// Arduino Uno 板载一个LED连接到数字引脚 13
pinMode(13, OUTPUT);
}
// loop() 函数会一直重复运行,直到板子断电
void loop() {
digitalWrite(13, HIGH); // 打开LED (将高电平发送到引脚 13)
delay(1000); // 等待一秒 (1000 毫秒)
digitalWrite(13, LOW); // 关闭LED (将低电平发送到引脚 13)
delay(1000); // 等待一秒
}
代码解释:
void setup()
: 这个函数只在 Arduino 板启动或复位时执行一次。
pinMode(13, OUTPUT);
: 这行代码设置数字引脚 13 为输出模式。这意味着我们可以通过代码控制这个引脚的电压高低来控制连接到它的设备。
void loop()
: 这个函数会在setup()
函数执行完毕后,无限循环执行。
digitalWrite(13, HIGH);
: 将引脚 13 设置为高电平(大约 5V)。当 LED 连接到引脚 13 和 GND 时,高电平会点亮 LED。
delay(1000);
: 暂停程序执行 1000 毫秒,即 1 秒。
digitalWrite(13, LOW);
: 将引脚 13 设置为低电平(0V)。这会关闭 LED。
delay(1000);
: 再次暂停 1 秒。
上传代码:
- 在 Arduino IDE 中,选择正确的 Arduino 板型号:
工具(Tools)
-> 开发板(Board)
-> Arduino AVR Boards
-> Arduino Uno
。
- 选择正确的串口:
工具(Tools)
-> 端口(Port)
。选择与你的 Arduino 板连接的串口(通常会显示 Arduino Uno)。
- 点击“上传”按钮(向右的箭头图标)将代码编译并上传到 Arduino 板。
上传成功后,你会看到 Arduino 板上的 LED(以及你连接的外部 LED)以每秒亮灭一次的频率闪烁。
继电器
继电器的工作原理
大多数继电器(尤其是传统的机电式继电器)的工作原理都基于电磁感应。它主要由以下几个部分组成:
- 线圈(Coil):当有电流通过时,线圈会产生电磁场
- 铁芯(Iron Core):通常由软铁制成,在线圈通电后被磁化
- 衔铁(Armature):是继电器的可动部分,铰接在磁轭上,并与触点机械连接
- 触点(Contacts):分为动触点和静触点。根据继电器未通电时的状态,触点分为
常开(NO,Normally Open)
和常闭(NC,Normally Closed)
两种
- 常开触点(NO):继电器线圈未通电时是断开的,通电后闭合
- 常闭触点(NC):继电器线圈未通电时是闭合的,通电后断开
- 弹簧(Spring):通常用于使衔铁在未通电时回到初始位置
工作过程:
- 线圈通电:当控制电路有电流通过继电器的线圈时,线圈会产生一个电磁场,将铁芯磁化
- 衔铁吸合:被磁化的铁芯会吸引衔铁,克服弹簧的拉力,使衔铁移动
- 触点切换:衔铁的移动会带动与其连接的触点,使常开触点闭合,常闭触点断开,从而控制被控制电路的通断
- 线圈断电:当控制电路的电流中断时,电磁场的吸引力消失
- 衔铁复位:在弹簧的作用下,衔铁返回初始位置,触点也恢复到未通电时的状态(常开触点断开,常闭触点闭合)
继电器(Relay)相关基础
DI (Digital Input)
数字输入,接收离散的开/关信号,了解设备或环境的状态
DO (Digital Output)
数字输出,发送离散的开/关信号,控制设备的启动或停止
AI (Analog Input)
模拟输入,接收连续变化的信号,测量物理量的数值
COM (Common)
公共端/常规端
NO (Normally Open)
常开端,未激活时断开,激活时闭合,NO 端子在继电器未激活(即没有通电或线圈没有被驱动)时,与 COM 端子是断开的
NC (Normally Closed)
常闭端,NC 端子在继电器未激活时,与 COM 端子是连接的,形成通路
- 按工作原理
- 机电式继电器(Electromechanical Relay, EMR):通过电磁力驱动机械触点进行切换。这是最传统的继电器类型
- 固态继电器(Solid State Relay, SSR):没有机械可动部件,内部由半导体器件(如晶闸管、MOSFET)构成,通过电子方式进行信号切换
- 光继电器:属于固态继电器的一种,通过光信号进行输入和输出的隔离及控制
继电器的作用:
- 用小电流控制大电流
- 实现远程控制
- 电气隔离
- 多路控制等
定位模块 GNSS
GNSS(全球导航卫星系统,Global Navigation Satellite System)
是一种通过卫星信号为全球用户提供定位、导航和授时服务的系统。它由多个卫星星座、地面监控站和用户接收设备组成,能够实时确定用户在地球上的位置、速度和时间信息。
常见定位系统包括:
- GPS(美国):最早且应用最广的系统,24 颗卫星。
- GLONASS(俄罗斯):24 颗卫星,侧重高纬度地区覆盖。
- Galileo(欧盟):民用高精度系统,30 颗卫星。
- 北斗(中国):分区域(北斗二号)和全球(北斗三号)服务,55 颗卫星。
RS-232
RS-232 是一种历史悠久且广泛使用的串行通信标准,主要用于在两个设备之间进行数据传输。它规定了连接电缆、机械特性、电气特性、信号功能以及数据发送过程。
主要特性:
- 信号电平:
- 逻辑 “1” (Mark): 负电压,通常在 -3V 到 -15V 之间(发送端为 -5V 到 -15V)。
- 逻辑 “0” (Space): 正电压,通常在 +3V 到 +15V 之间(发送端为 +5V 到 +15V)。
- 连接器:
- 最常见的是 D-SUB 25 针 和 D-SUB 9 针 连接器。尽管标准最初规定了 25 针,但现在 9 针连接器在 PC 上更为普遍
- 信号线: RS-232 定义了多种信号线,其中最常用的包括:
- TXD (Transmit Data): 发送数据。
- RXD (Receive Data): 接收数据。
- GND (Ground): 地线,所有信号的公共参考。
- RTS (Request To Send): 请求发送,DTE 通知 DCE 准备发送数据。
- CTS (Clear To Send): 清除发送,DCE 通知 DTE 可以发送数据。
- DTR (Data Terminal Ready): 数据终端就绪,DTE 通知 DCE 自身已准备好通信。
- DSR (Data Set Ready): 数据设备就绪,DCE 通知 DTE 自身已准备好通信。
- DCD (Data Carrier Detect): 数据载波检测,调制解调器通知电脑已检测到载波。
- RI (Ring Indicator): 响铃指示,调制解调器通知电脑有电话呼入。
- 传输距离和速率:
- 标准规定传输距离最长约为 15 米(约 50 英尺),传输速率最高可达 20 Kbps。在短距离内,理论上可以达到更高的速度(例如 1 Mbps),但实际应用中通常较低。
- 线缆电容是影响传输距离的重要因素,最大线缆电容为 2500pF。
- 数据格式(异步通信):
- 通常使用异步通信,即没有独立的时钟信号。每个数据字节都包含一个 起始位 (Start bit)、数据位(通常是 7 或 8 位)、校验位 (Parity bit)(可选)和 停止位 (Stop bit)。
- 应用场景:
- 工业控制: 连接 PLC(可编程逻辑控制器)、HMI(人机界面)、CNC 机床、伺服控制器、传感器等工业设备。
- 传统设备连接: 许多旧的 PC 外设(如鼠标、调制解调器、打印机)仍使用 RS-232 接口。
- 嵌入式系统: 用于调试、配置和数据传输。
- 科学仪器: 连接各种测量和控制仪器。
- 智能家居系统: 某些自动化控制系统中仍可能使用 RS-232 或 RS-485 进行数据传输。
- 转换器: 可以通过 RS-232 转 USB 转换器将旧设备连接到现代计算机。
- RS-232 的局限性:
- 传输距离短: 由于采用非平衡信号传输,容易受噪声干扰,限制了传输距离。
- 传输速率低: 相对于现代接口,传输速度较慢。
- 点对点通信: 只能连接两个设备,不适合多点网络。
- 抗干扰能力弱: 容易受到地线电位差和外部电磁干扰的影响。
RS-485
RS485 (也称为 TIA/EIA-485) 是一种串行通信标准,定义了驱动器和接收器的电气特性。它采用平衡传输和差分接收的方式,将数据信号分解为两根线(通常称为 A 线和 B 线)上的电压差进行传输。这种传输方式使得 RS485 具有出色的抗干扰能力和长距离传输能力。
注意特点:
- 抗干扰能力强: RS485 采用差分信号传输,能够有效抑制共模干扰,使其在电气噪声较大的工业环境中也能保持可靠通信。
- 传输距离远: 相比 RS232 等其他串行通信方式,RS485 支持更长的传输距离,最远可达 1200 米。
- 多点通信: RS485 支持多点总线拓扑结构,允许在一个通信总线上连接多个设备(通常最多 32 个驱动器和 32 个接收器,通过中继器可以扩展更多)。这简化了布线,节省了成本。
- 通信速率较高: RS485 支持最高 10Mbps 的数据传输速率,能够满足大多数工业应用的数据传输需求。
- 兼容性好: RS485 可以轻松与 TTL 电平兼容,方便与各种微控制器和处理器连接。
- 常用协议支持: RS485 常作为 Modbus RTU 等工业通信协议的物理层,实现设备之间的数据交换。
- 半双工或全双工: RS485 通常采用半双工模式(数据单向传输,设备轮流发送和接收),也可以通过增加额外的线对实现全双工通信(同时双向传输)。
- 需要终端电阻: 为了避免信号反射,RS485 总线的两端通常需要连接终端电阻(一般为 120 欧姆)。
在物联网应用中,RS485 设备通常通过以下方式实现数据通信和云端连接:
- RS485 传感器/设备: 这些设备直接通过 RS485 接口连接到总线,例如 RS485 温湿度传感器、RS485 Modbus 继电器控制板、工业 IO 控制板等。
- RS485 转物联网网关: 由于 RS485 是串行通信,无法直接连接到互联网。因此,物联网 RS485 设备通常需要通过一个网关(也称为 DTU,数据传输单元或串口服务器)进行协议转换和数据转发。
- 协议转换: 网关将 RS485 上的 Modbus RTU 等协议数据转换为 Modbus TCP、MQTT 等物联网常用的网络协议。
- 数据转发: 网关通过以太网、Wi-Fi、4G/5G、NB-IoT、LoRa 等无线或有线方式将数据传输到云端物联网平台。
- 云端物联网平台: 物联网平台接收来自网关的数据,进行存储、分析、可视化展示,并支持远程控制 RS485 设备。