戦いは数だよ!、兄貴!! 「Arduino 量産」

 古今東西、戦いは数なんですよ。ランチェスターの第二法則に従えば、同じ火力で2対1の戦力比の場合、2-1=1にはならず、sqrt(2^2-1^2)=sqrt(3)=1.732と、多い方は2→1.73しか損害を受けない。少ない方は全滅。まあ、Arduino量産とこの殲滅方程式は関係ない話だけど。

 Arduinoは結構バリエーションも増えてきたけど、ネックというほどではないけど、いっぱい作るとお金がかかる。標準機のUnoで\2500位。USB-RS232Cが省かれたので\2000弱ぐらい。最初の入門機としてなら非常にお手頃な値段だとは思うけど、いろいろ作りこんでくるとある機能に特化したものを作りたい場合などは、値段とサイズが問題になる。マイコンの世界には他にも色々なマイコンがあるようで、専用ライターを使って、用途に合わせたロムにプログラムを書き込んで工作するというか、ロムとライターが基盤に同居しているのがArduinoといった方が良いのかも知れない。

 他のマイコンにまで手を伸ばすと、新たな勉強が必要だったり情報収集が必要になる。でもArduinoでも似たようなことが出来ると分かった。Arduino Unoに使われているATmega328Pというロムは、ブートローダ書き込み前が\250で、書き込み済みは\350とかで売られている。他のマイコンでは機能は劣るが安かったり省電力なロムなど種類は色々あるようだが、Arduinoの場合はこのATmega328Pだけみたい。ブートローダ書き込みも、Arduinoと、何本かのジャンパワイヤとブレッドボードがあれば出来るので、まあ普通、Arduinoの量産をしようと思う人がこれらを持っていないとは考え辛いので、初期投資も無いと言える。ATmega328P以外に必要な部品は、十数円の水晶発振器と幾つかの抵抗とコンデンサのみ。後は必要に応じて電源コネクタやリセットボタン、シリアル通信機能を付ければいい。実はこれらの部品の中で一番高いのはUSB-RS232C変換ボードだ。大体、\1000前後はする。ブートローダ書き込み済みロムをArduino Unoのロムと交換してスケッチを書き込む事も出来るが、面倒なのでUSB-RS232C変換ボードは1枚有ってもいい。

 話は長くなったけど、Arduinoを量産したのは、外の温度湿度を計るのにコードが長くなると不安定になるので、Arduinoも外に出すしかない。防水処理等を考えると製品版を使うのは躊躇してしまう。後は、気圧計などのセンサーの中にはArduinoにはライブラリーやネットの情報があるが、GR-SAKURAで使おうとすると良く分からないので、センサーは量産Arduinoに任してしまうとか。GR-SAKURAは4ポートのシリアル通信がある。うち1つは自身で使うが、3つの量産Arduinoと繋ぐ事が出来る。この場合、シリアルは直に繋げられるので、一番ネックなUSB-RS232C変換ボードは消費しない。
 
 買ったブートローダ書き込み前のATmega328Pは5個。上はArduino Uno

 

 ATmega328Pをブレッドボードに挿し、Unoとジャンパワイヤで結び、Unoに専用スケッチ(optifiz.zipを入手、解答)を入れる。うちの環境の場合、開発環境arduino1.04では駄目で、023を使った。
以下のサイトなどを参考にした。
ラジオペンチ Arduino UNOで ATmega328Pへブートローダーを書き込む


 UnoのATmega328Pを抜き、代わりにブートローダを書き込んだものを挿して、スケッチが書き込めるかの確認と、後の確認用にLED点灯スケッチを入れておく。


 UnoからATmega328Pを抜いてブレッドボードに挿し、水晶発振器や抵抗、コンデンサ等を付けて単体で動くことを確認する。


 USB-RS232C変換ボードでスケッチを書き込めるか確認。リセット端子とRTS端子の間にコンデンサ(0.1μF)を介す必要があった。(タイミングさえ合えば手動でリセットしても可能)

 最後に量産ArduinoとGR-SAKURAが通信できるか確認。量産Arduinoからはアナログ入力値をシリアル通信で送り、GR-SAKURAが受けたものをPCに送っている。