掌上单片机实验室 – 单片机课可以这样开(23)

掌上单片机实验室 – RT-Thread 运行性能评估(21) 在 RT-Thread 下实现了小车的基础控制功能,但要判断 RT-Thread 是否适合这类实时性控制场景,需要检测评估一下其运行性能。从我的经验看,栈运行监测、外部中断响应时间、CPU占用率是需要测试的,因为这是基于 OS 编程需要关注的问题。实际测试后,感觉不错,我觉得可以应用于大多数场景! 阅读详情

一、背景

        前面系统介绍了基于小车进行单片机学习的示例。之所以做这些,是因为这些年来观察到:一些大学生毕业后面对实际工作,虽说学过单片机,却无从下手;结合我自己的学习体会,想创建一个方便交流的单片机学习硬件平台,像在PC上学习编程一样,可直接运行别人的程序来消化、吸收、提高。

        但只做一个硬件平台,缺乏内容,没有说服力。便做了前述的若干示例性应用,以证明通过小车这样的控制对象,可将单片机应用的多数基本技能贯穿其中,从而使学生可以掌握初步的应用技能,日后在实际工作中再逐步提高。

        在和学生交流时,他们总是说学校教的东西用不上;而和老师交流时,老师们一方面觉得学生不好好学;同时也确实觉得课程设置有点不妥,要教的内容、对应的课时以及学生能力不匹配。

        为何会出现这种状况?我觉得是对教学对象的需求分析不清、课程设置目的不明确所致。

        我所接触的学生中,毕业后能在单片机应用上干点事,能很快进入工作角色,甚至不久即可独挡一面的,多数是有如下经历:

  1. 跟着老师做过项目
  2. 参加过比赛并且承担主要角色
  3. 自己尝试过创业或参与社团相关活动

        总之都曾有过丰富的实践机会;几乎没有是因为课堂学习好、考得好才变得有出息的!

        这说明单片机是门实践性课程,需要的是动手参与,而非单纯课堂听讲。不像物理、化学那类课程,听课是主要的,实验只是帮助理解,验证一下理论。

        单片机课程可以不授课,只要出一些题目,让学生去做,老师只需扮演教练的角色,在学生做的过程中给予及时的指导和纠错即可。

        我在做Lego技术支持时,参与翻译过一本书 —— 《Engineering with LEGO Bricks and Robolab》:

        此书的作者是大学老师,同时是个Lego迷。他想尝试将Lego积木应用于工程教学中,写了此书。书中有几句话我深有感触,大致意思是:

        我们仅能记住别人传授我们的10%,但能记住教给别人的90%。

        引用一句中国谚语:只说给我听,我会忘;做给我看,我能记住;但让我参与,我将真正理解。

        基于这样的思路,他将课程设计成了一个个独立的挑战(任务),循序渐进的引入所需的技能。而将课堂教学变成了学生完成这些挑战的过程,老师只是在学生们做的过程中,给予指导,同时让学生相互交流,能者为师。

        作者强调要在课堂上完成,而不是将挑战布置为“家庭”作业,让学生课后完成。

        因为他有个理念:课后学生自己去做,很多时候思路、方法是错的,即便之后老师在课堂上予以纠正,但可能学生对错误的方式、方法记忆更深,因为那是他自己想出来的!

        所以,作者希望通过在课堂上完成作业,以便及时发现、纠正学生的错误,弱化错误记忆,使学生可以掌握更正确的方式、方法,从而提高教学效果。

        对此,当时读后觉得很有道理,尤其是一些工科课程,作业的对错不是那么明显,通常只是好与不好的区别;此时,如果学生不能得到及时的指正,将会导致其将错误的思路应用于日后工作,难有建树。

        本文想基于前面所做的内容,结合上述理念,提出一个单片机课程构想,供有兴趣尝试教学方式改变的老师参考。

三、课程对象需求及目的

        首先界定课程的对象。

        本建议是针对那些非计算机(或嵌入式应用)专业,课时数在30~50学时的工科学生,通常是“电子技术应用”这类所谓培养“通才”类的专业。

        这类学生的需求并非要深入掌握单片机的原理,重点是会用即可,因为单片机发展到今天,已经和数字电路差不多了,就是一个常见的可编程器件。这么短的学时,根本无法学得那么细致、深入,能做到知其然就不错,知其所以然就不必勉为其难了。

        教学的目的应该是:教会学生使用单片机,能用其解决实际问题,重点在用,放弃对原理的理解(最多作为好学生的附加题)。

        单片机本身就是一门综合性很强的学科,涉及到知识较多,在如此短的学时中,很难深入,与其煮成夹生饭,不如干脆用速食食品,囫囵吞枣,能吃饱就行。

三、课程构想

        基于上述分析,单片机课可以这样开:

  1. 准备一套类似于前述小车的硬件平台,要求是简单、价廉,便于使用,不求性能好,但要体积小,因为在整个课程期间,由学生保管。同时在课堂上练习时可以在课桌上运行,无需为此在教室中设置场地。同时,小车只需通过杜邦线连接任何核心板即可工作,这样学生在练习时可以自己尝试分配单片机资源,而不是被成品PCB所束缚。
  2. 选择一款或多款合适的核心板作为小车控制器,也就是单片机课程内容的载体。根据老师的教学目标及习惯选择。
  3. 基于上述核心板编写一个类似于前述的程序框架,基于RTOS,未来单片机的资源应该都可以运行RTOS,在目前形式下,RT-Thread是一个不错的选择。至于学生是否有能力真正理解RTOS并不重要,能用其解决问题即可。
  4. 基于课程要求及学时情况,设计一些基于小车的任务,如定速、走指定距离等,让学生在上述程序框架下实现,如果以RTOS为教学目的,可以在设计任务是对使用的RTOS功能有所要求,但只是要求会用即可。用任务方式让学生去尝试,遇到问题老师再给予辅导;而不是目前多数课程那样,先教学生内容,再让学生去用,此时学生在听的时候完全所听的东西有何用,自然无法集中注意力,谈何掌握?学生可以2人一组,以便锻炼学生的合作、交流能力。注意:任务的设计必须是叠加性的,任务相互关联,最终所有的任务都共存于自己的程序中;而不是像目前多数实验那样,相互独立,一次编程完成一个,每次实验都是一个全新的开始,这样学出来的编程技能基本无用。
  5. 在课时富裕,且学生们有兴趣时,可以结合学生实践中所遇到的问题,选择一两个有代表性的RTOS功能,深入讲解,从而让学生了解RTOS的理念。
  6. 再配置一些简单、价廉的传感器、通讯模块,作为学生拓展练习的素材,如超声波测距、红外测距、MEMS传感器、蓝牙、wifi等,根据课时数酌情安排。
  7. 以上述传感器、通讯模块为素材,设计相应的小任务,作为课程考核。同时尽量安排课时,可以让每一个(或一组)学生能上台阐述自己设计构思,有老师和其他学生扮演答辩的角色。这样可以避免出现抄袭,更重要的是可以锻炼学生的表达能力,这一点对应工科学生十分重要,因为我们做工程的必须团队合作,无法单打独斗!

四、结语

        30~50学时,也就15~25次课,前面所做的小车内容足以应付,如果再加上几次深度讲解,以及传感器、通讯模块的拓展练习,肯定可以填满所有课时。

        这样构思将实验和教学融为一体,等于是老师带所有学生做了一个项目。

        看上去老师省事了,但实际上对老师提出了更高的要求,因为授课老师是按照自己的想法在执行,而辅导却无法预知学生会遇到什么问题?需要老师有能力应对各种奇思妙想所带来的意外。

        期待有老师愿意尝试,让培养出的学生能有所作为。

————————————

掌上单片机实验室 – RT-Thread + ROS2 初探(25) 得知 ROS 升级为 ROS2 后,将 rosserial 升级为可以在单片机上运行的 Micro_ROS,大大提升了性能。关键是 RT-Thread 中包含了 Micro_ROS 软件包,正好可以尝试一下,。于是有了文中的经历。 阅读详情

相关推荐

掌上单片机实验室 – RT-Thread 之RISC芯片尝试(22)

想尝试基于 RISC-V 架构单片机 CH32V307 跑 RT-Thread 程序,结果发现还不具备作为开发应用程序的条件,需要芯片厂家进一步完善支持,应该要做到或接近 STM32的支持水准,否则无法成为一个被开发人员接受的芯片,至少在跑 RT-Thread时。 估计芯片厂家苦于人手不足,建议厂家尝试发挥网络的力量,借鉴维基百科的机制,快速打造出符合实际开发需求的支持包,从而使芯片和系统都能为国人所接受。

embedream的专栏 1362

掌上单片机实验室 – 实现PID自整定(11)

上一篇实现了小车运动控制,在程序框架下,基于FreeRTOS编写了驱动任务,包含电机控制、测速、PID调速、行走距离控制等和运动相关的功能。但 PID 调速只是完成了算法,并未真正实现调速,因为 PID 调速的核心是PID 参数的确定,即整定!而整定是 PID 最富挑战的内容,调速效果的好坏完全取决于参数。 本篇目的是尝试使用 Arduino 分享的自整定库实现 PID 参数自整定。

embedream的专栏 6807

掌上单片机实验室 – RT-Thread 激活程序1(15)

在掌上单片机实验室硬件平台上,尝试应用 RT-Thread,这是第一个程序,使用 RT-Thread 官方的 RT-Thread Studio 开发环境,完成电机 PWM 驱动,涉及 PIN及 PWM 组件。

embedream的专栏 505

28BYJ48 步进电机驱动记

被 28BYJ48 的低价所惑,启动了替换舵机之旅,结果差点翻车,好在最后找到了出路。感觉 28BYJ48 步进电机市场上很多,估计会有不少人选用,故分享我的入坑经历,供同行者参考。

embedream的专栏 2372

实战解析:如何通过LTspice仿真优化MOS管缓启动电路,解决上电冲击电流问题

本文详细解析如何通过LTspice仿真优化MOS管缓启动电路,有效解决上电冲击电流问题。文章从问题根源分析入手,介绍LTspice环境搭建、缓启动电路设计原理、参数优化技巧及实际工程问题排查,帮助工程师掌握MOS管电源开关电路的关键设计方法,提升系统可靠性和性能。

weixin_28683689的博客 515

SAP开发实战:用FI_DOCUMENT_CHANGE BAPI批量修改FB03凭证抬头和行项目文本(附完整ABAP代码)

本文详细介绍了如何使用SAP的FI_DOCUMENT_CHANGE BAPI批量修改FB03凭证抬头和行项目文本,提供完整的ABAP代码实现方案。通过该BAPI,开发者可以高效完成财务凭证的批量修改,确保数据一致性和审计合规性,显著提升SAP财务模块的运维效率。

weixin_29224589的博客 381

掌上单片机实验室 — RT - Thread+ROS2 浅尝(26)

费尽周折,总算将 micos_ros 加入到我的 RT-Thread 程序框架中,完成了最重要的一步。在这个踩坑过程中,知道了 C++ 深奥,以及 AI 的强大。在此分享详细过程,希望能给同样踩坑的朋友提供参考。

embedream的专栏 2020

第三节: 串口通信(用CubeMX学习STM32)

用CubeMX学习STM32, 串口通信学习, 通过轮询方式和中断方式两种方式进行通信演示。 STM32F407zgt6

Kevin_8_Lee的博客 8904

掌上单片机实验室 – RT-Thread 下实现PID自整定(20)

将基于 Arduino+FreeRTOS 实现的 PID 自整定功能移植到 RT-Thread 下,看看是否可行。实施结果:OK!基于 RT-Thread 完美实现了 PID 调速。顺带验证了基于 Serial V1 版本的发送阻塞验证,发送数据时并未阻塞,暂时可以不升级到 Serial V2.

embedream的专栏 1366

如何在NVIDIA CX6 网卡和华为CE交换机上为RDMA协议使能DCQCN和PFC

【代码】如何在NVIDIA CX6 网卡和华为CE交换机上使能DCQCN和PFC。

Markchen7788的博客 5091

LIGGGHTS颗粒模拟入门:从DEM原理到工程实践

离散元法(DEM)是一种用于模拟颗粒物质行为的数值方法,其核心原理是通过计算每个颗粒的运动和相互作用来预测颗粒系统的宏观行为。该方法基于牛顿第二定律和接触力学模型,能够精确描述颗粒间的碰撞、摩擦和粘结等微观机制。在工程实践中,DEM技术为优化工业设备设计、预测材料流动和减少实验成本提供了重要价值。它广泛应用于制药造粒、矿石破碎、粉体输送和农业加工等领域,帮助工程师和研究人员深入理解颗粒系统的复杂动力学。LIGGGHTS作为一款基于LAMMPS的开源DEM软件,继承了其高效的并行计算架构,并针对颗粒模拟进行了

weixin_33979203的博客 419

掌上单片机实验室 – 低分辨率编码器测速方式完善(24)

在测试新做的一批“轮式驱动单元”时,发现现有的测速算法存在问题,且自己对目前的算法不满意,太繁琐,时间间隔略久,自己都看不懂,故下决心重新构思,采用前N个脉冲平均周期计算,完成后程序逻辑简单、清晰、满意。将掌上实验室程序也相应修改,分享之,以免前面错误的构思误导大家。

embedream的专栏 1312

JS逆向-B站评论数据w_rid参数和wts参数

本文是该专栏的第69篇,后面会持续分享python爬虫干货知识。本文以B站的评论数据为例,通过JS逆向获取其中的w_rid参数以及wts参数生成规律。具体的“逆向”思路逻辑,笔者将会详细介绍每个步骤,并且将在正文结合“完整代码”来详细介绍。废话不多说,具体细节部分以及详细思路逻辑,笔者将在正文结合完整代码进行详细说明。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 2048

DIY小车神器 - 智能轮式驱动单元

将很早前做的智能轮式驱动单元升级,完善低分辨率编码器测速,并在小内存的MCU上实现 PID 参数自整定。分享之,供有兴趣的朋友参考。

embedream的专栏 937

Pareto 优化 (Pareto Optimization) 算法详解及案例分析

Pareto 最优解是指在多目标优化问题中,无法通过改进一个目标而不损害其他目标的解。具体来说,对于一个解x∗x^*x∗,如果不存在另一个解xxx使得所有目标函数fixf_i(x)fi​x都不劣于fix∗f_i(x^*)fi​x∗,且至少有一个目标函数fjxf_j(x)fj​x优于fjx∗f_j(x^*)fj​x∗,则x∗x^*x∗是 Pareto 最优解。

闲人编程的博客 2761

【GlobalMapper精品教程】070:专题地图制作完整操作教程

与其它GIS软件一样,Globalmapper也可以制作出漂亮的地图,本文讲解专题地图制作完整操作流程。

智慧空间实验室 3752

掌上单片机实验室 - 实现运动功能(10)

前面已完成了硬件激活、编程环境选择、软件框架构建,并且基于软件框架尝试了基于 RTOS 编程,为在此软硬件环境下学习单片机编程做了充分的准备。 从本篇开始,开始以其为载体,一步步完善其功能、性能,并基于其具备的能力去完成一些有趣的任务,在这个过程中,逐步掌握用单片机解决实际问题的技能。

embedream的专栏 616

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

掌上单片机实验室 – RT-Thread 应用程序框架(17)

通过跟踪调试,发现发送方式基本是阻塞完成的,故默认按阻塞逻辑处理,功能是实现了,后续再仔细分析一下。1)RT-Thread 创建线程多了一个参数:Slice,按说明是在轮流执行时,线程的执行时间,单位为 Tick,也就是说,RT-Thread 可以定义每个线程在轮流执行时的时间,而非每次Tick都转换线程。我觉得:就RT-Thread的学习而言,单个功能的示例官方已经提供,缺少的是结合实际需求(或接近实际的需求)的编程示例,比如说多文件的编程,因为随着代码增加,放在一个文件中会导致阅读费力,调试困难;

embedream的专栏 612

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

掌上单片机实验室 — 编程环境(3)

一、背景 因为单片机学习是软硬结合的,离开软件,单片机无法工作。所以需要准备合适的编程环境。 二、需求 作为学习用的编程环境,我觉得应该满足: 上手容易;不需要花很多时间学习后才能正确使用。 环境参数设置方便,有些编程环境参数设置过于复杂,对于做实际项目是有价值的,但对于学习者而言,就是障碍了。 无版权问题(无需花钱购买,或盗版) 有完善、丰富的参考资料。 三、选择及准备 3.1 选择 因为目前硬件基础选择的是 STM32 系列单片机,可选择的编程环境有: 经典的IAR或MDK编程.

embedream的专栏 552

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

掌上单片机实验室 – 检验自整定适应性(12A)

在另一个不同的小车底盘上,验证 PID 参数自整定的适应性,从而确定 PID 自整定库是否实用。 检验的结果应该说相当满意!至少对于直流电机调速而言是可用的。

embedream的专栏 490

掌上单片机实验室 — 检验自整定效果(12)

前一步完成的 PID 参数自整定库的使用尝试,这一步验证一下使用 PID 自整定方式得到的 PID 参数是否靠谱? 实际测试结果:十分满意!

embedream的专栏 440

基本定时器(TIM6/TIM7)

基本定时器最简单,就干一件事:到点了触发中断。定时器本质就是计数器,每个时钟脉冲加1,数到ARR就溢出、产生中断、清0重来。三个核心寄存器:PSC(预分频器):对输入时钟分频CNT(计数器):从0往上数ARR(自动重装载值):数到这个值就溢出,CNT清0,产生更新中断公式:  定时周期 = (PSC+1) × (ARR+1) / 定时器时钟  更新事件频率 = 定时器时钟 / ((PSC+1) × (ARR+1)) 例:TIM6时钟84MHz,要定时0.5秒(2

2401_89890233的博客 224

芯片适配快讯:合兴软件 ISDT 完成对芯驰 E3系列 MCU 的适配

芯片适配快讯:ISDTx芯驰E3系列MCU。合兴软件HXSC-ISDT(嵌入式软件时间分析工具)完成对芯驰E3系列MCU的适配,助力跨域融合控制器的实时性能分析。

合兴软件的博客 174

TMS320F28335 学习笔记(二):系统时钟、PLL 与看门狗

本文系统介绍F28335的时钟架构与看门狗应用,涵盖外部晶振、PLL倍频生成系统时钟(SYSCLKOUT)、高速/低速外设时钟分频配置,以及看门狗的启用、关闭与喂狗机制。强调时钟配置准确性对延时、PWM、通信等外设的重要性,指出常见错误如晶振不匹配、未等待PLL锁定、随意修改PLL或喂狗周期过长等问题,并提供初始化框架与验证方法,帮助开发者正确配置时钟系统,确保程序稳定运行。

2403_83044722的博客 308

串口实验-11

① 显示串口0接收到的数据② 串口0每隔3秒发送“waitting for serial data”信息COM30IDE 右上角 …三个点打开 串口监视器,选择波特率 115200在串口监视器 消息 位置 输入:hello esp32s3,会打印输出使用串口1来实现 串口数据回显功能方便大家后面用到串口接口的模块时,能知道使用方法COM26。

智能机器人产学研基地 23

MCU的ADC采样怎么配

一块采集板,室温下读电池电压挺准,一上高低温箱就差出0.3V。软件反复查了三遍,没改一行代码,最后发现是参考电压选错了——电源纹波直接灌进了测量基准。ADC这东西,代码就那么几行,坑全在配置里。这篇拿ATmega16当例子,把采样链路从头讲清:参考电压怎么选、时钟为什么卡在50到200kHz、结果为什么要讲究读取顺序。这些规则不只对AVR成立,换成车规MCU,思路一样。

qq_43241255的博客 174
上一篇: 掌上单片机实验室 – RT-Thread 之RISC芯片尝试(22)
下一篇: 28BYJ48 步进电机驱动记
嵌入之梦
博客等级 码龄21年 134粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入之梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值