记录一下这次自己 DIY 的
Arduino
.
Arduino
有多好用就不用多说了,可以备两块,需要的时候很是方便。
比如有时新买了一些没用过的模块、芯片等,可能你需要用stm32
对它进行编程,但是写好的程序就是没用,这时候你可能开始怀疑你是不是买了假芯片或者模块坏了,这时候用Arduino来验证一下会很方便,毕竟库多,代码量少,可以快速验证。
正文开始:
1.原理图
自制Arduino原理图(IIC接口画错了,是PC4(SDA)和PC5(SCL))
修改:
- 这里的CH340C 如果使用5V供电,其V3脚如果接一个0.1uF的去耦电容到地,如果使用3.3V供电,则将V3脚接至VCC;(原理图中空着了,没有接CH340C是无法正常工作的,具体可参看CH340C使用说明手册;
- SDA 和 SCL一不留神接错位了,仔细看上面的原理图应该能看出来;
注:
其实需要的就是(电源
,单片机
)晶振电路
,复位电路
,下载电路
。有这几部分就可以组成Arduino
的基本硬件电路了。
1.晶振电路
就不多说了,和其他单片机的晶振电路
都相似。
2.要注意的就是复位电路
和下载电路
,(我这里使用的是CH340C
这款USB转串口芯片作为下载电路,和CH340G
几乎一样,不同的是CH340C
内置晶振,不需要再外接晶振,可以简化电路,当然你用CH340G
也是可以的。)CH340C
的DTR
引脚要引出来通过一个104电容
接到RESET
复位引脚上去,二极管4148
也不能少。
3.自己可以把需要的IO口给引出来,我这里只引出了IIC
和几个LED
测试引脚,其他我用不到的就没引出来了。然后就转PCB
就可以了。
2.完整原理图如下:
还有一个DS3231时钟电路没做介绍,因为非必须,就不多说了。
Arduino原理图
3.PCB渲染图如下:
正面
背面
4.实物图如下:
实物PCB(正面).png
实物PCB(背面).png
5.成品图如下:
成品图(正面).png
成品图(背面).png
至此,硬件部分就完成了,这很容易解决。可是软件部分卡了我一整天,
Arduino
下载程序很方便是因为其内部早已烧录好了bootloader
的,新买来的芯片是没有烧录bootloader
的,所有需要手动烧入bootloader
。这里我初期没考虑周全,没有把SPI
接口引出来,导致才有了下面这一幕(后悔没引出SPI
)。
下面开始用MEGA2560
给ATmega328P
烧录bootloader
(对,就是这里,失败多次,苦苦试探之下,终于成功了)。
1.按如下方式接线(两种方式都是一样的,推荐前者)
参考接线方式1.png
参考接线方式2.png
你可能还需要一份引脚定义。
引脚定义.png ATMEGA328与Arduino引脚对应关系
2.接好线后就是下面这样了
(这是一个悲伤的故事,不建议学习我的这种接线方式)
飞线Arduino.jpg
3.接好线后,就可以给Arduino Mega 2560
下载程序了,再通过Arduino Mega 2560
给Atmega328P
烧入bootloader
。
用到的文件可以点这里下载:github资源
3.1把这个程序上传上去(下载进去)就把Mega 2560变成了一个烧入器了。
这里是常规操作,和下载Blink没什么不同。
烧入程序至Mega2560中
3.2连接好
Mega 2560
和ATmega328P
的线后,打开串口监视器,
下面是异常情况
image.png
如果出现上面这种情况
1.检查连接的线是否正确,是否有松动。
2.如果芯片连接了除晶振电路以外的外围设备,请断开重试(我就是问题出在这了,然后把CH340C和DS3231全部拆下,烧入,然后就OK了)
正常情况如下:
image.png
(这图不是我的,因为我已经将飞线拆下,不想重来一次,就直接截别人的图了)
我还出现了一个选择高低电压版本的选项,U
orL
要根据自己实际情况选择,然后通过这个串口监视器Send(发送)
一个U
(我是5V,16MHz,所以是U
),然后再Send(发送)
一个G
(表示对ATmega328P
进行烧录bootloader
的意思),然后几秒钟就好了。
图如下:
image.png
发送完G
,然后会出现下图:
image.png
这样就完成了bootloader
的烧录了,此时就完成了ATmega 328P
的bootloader
烧录了,然后就是一块正常的Arduino UNO
了,可以正常上传程序了。
然后就完成了一次DIY Arduino 了。
1.如果还有问题,就把这个视频看两遍,然后基本问题就不大了。
2.如果用Arduino
的其他版本(但要支持SPI
)也是OK的,也可以参考下网上别人的贴子。
3.这里有官方自制 Arduino
的材料。
4.碰到了问题还可以去这里看看,蛮好的。
END.
自制Arduino
干什么呢?这里做了个时钟功能https://www.jianshu.com/p/6a9e219567ba
网友评论