sanguisorbaのアイコン画像

Arduino Serial v2.0 (シリアル版Arduino)の使い方

sanguisorba 2021年04月01日に作成  (2021年04月01日に更新)

運よく手に入れてしまった人のために情報を残しておきます。

検証環境

販売形態

Arduino Serial v 2.0は完成品ではなく、基板単体のみの販売でした。そのため自分でパーツを購入し、組み立てる必要があります。
パーツリスト・回路図はここにあります。
https://www.arduino.cc/en/Main/ArduinoBoardSerial

このパーツリストには作成当時秋葉原で手軽に手入らなかったものがあり、私のノートにはいくつか代用品候補のメモが書いてありますが、現在では簡単に手に入るようです。

手に入らなかったものはトランジスタで、当時の私はBC327とBC337を選んだようです。現在はBC547/BC557が手に入るのでわざわざ代用品を用いる必要はありません。

arduino.ccが刻印された最終モデル v2.0a. D1ダイオードを間違えているが動く
Arduino Serial v2.0 PCBは何回か重版されているようで、古いモデルだとCPUの下に書いてあるサイトのリンクが違います。ただ、v2.0とv2.0aとで回路上の変更はありません。

ちなみに、RS232Cのパスパワーは無いので別途9Vまたは12Vのセンター+のACアダプタが必要です。(15V以上だとレギュレータの発熱がひどくなるのでおすすめしません。)

(私の扱いがひどいせいか過去に何度かR3とR4の1kΩ抵抗が飛んでオープンになった事があります。スケッチがアップロードできない場合や、ICSPからLチカを書き込んで13ピンにLEDを差しても光らない場合はまず1kΩ抵抗が壊れていないか確認すると良いです)

ATmega 8をArduino IDEで使えるようにする

現在のArduino UnoではArduino 328を使用する事を想定しており、Uno以前の機種でも328か168の2択です。
一方で、Arduino Serial v2.0はATmega 8 という系列が異なる石を使用するため、Unoのブートローダは使用できません。
また、当時のIDEと現在のIDEではボードリストや書き込み方法が異なるため、2021年4月現在の書き込み方法について解説します。

Bootloaderを書き込む

当時のIDEと比べて利便性が格段に上がっています。

ボード: Arduino NG or order
プロセッサ: ATmega 8

を指定してブートローダを書き込みます。

以下の環境で書き込める事を確認しました。

ライター: Arduno Leonard + AVR ISP Shield + ArduinoISP
書き込み装置の設定: Arduino as ISP (ATmega32u4)

現在ではArduino互換機やAVRライター、ISPシールドが非常に安価なのでそれを用いてブートローダを書き込むと便利です。

Arduino Serialへスケッチを書き込む

まずはこちらをご覧ください。
https://content.arduino.cc/assets/arduino_rs232_v2.png

回路図

注目してほしいのはRS232Cのコネクタ接続の部分。
このボード、RS232CからはTXとRXの2本しか接続されていません。

Arduinoではスケッチを書き込む際にリセットを行う必要が有ります。Arduino UNOやNanoではDTR, Arduino DuemilanoveではRTSとDTR両方を使用しますが、Arduino Serialにはどちらもありません。4ピンがDTR、7ピンがRTSなのですが、どうみてもオープンです。そのため、シリアル通信するようなプログラムをICSP経由で書き込んでシリアルモニタから通信する場合や、スケッチをブートローダ経由で書き込むには手動でリセットスイッチを押す必要があります。

Arduinoの自動リセットはTX/RXの信号線を用いたソフト上ではなくDTR信号をATmegaのRESETピンへ電気的に送信するため、Arduino UNOボード上にATmega 8を載せた場合は自動で書きこみを開始します。これはArduino Serial特有の問題・仕様であり、Arduino SerialにATmega 328Pを載せた場合も同様に手動でリセットを行う必要があります。

手動でリセットを行うタイミングを知るためにはまず、Arduino IDE の設定が必要です。
ファイル > 環境設定を開いて、「より詳細な情報を表示する」のコンパイラと書き込みを両方有効にします。
この2つに✓をいれる

そしたら、アップロードしたいスケッチを開いてアップロードボタンを押します。

下の欄にオレンジ色で次のようなメッセ―ジが出現します

     avrdude: Version 6.3-20190619
     Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
     Copyright (c) 2007-2014 Joerg Wunsch

     System wide configuration file is "C:\Arduino\hardware\tools\avr/etc/avrdude.conf"

     Using Port                    : COM4
     Using Programmer              : arduino
     Overriding Baud Rate          : 19200

Overriding Baud Rate まで表示されたらログが止まるので、リセットボタンを素早く押します
リセットスイッチを押した直後にログが流れだしたら成功です。

     avrdude: verifying ...
     avrdude: 724 bytes of flash verified

     avrdude done.  Thank you.

最後にThank you.の文字が出たら、スケッチのアップロードは完了です。

Arduino Serial + ATmega 8には以下のような仕様があります。

  • スケッチを書き込んだ後、プログラムが自動で始まらない事があります。その場合、リセットスイッチを押す事で解決します。
  • 電源を入れてからプログラムが動作するまで5~10秒の長い遅延があります。
  • 13ピンには1kΩの抵抗がついているため、LEDの直差しが可能です。

※13ピンはArduino UNOと同様にLED専用と思ったほうがいいです。リセットの際に13ピンから信号が出て(13ピンにLEDを差している場合は)LEDが光るので信号線などは接続できません。

みんなは電源LEDに高輝度白色LEDは使わないようにしようね

自動リセット機能を追加する(非推奨)

リファレンスのままでも別に良いですが、やはり自動リセット機能がほしいところです。なので、ここでは自動リセット機能の追加方法について解説します。ただし、シリアル変換ICやPCの相性を選びます。

回路図

Arduino Severino と呼ばれる、Arduino Serial v2.0の後継機が存在します。名称通り、片面基板で作成可能なArduinoです。
https://www.arduino.cc/en/Main/ArduinoBoardSerialSingleSided3
キャプションを入力できます
回路図を見てみるとTX/RXのほかに4ピンのDTRも接続されており、リセット機能が追加されている事がわかります。これと同等の回路をSerial v2.0の基板上につなげます。

画像では非常に危ない繋げ方をしています。みなさんは絶縁をしっかり行ってください。

7ピンも接続しているが、4ピンだけで良い

抵抗裏を通る謎のダイオードの役割についてはこちらをご覧ください。
https://forum.arduino.cc/index.php?topic=347683.0

これで自動的にリセットすれば成功ですが、私の使っている変換ケーブルでは50%の確率で自動リセットが機能しません。RS232Cポートを備えた古いPCではちゃんと動作するので、機種依存の問題と思われます。Arduino Serialで自動リセット回路を使用するのは非推奨です。

付録: ATmega 328を載せる場合

BootloaderはArduino UNOとArduino Diecimilaの328で動作する事を確認済。
Arduino Serialからスケッチを書き込む の手動リセットのくだりは同じ。

付録: PL2303の変換ケーブルをWindows 10で使う

現在はチップが変わっていてWindows 10に対応しているようですが、私が持っているものは約10年前に購入したものなので当然非対応です。
デバイスマネージャから何等かのエラーが出て使用できない場合は次のドライバアプリを用いることで解決します。(非公式なので自己責任で!)

1
sanguisorbaのアイコン画像
宇宙科学総合研究会で基板書いてます。マイコンを使わないもっと低レベルな電源回路とかPCBパターン製作を担当しています。 @keio_LYNCS
sanguisorba さんが 2021/04/01 に 編集 をしました。 (メッセージ: 初版)
sanguisorba さんが 2021/04/01 に 編集 をしました。
sanguisorba さんが 2021/04/01 に 編集 をしました。
sanguisorba さんが 2021/04/01 に 編集 をしました。
sanguisorba さんが 2021/04/01 に 編集 をしました。 (メッセージ: 検証環境の修正。)
sanguisorba さんが 2021/04/01 に 編集 をしました。 (メッセージ: 自動リセットのくだりを追加)
ログインしてコメントを投稿する