
“权力不在于铁,而在于知识”-我们可以说最近。
现在,电子和机器人技术已比以前更容易使用-可以选择,但进入门槛已经降低。 但是,如果不知道它是如何工作的以及如何使用它,则该电子设备将仅保留为“硬件”(以及它的发生方式,有时是闲置的)。 根据个人经验和实践,获取知识要困难得多。
因此,非常适合初学者的课程。 有收费和免费的课程-但是确保相关性,课程支持,硬件兼容性和反馈不只是问题,更重要的是俄语。
我们想向您介绍这些在线课程之一:“ 我们在Arduino上构建机器人和其他设备。从交通信号灯到3D打印机 。” 该课程由网络物理学和MIPT(莫斯科物理技术研究所)联合开发。 可在Coursera上免费获得培训文本和视频材料。 该课程分为6个部分(每个星期一次),每个部分-发送相应的铁。
最好根据我们的经验来讲述,因此,随着我们的进步,我们将“实时”谈论课程和印象。 分享印象将是我们黑客空间的参与者之一。
第一周
大家好! 我的名字叫安东(Anton),我想在为期六周的系列出版物中告诉您有关参加MIPT在线课程的经验。
一个小介绍。 我的教育和正在进行的工作与IT有关。 电子和电路方面的知识以电子学的大学课程结尾。 有时我使用烙铁,可以对任何电路进行简单的计算。
这样的人没有Arduino的编程经验。 我主要使用Python和Bash编写脚本,并使用PHP和JavaScript语言熟悉的类似于C的语法。 C本身没有编程经验。
在我和兄弟俩对三套用于儿童的电子设备进行了评论之后 ,Cyberphysics项目的代表建议参加Coursera网站上的在线课程“在Arduino上构建机器人和其他设备”。 由于我之前曾在该平台上修过几门课程(与IT不相关),因此我认为材料是简单而简单的,就像Coursera平台上的大多数入门课程一样,或者是类似电子设备手册中的任务。 但是,事实证明,这是一个谬论。 创作者自己将课程定位为面向学生和高中生的机器人技术入门,学生将学习什么是机器人和其他“智能”设备,它们如何与外界互动,如何与人互动以及最重要的是如何学习如何自己创建此类设备。
有趣的是,根据该课程的作者介绍,三分之二的观众(1.35万人)年龄在25至45岁之间! 而且您可以理解为什么:主题列表非常广泛-从最简单的传感器和“闪光灯”到3D打印机的设备,所有这些都得到必要的理论的支持,例如,电路的设备和参数,信号的类型和参数等。该材料以一种简单易用的语言呈现。 在第一周过去之后,这对我来说也不是什么新闻,该课程的平均分数是5分中的4.9分。
由于培训主要针对实际解决问题,因此课程的作者在头几周为我提供了一套“网络物理学” 机器人和设备。 开始+ 。

在内部,我们看到了一本介绍套件和Neutrino板的小册子。


手册后紧接着是Neutrino板本身,它是Arduino Uno的类似物,但一件事立即引起了人们的注意-板上有20个三针脚,用于连接各种传感器。 这使我感到非常高兴,因为对于我之前看到的其他板,有必要安装一个额外的屏蔽层以连接外围设备。

在内部,所有东西都放在小盒子里。 所有内容袋均已签名。


套件中还装有一个带有管子的奇怪装置。 在Internet上快速搜索之后,结果发现它是潜水泵,很显然,它将在下几节课中使用。
此外,正如课程的作者向我建议的(以及手册中写的内容)一样,您也可以从木板下面使用该托盘-收集其中的方案并将其“松散”存储,以使细节不会在各堂课之间消失。 我在第一周结束后就了解了这一点,但我希望将来我会感谢托盘的好处。

现在让我们讨论一下课程本身。 它持续六个星期。 前三周通过测试进行评估,在第四周及随后的几周中,您可以完成其他任务并派同学进行评估。
在第一周的课程中,老师首先讲了电路的基础知识,然后在Fritzing图形环境和实际板上逐步组装和修改了交通信号灯模型。 首先,组装了一个手动交通信号灯,并使用Arduino逐渐将其变成自动信号灯。 在此过程中,我们介绍了Arduino环境的编程语言基础。
值得一提的是,尽管规模很小,但视频讲座还是很有帮助的,这当然令人高兴。 这是我为自己注意到的第一周的主题的简要列表:
- 工作原理和设备实验板
- 该设备是最简单的电路。 电流。 发光二极管
- 呈现电子电路的方式。 Fritzing环境中的示意图,图形电路
- 电路参数的测量。 电流,电压,电阻
- Arduino开发板和品种。 Arduino IDE
- Arduino IDE中的编程基础。 变量,宏,循环
在第一周的总结中,我诚实地通过了80%正确答案的测试,这是我第一次通过测试,犯了4个错误,其中一个是由于对材料的无知(LED输出以及将其连接到电路的规则)造成的,其余的则是由于注意力不集中。 在第二次尝试中,仅通过一个错误就可以通过测试:)

作为一种实践,我还决定尝试收集一个交通信号灯。 由于一对一的重复练习对我来说似乎有点无聊,所以我立即决定收集两个模拟交叉路口的交通信号灯。
我在“额头上”粗略地编写了该程序,但是它完全按照我的预期工作。 老实说,我尝试用数组和函数来重写代码,并用代码做得很漂亮,但是我立即因对C语言的无知而受到影响-例如,我无法在几分钟内弄清楚如何创建多维数组并用C中的值填充它们。根据课程,这些主题将在第三周进行讨论,因此我决定不超越自己,从容地继续学习课程。
程式码#define PIN_1_G 1 #define PIN_1_Y 2 #define PIN_1_R 3 #define PIN_2_G 4 #define PIN_2_Y 5 #define PIN_2_R 6 int green_on = 5000; int red_on = 5000; void setup() { pinMode(PIN_1_G, OUTPUT); pinMode(PIN_1_Y, OUTPUT); pinMode(PIN_1_R, OUTPUT); pinMode(PIN_2_G, OUTPUT); pinMode(PIN_2_Y, OUTPUT); pinMode(PIN_2_R, OUTPUT); digitalWrite(PIN_1_G, LOW); digitalWrite(PIN_1_Y, LOW); digitalWrite(PIN_1_R, HIGH); digitalWrite(PIN_2_G, HIGH); digitalWrite(PIN_2_Y, LOW); digitalWrite(PIN_2_R, LOW); } void loop() { delay(green_on); for (int i = 0; i < 3; i++) { digitalWrite(PIN_2_G, LOW); delay(500); digitalWrite(PIN_2_G, HIGH); delay(500); } digitalWrite(PIN_2_G, LOW); digitalWrite(PIN_2_Y, HIGH); delay(2000); digitalWrite(PIN_2_Y, LOW); digitalWrite(PIN_2_R, HIGH); delay(1500); digitalWrite(PIN_1_Y, HIGH); delay(2000); digitalWrite(PIN_1_Y, LOW); digitalWrite(PIN_1_R, LOW); digitalWrite(PIN_1_G, HIGH); delay(green_on); for (int i = 0; i < 3; i++) { digitalWrite(PIN_1_G, LOW); delay(500); digitalWrite(PIN_1_G, HIGH); delay(500); } digitalWrite(PIN_1_G, LOW); digitalWrite(PIN_1_Y, HIGH); delay(2000); digitalWrite(PIN_1_Y, LOW); digitalWrite(PIN_1_R, HIGH); delay(1500); digitalWrite(PIN_2_Y, HIGH); delay(2000); digitalWrite(PIN_2_Y, LOW); digitalWrite(PIN_2_R, LOW); digitalWrite(PIN_2_G, HIGH); }
课程注册
从3月27日开始,课程开放: 在Arduino上构建机器人和其他设备。 从交通灯到3D打印机