使用ATmega328p芯片制作Arduino Uno R3开发板

news2024/11/14 11:04:45

一、说明

本文是在整理相关资料的基础上,系统地介绍使用ATmega328p芯片制作Arduino Uno R3开发板的过程。请注意,所有操作指引未经过实践验证,请自行判断正误。

本文的下个更新版本将展示完整的实践过程,敬请期待!

以下将ATmega328p芯片简称为“芯片”,将Arduino Uno R3开发板简称为“Arduino”。

二、判断Bootloader的有无

Bootloader是一种小型程序,预先写入微控制器或微处理器的存储空间中,用于在设备上电或复位时加载和启动主要程序。它相当于一个“启动加载程序”,可以帮助设备执行自我启动和固件升级。

在制作Arduino之前,需要判断所购买的芯片是否已经带有Bootloader,建议购买已经烧录Bootloader的芯片。

如果不确定所购买的芯片是否已经烧录Bootloader,可以通过以下方式判断。

1、连接电路

将一个 LED(加限流电阻,如 220Ω)连接到芯片的第 19 引脚(D13),并将 LED 的负极接地。

2、上电测试

使用5V电源,并将芯片的正负极和电源的正负极相连接。

如果 Bootloader 已正确烧录,当芯片上电或复位时,D13 引脚的 LED 会闪烁几次。这是因为 Arduino Bootloader 默认配置会在启动时闪烁 D13 引脚,表示芯片已经加载 Bootloader。

三、正式制作

1、为芯片烧录Bootloader

对于没有配置Bootloader的芯片,需要使用另一块能够正常工作的Arduino开发板,为芯片烧录Bootloader。

所需准备的材料包括:面包板、芯片、Arduino、杜邦线

(1)将 Arduino设置为ISP

打开 Arduino IDE,选择 文件 -> 示例 -> 11.ArduinoISP -> ArduinoISP。

在 Arduino IDE 中,选择 工具 -> 开发板 -> 您所用的 Arduino(如 Arduino Uno)。

选择相应的端口。

上传 ArduinoISP 示例代码到您的 Arduino 开发板,使其作为 ISP 编程器。

(2)连接 Arduino和芯片

断开 Arduino 的 USB 连接。

使用面包板和跳线,按照以下方式将 Arduino的ISP接口与芯片连接:

Arduino芯片
D10(SS)1号引脚
D11(MOSI)17号引脚
D12(MISO)18 号引脚
D13(SCK)19号引脚
5VVCC
GNDGND

(3)打开烧录Bootloader选项

将 Arduino 再次通过 USB 连接到电脑。

在 Arduino IDE 中,选择“工具 -> 开发板 -> Arduino Uno”。

选择“工具 -> 编程器 -> Arduino as ISP”。

然后选择“工具 -> 烧录引导加载程序”。

(4)等待烧录完成

烧录过程中,Arduino 的 LED 会闪烁。

Arduino IDE 的底部会显示烧录完成的提示(“完成烧录引导加载程序”)。

2、使用芯片搭建Arduino

(1)所需材料

零件数量
ATmega328p芯片1
16 MHz 晶振1
22 pF 电容2
0.1 µF 电容1
10 kΩ 电阻1
5V电源及稳压模块1
面包板1
USB-TTL转换器1

(2)准备工作

将芯片正确插入面包板。

(3)连接晶振

将 16 MHz 晶振连接到 ATmega328 的 9 号引脚(XTAL1)和 10 号引脚(XTAL2),晶振的两端各连接一个 22pF 的电容,电容的另一端接地。

(4)电源滤波

使用 0.1 µF 电容在 Vcc 和 GND 之间进行电源滤波。

0.1 µF 电容可以滤除电源上的高频噪声和瞬态干扰,稳定芯片的供电电压,防止供电波动对芯片工作产生不良影响。

当芯片内部电路切换状态时,会产生微小的电流波动,滤波电容能够提供瞬时电流,减少这种波动,避免电源电压短暂下降。

(5)上电电路

使用 10kΩ 电阻将 ATmega328 的 1 号引脚(复位引脚)连接到 5V,以确保微控制器复位引脚高电平。

(6)稳压供电

使用5V电源及稳压模块,接入到 ATmega328 的 7 号引脚(Vcc)和 20 号引脚(AVcc)。同时,将地线接入 8 号引脚和 22 号引脚(GND)。

(7)连接 USB-TTL 转换器

使用 USB-TTL 转换器连接到 ATmega328 的 RX(2 号引脚)和 TX(3 号引脚)引脚,用于烧录代码。

确保 USB-TTL 转换器的 GND 接地,VCC 接 5V(部分转换器可以用 3.3V,视转换器情况而定)。

(8)测试

打开 Arduino IDE,选择 Arduino Uno 作为开发板。

通过 USB-TTL 转换器连接到电脑,将代码上传到芯片中,如果上传的程序能够正常运行,说明Arduino制作已经完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2239090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++【STL容器系列(二)】vector的模拟实现

文章目录 1. vector的结构2. vector的默认成员函数2.1构造函数2.1.1 默认构造2.1.2 迭代器构造2.1.3 用n个val初始化构造 2.2 拷贝构造2.3 析构函数2.4 operator 3. vector iterator函数3.1 begin 和 cbegin函数3.2 end() 和 cend()函数 4. vector的小函数4.1 size函数4.2 capa…

【linux】网络基础 ---- 应用层

1. 再谈 "协议" 协议是一种 "约定",在读写数据时, 都是按 "字符串" 的方式来发送接收的. 但是这里我们会遇到一些问题: 如何确保从网上读取的数据是否是完整的,区分缓冲区中的由不同客户端发来的数据 2. 网…

C语言PythonBash:空白(空格、水平制表符、换行符)与转义字符

C语言 空白 C语言中的空白(空格、水平制表符、换行符)被用于分隔Token,因此Token间可以有任意多个空白。 // 例1 printf("Hello, World!"); 例1中存在5个Token,分别是: printf("Hello, World! \n&qu…

Linux基础(十四)——BASH

BASH 1.BASH定义2.shell的种类3.bash的功能3.1 命令记录功能3.2 命令补全功能3.3 命令别名设置3.4 工作控制、 前景背景控制3.5 程序化脚本: ( shell scripts)3.6 万用字符 4.bash的内置命令5.shell的变量功能5.1 变量的取用5.2 新建变量5.3 …

【重学 MySQL】八十二、深入探索 CASE 语句的应用

【重学 MySQL】八十二、深入探索 CASE 语句的应用 CASE语句的两种形式CASE语句的应用场景数据分类动态排序条件计算在 SELECT 子句中使用在 WHERE子句中使用在 ORDER BY 子句中使用 注意事项 在MySQL中,CASE 语句提供了一种强大的方式来实现条件分支逻辑&#xff0c…

由播客转向个人定制的音频频道(1)平台搭建

项目的背景 最近开始听喜马拉雅播客的内容,但是发现许多不方便的地方。 休息的时候收听喜马拉雅,但是还需要不断地选择喜马拉雅的内容,比较麻烦,而且黑灯操作反而伤眼睛。 喜马拉雅为代表的播客平台都是VOD 形式的&#xff0…

7+纯生信,单细胞识别细胞marker+100种机器学习组合建模,机器学习组合建模取代单独lasso回归势在必行!

影响因子:7.3 研究概述: 皮肤黑色素瘤(SKCM)是所有皮肤恶性肿瘤中最具侵袭性的类型。本研究从GEO数据库下载单细胞RNA测序(scRNA-seq)数据集,根据原始研究中定义的细胞标记重新注释各种免疫细胞…

uniapp解析蓝牙设备响应数据bug

本文章为了解决《uniapp 与蓝牙设备收发指令详细步骤(完整项目版)》中第十步的Array 解析成 number函数bug 1、原代码说明 function array16_to_number(arrayValue) {const newArray arrayValue.filter(item > String(item) ! 00 || String(item) ! 0)const _number16 ne…

【递归回溯与搜索算法篇】算法的镜花水月:在无尽的自我倒影中,递归步步生花

文章目录 递归回溯搜索专题(一):递归前言第一章:递归基础及应用1.1 汉诺塔问题(easy)解法(递归)C 代码实现时间复杂度和空间复杂度易错点提示 1.2 合并两个有序链表(easy…

大数据开发面试宝典

312个问题,问题涵盖广、从自我介绍到大厂实战、19大主题,一网打尽、真正提高面试成功率 一、Linux 1. 说⼀下linux的常⽤命令? 说一些高级命令即可 systemctl 设置系统参数 如:systemctl stop firewalld关闭防火墙 tail / hea…

链表归并与并集相关算法题|两递增归并为递减到原位|b表归并到a表|两递减归并到新链表(C)

两递增归并为递减到原位 假设有两个按元素递增次序排列的线性表,均以单链表形式存储。将这两个单链表归并为一个按元素递减次序排列的单链表,并要求利用原来两个单链表的节点存放归并后的单链表 算法思想 因为两链表已按元素值递增次序排列&#xff0…

【RabbitMQ】06-消费者的可靠性

1. 消费者确认机制 没有ack,mq就会一直保留消息。 spring:rabbitmq:listener:simple:acknowledge-mode: auto # 自动ack2. 失败重试机制 当消费者出现异常后,消息会不断requeue(重入队)到队列,再重新发送给消费者。…

【陕西】《陕西省省级政务信息化项目投资编制指南(建设类)(试行)》-省市费用标准解读系列07

《陕西省省级政务信息化项目投资编制指南(建设类)(试行)》规定了建设类项目的费用投资测算方法与计价标准,明确指出建设类项目费用包括项目建设费和项目建设其他费(了解更多可直接关注咨询我们)…

VB6.0桌面小程序(桌面音乐播放器)

干货源码 Imports System.IO Imports System.Security.Cryptography Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Button1.Text “上一曲” Button4.Text “播放” Button3.Text “下一曲” Button2.Text “顺序播…

docker安装jdk8

1、拉取镜像 docker pull openjdk:82、运行镜像 docker run -d --restartalways --network portainer_network -it --name jdk8 openjdk:8命令 作用 docker run 创建并启动一个容器 –name jdk8 将容器取名为jdk8 -d 设置后台运行 –restartalways 随容器启动 –network port…

【人工智能】Transformers之Pipeline(二十三):文档视觉问答(document-question-answering)

​​​​​​​ 目录 一、引言 二、文档问答(document-question-answering) 2.1 概述 2.2 impira/layoutlm-document-qa 2.2.1 LayoutLM v1 2.2.2 LayoutLM v2 2.2.3 LayoutXLM 2.2.4 LayoutLM v3 2.3 pipeline参数 2.3.1 pipeline对象实例化…

微服务day06

MQ入门 同步处理业务: 异步处理: 将任务处理后交给MQ来进行分发处理。 MQ的相关知识 同步调用 同步调用的小结 异步调用 MQ技术选型 RabbitMQ 安装部署 其中包含几个概念: publisher:生产者,也就是发送消息的一方 …

[CKS] K8S RuntimeClass SetUp

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于RuntimeClass创建和挂载的题目。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS…

Halcon基于laws纹理特征的SVM分类

与基于区域特征的 SVM 分类不同,针对图像特征的 SVM 分类的算子不需要直接提取 特征,下面介绍基于 Laws 纹理特征的 SVM 分类。 纹理在计算机视觉领域的图像分割、模式识别等方面都有着重要的意义和广泛的应 用。纹理是指由于物体表面的物理属性不同所…

初始Python篇(6)—— 字符串

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 字符串的常见操作 格式化字符串 占位符 f-string 字符串的 format 方法 字符串的编码与解码 与数据验证相关的方法 …