[编程开发] 有没有大佬指点一下Arduino、51单片机、STM32的学习路线?

[复制链接]
寂寞狼 发表于 2023-10-3 19:11:36|来自:中国 | 显示全部楼层 |阅读模式
有没有大佬指点一下Arduino、51单片机、STM32的学习路线?
全部回复5 显示全部楼层
lews397715 发表于 2023-10-3 19:12:19|来自:中国 | 显示全部楼层
搞单片机的读者都应该听说过Arduino,或者用过Arduino,但很多小伙伴还是不清楚究竟什么是Arduino,今天就针对初学者简单描述一下 Arduino 相关内容。

一、初识Arduino
要了解Arduino就先要了解什么是单片机,Arduino平台的基础其实就是AVR指令集的单片机。

1、什么是单片机?
一台能够工作的计算机包含以下几个部份:中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。而在单片机中,这些部份全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。

2、单片机有什么用?
所谓杀鸡焉用牛刀,并不是任何场合都需要很高的性能。想象一个使用Intel i7处理器的声控灯,其性价比一定低到突破天际了。应用的关键是看是否够用,是否有很好的性能价格比,于是单片机很好地填补了这个缝隙。

回过头来,那什么是Arduino?
Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于艺术家、设计师、爱好者和任何“想捣腾”的朋友们。特点就是形状简单,能够实现与人互动,十岁的孩子也能用它做出一些自己想要的东西。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,收录进微控制器。基于Arduino的项目,可以只包含Arduino,还可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。

二、Arduino种类
市面上可供选择的Arduino板实在太多了,撇开原厂那十几个不说,光某宝上多如牛毛的各式Arduino就有上万种,对于入门者来说简直惨无人道。选择一块合适项目的Arduino是成功的一半,下面我们一起看下最常见的Arduino板以及如何区分它们。



Image

Arduino Mega
要区分这么多板子,挑选合适的Arduino,主要看以下三个方面:性能、特性以及尺寸。

首先看性能。即处理器内存、时钟频率以及位宽。硬件处理能力通常完全取决于这块板子的芯片,同时芯片也限制了能够运行的软件。
其次看特性。包括所有板子上除微处理器之外的所有东西,例如输入/输出针脚,集成元器件(按钮、LED、电机驱动等)以及可用接口的种类和数量(USB、以太网等)。
最后看尺寸。由于项目性质不同,其留给电子部分的体积和重量也大相径庭。例如要给狗狗做一个追踪器,如果使用Mega和电池盒加上扩展板,至少也得有10*5*5cm大小,200g重,敢问这是追踪器还是沙袋?正因为如此Arduino才有如此多的兄弟姐妹们。

说了那么多,来看看有哪些主流的Arduino吧。

1.Arduino Uno
处理器: ATmega328 (8位 CPU, 16MHz 时钟频率, 2KB SRAM, 32KB 闪存)
特性: 14 个数字 I/O 口, 6 个模拟输入口, 可更换处理器设计
尺寸: 75 x 55mm
价格: $30




Image

2.Arduino Leonardo
处理器: ATmega32u4 (8位 CPU, 16MHz 时钟频率, 2.5KB SRAM, 32KB 闪存)
特性: 20 个数字 I/O 口, 其中12 个可作为模拟口, 原生支持USB
尺寸: 75 x 55mm
价格: $25




Image

3.Arduino Due
处理器: Atmel SAM3X8E ARM Cortex-M3 (32 位 CPU, 84MHz 时钟频率, 96KB SRAM, 512KB 闪存)
特性: 54 个数字 I/O 口, 12 个模拟输入口, 2 个模拟输出口, 原生USB支持
尺寸: 100 x 55mm
价格: $50




Image

4.Arduino Micro
处理器: ATmega32u4 (8位 CPU, 16MHz 时钟频率, 2.5KB SRAM, 32KB 闪存)
特性: 20 个数字 I/O 口, 其中12 个可作为模拟口, 原生支持USB
尺寸: 50 x 18 mm
价格: $27




Image

5.LilyPad Arduino
处理器: ATmega328 (8位 CPU, 16MHz 时钟频率, 2KB SRAM, 32KB 闪存)
特性: 14 个数字 I/O口, 6 个模拟输入口
尺寸: 50mm 直径圆形
价格: $22




Image

当然,还有很多,这里就不一一列出来了,感兴趣的可以自己了解。
三、Arduino编译环境下载安装下载地址:
https://www.arduino.cc/en/Main/Software




Image

三大主流操作系统 Windows、 Mac、 Linux都支持,可更加自己情况选择下载。

安装的过程,这里就不一一讲述,基本上都一路“Next”下去就行。如果不会安装,我觉得你是一个不合格的开发者。
【学习交流群】不知道怎么学?遇到问题没人问?到处找资料?邀请你加入我的嵌入式物联网单片机学习交流群,群内气氛活跃,大咖小白、在职、学生都有,还有群友整理收集的100G教程资料,点击下方进群占位。(点击跳转到群二维码,请放心点击!)
知乎-嵌入式物联网单片机学习交流群

四、认识Arduino IDE
这次小实验目的就是在Arduino UNO板上点亮13号引脚的LED灯,持续一秒,然后灭掉,再持续一秒,一直循环。

现在,我们假设使用的是Arduino UNO型号的控制板(初学者建议用UNO,稳定),而且按照上面步骤也已经部署好了Arduino开发环境,安装好USB驱动。

1.连接Arduino控制板和电脑
将USB线一端插在Arduino控制板上,一端插在电脑的USB接口上。(注意:独立工作时Arduino控制板既可以选择从USB供电, 也可以选择用充电宝或电源适配器供电)

连接Arduino控制板和电脑

打开Arudino IDE,就会出现Arduino IDE的编辑界面




Image

2.认识Arduino IDE
我们先简单认识一下Arduino的这个编译器,以后可是要经常和它打交道的。




Image

Arduino IDE是Arduino产品的软件编辑环境。简单的说就是用来写代码、下载代码的地方。

任何的Arduino产品都需要下载代码后才能运作。

我们所搭建的硬件电路是辅助代码来完成的,两者是缺一不可的。如同人通过大脑来控制肢体活动是一个道理。如果代码就是大脑的话,外围硬件就是肢体,肢体的活动取决于大脑,所以硬件实现取决于代码。

Arduino IDE基本的功能区已经在上面标示出来了(偷个懒用的旧图,不过和新版的布局一样的),上图大部分的白色区域就是代码的编辑区,用来输入代码的。注意,输入代码时,要切换到英文输入法的模式。下面黑色的区域是消息提示区,会显示编译或者下载是否通过。

3.下载一个Blink程序




Image

下载一个最简单的代码,既可以帮我们熟悉如何下载程序,同时也测试下板子好坏。

UNO板上标有L的LED。这段测试代码就是让这个LED灯闪烁。

4.打开Blink
插上USB线,打开Arduino IDE后,找到“Blink”代码。
文件 > 示例 > 01.Basics > Blink




Image



Image

5.校验程序
通常,写完一段代码后,我们都需要校验一下,看看代码有没有错误。点击“校验”。




Image



Image

校验(编译)完成后,可以看到相应的提示。

由于是样例代码,所以校验不会有错误,不过在以后写代码的过程中,输入完代码,都需要校验一下,然后再下载到Arduino中。

程序在下载之前,我们还要先告诉Arduino IDE,我们用的是什么板子以及相应的串口是哪个。

6.设置板卡型号
Arduino包括多种版本的主控器,其中比较常见的是Uno、Leonardo以及Mega系列的控制器(最全选型指南)。

在板子一栏,你需要根据自己选择的主控硬件的固件类型来选择板卡。(样例中选用的以Uno为bootloader的控制器) 工具 > 板卡 > Arduino Uno




Image

7.设置串口
工具 > 串口 > xx,这里的xx要和我们电脑设备管理器中看到的一致。




Image

8.下载程序
如图,最后,点击“上传”。(这边上传和前面的下载其实是一个意思)




Image

上传完毕!

不出意外,我们就能在板子上直观地看到程序运行的效果了
原作者:小麦大叔
出处:单片机爱好者
原文链接:Arduino和单片机区别,及Arduino入门教程 (qq.com)
bingfeng009 发表于 2023-10-3 19:13:01|来自:中国 | 显示全部楼层
51单片机可以帮助你理解寄存器的概念。我是一开始刚上大学的时候就学了51单片机那时候看的是郭天祥的那本书,用的别的开发板,然后看了一些中断定时器那些怎么配置后就没怎么做51了,回到重点,学习51单片机可以找本书看看,上面有相关的概念可以试着理解。arduino我用的少,它是把很多功能封装成一个函数用起来非常的简单,可以不学。然后就是学stm32建议买个正点原子的开发板,也可以买其他的,我买的是德飞莱的那个板子,然后按照正点原子的视频跟着边看边写程序,很快上手。
总之这个路线不是固定的,你也可以先学32也可以。学习的过程是慢慢积累的。看得多了,最后有一天突然就全通了。
如果觉得这个回答有用的话点个赞呗,这是认真回答问题的动力。
-------------------------------分割线----------------------------------
今天上知乎竟然发现该回答已经有几个人赞,结合自己的经历再次回答下本答案,之前说过arduino可以不学,答主回想自己当时参加电赛的经历,在这简单说下arduino的优缺点。arduino由于其操作风格简单,有很多的封装好的函数因此上手起来简单。而且arduino基于开源社区,这里有很多其他人写过的代码,当你需要用某个功能或某个芯片时,如果正好发现有人写过,那用arduino就可以帮助你快速上手项目或者某个需求,无需自己去仔细翻阅技术手册。不过arduino有个缺点就是运算速度太慢了。总结下就是大家学有余力或者感兴趣情况下可以玩一玩arduino这个学会还是挺好的,但是重心建议还是stm32。最后点赞是我回答的动力。
mahuman 发表于 2023-10-3 19:13:27|来自:中国 | 显示全部楼层
其他回答都提到了买板子来实战,这是最重要的一点。但在正式接触之前,先问问自己学习这类硬件的目的。
如果是兴趣爱好,只想搞搞简单的智能硬件,像搭积木一样地玩一下,那就只用Arduino,其他的如51和STM32都不要碰;Arduino这个生态已经足够丰富到基本能完成所有物理量的交互,包括各种传感器、声光电输出、位移输出、网络连接,甚至有量产的产品都是基于Arduino生产的。
如果是想要靠这行吃饭,并且热爱,要深究,那我建议先检查一下自己的储备知识是否足够。基础到如模拟电路、数字电路原理、计算机组成原理、单片机原理、编译系统、网络模型、传感器原理、数据结构、数值计算等,都需要有全局的了解。单片机只是一种实现工具,只有系统性知识有保证,才能把工具掌握好,把工具运用到位、高效。倘若如此,建议不碰Arduino,甚至可以跳过51,从系统略微复杂但是开发友好的STM32入手。当然并非先打牢了基础才能碰工具,可以边用工具边啃基础,甚至可以是觉得对哪部分不理解再去找对应原理来看。
aGDasdg 发表于 2023-10-3 19:13:52|来自:中国 | 显示全部楼层
建议购入一套arduino入门套件,arduino是一切学习的基础,结合项目和入门教程开始学习,教程DF创客社区有入门系列教程可以边学边实践,动起手操作起来才能真正学以致用,发现问题,解决问题;
然后接下来可以结合51单片机,从基础编程入手开始学习,由浅入深,当然也可以前期从图形化编程软件学起,这是不错的选择。
最后建议学习STM32,可以尝试搭载一些有意思的项目和智能小车等。
tianzi3203 发表于 2023-10-3 19:14:25|来自:中国 | 显示全部楼层
第一步,买开发板!建议先学Ardunio,不要买mini,买正常的那种,然后买个面包板连线学习简单的接线,电路也比较好接。编程好好看看别人写的,看懂就可以了没必要自己写出来!但是得会改!
然后再学51单片机,开始写简单的程序,去制作一些小玩意,正点原子的好像送的教程挺不错的,好好看视频跟着做也不难。
最后再学stm32!前面两种都会的话,你会发现这个功能真多,也是建议买正点原子的板子,教程很全。总之学会挺容易的,改程序一定要多问多请教,自己没事多琢磨!

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则