嵌入式智能硬件开发
PIoT 课程

嵌入式智能
硬件开发

课程定位
课程定位

一块智能家居实验板
贯穿电路设计到综合系统

书稿第 1–9 章目录;第 2 章 §2.6 图2-20 集成电路板渲染图(局部)

课程定位 · Arduino 开源开发生态 Arduino 开源开发生态 硬件层 标准化微控制器开发板 统一的 I/O 接口定义 软件层 集成开发环境(IDE) 硬件抽象层(HAL) 丰富的功能库 社区层 开源项目 技术文档 解决方案

书稿第 1 章 §1.1.1

课程定位 · 能力递进:电路设计到综合系统 电路设计 第2章 EDA 电路集成设计 编程规范 第3章 三层架构设计规范 单系统开发 第4–8章 五个智能家居子系统 综合系统 第9章 智能家居综合系统

书稿第 1–9 章目录

图2-5 电路原理图
四位数码驱动芯片 温湿度传感器 舵机(排针) RFID无线射频模块 超声波模块
(排针)
四位数码管 定时按键开关 风扇按键开关 电位器 电机驱动模块 ULN2003步进电机驱动 ArduinoMEGA2560mini主控模块 按键矩阵 ECB02H2蓝牙模块 IIC上拉电阻 OLED显示屏 火焰传感器 蜂鸣器 人体感应传感器 RGB灯 红外接收器
学习目标 01

电路与 PCB

  • 读懂实验板电路第 2 章 图2-5 电路原理图
  • 完成单层 PCB 布线第 4–9 章 x.3 电路 EDA 设计
  • 做二维 / 三维仿真

书稿第 2 章 §2.1;图2-5(模块名据原图重排)

学习目标 02 · 按三层架构组织嵌入式程序 驱动模块 传感器 传感器 传感器 业务层 调用中间层函数组合实现功能 实现功能1 实现功能2 …… 实现功能N 中间层 中间子层 自定义函数 功能编程 *a.h 函数1 …… *a.cpp 函数2 函数N *b.h 函数1 …… *b.cpp 函数2 函数N LED库 函数1 …… LED库 函数2 函数N …… 接入层 导入*a.h头文件 初始化变量 导入*b.h头文件 定义变量 …… 启用库函数 导入*n.h头文件 初始化… 据教材第 3 章图 1 重绘

书稿第 3 章 §3.1

学习目标 03 · 多个模块集成为完整系统 系统启动 初始化各模块 初始化 串口 9600 bps 初始化 蓝牙 模块 初始化 温湿度 传感器 初始化 火焰 传感器 初始化 电机 驱动 初始化 OLED 显示屏 初始化 人体 传感器 初始化 四位 数码管 初始化 舵机 初始化 超声波 传感器 初始化 按键 初始化 红外 接收 传感器 初始化 LED灯 初始化 RFID 感应 模块 初始化 蜂鸣器 初始化 电位器 进入主循环 传感器数据采集 获取温度值 获取湿度值 获取人体传感器状态 获取火焰传感器状态 显示温/湿/人体/火焰状态 温度/火焰报警控制 温度≥30℃ 或 有火情? 循环10次执行报警动作 关闭绿灯 闪烁红灯 蜂鸣器响 打开风扇 循环结束关闭风扇 否 是 点亮绿灯 超声波检测模块 inChar == 'a' ? 执行超声波扫描模式 是 否 inChar == 'a' ? 跳过超声波模块逻辑 否 是 电位器控制舵机 获取超声波距离 数码管显示距离 智能风扇控制 定时控制风扇 获取按键按下次数 开启红外接收器 处理风扇挡位 Ctrl_val的值? 0 关闭风扇 1 一档风速 2 二档风速 3 三档风扇 蓝牙控制模块 获取蓝牙单个字符 Bluetooh_ DataChar的值? 不执行任务 0 LED灯模式一 1 LED灯模式二 2 LED灯模式三 3 LED灯模式四 4 LED灯模式五 5 步进电机反转 a 步进电机正转 b RFID门禁识别控制 NuidPICC==ID_IN? 是 步进电机开门 否 NuidPICC== Monitor_ID? 是 修改密码 否 跳过RFID权限验证 输入密码控制门禁开关 系统结束 据教材图 9-5 重绘

书稿第 9 章 §9.4

项目和章节 · 九章一览 打基础 第1章 Arduino 开发生态 第2章 EDA 电路集成设计 第3章 三层架构设计规范 做单系统 第4章 声光控制系统 第5章 火焰报警系统 第6章 超声波检测系统 第7章 智能遥控风扇系统 第8章 RFID 门禁系统 做综合系统 第9章 智能家居综合系统

书稿第 1–9 章

第2章 EDA 电路集成设计
第2章 EDA 电路集成设计

从原理图到集成电路板

书稿第 2 章 §2.6;图2-19 集成电路板 PCB 布局(局部)

第3章 三层架构 · 接入层、中间层、业务层 src / main.cpp 1 #include "Motor_L911H.h" 2 3 4 #include <Arduino.h> 5 6 7 void setup() { 8 9 10 Serial.begin(9600); 11 12 13 motorInit(); 14 15 16 } 17 18 19 void loop() { 20 21 22 motorSpeed(100, 100); 23 24 25 } lib / Motor.h 1 #ifndef _MOTOR_ 2 #define _MOTOR_ 3 4 5 #include <Arduino.h> 6 7 8 #define RIGHT_PWM_1 10 9 10 #define RIGHT_PWM_2 9 11 12 #define LEFT_PWM_1 6 13 14 #define LEFT_PWM_2 5 15 16 17 void motor(); 18 19 20 void motorSpeed(int val1, int val2); 21 22 23 #endif lib / Motor.cpp 1 #include "Motor.h" 2 void motorInit(void) { 3 pinMode(LEFT_PWM_1, OUTPUT); 4 pinMode(LEFT_PWM_2, OUTPUT); 5 pinMode(RIGHT_PWM_1, OUTPUT); 6 pinMode(RIGHT_PWM_2, OUTPUT); 7 } 8 void motorSpeed(int leftSpeed, int rightSpeed) { 9 if (leftSpeed > 0) { 10 analogWrite(LEFT_PWM_1, leftSpeed); 11 digitalWrite(LEFT_PWM_2, LOW); 12 } else { 13 leftSpeed = abs(leftSpeed); 14 digitalWrite(LEFT_PWM_1, LOW); 15 analogWrite(LEFT_PWM_2, leftSpeed); 16 } 17 if (rightSpeed > 0) { 18 analogWrite(RIGHT_PWM_1, rightSpeed); 19 digitalWrite(RIGHT_PWM_2, LOW); 20 } else { 21 rightSpeed = abs(rightSpeed); 22 digitalWrite(RIGHT_PWM_1, LOW); 23 analogWrite(RIGHT_PWM_2, rightSpeed); 24 } 25 } 接 入 层 业 务 层 中间层 据教材第 3 章图 2 重绘

书稿第 3 章 §3.2

声光控制系统
第 4 章

声光控制系统

  • 声音触发灯光与音效
  • 按键循环切换声光模式

书稿第 4 章 §4.1.1;声光控制系统渲染图

第4章 声光控制系统 · 硬件技术架构 执行器模块 PC调试终端 引脚 蜂鸣器 PWM D9 LED灯 数字输出 D33-D37 按键 数字输出 D2 串口 TX/RX 串口 Arduino开发板 主控芯片 MEGA2560 据 §4 正文与实验板重绘

书稿第 4 章 §4.1.3;据 §4 正文与实验板重绘

火焰报警系统
第 5 章

火焰报警系统

  • 检测到火焰或温度超 30℃
  • 蜂鸣器与 RGB 红灯报警
  • OLED 显示状态

书稿第 5 章 §5.1.1、§5.3.3;图5-7(PCB三维仿真图)

超声波检测系统
第 6 章

超声波检测系统

  • 舵机 0–180° 扫描
  • 超声波测距
  • 四位数码管显示距离

书稿第 6 章 §6.1.1;超声波检测系统渲染图

智能遥控风扇
第 7 章

智能遥控风扇

  • 按键或红外遥控切换挡位
  • 支持定时

书稿第 7 章 §7.1.1;智能遥控风扇系统实验板渲染图

第7章 智能遥控风扇 · 按键或红外遥控切换挡位 执行器模块 传感器模块 按键S1 数字输出 直流电机 PWM 按键S2 模拟输入 红外传感器 模拟输入 数字引脚 D2,D6-D7 模拟引脚 A8,A6 Arduino开发板 串口 TX/RX 串口 PC调试终端 据教材图 7-1 重绘

书稿第 7 章 §7.1.3

RFID 门禁
第 8 章

RFID 门禁

  • 刷卡或输入 6 位密码
  • 验证通过自动开门5 秒后自动关门

书稿第 8 章 §8.1.1;RFID 门禁系统实验板渲染图

第8章 RFID 门禁 · 刷卡或输入密码,步进电机开门 Arduino Mega 2560 RFID 模块 SPI 信号 · 卡号 按键矩阵 行列扫描 4×4 中断按键 外部中断 蜂鸣器 提示音 D22–D25 ULN2003A 驱动芯片 四相 IN1–IN4 28BYJ 步进电机 门锁控制(§8.1.1) 22–25 号引脚输出步进信号 电机旋转 90° 开锁 延时 5 秒自动关锁 步进电机(28BYJ + ULN2003A)

书稿第 8 章 §8.1.1、§8.1.4;据教材图 8-3 重绘(信号名按 §8.1.4 正文修订)

智能家居综合系统
渲染图
第 9 章

智能家居综合系统

  • 五大模块整合到一块板
  • 环境监测 · 安全监控
  • 智能门禁 · 智能风扇 · 蓝牙控制

书稿第 9 章 §9.1.1;智能家居综合系统实验板渲染图(图2-20 局部)

第9章 智能家居综合系统 · 五大模块整合到一块板 执行器模块 传感器模块 数字引脚 模拟引脚 蜂鸣器 PWM D9 LED 灯 数字输出 D33-D37 S1 按键 数字输出 D2 S2 按键 模拟输入 A8 超声波 数字输出 D3-D4 按键 矩阵 数字输出 D18,D40-D47 DHT11 温湿度 传感器 单总线 火焰 传感器 模拟输入 A4 A7 人体 传感器 模拟输入 A5 SG90 舵机 模拟输入 A9 红外 接收 模拟输入 A6 Arduino开发板 主控芯片 ATmega2560 串口 TX/RX I2C接口 SDA/SCL 串口 RX/TX 串口 PC调试终端 显示模块 四位数码管 OLED显示屏 128x64 I2C I2C ECB02H2 蓝牙模块 通信模块 UART 据教材图 9-1 重绘

书稿第 9 章 §9.1.1、§9.1.3

典型实训 · 每章同一闭环(第4–9章) 开发要求 书稿 x.1 节 01 硬件控制原理 书稿 x.2 节 02 电路 EDA 设计 书稿 x.3 节 03 系统设计 书稿 x.4 节 04 嵌入式程序设计 书稿 x.5 节 05

书稿第 4–9 章 x.1–x.5

成果一

亲手完成 PCB 布线与仿真

2D二维仿真单层布线、GND 铺铜
3D三维仿真

书稿第 5 章 §5.3;图5-7(PCB 二维 / 三维仿真图,局部)

成果二 · 模块化程序:库函数调用关系 src / main.cpp 1 #include "Motor_L911H.h" 2 3 4 #include <Arduino.h> 5 6 7 void setup() { 8 9 10 Serial.begin(9600); 11 12 13 motorInit(); 14 15 16 } 17 18 19 void loop() { 20 21 22 motorSpeed(100, 100); 23 24 25 } lib / Motor.h 1 #ifndef _MOTOR_ 2 #define _MOTOR_ 3 4 5 #include <Arduino.h> 6 7 8 #define RIGHT_PWM_1 10 9 10 #define RIGHT_PWM_2 9 11 12 #define LEFT_PWM_1 6 13 14 #define LEFT_PWM_2 5 15 16 17 void motor(); 18 19 20 void motorSpeed(int val1, int val2); 21 22 23 #endif lib / Motor.cpp 1 #include "Motor.h" 2 void motorInit(void) { 3 pinMode(LEFT_PWM_1, OUTPUT); 4 pinMode(LEFT_PWM_2, OUTPUT); 5 pinMode(RIGHT_PWM_1, OUTPUT); 6 pinMode(RIGHT_PWM_2, OUTPUT); 7 } 8 void motorSpeed(int leftSpeed, int rightSpeed) { 9 if (leftSpeed > 0) { 10 analogWrite(LEFT_PWM_1, leftSpeed); 11 digitalWrite(LEFT_PWM_2, LOW); 12 } else { 13 leftSpeed = abs(leftSpeed); 14 digitalWrite(LEFT_PWM_1, LOW); 15 analogWrite(LEFT_PWM_2, leftSpeed); 16 } 17 if (rightSpeed > 0) { 18 analogWrite(RIGHT_PWM_1, rightSpeed); 19 digitalWrite(RIGHT_PWM_2, LOW); 20 } else { 21 rightSpeed = abs(rightSpeed); 22 digitalWrite(RIGHT_PWM_1, LOW); 23 analogWrite(RIGHT_PWM_2, rightSpeed); 24 } 25 } 接 入 层 业 务 层 中间层 据教材第 3 章图 5 重绘

书稿第 3 章 §3.3.3

成果三 · 综合系统:一块板多系统联动 系统启动 初始化各模块 初始化 串口 9600 bps 初始化 蓝牙 模块 初始化 温湿度 传感器 初始化 火焰 传感器 初始化 电机 驱动 初始化 OLED 显示屏 初始化 人体 传感器 初始化 四位 数码管 初始化 舵机 初始化 超声波 传感器 初始化 按键 初始化 红外 接收 传感器 初始化 LED灯 初始化 RFID 感应 模块 初始化 蜂鸣器 初始化 电位器 进入主循环 传感器数据采集 获取温度值 获取湿度值 获取人体传感器状态 获取火焰传感器状态 显示温/湿/人体/火焰状态 温度/火焰报警控制 温度≥30℃ 或 有火情? 循环10次执行报警动作 关闭绿灯 闪烁红灯 蜂鸣器响 打开风扇 循环结束关闭风扇 否 是 点亮绿灯 超声波检测模块 inChar == 'a' ? 执行超声波扫描模式 是 否 inChar == 'a' ? 跳过超声波模块逻辑 否 是 电位器控制舵机 获取超声波距离 数码管显示距离 智能风扇控制 定时控制风扇 获取按键按下次数 开启红外接收器 处理风扇挡位 Ctrl_val的值? 0 关闭风扇 1 一档风速 2 二档风速 3 三档风扇 蓝牙控制模块 获取蓝牙单个字符 Bluetooh_ DataChar的值? 不执行任务 0 LED灯模式一 1 LED灯模式二 2 LED灯模式三 3 LED灯模式四 4 LED灯模式五 5 步进电机反转 a 步进电机正转 b RFID门禁识别控制 NuidPICC==ID_IN? 是 步进电机开门 否 NuidPICC== Monitor_ID? 是 修改密码 否 跳过RFID权限验证 输入密码控制门禁开关 系统结束 据教材图 9-5 重绘

书稿第 9 章 §9.4

配套设备

以 MEGA2560 mini 为核心

01集成实验板局部:主控、蜂鸣器、LED 灯
02MEGA2560 mini 主控

书稿第 2 章 §2.1.2、§2.6;图2-20、图2-1

配套设备

板载模块,一板集成

01功能按键书稿图2-13
02超声波模块书稿图2-14
03红外接收器书稿图2-15
04SR602 人体传感器书稿图2-16
05蜂鸣器书稿图2-17
06火焰传感器书稿图2-18
07蓝牙模块书稿图2-18
08步进电机驱动书稿图2-18
09温湿度传感器书稿图2-18
10舵机模块书稿图2-18
11RFID 射频模块书稿图2-18

书稿第 2 章 §2.2 图2-13~图2-18

配套平台 · 开发工具链 国产 EDA 软件 电路原理图 单层 PCB 布线 PCB 二维与三维仿真 Arduino IDE 编写程序 编译 上传到开发板 先画板,后编程

书稿第 2 章;第 9 章 §9.3

PIoT

谢谢观看

广西感知物联科技有限公司 · PIoT