Arduino: 从入门到入土

正在更新之中,预计四个月左右写完


目录

  • 简介

基于官方版本Arduino Uno / Arduino 2560 的Arduino教程,适合初高中生以及非计算机及电子相关专业学生学习,制作自己的智能设备。

代码Git地址:https://bitbucket.org/LikwunCheung/arduino/src

更新日期:13/10/2018 - Arduino基础
更新日期:10/10/2018 - 大纲


  • 基础知识

    • 什么是Arduino?

      • 单片机基础知识

        1. 单片机的定义

          单片机的具体定义可以在网上查到,这里主要说一些对于初次接触单片机的人来说比较容易理解错误的概念。

          首先需要明白的是,单片机(MCU)和我们所看到的开发板的区别。

          事实上,单片机仅仅指的是开发板上的主控制芯片,比如Arduino Uno使用的单片机是Atmel公司的Atmega 328P, 而STM32开发板则使用的是意法半导体公司的M系列单片机。

          开发板则是以单片机为核心,搭配了外围电路的一个电子产品,因为单独的一个单片机芯片事实上是很难在开发过程中使用的,程序的烧录以及与计算机的交互等功能都依赖于外围电路的支持。当然开发过程中也可以每次都生产PCB板来专门测试我们的产品功能,但是对于硬件开发者来说,这样所需要的时间成本和金钱都是非常高昂的,所以我们一般使用开发板来工作,在功能都测试完成后再进行PCB的生产以及元器件的焊接。

          比如对于Arduino Uno来说,其外围的电路元器件包括了晶振电路、USB转串口芯片、USB接口、5V电源管理、管脚引出的排针以及重启单片机的按钮。而在真正设计产品的时候,我们可以根据我们的需要,将一些部件除去。比如USB接口和USB转串口芯片在实际产品之中并不是很需要,只需要使用ICSP接口便可以烧录程序及Bootloader。也可以根据需求,在PCB设计时将单片机的管脚直接连到我们的模块或者芯片上。例如我们在接下来会学习到的DS3231芯片,我们可以将Atmega328P的I2C管脚直接连到DS3231芯片的I2C管脚,将SPI管脚连到Usart屏幕管脚上来制作一款带显示屏的时钟设备。

        2. 嵌入式系统开发
        3. 业界主要公司
        4. 单片机参数
        5. 单片机选型
      • Atmel 与 Arduino

        1. Arduino理念及型号
        2. Arduino与Atmel单片机关系
        3. Ateml用户手册
          Atmel ATmega 328P
          Atmel ATmega 2560
      • Arduino其他相关资料

        1. Arduino Uno Pins Map
        2. Arduino 2560 Pins Map
        3. Arduino Nano Pins Map
      • 开发环境搭建

        • Arduino IDE 选择
          1. 官方IDE
          2. VSCode + Arduino拓展
      • Arduino及其他配件

        1. Arduino

          Arduino的型号非常多,以下为各型号之间的对比

          型号 芯片 主频 数字IO 模拟IO 定时器 PWM路数 闪存 运行内存 EEPROM 电压
          Arduino Uno ATmega 328P 16MHz 14 6
          Arduino Nano
          Arduino Mega 2560
          Arduino Edison
          Arduino Tiny
          Arduino Due

          本教程以 Arduino Uno R3 / Arduino Mega 2560 / Arduino Nano 为基础,因此也建议大家选择这三款进行学习

        2. 本教程使用到的传感器
          模块类型 型号
          超声波距离传感器
          红外线距离传感器
          光敏电阻
          共阴极RGB LED灯珠
          LCD显示屏 12864
          人体感应模块 HC-SR501
          3位数码管
          Usart显示屏
          时间模块 + 温度传感器 DS3231
          蜂鸣器
          湿度传感器
          TF卡模块
          MP3模块
          有源喇叭
          功放模块
          九轴模块 JY-901
          光电计数器
        3. 其他配件
          配件类型 型号 数量
          杜邦线 20cm 方头 公对公 / 公对母 / 母对母 各50根
          面包板 大号 16.5x5.4x0.85cm 1个
          LED灯珠 5mm 绿色 / 红色 / 黄色 各10个
          电阻 10 / 330 / 3.3K 各30个
          电位器 0~10K 2个
          按钮 10个

  • 入门级教程

    • 第一个程序

      安装好IDE并确认Arduino已被正常识别后,我们需要测试当前Arduino是否可以正常烧录程序并运行,我们写的第一个程序,将让Arduino上板载的LED灯隔一秒闪烁一次,在以后每次拿到新Arduino的时候我们都可以这么做来确认Aruidno的状态。
      菜单-文件-新建项目-Flash.ino

      /*
      Flash.ino
      
      Author: Likwun Cheung
      Date: 10/10/2018
      Git: https://bitbucket.org/LikwunCheung/arduino/Flash/
      */
      
      #include 
      
      void setup() {
        pinMode(13, OUTPUT);
      }
      
      void begin() {
      
      }
      

      烧录后,

    • 与电脑交互

      事实上ATmega 328P并不能直接与计算机的USB端口进行通信,USB全称Universal Serial Bus,使用的是一种高速的串行协议,而ATmega 328P使用的是低速串行接口,因此Arduino在设计电路的时候使用了一块USB转串口的芯片将计算机USB端口发送的数据处理成了ATmega 328P能够处理的数据,这点将在进阶教程中的电路设计进一步说明。
      那么在一节中我们将练习如何让arduino能够与计算机进行通信

    • 连接按钮

    • 读取电位器阻值

    • 红绿灯

    • 内部中断:红绿灯

    • 外部中断:按钮

    • 3×3键盘

    • 舵机的控制

    • 光线检测

    • 超声波测距

    • Arduino钢琴

    • 杀马特RGB


  • 中级教程

    • Arduino源码

    • 寄存器

    • 精确舵机控制

    • 直流电机驱动

    • 步进电机驱动

    • 无刷电机驱动

    • 传感器的驱动

    • LED屏幕

    • 万年历

    • 中文图形化界面

    • 触屏

    • MP3

    • 两块Arduino之间的通信

    • 多块Arduino之间的通信

    • 连接Wifi


  • 高级教程

    • PID

    • 避障小车

    • 做一个云台

    • 时间线变动探测器


  • 进阶教程

    • 设计自己的Arduino

      1. 数字电路与模拟电路

      2. 电路设计软件

      3. 元器件以及购买渠道

      4. 设计电路原理图

      5. 设计元器件封装

      6. 设计电路

      7. 制作电路

      8. 烧录Boot Loader

    • 实现简单实时操作系统RTOS

      • 实时操作系统

        1. 多任务
        2. 周期任务
        3. 实时响应
      • 状态机

你可能感兴趣的:(Arduino: 从入门到入土)