1.单片机是指中央处理器内核加了一些外围接口电路,做到一个芯片中,也叫微控制器MCU,或SOC,单片机。8051芯片、avr芯片、arm芯片...都叫单片机、微控制器,而英特尔的80x86系列是中央处理器CPU,不能叫单片机。
2.树莓派是一种电路板子。它使用ARM微控制器芯片,和linux操作系统或windows操作系统,连接上显示器、键盘、网络(网口或wifi)就可以组成是一个很小体积的桌面电脑。
3.ARM是英国的一个公司,主要设计ARM系列的中央处理器(CPU)。ARM系列处理器是32位或64位处理器,是芯片,不是软件,是很流行的芯片。三星,苹果等很多公司都买ARM公司的授权,开发出自己特色的微控制器(MCU)。
4.Arduino是一种开发工具软件,不是一种芯片,也不是一种电路板。它可以支持很多种处理器芯片的开发,内部有很多库,软件和硬件开发方式具有很明显的搭积木方式,开发应用,简单、方便、快捷。
====复杂地说:
1.应用
Arduino主要用于前端的无操作系统、以实时控制为主的环境,如机器人前端控制,四轴飞行器前端控制,3D打印机前端控制等。对简单的控制系统,只用Arduino开发就可以了。
2.Arduino是平台
Arduino只是一个用java和gnu实现的、开源的开发平台,其结构源于艺术爱好者做的Processing软件开发工具。它可以支持多种MCU,包括atmel公司的AtmelTiny系列、avr8、ARM Cortex M0、ARM Cortex M3、ST公司的ARM Cortex M3和M4等等。TI公司的energia平台也采用了Arduino的平台结构,可以用于开发MSP430、C2000等。从原理上,Arduino平台不受MCU限制,但是当前只是支持有限的MCU,现在支持的也不少了。
当前已经支持有名的ESP8266,ESP32等比ARM还高级的内核板。
3.对比
(1)单片机也是指某种MCU,只是叫法不同。
(2)树莓派是基于ARM和linux或windows操作系统的卡片式电脑,可以用于计算量较大的环境,可以作为一个低功耗的通用计算机来用,也可以用于复杂控制系统的后端数据处理和GUI,像一个很小的PC机。
(3)ARM只是ARM系列的MCU;
(4)Arduino是平台,不是某种MCU和电路板;
4.硬件抽象层HAL
Arduino有一个硬件抽象层,实现了硬件无关层和硬件相关层的分离。
5.类库和例子
Arduino有大量的类库支持,同时从简到繁有大量的应用例子,可以很快地基于类库和例子实现用户的应用。如果想了解底层的实现,也可以看到底层实现的源码,很优秀、很安全。
6.编程语言
Arduino采用汇编、C和C++混合编程,采用成熟的开源gcc来编译。