头像-8385

电子芯吧客社区老大

  • 吉林省延边朝鲜族自治州
  • 嵌入式
  • 消费电子

个人成就

获得 369 次赞

帮助过1439人

【RM】机甲大师赛2019亚军,上海交大战队建队运营的故事 单片机综合应用

【参与话题讨论,立得200IC币】2019的RoboMaster机甲大师赛中,上海交通大学的交龙战队最终获得了亚军。这支参加了数年RoboMaster比赛的老牌强队,在日常的招新、运营、备赛、总结等节点会有什么样的故事呢?让我们由战队队员的真实描述中,走进RM战队大学生的背后经历、过程与困难。 一.交龙人员选拔 赛季初,大概有10名左右的老队员留在队里,前期管理层是三人制的主席团。9月中旬战队形式初次招新,第一批招进大概15名左右的队员11月社团形式,百团大战招进大概20名队员12月校内赛结束战队形式招新,招进15名队员 实践发现,真正能留在队里并提供帮助的是9月初和12月校内赛招入的20余名队员,百团招新进来的队员大多是不了解这个比赛的萌新,多是奔着视觉去,或者想学点东西又花不了时间,根本成为不了最后的骨干队员,最后和队伍分道扬镳,社团招新基本全灭。9月初的队员由于进队较早,很早就经过老人的指导,并经过早期项目组的锤炼,加上对队伍的感情,留队大多数。12月校内赛进入我们队的队员由于是从校内赛脱颖而出的,技术实力已经很出众,也愿意花时间在rm上,入队以后甚至可以直接进入中期项目组,技术稍微薄弱的先经过队内“竞培营”磨砺再进入项目组,并且大多成为最后的骨干力量。 普通队员通过项目组担任负责人或者主要攻坚手,发挥关键作用,项目达标,以此晋级为正式队员,碌碌无为或者项目表现一般的队员无法成为正式队员,正式队员在项目中表现懒散给予警告,警告之后不改剔除正式队员资格,仅正式队员有比赛资格。经过寒假集训以及寒假集训之后的一个月晋级了包括机械、电控、视觉和项目管理、运营宣传的不到40名的正式队员,其余队员陆续淘汰。正式队员主要由大四、大一以及少数大三组成。分区赛之后队伍精简到25人左右,事实证明不划水的情况下,全民皆兵,25名技术型队员足够支撑国赛的备赛标准。 二.培养机制 早期入队的队员会有不同方向的教学手册自学为主,定期老人授课,很快进入初期项目组锻炼中期入队的队员一般需要具备一定的基础,然后定期老人授课,表现合格进度项目组(入队晚,没经过校内赛,没基础的一般很难成活)校内赛队员基本能力已经具备,给予作业教程通关老人指导就能直接进入项目组补充说明:我们有额外的专门项目,竞培营针对有潜力,做车任务不紧张的前期建设中基础还不够出色的队员开设,表现优异者进入项目组。 三. 赛季中常见的问题Q1:遇到问题几种方案争执不下时,怎么决断?A1:a.时间不紧张的情况下,给两种方案预定时间,效果好就用哪种b.时间紧张的情况下,少数服从多数c.少数比较执着的情况下,在不耽误大方向或者稳妥方案进行的情况下,给予自由度,既是缓解队内矛盾,又防止天才思路被扼杀,但一定要给时限,超过一定周期没有起色果断砍掉。 Q2:队员不愿意投入时间怎么办?A2:选人最重要,尽量不要让没有责任心的队员混进队伍,如果漏进来一定要短时间内劝退。其他就看队长怎么塑造一个团队氛围,让队员嗷嗷叫地往前冲,一定要身先士卒,队长干活最多实际上是一件很正常的事情。 Q3:长时间的备赛期会出现疲劳期如何缓解?A3:很正常,团建工作一定要做好,每周每月,集训期间都要有不同规模和花样的内建活动,比如羽毛球队内挑战赛、定向越野争霸赛、飞盘团体赛、轰趴等等,调节队员气氛;同时需要寻找技术上的突破,并发在群里给队伍一些刺激点,让大家有动力,有搞头。 Q4:赶进度,加工件耽误如何应对?A4:给加工商的时间预先留好时间余量或者保底方案,这样有一个讨价还价的过程和资本,或者加工件不能按时到也能临时顶上,如果不能按期交货,对加工商一定要先兵后礼,这样效果比较好,以后应该不会很过分了,不行就换加工商,一定要那种准时的以及细心的。如果当天就想要一些碳板之类的件,图画好找本地加工商做好了让达达去取。 四. 交龙分区赛后做了什么?一些小故事 1.召开分区赛总结会议主要内容:各个负责人提出自己在分区赛中的不足,并列出到国赛期间两个月的备赛计划、需要做的技术点,并征询大家的建议,需要做的大多数技术点是得到大家的认同的,但有一些还是技术点并不得到一些队员的支持,比如大小陀螺,比如修改电机结构,比如履带式上台阶,总体来说会议还是很有成效的,年轻队员的支持和疑问都能够成为负责人额外的动力。 2. 压力最大的那段时间,因为队员责任心重,队长两天之内被动或者主动地和七到八个队员谈心,有的队员捂着脸跟我说,跟我说对不起我,说着眼泪也留下来了,感动得我也哭了。 3. 具体今年我们投入了多少时间在rm上,就是比较肝的大四将白天和夜间都交代在工训了,身体不太行的大四把白天和晚上交代在工训了,比较肝的低年级把晚上和夜间交代在工训,身体不太行的低年级把晚上交代在工训,白天他们还是要上课的。 4. 运营的队员其实也是很辛苦的,要日常给队伍打鸡血,及时发现并帮助出现心理问题的队员,要记得搞花样团建如下图,队里除了交龙战队以外,还有交龙附属羽毛球协会、附属乒乓球协会、附属夜跑协会,当然运营做得这么好日常还被骂。 5. 赛季初负责人群里经常吵架和争论,甚至前队长喊着要退群,随着赛季进行,日常的互怼还是常有,但慢慢地变成了生活,队伍并没有因此被绊住了手脚,日常的矛盾和质疑变成了队员大步向前的动力,良性的竞争和质疑是好事,因为在乎。  短短一个访谈,让我们看到了一群有血有肉的热血青年,通过一个比赛为载体,用激情、投入、付出追逐自己的梦想。作为一个赛事,RM还在从萌芽走向成熟的阶段。但他所承载的内容和感情可能超出了我们的想象。让我们在2020年继续关注这个有温度的比赛,关注这批有热血的年轻人!        声明:内容整理于RoboMaster论坛,作者DYD,如侵犯到您的权益,请及时通知我们,我们将在第一时间内删除。

【话题讨论】疫情期间,他们用树莓派搭起呼吸机! 单片机综合应用

【参与话题讨论,立得200IC币】你都用树莓派做过什么新奇独特的作品?随着新冠疫情蔓延,呼吸机成为了全球极度短缺的医疗器械。在之前的报道中,戴森、特斯拉等科技公司均「跨界」造起呼吸机。另一家让人意想不到的科技公司,其实也参与到了这场「临时救援行动」中,那就是树莓派。疫情中,树莓派的身影无处不在 树莓派 4, 图片来自 TechRadar 大家都知道手机、电脑里会有芯片,但我们不时会忘了生活里其它电子设备其实也需要用计算芯片。从家用电器冰箱、洗衣机到像呼吸机这种医疗设备都需要芯片。 呼吸机厂商快速生产的障碍是芯片产能跟不上。上个月,英特尔在成都的生产线就收到了一个紧急订单,需在四天内生产 2.5 万颗 BDW 系列处理器,就是为了供给呼吸机的制造。放在平时,这个交付周期至少得两周。在那之前,连英特尔的工程师也没意识到原来自己的 CPU 会用在呼吸机里。 树莓派创始人也没想到自己的产品也会参与到呼吸机制造中。一直受创客拥戴的树莓派生产平价单板计算机,定价在 5-55 美元间,尺寸只有信用卡般大小,主要用于推广计算机教育。在处理器短缺中,有人想到了用树莓派中最「低配」的 Raspberry Pi Zero 作为呼吸机的主板。 图片来自 BBC 单板电脑树莓派 Zero 搭载了 Broadcom BCM2835 CPU、512MB RAM,包含一个 mini HDMI 和两个 Micro USB 接口,售价只需 5 美元(约 36 元人民币)。即便如此,这个配置显然已经足够用于管理控制呼吸机中的气压、阀门开关和进行呼吸模式调整。 当然,更重要一点是它的价格和库存都友好。树莓派并不是以订单量来决定生产,而是以库存量作为基准,因此库存更稳定。官方宣称,他们在第一季度已经生产了超过 19 万件 Zero 系列的产品,预计在第二季度将生产速度提升至 25 万件。 本月,另一个位于哥伦比亚的团队也研发出基于树莓派的呼吸机解决方案。机器人工程师 Marco Mascorro 在设计呼吸机的时候,就已经想到随着疫情发展,呼吸机会出现短缺,因此设计涉及的零部件尽可能都避开了传统「专业呼吸机」这个范畴。「大脑」用了树莓派;「躯干」也改用更日常的部件来搭建,譬如所需阀门在平常汽车和管道设备店就能找到;软件则是由他们撰写,并根据网上医护人员的反馈进行多番修改,完全开源,所有人都可以用。Mascorro 的设计已经提交测试检验,希望可在五月进入临床测试。 基于树莓派和其它容易获得的零部件设计的呼吸机,图片来自:BBC 除了呼吸机,还有创客爱好者用 3D 打印机来做保护面罩,然后免费送到医院给医护人员用。而这些 3D 打印机背后用的也是树莓派。 图片来自 TechRadar 医疗设备以外,树莓派在疫情期间还成为了很多人在家办公的工具。树莓派创始人 Eben Upton 表示:“以前,家里有一台共用的电脑基本就够了,但现在家里所有成员都需要有电脑去学习或工作。(树莓派)没法像你的台式电脑一样,你没法在上面玩高配游戏,但如果你只是想用它来完成编辑文档,浏览网页,用 Gmail 或 Office 365 等基本任务的话,那树莓派 4 可以满足。” 由于手提电脑设备不足,英国国家医疗服务体系购买了树莓派提供给员工作为临时在家办公的工具。在今年 3 月,树莓派的销售量达到了 64 万件,这是自树莓派于 2012 年创立以来第二高单月销售。当然,除了呼吸机和办公计算机,不少创客也趁这段时间订购树莓派在家捣鼓,这也是销售增长的来源之一。树莓派4B,2G版、4G版现货发售!点击购买全世界创客都在利用树莓派的独特特性创造自己的DIY方案,你都用树莓派做过什么新奇独特的作品呢?声明:部分内容来源于爱范儿https://www.ifanr.com/1331810,如侵犯到您的权益,请及时通知我们,我们将在第一时间内删除。

【机甲大师Q&A】嵌入式、MCU调试技巧大分享! 单片机综合应用

【参与话题讨论,立得200IC币】调试MCU的日常,是不是无尽的debug?日常的开发学习中,你又遇到过什么样的问题或经验呢?在RoboMaster比赛中,常用的是基于Cortex-M3和M4内核的MCU。高主频的MCU上有各种通信协议的接口如CAN_BUS UART等,有供弹拨轮电机的驱动电路 有DR16接收机专用的取反电路,有用于控制摩擦轮电机的两路pwm输出 etc.作为机器人最重要的控制单元之一,MCU的调试对于机器人在运动、射击、云台、控制等电控系统有着很大的意义。自然也是参赛者日常头疼的问题。今天,看RoboMaster的大疆工程师和大家一起分享Cortex-M3和M4内核MCU的调试技巧。 Q1:大家在调试MCU时一般是否会遇到各种各样的问题,比如单片机运行着死机了,一般是什么原因呢?A1:MCU死机基本上都是程序运行中触发了异常中断导致的,比如使用了空指针、野指针、访问越界之类的内存访问错误,或者是使用了未初始化的外设,再或者是非对齐访问等等。具体大家可以参阅《CM3与CM4权威指南》中的12.2 错误的原因章节。 Q2:找到问题的发生位置,但是并不清楚问题的原因,还可以怎么做呢?A2:我们可以通过查看系统控制块SCB中相关错误寄存器来判断,在Keil的调试模式中打开View -> System Viewer -> Core Peripherals -> Fault Reports查看。比如对指向超出RAM区域的指针进行操作,发现进入HardFault_Handler,这时发现总线错误状态寄存器BRSR中的BFARVALID位被置位,表示访问了一个无效的总线地址。在CM4的SCB中还有像CFSR、HFSR、BFAR、MMFAR这样的错误寄存器。作为扩展,大家可以阅读内核用户手册《Cortex-M4 Devices Generic User Guide》或《Cortex-M3Devices Generic User Guide》中4.3 System control block章节。 Q3:MCU在给别人测试时出现很难复现问题,怎么在不复位的情况下接入调试工具进行调试?A3:这种情况时很常见的,在实际测试时出现了问题,这时候却往往不在调试模式下,而接入调试器进行调试会进行复位,原来的问题现场就被破坏了。这时我们就需要使用Attch的调试方法进行调试,这种方法不会对MCU进行复位。 Q4:不想使用Keil全家桶,代码是使用C Make构建系统,该怎么进行调试呢?A4:除了Keil以外也可以使用其他调试工具,比如OpenOCD+GDB,但是这个配置比较复杂,对新手可能并不友好。我在这里给使用J-link调试器的同学推荐一款调试软件Ozone,这款软件是J-link出品公司的官方免费软件。可以调试gcc和armcc编译出来的固件。armcc和gcc分别编译出axf和elf文件,包含了调试信息。在Ozone中载入这些文件就可以进行源码级调试,而且功能不弱于Keil。其中图标数据的显示比J-Scope更易于操作和直观,更适合于调试和整定参数。 Q5:在变量的内存地址处定义访问写断点,具体操作步骤是啥呢,有例子吗?A5:在Keil的调试界面下按住Ctrl + B打开断点窗口,在expression中输入想要设置的全局变量或者地址,在Access中选中Write,点击Define就定义好了哦。局部变量因为是在栈上,地址不固定,所以是不可以的。关于Keil断点的更多信息,我建议大家阅读uVision User Guide手册中的Debugging -> Debug WIndwos and Dialogs -> Breakpoints Windows章节。手册在选项栏中的Help可以找到。 Q6:关于局部变量无法仿真,有什么解决方法吗?如果想通过watch窗口观看的局部变量的值的话?A6:因为局部变量是存放在栈上的,所以局部变量的存放的地址位置每次重新进入函数是都不固定。推荐一个小技巧,定义一个全局变量,在退出函数时将局部变量复制到全局变量上,就可以间接观察了。 Q7:像can spi iic总线等通信出现问题时如何排查问题比较快?A7:我喜欢的方法是自低向上从寄存器开始,有时候用的硬件中间层很复杂,对着自顶向下去排查反而效率低。直接拿着MCU的用户手册对着寄存器排查,确保配置相关的寄存器是正确的,在步进时多关注一些关键状态位的变化情况,比如中断标志位,错误标志位。保证寄存器这边能work了,上面的问题就好排查了。 Q8:问一下cube和hal会不会存在问题 开始学时学的标准库?网上有人说cube生成的代码问题很多而且代码构架已经固定了一直在用标准库。:A8:我建议使用HAL或者LL库,ST公司已经对标准库停止维护了,新出的芯片也不再有标准库的支持。对比几年前,现在HAL和LL已经很完善了,而且HAL库这种硬件抽象层的思想是符合现在嵌入式设备的发展趋势的,使用HAL库+CubeMX比标准库开发更快更容易上手,追求性能可以使用LL库。 Q9:有没有什么办法可以通过直接改变仿真窗口watch里面的数值,然后就直接答:把程序里面的对应变量的数值也发生相应改变呢?我用的ST-link仿真的,每次发现系数不得,都得程重新退出仿真 然后下载程序 然后继续仿真 感觉这样很麻烦A9:程序是写在Flash里面的,虽然使用调试器通过memory窗口可以直接修改Flash中的指令,但是这样操作需要对汇编有很深的理解才行。建议你将系数定义在全局变量中,利用watch一次调好参,就不用反复下程序了。或者你可以使用IAP或者E2PROM实现参数修改后断电保存。 Q10: 可能是很多人都想知道的秘诀!怎么样才能提升自己的调试能力?A10: 首先是熟能生巧,解决的BUG越多,经验也就越来越丰富,不仅能提升自己解决疑难杂症的能力,也能避免在编码的过程中写出BUG。第二个是多阅读资料,除了网上的教程和博客以外,也要多阅读官方的芯片和数据手册,这些资料是最准确和详实的。 日常的开发学习中你遇到过什么样的问题或经验呢?对于RoboMaster机甲大师赛使用的机器人软硬件,又有哪方面想要了解呢?欢迎和大家一起分享讨论!声明:部分内容来源于RM论坛,如侵犯到您的权益,请及时通知我们,我们将在第一时间内删除。

【讨论】只占全球市场份额1%的小众操作系统,你用过哪些? 单片机综合应用

【参与话题讨论,立得200IC币,抽取一人赠送50元京东卡】毫无疑问对普通用户来说Windows和macOS是PC桌面操作系统的绝对首选。事实上,这两大巨头也占有了超过89%的全球市场份额。对电子工程师来说,更熟悉的操作系统可能是Linux,背后的原因或许是因为Linux操作系统基本上是一个开源解决方案。这意味着,遵循Linux基金会的既定准则,其底层代码可以免费查看、修改和使用,而无需支付许可费用,各种特性也更利于软件层面的开发。近年来,Linux的市场占有率不断攀升,截至2020年5月达到了2.87%,虽然还不到微软苹果的零头,却一直是在逆势增长,抢占两巨头的份额。而在三强之外,你还喜欢或者用过哪些小众又特别的操作系统呢? TempleOS:为上帝开发的操作系统“这是上帝的神殿,就像所罗门圣殿一样。这是一个供奉上帝,并征询上帝旨意的社区中心。”这是TempleOS的简介。Temple 的中文意思就是「圣殿」,顾名思义,这是一个以「圣经」为主题的操作系统。系统里的所有元素,几乎都与《圣经》以及与上帝相关的宗教文化有关。打开 TempleOS 的界面,屏幕中央会出现一把利剑和一个天平,有人猜测这是取材于正义女神像手持的剑与天平。当你按下 F7,就能接受「God Word」,其实就是随机弹出《圣经》里的单词,而 Shift + F7 就能打开《圣经》里段落。  而 F6 则可以掉出一端类似 8bit 音乐的旋律,据说这是上帝的歌声。按下 Shift + F6 则能看到「上帝的涂鸦」。虽然 TempleOS 诞生于 2013 年,但画风却像 80 年代的像素游戏,只有 640 x 480 16 色的分辨率 ,跟微软早期的 MS-DOS 有点类似。  这不是开发者技术不过关,而是程序员 Terry Davis 有意为之。就连桌面的文件系统也叫做「红海」(Red Sea),而系统的编程语言则叫做 Holy C,这是 Terry Davis 通过基于 C 和 C ++ 改编而成的一种编程语言。不只是自创编程语言,TempleOS 总共超过 12 万行的代码,都是 Terry Davis 一个人花费 10 年写出来的,而且还是当时十分前沿的 64 位操作系统。这样的代码数量,大概与 Photoshop 1.0 相当,这在 IT 行业已经算是个不小的奇迹,相当于一个人盖起了一栋摩天大楼。中文互联网里也有一个凭一人之力完成几万行代码产品的程序员,就是当年写出 Foxmail 的张小龙。尽管 TempleOS 可以说是一个「疯子」开发的操作系统,可当 Terry Davis 在 2018 年去世时,不少程序员在悼念他时,都不否认 Terry 拥有顶尖的编程水平。某种程度上,Terry Davis 就像那些集天才与疯子于一身的艺术家,用极致的技术将心中的世界表现出来,仿佛程序员中的梵高。 如果世界末日来临,你需要怎样的操作系统?如果你认为 TempleOS 已经够疯狂那就错了,有一位叫做 Virgil Dupras 的程序员虽然没有收到上帝的指令,但依然想用一个操作系统为人类文明打造一艘诺亚方舟,以应对世界末日。这个专供末日世界使用的操作系统叫做 Collapse OS ,只有简易的功能,却几乎可以在找到的硬件上运行, Dupras 表示:“我们要求它必须有足够广的泛用性,并且能在任何环境下运行。然后我们看中了 Z80 微处理器,这可能是大部分人最容易找到的硬件。”  Z80 是一颗 8 位微控制器,在 1974 年由 Zilog 推出。据 Dupras 介绍 ,之所以选用 Z80 ,是因为它已经投产很久,并被广泛用于大量电子设备上,即便是拾荒者也能轻易搜集到。这意味着当人类处于末日环境,只要幸存者拥有基础的编程知识,从废墟中找到含有 Z80 微处理器的设备,就可以运行 Collapse OS ,Dupras 已经成功让 Collapse OS 在一台 1988 年上市 16 位经典游戏机 MegaDrive 上运行。Dupras 之所以要开发这样一个操作系统,是因为他认为全球供应链在 2030 年前就会面临崩溃,由于电子产品复杂的供应链体系,一旦崩溃人类文明将回到「低技术」水平,可能几十年无法恢复现在的科技水平。而一个能够就地取材编程的操作系统,有望让濒临崩溃的人类文明更快恢复到信息时代的水平。 差一点成为 macOS很多人都知道,苹果在 1996 年收购了乔布斯创办的 NeXT,这不仅让 NeXTSTEP 成为未来 Mac OS X 的基础,更让乔布斯回归苹果,造就之后的种种神话。1996 年苹果已经处于破产危机,其为 Mac 电脑开发的新系统 Copland 却十分不稳定,最终被放弃,苹果转而收购成熟的操作系统。除了 NeXT,当时苹果还有另外一个选择,那就是同样由苹果前高管 Jean-Louis Gassee 创立的 Be OS。  BeOS 完全符合苹果的要求,这是少数可以在 Power Macintosh 上运行的非苹果操作系统之一,而且在稳定性和流畅度上都优于当时苹果操作系统。苹果何尝不知道这是一个优秀的操作系统,BeOS 实际上是当时苹果的第一选择。出价也从开始的 1.2 亿美元提高到 2 亿美元,然而 Be 提的价格却是 3 亿美元,双方不欢而散。在求 BeOS 而不得的情况下,苹果才找到「备胎」NeXT,最终以 4.29 亿美元收购 NeXT,或许当时苹果还在后悔当初应该咬咬牙将 BeOS 拿下。就这样, BeOS 与苹果失之交臂,两者的命运都因此改变,但却走向了两个不同的极端。虽然 BeOS 用户体验优秀,却始终没有在市场上获得成功。在 2001 年被 Palm 收购后不久,也走到了生命尽头。尽管后来 BeOS 被一些发烧友以 Haiku 的名义复活,但早已不复当年之勇。 曾让美国忌惮的 TRON无论是 PC 还是智能手机,主流几个的操作系统都出自美国的科技公司。其他国家要想动摇这些操作系统的地位有多难,30 多年前日本的操作系统 TRON 就已经体会过。TRON 最初是东京大学教授坂村健发起的一个项目,旨在「为全社会的需要创造一套理想的计算机结构和网络。」TRON 也被日本人寄予了摆脱微软垄断的厚望。80 年代中期,以 TRON 为内核的计算机操作系统已经基本成熟,从桌面系统 BTRON,用于通讯设备的 CTRON,到用于家用电器和汽车 的 ITRON,日本已经拥有了一套完备的自主研发操作系统体系。  而 TRON 系统都是开源的,这样意味着着,如果这套系统被市场接受后,很可能对微软的 Windows 造成不小冲击。但还没等 TRON 和 Windows 一决雌雄,美国就已经以「不公平贸易」为由将 TRON 扼杀在摇篮中,而采用 TRON 的美国企业也将受到打击,在这样的制约下,TRON 很快就退出了 PC 市场。虽然 TRON 在 PC 市场折戟,但并没有销声匿迹,反而成为了全球终端数量最多的操作系统之一,遍布于手机、家电、汽车等数十亿电子设备中,影响着我们生活的方方面面。而当年的老对手的微软,也于 2003 年宣布加入 TRON 阵营。 红旗 Linux:昔日国产操作系统的旗帜中国其实也不乏国产的 PC 操作系统,但和 TRON 从 0 到 1 造轮子不同。国产操作系统基本都是基于开源的 Linux 内核开发,但这也不是什么丢脸的事情,毕竟就连 Android 也是使用 Linux 内核的。在众多国产操作系统中,红旗 Linux 是最具代表性的其中一个。红旗 Linux 1.0 诞生于 1999 年 ,最开始是国家出于信息安全考虑,主要供政府机关单位使用。  也正因如此,早期红旗 Linux 完全不愁订单。在 2001 年北京市政府桌面操作系统产品正版软件采购竞标中,成立不到两年的红旗 Linux 还从微软手中抢到了订单。除了政府订单,IBM、戴尔、惠普等 PC 厂商为了节省成本,也曾在其产品中预装红旗 Linux ,到 2001 年 7 月,红旗与 PC 厂商的 OEM 协议超过 100 万套。  很快红旗 Linux 就占据了国产操作系统市场份额的第一位,然而这样的成绩并不是因为其产品体验,相反糟糕的用户体验已经为红旗 Linux 后来的命运埋下伏笔。据财新网报道,很多使用者拿到预装红旗 Linux 的电脑后做的第一件事,格式化电脑然后重装 Windows 操作系统。跟拥有成熟应用生态的 Windows 相比,红旗 Linux 完全不是对手。2014 年 2 月,研发的红旗 Linux 中科红旗发布清算公告,宣布公司正式解散。也是从这一年开始,一众国产操作系统扎堆冒了出来,但很多只是为了政策补贴而来,甚至还出现了麒麟这样的换皮产品。希望在不久的将来,能迎来一款让我们扬眉吐气的国产 PC 操作系统很难说这些国产操作系统如果体验做得更好,就能动摇 Windows 的地位。这也是大多数小众操作系统的命运,几家巨头庞大的用户量和应用生态,是难以逾越的城池。但无论是 PC 还是智能手机,那些 Windows 和 macOS 之外、Android 和 iOS 之外的小众操作系统,都让整个互联网显得更加生机勃勃。给小众操作系统留下一些生存空间,也是给创新和变革的种子更多生根发芽的机会,否则互联网的未来就过于无聊了。在Windows、MacOS、Linux之外,你还喜欢或者用过哪些小众又特别的操作系统呢?声明:部分内容与图片来源于互联网,如侵犯到您的权益,请及时通知我们,我们将在第一时间内删除。

【讨论】GitHub要把全球开源代码埋在北极保存千年?安全吗 单片机综合应用

【回复立得200IC币】作为一名电子工程师,你愿意将你的哪些代码开源出来?又有哪些措施习惯,应对代码、文件储存安全呢?【GitHub冰冻开源代码】进入21世纪后,随着世界信息化的不断快速发展,全球的数据储存很快将亮出储存空间不足的预警,人们开始追求超高的储存密度和永恒的储存时间。其中微软 Project Silica 项目正在开发“玻璃光盘”以持续使用上千年。这只是微软数据储存计划的一部分,去年被微软收购的软件源代码托管服务平台 GitHub,最近也公布了一项代码存档计划 Arctic Code Vault,要把开源软件代码埋藏在北极的数百米地底下,至少保存 1000 年。现在可用的储存介质最长的寿命最多才约 60 年,像「玻璃光盘」和 DNA 存储这些新兴储存介质距离成熟商用还有很长的距离,那么 GitHub 要用什么储存设备将代码存档上千年后还能被读取呢?答案是胶片,GitHub 采用的是挪威公司 Piql AS 制造的一种表面有氧化铁粉涂层的胶片,据称这这种叫胶片在正常条件下能保存 750 年,如果在寒冷、干燥、低氧的洞穴能保存 2000 年。从 2020 年 2 月 2 日,GitHub 为所有的公共储存库生成快照,经过处理后以 QR 码(二维码)的形式编码储存在一卷 3500 英尺(1066.8 米)长的胶卷上,然后存放在挪威斯瓦尔巴特群岛(Svalbard)一座废弃的矿井中。斯瓦尔巴群岛位于挪威大陆与北极点两者之间,被称为「世界最北的城市」,寒冷的环境有利于延长胶片的存储寿命。而且根据《斯瓦尔巴条约》,这个地区为永久非军事区域,这意味不会因为战争等原因导致数据损毁丢失。GitHub 认为开源代码现代文明的「隐藏基石」, 而 Arctic Code Vault  计划就是为了将来即使人类文明因为自然灾害或战争几乎毁灭,子孙后代也可以通过这些开源代码更快地重建文明。其实在斯瓦尔巴特群岛,还有一个被称为「全球农业诺亚方舟」的斯瓦尔巴全球种子库,储存了 4000 个人类赖以生存的农作物的 86 万份种子备份,以防止人类在面临大规模的灾害时永远丧失某些粮食的基因。其实不用上千年,源代码的存档对现在的开发者来说也很重要。前段时间暴雪旗下的游戏《暗黑破坏神 2》原创团队成员 Max Schaefer 透露,由于这款游戏的源代码和全部的备份都丢失,几乎无法重制一个《暗黑破坏神 2》,他们只能从头开始制作。互联网诞生不过 50 年,但各种软件已经和我们的生活工作密不可分,随着人工智能的兴起,人类社会的经济、工业、医疗、军事等体系都离不开算法中的源代码。在数百年后,今天的开源代码或许也会成为和巴黎圣母院、蒙娜丽莎名画一样重要的世界文化遗产。你是否愿意为这一人类事业添砖加瓦,将自己的代码开源公开呢?【B站知名UP主文件被盗加密】然而抛开保存千年的前提,我们日常的代码、文件存储安全正在面对着越来越严峻的挑战。B站556万粉丝的up主“机智的党妹”近日发视频说,她正在制作的数百个GB的视频素材文件,全都被病毒加密绑架,造成了几百万乃至千万的流量损失。而这一切是因为为了方便存储使用数百个GB的的视频素材,她的公司花了十几万在内部搭建了一个NAS系统,相当于一个公司内部人人可以访问公共硬盘,或者说私有云。而在NAS搭建好测试一段时间后,投入使用的第一天,就被黑客攻击了。黑客用的是一种叫做Buran的勒索病毒,专门攻击Windows系统。被攻击之后,NAS里的所有文件都被改成了奇怪的格式,无法打开使用。NAS设备是目前不少视频工作室、UP主、摄影摄像爱好者较多使用的小型云存储设备,大多使用Linux系统,另外也有Windows系统及树莓派DIY的产品。这些设备的主要特点是方便存储、方便分享、方便多设备同步,但安全性却被忽略了。有几个明显的风险点:1.操作系统本身的安全漏洞——并不是所有NAS设备制造商都有能力为用户提供持续的系统加固和漏洞修复能力;2.软件配置管理的漏洞——默认密码和用户配置的简单密码,都非常容易被暴力破解。3.在用户环境,可能较多情况下考虑到使用的方便性,而对安全性没有足够认识。比较轻易将设置配置为可以通过公网访问。这意味着,对所有攻击者敞开了大门。在日常的工作生活中,面对复杂的网络环境,你有哪些措施或习惯,来保证代码、文件的储存、使用安全呢?声明:部分内容与图片来源于互联网,如侵犯到您的权益,请及时通知我们,我们将在第一时间内删除。

【话题讨论】接棒口罩机,呼吸机制造难度几何?电子厂商有方案! 单片机综合应用

参与话题讨论,立得200IC币疫情之下的电子行业及全球制造业,将在需求趋势下如何发展?又会带来哪些新技术和新方案?【疫情之下,全球震荡】在疫情的持续发酵下,呼吸机是抵挡死神的最后一张底牌,成为继口罩机之后,市场追逐的又一波热点。为满足全球抗疫需要,全世界的呼吸机厂商都处在满负荷运转中。德国政府日前与本国企业德尔格(Drager)达成了1万台呼吸机的购买协议,足够生产至年底。意大利政府要求本国唯一一家呼吸机制造商将产量从每月125台增加到500台。作为全球最大的呼吸机制造商之一,瑞士Hamilton呼吸机已将产能提升了三成到四成,每天可以生产大约80台呼吸机。即使这样,厂商的产能提升速度还是远远低于疫情蔓延的速度。据了解,目前全球呼吸机需求缺口至少是医院现有的10倍。正如纽约州州长安德鲁·库默说:“关键是呼吸机、呼吸机、呼吸机。这是最迫切的需要。”【呼吸机制造困难重重】现货奇缺、价格飙升、图纸公开,呼吸机市场现在上演的正是当初口罩机走过的路。那么呼吸机最终能否和口罩机一样,在全民总动员的号召下,实现产能翻身呢?口罩机产能的迅速提升,主要是依靠转产、跨界的力量。上汽通用五菱汽车生产口罩的同时还顺便花三天时间完成了“五菱牌”口罩机的设计、制造、调试到成品下线的任务。 呼吸机能做到这样吗?貌似很困难。医用呼吸机为三类医疗器械,其研发生产需要跨学科知识的支撑,是集机械、结构、气路、控制、软件、算法于一体的产品。 一台呼吸机的生产,硬件和软件都不能出错,压力驱动系统、患者回路、过滤器、阀门等任何一个零部件发生故障,整个机器就无法运转,其中算法作为呼吸机的“大脑”,需要不断优化才能达到最优状态。即使是专业的医疗设备制造商,生产一台呼吸机也可能需要花费多达40天的时间。从零起步的跨界企业可能要花费18个月才能实现量产。 其次从供应链来看,也是困难重重。呼吸机之所以为高端设备,就是因为需要一个全球的供应链来支持它的生产。呼吸机的核心零部件包括涡轮风机、各式传感器、芯片等,其中传感器是日本SMC和美国霍尼韦尔的天下,涡轮风机长期被欧盟和美国玩家占据;尤其是瑞士的Micronel,一条几十个工人的生产线,就占据了半数以上份额。国内龙头迈瑞和谊安生产的呼吸机,这一核心部件也一直依赖Micronel。 最后从产线导入时间来看,口罩机生产下线后就可以拉到客户现场去调试了,呼吸机属于医疗设备,受到各国的质量监管,生产测试耗时、认证周期长。除此之外,出口到国外还需要获得出口国家许可。【电子厂商应对方案】面对疫情,许多半导体与电子行业厂商也对呼吸机开放了解决方案。 ST的CPAP和呼吸机连续正气压呼吸机(CPAP)能保持肺泡开放并防止肺泡在呼气阶段完全塌陷,从而帮助患者呼吸。ST的电机控制集成电路可帮助实施非常精确的运动配置文件,减少声学噪音,提高了患者的舒适性。ST同时也提供了MEMS运动、压力和湿度传感器、高性能STM32微控制器、高精度运算放大器和低功耗调节器,以帮助开发先进的CPAP呼吸机。(图片来源:ST官网)Maxim美信的CPAP解决方案美信的CPAP解决方案包括一个小型风机,用于产生一定的正空气压力。气压被引入睡眠呼吸暂停症患者的口腔,保持呼吸道敞开,缓解或消除呼吸暂停症状。方案采用了气压可调节风机,气压变化由微控制器嵌入式系统控制。空气监测传感器和电机控制传感器组成了嵌入式系统。在患者端,采用了面罩压力由输入传感器监测,测量温度、湿度和压力。电机相关传感器包括:电机绕组电流输入检测、电机电压检测、温度传感器等。系统输出包括:电机速度、蜂鸣报警或语音报警。图:美信的CPAP解决方案,可提供蓝色部分的器件。(图片来源:Maxim官网)Microchip的呼吸机解决方案Microchip的呼吸机解决方案采用了dsPIC数字信号控制器,可以实现包括无感BLDC控制的多电机控制策略。(图片来源:Microchip官网)TI的医疗呼吸机解决方案TI主要提供电机驱动器和电源管理芯片。(图片来源:TI官网)NXP的呼吸机解决方案用于治疗睡眠呼吸暂停综合症。CPAP可以通过持续监控系统压力与呼吸机电机控制调速相结合来保持恒定气流。该解决方案NXP提供MCU、电源管理、电机驱动和压力传感器等芯片。(图片来源:NXP官网)声明:部分内容与图片来源于互联网及工机器人网(www.gg-robot.com),如侵犯到您的权益,请及时通知我们,我们将在第一时间内删除。

【RM】【同济大学+工具分享】机甲大师赛操作手训练模拟器游戏 DIY创客

【回复讨论即得200IC币】大家对RM比赛越来越了解后,相信都已跃跃欲试了很久,可惜受制于器材、场地、队友,大多都无法体验RM比赛的魅力。为了能让大家感受RM的乐趣,深入了解RM比赛的规则和过程,同济大学superpower战队的hyx,为大家带来了基于unity的机甲大师赛模拟器游戏!Robomaster模拟器,由同济大学Superpower战队队员使用unity游戏引擎独立开发。此模拟器有单机模式和局域网联机对抗模式。在单机模式下,可用于疫情期间操作手在家熟悉比赛场地、练习跑位和键鼠操作。在联机对抗模式下,适用于返校后操作手共连局域网,进行战术演练以及模拟对抗。以我们战队往年的经验来看,操作手的训练只能等到整车完成后才可以进行,而那时距离比赛往往只有不到一个月的时间,操作手的训练量严重不足。而且受场地限制,不可能搭建1:1的比赛地图进行训练,因此训练方式较为单一,只能练习一些基本操作。更重要的是,平日训练和实际比赛有很大出入,真正放到比赛地图和第一人称视角下时,会发现操作手在对于比赛进程的把握和战术执行上不是特别理想。而2020赛季的比赛地图更加立体,地形起伏更大,比赛机制更加复杂,因此更需要操作手像实际比赛那样进行战术练习。而这款模拟器能较好地辅助操作手进行训练。模拟器中使用了我们战队成员用建模软件搭建的1:地图模型,尽可能还原真实地图。操作手可以以第一人称视角在地图中行驶,体验实际比赛时的视角和站位。UI界面仿照官方客户端进行绘制,对于一些关键信息进行实时显示。实现了部分实际比赛中的机制,可以让操作手更加掌握比赛进程。联机模式下可以训练操作手间的交流配合、使其更好地执行战术。在战术讨论时也可以使用模拟器进行战术规划和演示,效果远胜于对着比赛地图纸上谈兵。模拟器具体使用说明见附件压缩包中的相关文档,以下是游戏场景截图:由于此模拟器开发时间较短,存在一些BUG和缺陷,望大家海涵。也希望大家在使用过程中遇到问题、操作不便的地方、以及改进建议等请在评论区进行反馈,后续作者会据此对模拟器进行更新和维护。谢谢大佬分享!下载链接:https://www.icxbk.com/download/detail/48727.html转载自RM论坛,作者solitudehttps://bbs.robomaster.com/forum.php?mod=viewthread&tid=10262&extra=page3D1

【NXP】直立车模实现原理(mpu6050控制) 单片机综合应用

【回复讨论即得200IC币】在NXP恩智浦智能车比赛中,电磁直立组是近年来新增的一项有趣项目。比赛是要求仿照两轮自平衡电动车的行进模式,让车模以两个后轮驱动进行直立行走。在电磁组比赛中,利用了原来C型车模双后轮驱动的特点,实现两轮自平衡行走。相对于传统的四轮行走的车模竞赛模式,车模直立行走在硬件设计、控制软件开发以及现场调试等方面提出了更高的要求。接下来由19年的参赛者:一城烟雨一楼台,分享自己参赛时,从零基础,到理解平衡车,实战比赛的学习心得。直立车模的调试分为三个部分:1.直立环 2.速度环3.转向环有人说速度环可以省略,我认为在你的转向环调得好的情况下可以省略,因为失去了速度环的车模就会一直处于加速状态(在弯道时由于摩擦的作用会使速度降下来),这就会导致在直道入弯时的速度无法控制,在转向环不强的时候很容易飞出赛道。直立组先上直立环的代码,当然这种代码网上很多,形式也都差不多。 /@@************************************************************************** 函数功能:小车平衡电机占空比控制,直立PD控制 入口参数:倾角角度、角速度 返回  值:平衡控制用PWM **************************************************************************/ int Balance_Ctrl_Pwm(float Angfloat Gyro) {     float Bias=Ang-QingJiaoZhongZhi;        //中值,求出平衡的角度中值 和机械相关     int balance;     float kp = 42 kd = - 26;     balance= -(int)(kp*Bias+Gyro*kd);   //计算平衡控制的电机PWM  PD控制   kp是P系数 kd是D系数          return balance; }   变量的含义QingJiaoZhongZhi // 小车平衡时候的数值,关闭电机,用手使得小车正好平衡时候的float Angfloat Gyro //这两个是mpu6050卡尔曼滤波后的倾角角度、角速度。然后再来说一下PD两个参数的调试。先调试kp,需要把kd置为0。首先需要确定正负,我们先随便给一个正值例如kp=10吧。然后我们相对于车模的平衡角度倾斜车模,如果车轮的转向和你倾斜车模的方向一致则可以确定kp应取正值,否则kp取负值。然后再来确定大小 逐渐增大Kp直至车身出现大幅低频摇摆的直立在地上,然后把这个数值乘以0.6基本就是一个比较稳定kp值。调试kd时同样需要把kp置为0。首先需要确定正负:例如先给他个kd=2;当你转动车模时车轮的转向与你车模转向一直则kd是正值,否则就是负值,注意pd与车模的平衡角度无关。大小的话同样也是逐渐增大直至出现低幅高频抖动时停止,也是把这个数值乘以0.6即可。注意:这里涉及到一个负反馈调节因为直立环是要保证正常站立。因为当实际角度脱离平衡角度时,轮子只有给车身一个更大的同方向的力才会使车身保持平衡。如果还是不理解可以拿支笔放在手指上试试,手指怎样移动才会使笔立在手指上?速度环速度环也是一个标准的负反馈例子。例如:我们想让车模加速,速度环就会降低车轮的速度使车身前倾,就会导致直立环起作用让车轮加速保持直立。这就完成了一个加速过程。需要注意的是速度环会干扰直立环,如果速度环的强度过大,车身就会非常不稳定。我在调用该函数时每一百次直立环才会调用一次速度环,这样就降低了速度环对直立环的干扰。/@@**************************************************************************函数功能:速度PI控制 修改前进后退速度,请修Target_Velocity,比如,改成60就比较慢了入口参数:左轮编码器、右轮编码器返回  值:速度控制PWM**************************************************************************/float Target_Velocity = 0;extern float kp_steep;int Velocity_Ctrl_Pwm(int encoder_leftint encoder_right){    static float VelocityEncoder_LeastEncoder;    static float Encoder_Integral;    float sudumax = 2700;    float kp=kp_steepki = kp/200;      //速度PI控制    Encoder_Least =(encoder_left+encoder_right)-Target_Velocity;                    //获取最新速度偏差==测量速度(左右编码器之和)-目标速度(此处为零)         Encoder *= 0.7;                                              //一阶低通滤波器           Encoder += Encoder_Least*0.3;                                  //一阶低通滤波器        Encoder_Integral +=Encoder;                                       //积分出位移 积分时间:?ms    if(Encoder_Integral>2000)   Encoder_Integral=2000;              //积分限幅    if(Encoder_Integral<-2000)   Encoder_Integral=-2000;              //积分限幅    Velocity=Encoder*kp+Encoder_Integral*ki;                          //速度控制            if(flag_zhongdian!=0)    Encoder_Integral=0;      //电机关闭后清除积分         //输出限幅    if(Velocity > sudumax) Velocity = sudumax;    else if(Velocity < -sudumax) Velocity = -sudumax;        return (int)Velocity;}转向环转向环其实有很多方法。我是用的比较简单的一种办法:动态的pid算法,P的系数是电磁传过来的偏差,D的系数是MPU6050的Z轴加速度(因为车模静止时我所在的地区Z轴加速度为2,所以在代码最后gyro+ 2进行了一次加速度补偿)。速度越快P越大D越小。当电磁传过来的偏差小于5时,判为直道,采用很小的P。可有效地减少直道上的晃动。我一开始这样做发现过弯时会有特别严重的抖动,经常飞出赛道,因此在最后加了个判断 if((My_Abs(Turn_Target) - My_Abs(Turn_Target_last)) >= 37) //入弯防抖 else if((My_Abs(Turn_Target_last) - My_Abs(Turn_Target)) >= -40) //出弯防抖 入弯防抖同时增大3倍P2倍D是车模更快更准的转弯,避免速度快时过弯不及时(毕竟我这一届只有不到30cm的前瞻)。出弯防抖与前者配合减少转弯过度带来的晃动。变量 RoadPianCha 是左右横电感和斜电感的差除以左右电感的和。也就是说这个变量的范围是 0-100。/@@**************************************************************************函数功能:转向控制  修改转向速度,请修改Turn_MaxPwm即可入口参数:左轮编码器、右轮编码器、Z轴陀螺仪返回  值:转向控制PWM作    者:**************************************************************************/int Turn_Ctrl_Pwm2(int encoder_leftint encoder_rightfloat gyro)//转向控制{    static float Turn_TargetTurnTurn_Target_last;    float Turn_MaxPwmKpKd;   //   if(My_Abs(RoadPianCha) <= 2)   //   RoadPianCha = 0;          Turn_Target_last = Turn_Target;      Turn_Target=RoadPianCha - (encoder_left-encoder_right)/5;               if(My_Abs(RoadPianCha) >= 5) {         Kp = 41.0 * (200+encoder_left + encoder_right)/200.0;        Kd = -4.2/ ((200+encoder_left + encoder_right)/200.0);        Turn_MaxPwm = 2000;      }      else {      Kp =3;      Kd = -5;      Turn_MaxPwm =200;      }       if((My_Abs(Turn_Target) - My_Abs(Turn_Target_last)) >= 37) //入弯防抖      {       // Target_Velocity = 100;        Kp = Kp * 3.2;        Kd = Kd * 2.3;      }      else if((My_Abs(Turn_Target_last) - My_Abs(Turn_Target)) >= -40)  //出弯防抖      {       // Target_Velocity = 1000;        Kp = Kp * 1.7;        Kd = Kd * 3.4;      }      if(Turn_Target>Turn_MaxPwm)  Turn_Target=Turn_MaxPwm;           //转向速度限幅      if(Turn_Target<-Turn_MaxPwm) Turn_Target=-Turn_MaxPwm;              //=转向PD控制器==//      Turn=  -Turn_Target*Kp + (gyro+ 2)*Kd;       //结合Z轴陀螺仪进行PD控制      return (int)Turn;}汇总最后关于这几个环串起来:在主函数中开一个定时器(时间大概为1-2毫米)把这几个函数轮番调用下面的是我定时器触发函数////====数据处理====平衡控制==速度环控制==转向环控制void PIT1_isr (void){       flag1ms++;    if(flag1ms%2 == 1)    {            Get_Dip_Angle();            //角度获取                Balance_Pwm = Balance_Ctrl_Pwm(Angle_BalanceGyro_Balance);         //===平衡PID控制                if(flag1ms >= 100)            {            flag_100ms++;            flag1ms = 0;            Velocity_Pwm = Velocity_Ctrl_Pwm( Encoder_Left Encoder_Right);        //===速度环PID控制     记住,速度反馈是正反馈,就是小车快的时候要慢下来就需要再跑快一点            }    }    else    {      Encoder_Right =   FTM_AB_Get(FTM1);          //脉冲为前进+,后退为-          Encoder_Left  =   -FTM_AB_Get(FTM2);             Get_AD_data();      //获取电感,测距的AD值    AD_chuli();         //处理AD值,得出最终偏差    Turn_Pwm = Turn_Ctrl_Pwm2(Encoder_Left Encoder_RightGyro_Turn);  //===转向环PID控制       }        //输出电机PWM————负脉冲向前    Moto_Left=Balance_Pwm+Velocity_Pwm+Turn_Pwm;                   //===计算左轮电机最终PWM    Moto_Right=Balance_Pwm+Velocity_Pwm-Turn_Pwm;                  //===计算右轮电机最终PWM          //end    PIT_TFLG(1) |= PIT_TFLG_TIF_MASK;    //清中断标志位    }版权声明:本文为CSDN博主「一城烟雨 一楼台」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_42803127/article/details/102856398