自制Arduino UNO
记录一下这次自己 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)。
飞线Arduino.jpg
下面开始用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
我还出现了一个选择高低电压版本的选项,UorL要根据自己实际情况选择,然后通过这个串口监视器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的材料。
image.png
4.碰到了问题还可以去这里看看,蛮好的。
image.png
END.
自制Arduino干什么呢?这里做了个时钟功能https://www.jianshu.com/p/6a9e219567ba
自制Arduino原理图(IIC接口画错了,是PC4(SDA)和PC5(SCL))
Arduino原理图
正面
背面
实物PCB(正面).png
实物PCB(背面).png
成品图(正面).png
成品图(背面).png
烧入程序至Mega2560中
image.png
image.png
image.png
image.png