小彭老师带你入门单片机系列课程启动啦!单片机,或者说微型控制单元(MCU),相当于一个微型的计算机,具有丰富的外设接口,与平常司空见惯的桌面端程序不同,单片机可以通过引脚和高度模块化的外设操控现实世界,这也是我喜欢单片机的原因。本期我们选用了网络热门爆款开发板Arduino Uno作为平台,得益于Arduino良好的生态,可以直接用C++11对单片机进行编程,简洁的编程接口易上手,丰富的文档和网络教学资源,特别方便的Arduino IDE,使Arduino成了对新手最友好的开发板系列。
因为小彭老师之前做过许多期桌面端的C++课程,本系列课程会假定读者已经具有基本的C语言知识,从一个“桌面端程序员转战嵌入式工程师”的视角来入门单片机。我们不会像网上大多数课程那样,再从最基础的C语法讲起。只会着重突出嵌入式环境中C语言使用方式与桌面端的不同点,例如避免malloc等。以及介绍Arduino库提供的API的使用,如何利用GPIO引脚点亮LED、获取传感器输入,补全一些基本的电学知识。
注意:本视频没有任何商业合作恰饭订单,Arduino 完全是我出于兴趣自学的,目前我自己的岗位中也没有用到,只是帮助想要入门嵌入式的人。
项目源码:https://github.com/parallel101/arduino-tutor
建议购买“国产版”Arduino Uno,因为意大利原装进口版太贵,要122块多,而国产版平均只需22块左右,哪个便宜挑哪个,反正功能都一样,除非你希望获得信仰加成(正版受害者)。如果你讨厌Uno的方口和巨大的体型,也可以购买更迷你的Arduino Nano。
我还推荐同时买一个“传感器扩展板”,搜索“Arduino Uno扩展板”就可以找到了,扩展板插在Arduino上,就能用了。如果你买的是Arduino Nano或ESP32,也有相应的扩展板,插上以后,传感器布线会轻松很多。
以及要购买一些“杜邦线”用于连接模块与Arduino之间的引脚。如果你用传感器扩展板,只需要“母对母”的杜邦线的杜邦线就够了;如果你不用传感器扩展板而是想要直接插Arduino上,那么还需要一些“公对母”杜邦线;如果你玩面包板,那么还需要“公对公”的杜邦线。这就是为什么我强烈推荐使用传感器扩展板。
购买Arduino时,商家会提供额外的选项,带有许多额外的传感器一起卖给你。不建议购买附带一堆传感器的“豪华套餐”,因为这些传感器单独买得到,加起来也是差不多的价格,这些所谓“豪华套餐”其实都是商家自己去淘宝上买,然后重新给你打包,转手卖给你赚不懂的小白的差价的,并没有什么批发优惠。而且你选套餐的话,里面很多传感器你可能都不认识,不会用,根本用不上,比如火焰传感器,土壤传感器,你可能家里不养花,就根本没用。
所以除非你家财万贯且懒得思考哪个需要买,我会推荐单独购买一些常用传感器。本期课程中出现的传感器有:LED灯,红外感应模块,SG90舵机,N20减速马达,有源蜂鸣器,无源蜂鸣器,旋转电位器(其实就是个滑动变阻器)。
我是就是淘宝上在“树莓派零售商”买的Arduino Uno,结果被魅惑“豪华套餐”,捆绑买了一堆有的没的传感器,还附带了一大堆几千欧姆的电阻(太大了,根本用不上,LED只需要几百欧姆的电阻就行了)。更糟糕的是,对了一下他们的官方套餐列表,发现还有几个传感器缺了,让他们补发给我。
不过我的“Arduino Uno扩展版”也是“树莓派零售商”买的,这个倒是不错,比面包板好用多了,解决了正负接线柱只有两个不够用,接线满天乱飞的痛点。
话说你店名叫“树莓派”零售商却在卖“Arduino”全家桶是否有点NTR了(x
等熟悉单片机和数字电路的一些基本知识后,我们会切换到更高性价比也更复杂的STM32和ESP32等MCU就会更加得心应手,妈妈再也不用担心我找不到劳务派遣(x
要注意Arduino使用5V供电内部的逻辑电路也是5V,GPIO引脚输出的也都是5V逻辑电压,而常见的STM32和ESP32都是3.3V供电和3.3V逻辑电压,采购传感器模块时注意看是不是明确支持Arduino的5V电压哦!不过Arduino的GPIO输入范围很宽松,2.5V~6V的电压都会视为高电平(true),所以3.3V逻辑电压的GPIO输入也可以被Arduino正确识别。
以及注意LED的安全工作电压是3V左右,不能直接接在Arduino的5V输出上,需要串联一个220欧的电阻,否则LED会因为太亮而烧掉。但购买LED模块就没问题,因为LED模块上已经帮你算好电压公式,自带了一块贴片电阻,保证在输入5V时LED也能正常工作。