土曜日, 12月 12, 2015

Arduino Uno を使ってブートローダーを焼く



Arduino を使うと書いたプログラムで外部装置を動かすことができます。いくらJava/C++/Android でプログラムを書いても所詮ソフトウエアってだけです。家電、LED やセンサーを動かすことはできないですよね。Arduinoなら可能です。USBでつないで外部装置をつなぎ、アップロードすると動きます。このスムーズな流れが「よく考えられたシステム」であるArduinoの特徴です。
 
このArduino、つないで動くというだけではありません。使える装置を作る方向へ発展させることができます。プログラムの書き込まれたCPUを取り出して使えばいい。

本家Arduino のボードのCPUは取り換えがききます。取り出せばそのまま同じ回路を独立して使うことができます。素晴らしいと思います。

このCPUですが、Atmega328のチップを使っています。ebayなど覗くとこのチップがまとめていい値段で販売されています。ありがたいです。

http://www.ebay.com

これらのチップはブートローダーが書き込まれていない場合があります。自分で書き込む必要があるわけですね。書き込みができると安いチップが使えます。挑戦する価値ありますよね。

どうやって書き込むのか、ですが、ネットではブレッドボードで回路を組む、専用のシールドを作る、専用ライターを使うなどいう手間のかかる方法が語られています。

でもですね、Arduino Unoを使うと手間いらずです。手間いらずということはつまり成功率が高いということです。是非お勧めしたい方法です。




どうするかというと、プログラムしたいチップを載せたArduino UnoArduino本体をつなぎます。

では焼き込みの手順です。まず ArduinoISPをアップロード。

ArduinoISPをアップロード
 
そしてArduino Uno をつなぎます。電源5VGNDをそれぞれ接続し、ピン11, 12, 13Arduino本体と接続します。あとはピン10とリセットとつなぎます。

新しいAtmega328Pチップを載せて、Board, Port, Programmerを設定します。それぞれArduino UnoUSBポート(ポート番号は環境で異なります)、Arduino as ISPを選択します。


 
ボード Board の設定


ポート Port の設定

 
プログラマ Programmer の設定

そして Burn Bootloader を選択してブートローダーを焼きます。
 
いよいよ書き込み


この方法でなんの問題もなくブートローダーを焼き込むことができました。チップをとりかえてLチカとかアップロードすると動くわけですね。これでArduinoマシンを量産できます。なんだろうこの安心感は(笑

#Arduino 基板を使わない場合はクリスタルで外部からクロックを供給してやる必要があります。

 
写真は自作のAVR-ISP・シールドです。

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...