为了恢复Arduino的功能,必须得重新给ATMega328P单片机里烧写bootloader(其实Arduino就是在AVR单片机中预置了一个bootloader程序,这样再配合Arduino开发环境就是所谓的Arduino了,但Arduino这个词本身只留给官方使用)。当然在淘宝上也能买到已经烧写好的AVR单片机,只是自己手上已经有了AVR单片机,就没必要去花那冤枉钱了。
于是马上打开万能的百度,输入关键字“Arduino bootloader”果然,一大堆乱七八糟相关的问题就出来了,经过一轮的筛选,发现许多说的也并不是很清晰,不过让我明白了个大概:一个普通的AVR单片机确实能烧写bootloader之后作为Arduino使用。那么问题来了,如何把bootloader烧录到AVR单片机中去了?这的确是个问题,反正对于不懂AVR开发的我来说是个问题。不过还好之前在淘宝上买了一个USBASP下载器,跟之前擦除bootloader一样,也要用到progisp软件(因为此时的ATMega328P只是一个普通的AVR单片机,用Arduino开发软件是烧写不进去的)。
既然要烧录bootloader,那么什么是bootloader呢?正如你所想,bootloader当然是一个程序,既然要烧录到单片机中去,应该是一个HEX之类的文件。但是,bootloader文件从哪来呢?继续百度。。。找到了,在Arduino软件安装目录中的hardware\arduino中。此文件夹下的“boardstxt”文件很重要,是很重要,其他的或许都可以在百度上找到,但因为这个文件折腾了我大半个晚上,百度上也没有明确的说明。打开文件,找到自己对应的Arduino版本,因为我的是“Arduino Uno”,于是锁定“unoname=Arduino Uno”区域的说明,因为看上去很乱,一定要仔细去看。找到“unobootloaderlow_fuses=0xff"指编程熔丝低位为FF,”unobootloaderhigh_fuses=0xde“指编程熔丝高位为DE,”unobootloaderextended_fuses=0x05“指扩展位为05。这三个值非常重要,是决定你烧录bootloader成功的关键。至于这三个值具体是什么意思,我也不是很不清楚,但AVR单片机的烧录时需要设置熔丝位,而且不能乱设置,这也是AVR跟51单片机的不同之处。
用progisp软件把这三个熔丝位的值写入到AVR单片机中,然后继续浏览”boardstxt“文件往下看,找到”unobootloade旦长测短爻的诧痊超花rpath=optiboot“这就是说要烧录的bootloader文件在bootloaders\option文件夹中,“unobootloaderfile=optiboot_atmega328hex”文件名就是optiboot_atmega328hex,这就是接下来需要烧录到AVR单片机中的程序。用progisp软件调入此文件,然后直接写入到AVR单片机中就行了,一个支持Arduino的AVR就做好了。。。
其实这个问题本身不难,但对于没接触过AVR的人来说,还是要花许多时间的,中间也会存在许许多多各种各样的问题。至于progisp的使用方法很简单,百度上的教程也很多,还有手上必须有一块可以烧录AVR单片机的下载器。我当时就是忽略了那三个熔丝位的值,所以反反复复也没有成功,百度上面也没有对”boardstxt“文件做详细的解释。没设置熔丝位程序是可以正常的烧录进去,但Arduino是不能用的,所以必须要按照官网给出的说明操作。我当时大多数时间主要花在两个问题上,一个是HEX文件具体位置,因为Arduino有不同的版本,所以HEX文件也不同,还有一个就是熔丝位上。
1、解压arduino-1810-windowszip
2、解压后将arduino-1810放入D盘
3、打开arduino-1810文件夹,创建快捷方式到桌面
4、将Arduino UNO板USB插入到电脑上,然后打开设备管理器
5、点击未知设备,鼠标右键,选择更新驱动程序,选择浏览计算机以查找驱动程序软件。
6、浏览D盘到arduino-1810文件夹下面的drivers
7、打勾始终信任来自“Arduino LLC”的软件,然后点击安装
8、安装完成后,显示如下
9、再次查看设备管理器,会显示Arduino Uno(COM3),记住自己的端口号。
10打开Arduino IDE
11、选择开发板和端口
本制作项目使用的是一颗大约 200
毫瓦的红色激光发射器,即使不足以烧穿木头,如果不小心可能会亮瞎你的双眼!所以千万别直视激光束,即便是直视反射光也一样非常危险。请注意安全。
1
工具和材料
大部分硬件都可以利用废品制作。铝型材、中密度纤维板和各种螺母、螺栓以及导线。但部分物品需要你另行购买。大部分电子器件都可以在
Sparcfun 上找到,其余的可以到E-bay或者旧货交换市场碰碰运气。
○ 1激光发射器外壳(图中)
○ 2Easydrive
驱动器电路(图中)
○ Arduino
(这是控制电路的核心)
○ Easydrive 步进驱动器
○ 两台 DVD-rom 驱动器
(要是你运气不好的话也许会需要更多),并且至少需要一台DVD-R 驱动器来提供激光发射器
○ 激光发射器外壳
(在E-bay上可以找到零售的)
○ 激光发射器驱动电路
(这玩意儿有许多替代品,我用的是简单的基于 LM317 的电路)
○ 各种螺帽、螺栓以及其他的建材。
2 拆解 DVD-Rom驱动器
坏掉了的 DVD-Rom 驱动器
● 在 DVD-Rom
驱动器中你所需要的只有步进电动机组件和激光二极管。我的运气不太好,发现我的 DVD-Rom 带有一块非常难处理的塑料组件。于是我拆开了三台 DVD-Rom
驱动器,却只用了两台里的零件。拆解的过程相当有难度,而且我打开过的大部分 DVD-Rom 驱动器差不多都是这样的。
此处正下方有个小型的直流电动机,你可以把它拿出来为将来的制作项目做准备
●
在移除了驱动器底部的螺钉以后,你就能把它像个盖子一样掀开了。你很可能会在底盖下面看到两块电路板,这两块对我们都毫无用处。但是要记得保留下其他有用的零件,供其他的制作项目使用。例如在靠前的电路板下面有一台值得留下来的小型直流电动机。
●
现在你就该把前面板连同前置托盘一起拆下来了。当你把托盘拉出来以后前面板就会变得松散(只要利用一根发夹和前面板上的那个小孔就行了)。
●
接下来的步骤需要拆卸螺钉,或许还需要一些蛮力。拆除两块电路板。当心连接在步进电动机上的排线。
需要将这个电动机拆除。
● 如果你把 DVD-Rom
驱动器的右侧朝上放置并把顶盖移除,就应该能发现我们正在寻找的东西——步进电动机组件。拧开螺丝,直接把它取出来就行。
●
既然我们已经把步进电动机组件拿了出来,那么我们就该做一下清理工作。把主轴电动机拆除,它可能有点用处,但是我觉得驱动它来太麻烦,于是我就把它们抛弃了。它们通常是用三颗非常小的螺丝固定起来的,不过有时它们会是一个更大的组件的一部分,因此在拆除时候要小心,不要弄坏了支撑镜头的两根杆。
●
镜头嘛,只要用最合适的方法把它拆下来就行了,我们需要留下一个光滑的表面,之后在上面连接一些其他的零件。小心不要弄坏了 DVDR
驱动器的激光二极管。如果你不想要之后再购买一支新的强力激光发射器的话,就要善待这玩意儿。
这一整块部件都要拆掉,放在一边为将来的制作项目做准备。
3
组装激光发射器
激光二极管
● 从 DVDR
驱动器中取出激光发射器并不难,不过大部分的镜头组件的外形都各不相同。找出激光二极管(会有两个,一个是红外的,一个是红光的)然后从组件中将它们拆下来。
这些光学器件可以留给将来的制作项目使用
在镜头的两侧各有两个强力磁铁,你值得拥有
1从镜头上拆下来的磁铁
2镜子和透镜
3激光二极管
4废物
●
其中有一光些学器件和两块磁铁,你可以把它们屯下来为将来的制作项目做准备。
你需要把激光二极管从支架上拆下来。这需要使一点微弱的力道。小心别伤着了激光二极管
其中一个是红外激光二极管,另一个是我们所需要的红色激光二极管
从二极管上移除连接电路板
●
当你把两个二极管拆下来以后你一定要小心翼翼。这两个二极管非常小,也非常脆弱。
● 从二极管上去除那一小片连接电路版,然后用两节 7
号电池检查一下红色激光二极管是否健在。
●
既然你已经有了裸奔的二极管,那么就是时候把二极管安装到外壳中了。
在激光发射器外壳背部的小孔正好可以让二极管的引脚穿过
●
把二极管放入外壳中,并用外壳的背面和钳子非常小心地把二极管压入外壳中。
现在二极管已经牢牢地安置在外壳中了
●
当你完成这一步后,你就驶入了终点前顺畅的直车道了。把导线焊接在正极和负极引脚上
●
然后把镜头用螺丝拧上,这样你就搞定了。
用一些特富龙胶带把镜头固定到位
178
毫瓦的输出功率很不错了。不过这会让二极管进入过载状态
二极管的工作电流为 310 毫安
4
制作机械部分
我很幸运地找到了这些垫片,不过用一根螺栓和一些螺母也能达到很好的效果
用一片压克力板作为底座
● 为了尽可能地简单,我找了一块正好比 DVD-Rom
驱动器的步进电动机组件略大一些的中密度纤维板。它将成为底座,固定住 X 轴和 Y 轴的方向。
● 我找到了一些垫片来固定 Y
轴方向,不过几根螺栓和数个螺母也能有不错的效果。这里的尺寸要求并不严格,不过必须确保每一根轴都与其他的轴相互垂直。我发现把第一层组件安装在中密度纤维板上以后在对齐各个零件时会方便一些。
●
工作空间位于老的激光二极管组件上。确保它表明平整且水平放置,然后在上面涂上些胶水固定好,工作空间就完成了。我发现一块 1/4
英寸的压克力板刚好合适。它能让工作空间保持足够的稳定性,不过由于激光能够射穿它,所以我不确定这是否存在安全隐患。后来我想出了一个在我看来效果最棒的解决方案。我切下了一片与压克力板的大小相同的DVDR
驱动器的金属外壳,然后用胶水把它粘了上去。这样工作空间依然非常稳定,而且强度也足够了。它还有一个有利的作用,那就是你可以用磁铁把你想要雕刻的东西固定在工作空间上。
● 我在废品箱里找到了一些铝型材。
● 把它当作了 X
轴,不过你可以使用任何稳固而且够长的材料。
●
测量一下你觉得在雕刻时所需要的适当高度。
● 我选择了几根长 75
英寸的板材用作支架。这样会给我留下不到 2 英寸的细小间隙。
我钻了几个小孔,这样就可以用电缆扎把线拴紧
●
一件重要的事情在于,组件上的安装孔并不是对称的。记得测量从支架底端到直线导轨的距离。这样你就能确保所有的零件都对齐。你安装 X
轴的位置取决于激光发射器的安装位置。激光发射器应该位于工作区域的中心,而 Y
轴位于中间。当你将两轴安装在基座板上的时候,先确定所有的零件都相互成直角,然后钻几个供螺丝拧入的小导孔。
● 现在你应该已经完成了相互垂直的 X 轴和 Y
轴。
这里最重要的尺寸要求就是保证所有的东西都是四方的直角
●
激光发射器的支架不一定要做得很复杂,我用的是一小片塑料板和一个夹子,然后把所有的东西都用胶水粘起来。
●
用夹子固定激光发射器,这样就可以靠简单地把激光发射器上下滑动来改变焦点位置。
●
和其他的零件一样,它的尺寸并不重要,只要一切都相互垂直就行。这里只有一个尺寸是需要你斟酌一番的,那就是激光发射器的位置。当 Y 轴和 X
轴位于中央位置时,它应该处于工作空间的中心。
我在这里用一片和激光发射器支架上相同的黑色塑料进行了测试。最后我用一片从 DVDR 驱动器外壳上拆下来的金属又测试了一次 |
5
电子器件
在你寻找所需的排线时,老旧的电脑是你的不二之选
这些排线虽不易焊接,但效果很好。我在两台步进电动机上都进行了相同的焊接
●
我开始焊接步进电动机。用一根排线连接步进电动机,然后把它们焊接在
DVD电路板上已有的接口上。我在另一头焊接了一个四引脚的插头,这样就能插在试验电路板上使用。
Easydriver 和 Arduino
的初次测试——大成功
● 对 Easydriver
也进行相同的处理,焊上引脚插头,然后插在试验电路板上使用。
● Easydriver 有两个引脚,叫做 MS1 和
MS2,它们用于设定步进的序列。将它们双双连在 Easydriver
的5伏电压输出上。这样就把步进序列设为了微步进控制。把从步进电动机伸出的四根引脚连接在电动机的输出端,而控制引脚(step、dir 和 gnd)连在
Arduino 上。除了这些以外,Easydriver 还需要连上电动机电源。我用一个12伏的电源适配器驱动电动机、风扇和
Arduino。一个电位器被用于控制电动机的电源,把它设到最低就行,要是步进电动机的动力不足的话,就稍微调大一些。我并不清楚步进电动机的额定电压,如果它们发烫了就说明你给的电压太高。
在本制作项目中用不到的多余元件
●
我在电路图上添加了一个继电器,供风扇使用。因为雕刻过程会产生一些烟雾,所以风扇是很有用处的。
●
风扇只需要连接在风扇输出端上就行了。一只小型的电脑风扇就有不错的效果,你只需把正极和负极的导线连在正确的输出端即可。
在焊接所有的引脚时都要记得检查位置是否正确
我把 Easydrives
安装在插座中,这样就能在以后的新版本中重复使用了
● 激光发射器的驱动电路是用基于 LM317
的电路制作的,不需要特殊配件。这样的驱动电路可以正常工作,但效果远远说不上是理想。我给激光二极管的驱动电流太大了,大约在 300
毫安,你要是也这么做,那么二极管的寿命不会太长。最好的解决方案应该是找一个更强大的激光发射器和驱动器,但为了坚持廉价和DIY的精神,我还是想要使用 DVDR
驱动器本身的激光发射器。激光发射器开关和风扇所使用的是同一个继电器。
●
如果你想要一切从简,那么你可以跳过整个激光发射器驱动电路的制作,采用现成的驱动器。这样的话你所需要做的就只是把电源接在风扇继电器上而已。当然这样做成本可能会稍微高些。
● 整个电路构成了一种新式的 Arduino
电路——激光发射器控制电路。我已经附上了 Eagle格式的电路图和电路板布置图。如果你想要自己布置 Easydrivers 的电路的话,我也准备了带有驱动程序的
Eagle 库文件,你可以在 这里 下载。
6 准备
Arduino
● 我自己给 Arduino
写的软件。但是在搜索通过串口控制移动的好方法的时候我碰巧找到了一个叫做"Grbl"的东东。这是一个有着相当多优秀功能的 g
代码编译器。由于我已经把所有的东西连到了 Arduino
上,所以我要么得改变我的连线,要么就改变我的程序。幸运的是在软件中修改控制引脚其实相当方便。只不过我不得不下载 Winavr ,然后再从 githubcom
上下载代码。做起来很容易。下载并解压出代码以后,你必须把 configh
中的端口号修改一下,确保将它们排列为正确的顺序。接着你所需要做的就只是打开一个命令窗口,输入正确的文件夹,然后输入"make"。如果一切如计划那样顺利进行的话,你应该最后会得到一个给
Arduino 使用的 hex 文件。
● 但是我从那时就把引脚改动过了,而在本教程中我使用的是
Grbl 的默认引脚。这样可以让你在跟着教程设置时更加简单。你只需要从 Grbl 的下载页面 hex 文件就行了。
● 无论你选择何种方式,最后你都将得到一个输入
Arduino 中去的 hex 文件。我试过许多不同的方法,其中我最喜欢的是用一款叫做 XLoader 的软件。编程的过程非常直接明了:选择 Arduino
的正确的串口;选择 hex 文件以及 Arduino 的型号;然后按下上传。如果你使用的是新版的 Arduino Uno 的话,那么 XLoader
是不支持它的,你会遇到一个上传错误。碰到这种情况我建议你使用 ARP/ArduinoUploader ,不过即便是这款上传器在 Uno
的支持上还是存在一些问题的。当你在给 Arduino 编程时,要在各个下拉列表中选择串口端口和微控制器。然后你必须把"AVR Dude
Params"这段文字进行一些修改。删除"-b19200"(不带引号)部分,并点击上传按钮。无论如何你也该在几秒钟之后搞定,准备好进行测试了。退出
XLoader,进入下一部分。
● 你需要针对这一项目对 Arduino
进行设置。打开你最喜欢的串行终端,然后打开Arduino 所连接的端口。你应该会收到一条欢迎信息:
Grbl 06b
'$' to dump current
settings"(输入"$"清空当前设置)
如果你输入一个 $
然后回车,你会看到一系列选项。类似于这样子:
$0 = 4000 (steps/mm
x)
$1 = 4000 (steps/mm
y)
$2 = 4000 (steps/mm
z)
$3 = 30 (microseconds step
pulse)
$4 = 4800 (mm/sec default
feed rate)
$5 = 4800 (mm/sec default
seek rate)
$6 = 0100 (mm/arc
segment)
$7 = 0 (step port invert
mask binary = 0)
$8 = 25 (acceleration in
mm/sec^2)
$9 = 300 (max instant
cornering speed change in delta mm/min)
'$x=value' to set parameter
or just '$' to dump current settings
ok
● 你必须把 X 轴和 Y 轴的 steps/mm
值都修改为 53333。只要输入"$0=5333"(译注:此处疑为笔误,少了一个
3)然后回车,接着输入"$1=53333"然后回车即可。因为我们并没有用到 Z 轴,所以可以把它忽略掉。加速度可以提高到大约 100
的程度(输入"$8=100"然后回车)。当我们缓慢地操作这台机器的时候,加速度也会很高。加速度太低的另一个副作用是在控制器不停地尝试加速和减速,但却无法达到全速时,曲线图形会比直线受到更剧烈的烧灼。你有可能和我一样发现有一根轴反掉了。这很容易修正。选项
$7 让你能够改变轴的方向。我想要改变 X 轴的方向,于是我输入了"$7=8",这是因为我想要修改 3 号位(8 = 00001000 二进制),如果你想要修改
Y 轴的方向,那么就输入 16(00010000)或者要修改两根轴的话,就输入 24(00011000)。有关掩码设置的 完整文档
可以在这里查看。
●
现在你已经完成了电脑设置的准备。如果你想要尝试进行几下移动的话,可以输入"G91 G28 X0 Y0回车"把轴的位置归零。然后输入"X10
Y10回车"。你应该会看到两根轴向上都发生了 10 毫米的移动。
7
准备软件
●
这一步我将详细地从基础讲起。我会讲到你所需要的软件、如何设置软件,以及基础的工具组合。我只会讲解基于 windows 的系统,你们那些玩儿 Linux
的人只能自行查找了(不过 Inkscape 和相关扩展应该也能在 Linux 上很好地运行)。首先你必须下载以下三个文件:
1 Inkscape
——这是一款开源的矢量编辑软件。
2 LaserEengraverExtension
(激光雕刻机扩展)——这会生成控制激光发射器所需的 g代码。
3 G-codeSender (G
代码发送器)——这是我写的 windows 小程序,用于和 Grbl 进行通讯。
● 根据 Inkscape
的安装指示进行安装。这应该是个非常顺利的过程。如果需要任何这方面的帮助,可以在他们的网页上找到相关文档。接下来就是激光雕刻机扩展。这安装起来要难一些,不过也不是太难。用你惯用的解压缩软件打开
zip 文件,然后把所有的文件复制到"c:Program FilesInkscapeshareextensions"下面。你必须重新启动
Inkscape 才能让扩展生效。这个扩展其实是个经过大量修改的"Gcodetools"版本。这就是安装 Inkscape 的位置。你可以把"G
代码发送器"放在桌面上或者任何别的地方,过会儿再找出来就行。它不需要安装。
● 关于扩展有一句话我必须声明,我不是 python
程序员,因此在代码中可能存在一些缺陷。
●
我接下来假设你已经安装了所有软件,并准备开始使用了。下面是工作界面的快速浏览录像。
● 我希望这录像的速度并不算太快。网上有数不胜数的
Inkscape 使用教程。我不会讲解任何关于如何使用它的细节。
● G
代码发送器则是另一码事了。网上没有任何文档,因为这是我自己编的程序。所有的文档都在这篇教程中了,不过如果你有问题,那么请放开胆子提出来吧。当你打开程序时,它应该是非常浅显易懂的。唯一奇怪的东西就是行尾选择按钮"nr"和"rn"。根据你所使用的
Grbl
的版本不同,行的结尾也会有所不同。如果一种方法不行的话就试试别的方法。选择你使用的串口,要是你忘记连接激光雕刻机了,那么就把它连好,然后按下刷新按钮,这时你的串口就应该会被显示出来了。按下"open"(打开)按钮,打开欢迎界面。一旦端口打开了,你就能够在打开按钮上面的文本框中像任何命令行终端软件一样输入命令了。如果要开始打开一个文件进行雕刻的话,你可以要么输入文件路径,要么点击
browse(浏览)按钮后选择一个文件。当你点击"print"(打印)按钮时,就开始了文件传输。文件会一直传输到 Arduino 的缓存充满了为止,大约就传输
20 行左右。当缓存可以再放入更多的数据时,就会再传输一行。当你按下 stop(停止)按钮时,传输就会停止,但是 Arduino
在缓存清空之前是不会停下来的。当你按下"close"(关闭)按钮或者退出程序时,串口就会被关闭,任何传输都会被中止。
● 有时会出现 Grbl 无法解译的 G
代码,它会返回一个错误。大多数情况下这些错误都可以被忽略掉,不过它们会出现在发送器中。这些可能是注释,或者是开头或结尾的"%"符号。如果在命令后面有一条注释,那么就会产生一条错误,不过这条命令依然会被执行。例如"G21
(All units in mm)",G21 命令还是会被执行,不过后面的注释会给出一个错误。
8
最终组装以及额外配件
当你把 Easydrivers
装到一个盒子里时,就需要用一个风扇为它们降温。它可是会疯狂地发热
● 为了完善这台小型雕刻机,我用从一张画框中拆下来的
Masonite 牌纤维板制作了一个小盒子。只要用胶水粘起来就行了。
● 前面有一个老显卡上拆下来的小风扇。当你把
Easydrivers 装到任何外壳中的时候都需要对它们进行冷却。它们裸奔的时候就很烫了,放在外壳中就更烫了。
用胶水粘上一些垫片可以让它更容易用螺钉固定在底盖上
●
我在盒子中用胶水粘上了一些螺纹垫片,这样我就能在底部旋上螺钉。
● 把 Arduino
反过来用螺钉拧紧在底部。这样这台雕刻机就变成了一件方便好用的小工具。
通风孔
所有进入盒子的线路都从顶部穿过
我在一块老显卡上找到了这个风扇保护罩完好无损的小风扇
● 这是个 40
毫米的电脑小风扇,与我在电子器件这一步中提到的激光发射器的继电器相连接。风扇的方向朝向工作空间以外,它会和缓地把烟雾吸走。
把风扇连接在激光发射器的继电器上,面朝工作空间以外。它能够把烟雾吸走,同时不会影响工作空间中的器件
钕磁铁的顶部粘上一个螺母。它可以很好地按住你的工件
●
另一件小而有用的额外部件就是用于按住纸张和其他质量较轻的物体的磁铁。我从一只老玩具中找到了这些磁铁。只要在顶部用胶水粘上一些螺母,就搞定了。
当激光发射器处于最低的位置时,焦点应对准工作空间的表面
●
为了改变焦点,你就得通过拧动螺丝来调整镜头。或者你可以先把焦点定在工作空间上,之后再把激光发射器在支架上上下滑动。
●
当激光发射器处于支架上最低位置时,我把它的焦点固定好。接着我所需要做的就只是测量工件的厚度,然后把激光发射器抬升相同的高度。大部分情况下我只要把工件靠在激光发射器的支架旁边,然后把激光发射器移动到正确的高度上就行了。
当我把激光发射器移动到与工件相同的高度时,焦点就调整到工件的顶部了
9 大功告成
以下是到目前为止我用雕刻机制作的物品,我会尽量用来展示。想象力是唯一的限制哦(除了雕刻机的低功率和工作空间的小尺寸)。
为了恢复Arduino的功能,必须得重新给ATMega328P单片机里烧写bootloader(其实Arduino就是在AVR单片机中预置了一个bootloader程序,这样再配合Arduino开发环境就是所谓的Arduino了,但Arduino这个词本身只留给官方使用)。当然在淘宝上也能买到已经烧写好的AVR单片机,只是自己手上已经有了AVR单片机,就没必要去花那冤枉钱了。
于是马上打开万能的百度,输入关键字“Arduino bootloader”果然,一大堆乱七八糟相关的问题就出来了,经过一轮的筛选,发现许多说的也并不是很清晰,不过让我明白了个大概:一个普通的AVR单片机确实能烧写bootloader之后作为Arduino使用。那么问题来了,如何把bootloader烧录到AVR单片机中去了?这的确是个问题,反正对于不懂AVR开发的我来说是个问题。不过还好之前在淘宝上买了一个USBASP下载器,跟之前擦除bootloader一样,也要用到progisp软件(因为此时的ATMega328P只是一个普通的AVR单片机,用Arduino开发软件是烧写不进去的)。
既然要烧录bootloader,那么什么是bootloader呢?正如你所想,bootloader当然是一个程序,既然要烧录到单片机中去,应该是一个HEX之类的文件。但是,bootloader文件从哪来呢?继续百度。。。找到了,在Arduino软件安装目录中的hardware\arduino中。此文件夹下的“boardstxt”文件很重要,是很重要,其他的或许都可以在百度上找到,但因为这个文件折腾了我大半个晚上,百度上也没有明确的说明。打开文件,找到自己对应的Arduino版本,因为我的是“Arduino Uno”,于是锁定“unoname=Arduino Uno”区域的说明,因为看上去很乱,一定要仔细去看。找到“unobootloaderlow_fuses=0xff"指编程熔丝低位为FF,”unobootloaderhigh_fuses=0xde“指编程熔丝高位为DE,”unobootloaderextended_fuses=0x05“指扩展位为05。这三个值非常重要,是决定你烧录bootloader成功的关键。至于这三个值具体是什么意思,我也不是很不清楚,但AVR单片机的烧录时需要设置熔丝位,而且不能乱设置,这也是AVR跟51单片机的不同之处。
用progisp软件把这三个熔丝位的值写入到AVR单片机中,然后继续浏览”boardstxt“文件往下看,找到”unobootloaderpath=optiboot“这就是说要烧录的bootloader文件在bootloaders\option文件夹中,“unobootloaderfile=optiboot_atmega328hex”文件名就是optiboot_atmega328hex,这就是接下来需要烧录到AVR单片机中的程序。用progisp软件调入此文件,然后直接写入到AVR单片机中就行了,一个支持Arduino的AVR就做好了。。。
其实这个问题本身不难,但对于没接触过AVR的人来说,还是要花许多时间的,中间也会存在许许多多各种各样的问题。至于progisp的使用方法很简单,百度上的教程也很多,还有手上必须有一块可以烧录AVR单片机的下载器。我当时就是忽略了那三个熔丝位的值,所以反反复复也没有成功,百度上面也没有对”boardstxt“文件做详细的解释。没设置熔丝位程序是可以正常的烧录进去,但Arduino是不能用的,所以必须要按照官网给出的说明操作。我当时大多数时间主要花在两个问题上,一个是HEX文件具体位置,因为Arduino有不同的版本,所以HEX文件也不同,还有一个就是熔丝位上。
配られた奇计の招待状
kubarareta kikeino ka-do
几亿のゲーム诱いの夜
ikuokuno ge-mu sasoino yoru
裁かれる事も无く
sabakareru kotomo naku
生き惮った尘芥に宛てて
ikihabakatta jinkaini atete
迎える剧情のルーレット
mukaeru gekijouno ru-retto
天上の罠に赌けて
tenjouno torappuni kakete
托された术で临む舞台
sakusareta wazade nozomu sute-ji
银の指挥棒揺らして
ginno takuto yurashite
握った绀青の祝杯
nigitta aono gurasu
饮み乾すように
nomihosu youni
谁にも魅破れない
darenimo miyabure nai
制裁のトリック
seisaino torikku
胜算一秒疑う隙无く
shousan ichibyou utagau sukinaku
堕ちて逝くだろう
ochiteyuku darou
唇から溢れた棘が射して
kuchiburu kara koboreta togega sashite
蛊惑の
kowakuno
JOKER
知らずに导かれていた
shirazuni michibikarete ita
月に喘ぐチェックメイトで
tsukini aegu chekkumeito de
深红の蜜液に沈める
shinkuno jeri-ni shizumeru
塞がれた诡计の事件
fusagareta kikeino ke-su
疑惑の七人刻は尽きても
giwakuno shichinin tokiwa tsukitemo
赦される事など无い
yurusareru kotonado nai
会稽の蔷薇を饯に代えて
kaikeino barawo hanamukeni kaete
この腕手锭かけてみせて
konote tejou kakete misete
答え知れず狼狈える警獣
kotae shirezu urotaeru kemono
囚われた亲鸟の遗言
torawareta oyadorino shirase
首谋者の息今宵で止める
kinguno iki koyoide tomeru
解き明かす焔待ち焦がれて
tokiakasu hi machikogarete
谁なら见破れるの?
darenara miyabureruno
精细なトリック
seisaina torikku
赏賛裏返したなら闇
shousan uragaeshita nara yami
堕ちて往くのは仆の方かな
ochiteyuku nowa bokuno hou kana
此処から受け取ってよ
kokokara uketotteyo
谜挂ける
nazo kakeru
「A」
奇术师の掌の内に秘めた
kijutsushino teno nakani himeta
时果たした
toki hatashita
圣裁のマジック
seisaino majikku
消散一秒瞬く余地なく
shousan ichibyou matataku yochi naku
终りはいつも仆の方から
owariwa itsumo bokuno hou kara
「さよなら」
sayonara
暴き出した迷宫の键は
abakidashita meikyuuno kagiwa
奇术师が导いた力
kijutsushiga michibiita chikara
梦见る様な终幕に
yumemiru youna endoro-runi
深红の涙遗して
shinkuno namida nokoshite
欢迎分享,转载请注明来源:表白网
评论列表(0条)