LoginSignup
0
1

More than 5 years have passed since last update.

二足歩行ロボット Rapiro を Node.js で制御 [3.5] A6/A7ピンを使う

Last updated at Posted at 2017-01-21

問題

前回まで順調に進んできた Rapiro の JavaScript 制御化ですが、距離センサを追加しても値が取得できず、かなりハマりました。自己解決できましたので、レポートしておきます。

問題の詳細

  • Rapiroのメイン基板にStandardFirmataを書き込んで、Raspberry Pi から Node.js (johnny-five) で制御することはできている
  • 距離センサ(GP2Y0A21YK)を搭載して、メイン基板の拡張ピンのA6(またはA7)で値を取得しようとするも、できない
  • Arduino IDE 1.8 で普通に StandardFirmata(または StandardFirmataPlus)をそのまま(Arduino Uno設定で)書き込んだ状態だと、A6を認識してくれず、計測そのものができない
  • Arduino Uno はそもそもA5までしかないため、StandardFirmata の冒頭で「#define TOTAL_ANALOG_PINS 8 / #define TOTAL_PINS 22」として、Boards.hで定義されたアナログ入力ピン数をオーバーライドした状態で StandardFirmata を書き込んだところ、距離センサの値を取得することができたが、今度は、RapiroのサーボやLEDが制御できなくなってしまう

解決策

Arduino IDE の boards.txt に、以下のように Rapiro 専用の記述を加えました。
こうすることで、Arduino IDE のボードの選択肢から「Rapiro Control Board」が選べるようになります。それを選び、StandardFirmataPlus を書き込むことで、バッチリでした。
重要なのは一番下の行の「eightanaloginputs」です。これでアナログ入力を8個使えるようになるようです。通常の Arduino Uno はこの指定が「standard」です。コンパイル時の定数の設定で、具体的には、pins_arduino.h 内の NUM_ANALOG_INPUTS の値を「8」にする設定です。

boards.txt
rapiro.name=Rapiro Control Board

rapiro.vid.0=0x0403
rapiro.pid.0=0x6015

rapiro.upload.tool=avrdude
rapiro.upload.protocol=arduino
rapiro.upload.maximum_size=32256
rapiro.upload.maximum_data_size=2048
rapiro.upload.speed=115200

rapiro.bootloader.tool=avrdude
rapiro.bootloader.low_fuses=0xFF
rapiro.bootloader.high_fuses=0xDE
rapiro.bootloader.extended_fuses=0x05
rapiro.bootloader.unlock_bits=0x3F
rapiro.bootloader.lock_bits=0x0F
rapiro.bootloader.file=optiboot/optiboot_atmega328.hex

rapiro.build.mcu=atmega328p
rapiro.build.f_cpu=16000000L
rapiro.build.board=AVR_UNO
rapiro.build.core=arduino
rapiro.build.variant=eightanaloginputs

なお、通常はこの boards.txt は、Arduinoのインストールディレクトリ内の「hardware\arduino\avr」内にあります。が、以前に別のボード定義などをインストールしていると、Windowsの場合「C:\Users\(ユーザ名)\AppData\Local\Arduino15」内にボードの定義ファイル群がコピーされていて、そちらが優先されるようです。その場合、インストールディレクトリ内の boards.txt を書き換えてもダメなようです。それに気づくのに時間がかかり、ハマりました。さらに、AppData内のArduino15フォルダは、Arduino IDEをアンインストールしても残るので、要注意です。
私は、いったんArduino IDE をアンインストールし、残った Arduino15 フォルダを手動で削除して、新たに Arduino IDE をインストールして、インストールディレクトリ内の boards.txt に上記を加えました。

まとめ

できてしまえば単純なことでしたが、今回のトラブルのおかげで、Arduino のハードウェアやソフトウェアについて少し勉強になりました。

これでようやく、次(センサの追加等)に進むことができます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1