当前课程知识点:ARM微控制器与嵌入式系统 >  第五章 ARM微控制器的各种外设 >  E6 挑战实验 >  E6 挑战实验

返回《ARM微控制器与嵌入式系统》慕课在线视频课程列表

E6 挑战实验在线视频

E6 挑战实验

下一节:6.1 嵌入式系统的接口与设计

返回《ARM微控制器与嵌入式系统》慕课在线视频列表

E6 挑战实验课程教案、知识点、字幕

各位同学大家好

我是清华大学工程物理系的曾鸣老师

欢迎大家继续回到我们

ARM微控制器与嵌入式系统MOOC课堂

那么这个单元呢

是我自己非常喜欢的一个单元

我叫做挑战性实验

这个单元在我们线上课程里

很难来考核大家

但是在我们过去8年10年

在清华开课的过程当中

这个单元是大家最后拿到学分

最最重要的一个单元

就是用一个挑战性的实验

让大家自己来融会贯通

完成一个创意的设计

那么我最早说过我们这个课呢

在清华开设的时候

一般不会考试

而是采用一种开放式设计的方式来考核

那么这种考核有规定动作有选定动作

如果我们在学校里的考核

老师会给出四个题目

大家可以选择当中的N个题目来完成

当然我会说最最最低要求

是要大于等于1道题

那么我们在平分的时候这四个任务

任务一任务二加起来

等于任务三或者等于任务四

然后鼓励大家进行自由的原创

那么对于这每一个任务的完成

会从它的工作量

会从它的技术含量

以及它的那个创意

那个想法棒不棒

来进行一个综合的评价

那么我给大家来看一看

老师规定动作的任务是哪些

再给大家提示提示

看看大家还能有什么样的想法

需要特别说明的是呢

在清华开设这样一门课程的时候

我会鼓励大家用自己的代码

自己的想法来设计实现这些功能

而且同样重要的是

我的考核除了呈现代码

呈现作品之外

还会要求每个同学到台前

来给大家讲一讲自己的设计

特别讲一讲自己设计的得意之处

也给大家讲一讲自己调试当中

最最郁闷和土鳖的那些情况

一个优秀的工程设计人员

不仅要善于设计

还要善于沟通和表达

把你的妙处给讲出来 对吧

那来看看我们的任务

任务是越来越难和越来越有意思的

第一个任务非常的简单

就是完成一个反映速度测试仪

那么它的基本模式就是说你数码管上

或者OLED管上显示一个倒计时

然后倒计时一结束

在随机的任何时候

突然量一个灯或者给一个信号

那么测试人员看到信号后按键

那么测试这个信号

给出到人按键之间的时间间隔

然后加以记录

并且在你的数码管或者OLED屏上加以显示

说你的反映时间是多少

然后你可以通过长按键重新开始 对吧

那么这样一个小小的任务

要想做漂亮做干净

我给大家一个小提示

比如说你要杜绝出现抢跑的情况

比如说提示信息还没给

我按了一下

就是抢跑 对不对

然后你要防止作弊

其实有很多同学都是倒计时3、2、1亮灯

那玩的次数多了就会知道

从3、2、1自己心里开始准备

直接按

那个反映时间就会很短

所以从倒计时结束到什么时候亮灯

中间应该是一个随机数

大家想想是不是这个道理

然后还有一点

我们人的反映时间的测试

大家应该有一个预估

大家中学可能学过膝跳反射

敲一下你的膝盖它会弹起

这中间是有一个时间间隔的

人的反应时间一般在

几十毫秒到百毫秒这种量级

所以注意设计你的定时模块

以合适的精度来测量这样一个时间间隔

既不能太精细

位数太多

也不能太粗略

任何人测上去都是一位或者两位数 对吧

所以这些提示完了大家会发现

这么一个简单的任务

要做的漂漂亮亮 特别好玩

其实还是有难度的

当然我还见过有同学把它做成彩灯的

OLED显示屏显示图案的

各种各样的加强版 增强版 花式的 对吧

这都是大家可以自由创意的

那么第二个任务呢

就更Common一些

就是大家来做一个功能完备的打盹闹钟

那么这个闹钟要求呢

如果计时精度到0.01秒

然后可以设置打盹的时间

比如说是0到30分钟

然后开始时这个钟应该是停止的

然后连续按键

它可以计时或者是继续重新计时

或者停止计时

那么如果闹铃完了以后

我们还可以通过拍击几个按键

让它进行打盹

比如再睡5分钟是吧

很多同学都很喜欢这个功能

然后对于这样一个闹钟的闹的方式

可以是简单的蜂鸣

可以是音乐

我们都学过PWM音乐 对不对

可以是音乐跟闪烁图像组合

大家可以自由的设计

那么如何把这样一种人机交互的操作

做的相对功能完善

最最简单的小到一个按键是否做防抖

大到一些功能在逻辑上是否会锁死

你可能学会画一画

这个人际交互这些按键之间的关系图

所以任务一任务二都相对简单

但是把它们做起来还是有一些难度的

任务三

开始好玩一点是个小游戏

我们可以做一个手指的

type type跳舞机小游戏 对不对

就像这张图所示

用两个指头变成两只腿

所以有很多同学我给大家之前展示过

用我们上面的数码管也行

用OLED显示屏也行

归根结底就是在屏幕上

随机产生一些特殊的符号

可以是上下左右

也可以是音符

然后随着它的持续

我们要把对应的这些符号给正确的按下去

那么要把这样一个功能做完善

LED产生的彩色灯光效果可以有

PWM产生的音乐当然也可以有

那么难点是我们如何产生

跟音乐有一定关联性的序列

而这个序列又有一定的随机性

这就涉及到了大家开动脑筋和设计算法

所以如果能够做成这样一个小游戏

我相信也是一个非常酷炫的综合设计

那么再给大家提示就这个随机数

既可以用我们在实验里

教会大家的方式

现在大家有了ADC

也可以用ADC采集采集环境光

采集采集运动传感器的值

然后来看一看

把这些值如何结合用起来

第四个任务就是做一个简易的计步器

那么这种建议的计步器呢

我们从加速传感器

可以不同获得当前加速度的值

但是我们可以通过连续的获得

或者是大家再读读芯片手册

给加速度传感器

设个阈值 设个中断

可以想办法让它实现计数功能

来数我们到底走了多少步

这个功能大家可以实现

然后如果有兴趣的同学

可以进一步拓展两到三个不同的功能

比如说设定目标的步数

步数走完了可以响音乐

告诉你今天任务完成 对不对

这很多同学都会尝试的

那么比如说我们可以设定一个

特殊的加速度的阈值或者测量

来识别出了走路以外有没有摔倒

又比如说我们知道了步数

是不是还可以做一点复杂的算法

让人能够输入一下

当前这个人的身高很体重

用一种比较智能的算法

把步数帮你算成消耗的卡路里

来显示在我们的小屏幕上

等等这样一系列的综合运动

都是大家可以加以设计的

那么老师给了这么四个选做的题目

如果在清华的课程

我会要求大家选做大于等于一个题

那么1和2合起来算一道题

3和4是单独的一道题

但是我更加期待和鼓励大家的呢

是把嵌入式系统

没有限制 自由发挥这一点给用足

我们手上有很多已有的

或者没有的设备

我们的板子上有加速度传感器

有OLED显示屏

有PWM音乐

有温度传感器

有光线传感器

而且大家会发现

即使是老师给的这四个任务

也是我们前面历次实验内容

函数封装的组合体

如果大家真的扎扎实实做完了

每一个基础实验

你其实手上已经拥有了一大堆函数

从显示到点灯

从音乐到采集物理量

你对它进行合理的组合

用更多心思关注你main函数如何编写上

一定能做出你的应用

而如果这些还不够你用

像我们刚才提到加速度传感器

OLED显示屏

我们仍然可以扩充无线电通讯模块

我们可以扩充手机的GSM短信模块

我们可以扩充进一步的湿度传感器

乃至各种各样的物理量传感器

而且我们还可以扩充GPS模块

那么这些对于嵌入式系统来讲

这就是它最大的乐趣之所在

你可以自由的使用我们板子上

扩充引脚加以扩充

用杜邦线用软线进行连接

来实现你要的功能

比如说曾老师的课上

就有两个女孩子用无线电通讯

实现了一个手持的

用微控制器实现的聊天机

在隔着几百米一公里的范围内

彼此可以用无线电发消息

那么再比方说在第一次课上

我给大家看过一段

在这个板子上

把一个超级玛丽小游戏写出来的同学

那么他是灵活使用了

我们前面实验用到的

OLED显示屏 按键 中断 音乐的播放

其实在后台还用到了时钟中断

对于这些任务之间的一些调配

那么看完这些小游戏

我们其实还有很多可以做的

比如在第一次实验课我还给大家举例过

有人上完我们的课程

做了一个检查血氧浓度仪的智能腕表

也许在那个时候你还不知道怎么做

但是在此时此刻

特别是学完了上一个章节的

比如说ADC光线传感器这些以后

我们会说血氧浓度仪的本质是什么

跟我们手戴腕表的心率一样

是不断通过皮肤吸收

或者是反射比较强的单色的光

用一个光色传感器连续ADC采样

得知这个反射光线的变化

随着一次一次的脉搏

随着血氧浓度的变化

测到的光线值的强弱会发生变化

通过ADC比较高精度的定标

我们可以把它还原到物理量上

还原到对血养浓度的测量上

再通过低功耗和二次设计

把它做成一个腕表那么大

这就是一个典型的从创新到创业的故事

那么在这个基础上

我给大家可以随便举很多例子

比如说大家如果用我们的微控制器

接一个磁感应的霍尔元件

在智能车上用的很多

大家可以自己做一个自行车的速度表

来测我的自行车轮子转了多少圈

在屏幕上显示现在自行车速

而如果大家使用激光和光敏元件

不止一个使用多个连在一起

让这些光敏元件输出值

二值化变成0和1

我们实际上得到了一组光线开关

那么曾老师课上

曾经有同学用一绺的激光发射器

和一绺的光敏传感器接在一组IO上

做了一个音乐竖琴

每当手指波动这个激光束

挡住激光束的时候

我们PWM被控制产生不同的音高

当然这个音乐竖琴

最后是要用干冰或者用电蚊香

产生足足的烟雾

你才能够清晰的向大家想象中

看到那一根一根闪亮亮的琴弦

但还是非常的酷炫

那么又比方说有同学

用ADC的输入值

和OLED屏幕的像素显示结合起来

自己做了一个采样率和分辨率都有限

但功能十分完备的迷你示波器

然后就像刚才所说的用红光的LED

和光敏的二极管加上ADC

我们可以做血液的脉搏

和血养浓度的测量仪

而如果把脉搏的测量

跟加速度的传感器测量结合起来

又跟我们现在大家能买到穿戴设备一样

又可以做一个非常高精度的

卡路里的估算的

健身的测量仪 对不对

然后还有的同学在我们课上玩过

说我们使用ADC加上高电阻或者电阻桥

来测量人体的高阻的变化 干嘛呢

做一个测谎仪

有同学演示的时候

比如说把自己做的测谎仪

让自己同学捏着

其实捏着两个电阻腿 然后来测

他是否有暗恋的对象

这都是在课堂上有同学玩过的内容

所以作为我们这样一门课程

我最最期待的挑战性实验

并不是我所布置的那样三四个任务

而是像我刚才说的ProjectX

这样一个无限的自由创意

虽然在线课程我没有办法

逐一检查大家的作品

但就像我这门课一开始所说

我更希望构筑一个开元硬件

与自由学习的生态

大家如果有好的创意 好的作品

可以跟我联系

也可以你们自己在网上公开

让大家分享起来

和把这样一种嵌入式系统

愉愉快快的玩耍起来

非常期待大家的无限创意

ARM微控制器与嵌入式系统课程列表:

第一章 概览

-1.1 课程概览

--1.1 课程概览

-1.2 如何学好嵌入式系统

--1.2 如何学好嵌入式系统

第二章 绪论

-2.1 计算机的基本概念、发展历史

--2.1 计算机的基本概念、发展历史

-2.2 从晶体管到CPU

--2.2 从晶体管到CPU

-2.3 概念CPU、微控制器MCU和嵌入式系统

--2.3 概念CPU、微控制器MCU和嵌入式系统

-2.4 八卦计算机史

--2.4 八卦计算机史与创新

-2.5 不同领域、不同系列的嵌入式系统

--2.5 不同领域、不同系列的嵌入式系统

-2.6 ARM历史与MKL25Z128 MCU

--2.6 ARM历史与MKL25Z128 MCU

--2.6 ARM历史与MKL25Z128 MCU【习题】

--2.6 ARM历史与MKL25Z128 MCU【讨论】

第三章 MCU基础

-3.1 CPU的基本结构和运行机制

--3.1 CPU的基本结构和运行机制

-3.2.1 堆栈的概念

--3.2.1 堆栈的概念

--3.2.1 堆栈的概念【习题】

-3.2.2 堆栈的概念-头脑体操

--3.2.2 头脑体操

-3.3.1 ARM的体系结构

--3.3.1 ARM的体系结构

--3.3.1 ARM的体系结构【习题】

-3.3.2 ARM的体系结构-头脑体操

--3.3.2 ARM的体系结构-头脑体操

-3.4.1 中断的概念和机制

--3.4.1 中断的概念和机制

-3.4.2 中断子程的概念和编程

--3.4.2 中断子程的概念和编程

-3.5 复位、时钟、存储器和总线

--3.5 复位、时钟、存储器和总线

--3.5 复位、时钟、存储器和总线【习题】

-3.6 小结:MCU的总体结构和程序运行机制

--3.6 小结:MCU的总体结构和程序运行机制

--3.6 小结:MCU的总体结构和程序运行机制【习题】

第四章 ARM微控制器的开发

-4.1 第一种外设:IO

--4.1 第一种外设:IO

-4.2 IO外设的编程实操-点亮LED

--4.2 IO外设的编程实操-点亮LED

-4.3 IO外设的进阶知识

--4.3 IO外设的进阶知识

-4.4 嵌入式开发的基本概念与工具链

--4.4 嵌入式开发的基本概念与工具链

-4.5 嵌入式开发的进阶知识

--4.5 嵌入式开发的进阶知识

-4.6 嵌入式开发中的C语言(上)

--4.6 嵌入式开发中的C语言(上)

--4.6 嵌入式开发中的C语言(上)【习题】

-4.7 嵌入式开发中的C语言(下)

--4.7 嵌入式开发中的C语言(下)

--4.7 嵌入式开发中的C语言(下)【习题】

-E0.1 实验零 开发板的初步认识与工具链的安装

--E0.1 实验零 开发板的初步认识与工具链的安装

-E0.2 实验零 体验一个例程的编译与下载

--E0.2 实验零 体验一个例程的编译与下载

-E0.3 实验零 编写第一个程序:点亮核心板LED

--E0.3 实验零 编写第一个程序:点亮核心板LED

-E1 实验一 点灯秘籍

--E1 实验一 点灯秘籍

第五章 ARM微控制器的各种外设

-5.1 ARM微控制器外设学习概述

--5.1 ARM微控制器外设学习概述

-5.2.1 ARM微控制器外设:通讯

--5.2.1 ARM微控制器外设:通讯

-5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)

--5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)

--5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)【习题】

-5.2.3 ARM微控制器外设:异步串行通讯UART的原理(下)

--5.2.3 ARM微控制器的外设:异步串行通讯UART的原理(下)

--5.2.3 ARM微控制器外设:异步串行通讯UART的原理(下)【习题】

-5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口

--5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口

-5.2.5 ARM微控制器外设:UART的寄存器编程(上)

--5.2.5 ARM微控制器外设:UART的寄存器编程(上)

-5.2.6 ARM微控制器外设:UART的寄存器编程(下)

--5.2.6 ARM微控制器外设:UART的寄存器编程(下)

--5.2.6 ARM微控制器外设:UART的寄存器编程(下)【习题】

-E2 实验二 UART编程实操

--E2 实验二 UART编程实操

-5.3.1 ARM微控制器外设:IO的中断编程(上)

--5.3.1 ARM微控制器外设:IO的中断编程(上)

-5.3.2 ARM微控制器外设:IO的中断编程(下)

--5.3.2 ARM微控制器外设:IO的中断编程(下)

-5.4.1 ARM微控制器外设:定时器的原理

--5.4.1 ARM微控制器外设:定时器的原理

-5.4.2 ARM微控制器外设:定时器的编程

--5.4.2 ARM微控制器外设:定时器的编程

--5.4.2 ARM微控制器外设:定时器的编程【习题】

-E3 实验三 定时器中断编程实操

--E3 实验三 定时器中断编程实操

-5.5.1 ARM微控制器外设:PWM的原理

--5.5.1 ARM微控制器外设:PWM的原理

-5.5.2 ARM微控制器外设:PWM寄存器与编程

--5.5.2 ARM微控制器外设:PWM寄存器与编程

-5.5.3 ARM微控制器外设:PWM编程实例—电子音乐

--5.5.3 ARM微控制器外设:PWM编程实例—电子音乐

-E4 实验四 数码管显示编程实操

--E4 实验四 数码管显示编程实操

-5.6.1 ARM微控制器外设:SPI通讯简介

-- 5.6.1 ARM微控制器外设:SPI通讯简介

--5.6.1 ARM微控制器外设:SPI通讯简介【习题】

-5.6.2 ARM微控制器外设:SPI寄存器与编程

-- 5.6.2 ARM微控制器外设:SPI寄存器与编程

-5.6.3 ARM微控制器外设:SPI编程实例—OLED显示屏驱动

--5.6.3 ARM微控制器外设:SPI编程实例—OLED显示屏驱动

-5.7.1 ARM微控制器外设:I2C通讯简介

--5.7.1 ARM微控制器外设:I2C通讯简介

-5.7.2 ARM微控制器外设:I2C的通讯协议

--5.7.2 ARM微控制器外设:I2C的通讯协议

-5.7.3 ARM微控制器外设:I2C寄存器与编程

--5.7.3 ARM微控制器外设:I2C寄存器与编程

--5.7.3 ARM微控制器外设:I2C寄存器与编程【习题】

-5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

--5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

-5.8.1 ARM微控制器外设:ADC简介

--5.8.1 ARM微控制器外设:ADC简介

-5.8.2 ARM微控制器外设:ADC基础

--5.8.2 ARM微控制器外设:ADC基础

-5.8.3 ARM微控制器外设:ADC寄存器与编程

--5.8.3 ARM微控制器外设:ADC寄存器与编程

-E5 实验五 ADC编程实操

--E5 实验五 ADC编程实操

-E6 挑战实验

--E6 挑战实验

第六章 嵌入式系统设计

-6.1 嵌入式系统的接口与设计

--6.1 嵌入式系统的接口与设计

-6.2 嵌入式系统的实例

--6.2 嵌入式系统的实例

E6 挑战实验笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。