如何开始编程一个微控制器?
我已经开发了C ++,Java,PHP,.NET的软件,现在我很有兴趣学习编程材料。 我想编程一个系统,可以与红外,液晶显示器交互,并能够重新使用旧的打印机电机等。
我的问题是,从哪里开始? 我search了networking,发现了一个名为Arduino的开源板,但是如何将其他电子元件集成在一起呢? 我应该做什么书或教程来创build一个小项目?
视差是臭名昭着的高估。 他们逃脱了,因为他们把自己的东西卖给那些不了解情况的教育机构。
Arduino是一个很好的开始,通过他们的一些例子(点击Arduino网站上的“学习”),看看他们需要什么部分。 我最喜欢的爱好电子商店是sparkfun.com 。 他们已经有了大量的部件来与Arduino等设备连接。
您可以用C,C ++或AVR汇编编程它们。 就个人而言,我会说避免BASIC的,他们是慢的,如果你已经在编程,这是不值得的麻烦。
(仅供参考,Arduino基本上是围绕着美妙的AVR微控制器devise的电路板和软件库)
我肯定会第二个Arduino的build议。 他们很便宜,有几个供应商,因为硬件是开源的(尽pipe名字不是),IDE是免费的,你用C语言编程,他们很容易连接任何东西。 该板有12个数字I / O引脚(其中两个作为串行通信引脚)和6个12位A / D转换器I / O引脚(也可以configuration为数字引脚)。 它可以处理电机和伺服控制的脉宽调制(PWM),中断和I2C接口,大多数电路板可以单独运行或closuresUSB端口。 与计算机的通信由FTDI串行USB驱动程序处理。
除了Sparkfun.com之外,还可以访问www.adafruit.com查看一些便宜的小型USB“Boarduino”电路板以及用于全尺寸Arduino的几个不错的原型屏蔽。
主要的Arduino站点( Arduino.cc )有几乎所有的参考和教程,你需要开始。
这是“你好,世界!” 的Arduino编程作为一个例子,它是多么容易。 程序闪烁连接到数字引脚13的LED:
int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { digitalWrite(ledPin, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second }
基本上每个Arduino程序都有一个setup()函数,当电源被加载或者电路板被重置时,以及一个永远运行的loop()函数。 当然,你也有定时器和中断函数,或者你可以使用循环()来轮询input,然后调用其他函数。 Arduino IDE位于GCC之上,使用相同的库,包括如果您正在为Atmega微控制器编写一个准系统程序,您将使用它。 这意味着:(a)只要你想要的就隐藏硬件(引导程序,引导程序等等),(b)如果你愿意,你可以到达程序的内部,(c)你可以利用这个微控制器系列的大量库。
那么,微控制器领域是相当大的。 你有几个品牌,每个品牌都有各种各样的控制器,具有不同程度的能力,复杂性和能力。
也就是说,从大多数微控制器开始的方法是阅读制造商手册。 与“正常”编程相反,大多数编程人员依照标准和规则以及最佳实践和框架等进行编程。微控制器编程在20世纪80年代早期编程时仍然非常完善:通过阅读控制器手册,再现示例,从那里延伸。
例如,Microchip的手册非常棒。 他们也有一个非常好的社区 ,并为一些图书馆提供你可能喜欢使用的“标准”function(如math,I / O,使用两个引脚进行串行I / O等等)。 很多与PIC合作的人都是非常开放的,如果他们认为这可能对其他人有用,通常会分享他们的源代码。
在开始之前你有一些select。 第一个是你要用什么语言。 你有三个select:
- assembly:大多数制造商为其微控制器(简称MCU)提供免费或相当便宜的开发套件。 这是最强大的select,如果你觉得舒服,你应该使用这个选项。 它也会教你很多关于电脑的一般情况。
- 其他的东西:如果你想使用类似C的东西,你将不得不为编译器付出相当多的钱(尽pipe对于某些设备至less有一个开源选项 ),你必须考虑由高级语言产生的代码通常在设备中占用大量空间/内存。 另外,根据标准库,你最终还是会自己编写相当多的function。
- 基本/类似Pascal的语言:一些MCU带有Basic / Pascaltypes的解释器。 开始做一些“玩具”项目,感受这些东西是如何工作的,是非常棒的。
然后,你必须决定你想使用什么样的设备。 无论是PROM,EPROM,EEPROM,它有多less内存,有多less存储空间,有多less个可编程引脚等等,每个单元的价格因制造商而异。
我的build议,首先,将是:
- 尝试在互联网上find一个免费的“刻录机”,如果你想体验使用你build立的东西编程你的MCU的快感。 有很多可用的,只是谷歌“简单的PIC烧录器”或类似的。 如果这不是要求,那么你可以买一个燃烧器,但它会花费你一大笔钱。
- 获得一个您认为将要使用最多的MCU的EEPROM版本。 这样可以节省您因为代码中存在错误而不得不丢掉5美元硬件的问题。
- 买一堆PROM版本的MCU。 他们很便宜,你需要他们。 一旦你开始,你会想要把一个MCU 到处都是 。
- 了解如何使用模拟器。 大多数SDK都带有一个模拟器,您可以在提交给PROM之前testing您的想法。
- find自己一些简单而有趣的第一个项目。 我必须在那里强调简单 。 如果你试图想出一个方法来控制你的微波炉使用遥控器马上,准备好长时间的学习。
那么,希望这可以帮助你! 如果你想要更多的信息,我就在附近,只是吹口哨! 🙂
我最近开始学习使用Arduino的微控制器编程。 我从adafruit.com购买了Arduino Starter Pack ,并通过了入门教程 。 他们的套件带有一些基本的电子元件(发光二极pipe,button,光敏电阻),可以给你一些东西来实验。
如果您已经了解C / C ++,您将能够在数小时内开始创build有用的和有趣的项目。
Arduino也非常棒,因为一旦熟悉它,您就可以轻松扩展到在任何Atmel AVR系列微控制器上编写原始C语言。
我也推荐电子金矿 ,在那里你可以购买各种各样的电子产品相当便宜,以获得一个良好的起动机开始工作。
BASIC邮票系列非常有趣。 他们有很多简单的控制板让你开始,编程很简单。 控制器实际上执行BASIC。 虽然这可能不会激起很多人的兴趣,但编写微控制器代码需要时间来掌握它。 这个系统很好,让你的脚湿。 然后,当你有一些很酷(和简单)的项目运行,你可以移动到其他更具挑战性的控制器。 这些将是最有可能的组装或C编程。 debugging将是您最大的挑战。
Parallax BASIC邮票
对于你想要做的事情,这可能是过度的,但是基于FPGA的系统编程可能很有趣。 VHDL语言比编写C代码更像接线电路。 Nexys-2电路板可以以130美元的价格购买。
您可以在这里find您在Arduino和电子设备上启动所需的一切: http : //www.smileymicros.com 。 如果我记得不错的话,那么这本书的作者在其中一本电子杂志中就有了Arduino新手的专栏。 除此之外,一般来说,你应该学习I2C,SPI,1wire,并尝试将传感器与这些接口连接起来。 阅读很多这样的传感器的数据表,并试图了解它们的一切。 卡住时询问问题。 学习MODBUS(RTU / ASCII / TCP)或类似的协议,一旦将设备embedded到设备中,即可将设备打开。 学习通用电子产品,尝试连接继电器,三端双向可控硅开关,步进电机,舵机,上拉和下拉,采购和下沉,如何绘制原理图以及如何连接基本的驱动器到您的MCU。
我也有这样的印象,你需要从基本的微控制器架构开始。 事先知情同意,因为基本模型和最早的系列可以是非常有用的 – 他们没有太多的额外的function,所以你不会迷失在额外的基础上,这是很好的。
在此之后,您需要了解许多关于内存组织和程序执行的事情,这些内容是关于微控制器生命周期和时序模型的。 在此之后,您可以开始分析具体微控制器的基本汇编程序示例,并向前推进更先进的技术。 然后,您可以转向更高级的PIC系列,其中DAC和其他模块是大多数现代微控制器的常见模式,但在PIC上,您可以获得大量的基础知识,而无需额外的痛苦,这对所有其他芯片来说都是一样的。
每个微控制器都不同。 BASIC邮票在业余爱好者中非常stream行,因为你可以用高级语言编程。
对于较低级别的工作,一种非常普遍的select是PIC ,一种廉价(<4美元)和快速(〜20 MHz)芯片,几乎没有板载内存。 您可以在维基百科上find开发环境列表 。
如果您需要购买电子元件以配合您的微控制器, DigiKey是一个很好的开始。
检查丹O'Sullivan 物理计算 : http ://itp.nyu.edu/~dbo3/physical/physical.html他也有链接到基本邮票,BX24,基本primefaces和PIC“快速参考”。
Arduino是一个拥有大型支持社区的绝佳平台。 我推荐它。
另一个投票是非常酷的Arduino。 使用Arduino板,单线温度传感器和超级terminal,您可以开始logging关于您周围世界的数据。 挂钩处理,你可以logging数据,图表,分析它在Excel中,不pipe。 整齐。
如果你是一个电子爱好者,你可以build立自己的开发系统。 这可能会更复杂,但它更有趣。
在这里看到一个简单的PIC16F628A微控制器开发系统,包括完整的原理图和PCB: http : //www.bobtech.ro/proiecte/microcontrolere/1-bobdemo-sistem-pentru-dezvoltare-aplicatii-cu-microcontroler
特征:
- 12个input/输出,带buttoninput和LED输出
- PC的RS232串行接口
- 红外遥控传感器
- 板载ICSP编程连接器
- 可选板载9V电池(用于演示目的)
- 板载+ 5V电源,用于微控制器和外部外围设备
编程时,可以使用BobProg – ICSP PIC编程器
遵循编程器原理图和PCB的链接。
软件:
- (免费)Microchip的MPLAB IDE用于C或ASM语言开发
- (免费)用于ICSP编程器的IC-Prog闪存编程软件
我有两个build议。
-
印章微控制器是伟大的入门级芯片。 你可以在易趣上买到便宜的(<30美元)。 我还可以推荐Tom Petruzzellis的“Stamp2通信与控制项目”书籍http://www.amazon.com/STAMP-2-Communications-Control-Projects/dp/0071411976/ref=sr_11_1?ie=UTF8&qid=1221613350&sr=11- 1
-
Microchip(www.microship.com)生产Stamp微控制器。 他们还提供免费样品从他们的网站,包括运输。 我拿起一个微波炉,内置收音机做一些双向的RF通讯(不是WIFI)。 另一个伟大的微控制器制造商是Dallas Semiconductor http://www.maxim-ic.com/ ,他们也提供免费样品。 达拉斯/马克西姆也有一个工程杂志,他们将免费邮寄到您的地址,该杂志有大量的样本实施,当然使用他们的芯片,从中你也可以从中获得很多好的信息。
在旁注:
如果你不想让你的手脏了很多东西,或者不愿意这样做(像我一样),那么试着看一下PLC 。
它们是工业用硬件控制器,几乎适用于各种任务,如数字I / O,模拟I / O,步进电机控制器,串行I / O,以太网等。您可以用不同的方式对它们编程,如graphics和汇编器带有代码的文本编辑器看起来像是Pascal和Basic的混合体。 他们有内置的多任务处理,通常performance相当不错,但比普通的微控制器贵一点。 我总是推荐Wago和他们的750-841控制器。