(注:サイトをよく確認したんですが,4月末以後の1.4との明確な差が写真と手元の実物から確認できませんでした.通信の不具合が解消しているか,現在配布しているものを確認できないので,以下の記述を当面保留します 2015-09-10)
以前のブログエントリで述べてきた,2015年5月版の「なのぼ〜どAG 1.4」について,ともんさんと何度か質問と回答のやりとりを得ながら,割と孤独に学生の実習のためハックを重ね,いろいろと面白い成果を出すことができたのですが,報告書作成のため,あらためてサイトをアクセスしたら,2015年8月版1.4にアップグレードされていて,驚愕であります.
前のエントリもそこそこのアクセスがありまして,その内容もご参照いただいたのかと思いますが,当時の懸案事項というのか,7月から8月にかけて胃を痛めながら睡眠時間削って回避方法を探ったり,基板のパターンと回路図を眺めながら,わかる人にはわかるように仕込まれている隠れ仕様を発見しつつ学生の要望に対応してきたことが,全面的にクリアになったような印象です.
ここで最も大きいのはATmega8Lをクリスタル駆動にした大英断と賞賛したいです.5月版1.4は,前のエントリに書いたとおりATmega8L内蔵のRCクロックで動作していましたので,本当に不安定でした.一応温度補償回路内蔵というメーカーの仕様ですが,電源ケーブル,その日の温度,湿度,さまざまな理由でシリアル通信の条件がつねに変化し,120〜150分の授業の間にも動く時間と動かない時間があり,この夏は異様に蒸し暑かったのですが,エアコンあれども,日に日に不安定度が増していくようなありさまでした.
当方での使い方として,ドリトルとの間でつねにシリアル通信をする形をとったので,タイミングが不安定になるとデータが欠けたり化けたり,あとProlificのWindows版ドライバを強く疑っているのですが,連続してデータをやりとりすると,Windowsのレベルでドリトルの動作が停止したり,基板との通信が止まって基板が生きているのか死んでいるのかわからなくなる,ということが頻発して途方に暮れるのでありました.Scratchセンサーボードのスケッチは毎サイクルですべてのセンサデータの送信とモータ等の動作データ受信を繰り返すので,あるサイクルで失敗しても次のサイクルで回復するとか,Scratch側がバッファ持ってて多少遅れてもなんとかなるようでしたが,ドリトルのプログラムは間欠的に,ときにバースト的にデータをやりとりするので,データの欠落や化けはわりと致命的でした.
Prolificのチップですが,Mac版ドライバは非常に安定しており,5月版なのぼ〜どAG 1.4であっても,たまにまずいところだけ5〜10ms程度の待ち時間を入れてあげる程度で,Windowsのときのようなハングは一切生じておりませんでしたが,Windowsでは,随所に50ms以上のウエイトを入れて確率8割ぐらい,PCの個体によってはどうやってもお手上げで,その個体ではATmega168Pに8MHzのクリスタルを搭載した「スタディーノ」でさえ通信ができなかったりしました.
スタディーノで使われているのは中華クローン対策をしたTA版チップで,クローンされまくったHXAの後継であるHXシリーズとは設計が違うと思われるのに,とにかくだめなときはだめです.
WindowsのドライバはProlific公式サイトからダウンロードしたものも,Windows 8.1や10で自動インストールされるドライバも,挙動に違いはみられないように観察されました.
それから,なのぼ〜どAG基板裏のジャンパパターンのカットについて,前のエントリの何度かの更新で加筆していきましたが,公式サイトでも写真つきで説明が入り,わかりやすくなりました.僕の現在の死亡フラグが立った状態が落ち着いたら,具体的な使用例込みでこちらで報告したいと思います.
それから,Li-Po(リチウムポリマーバッテリー)について,充放電管理のチップを搭載したものを入荷されたということで,これもすばらしい.SparkFunもAdafruitも商品ラインナップは電池単体で,チップはLilyPadやFloraのようにArduino基板側に搭載されるか,Breakout基板として別途提供という形でした.国内はラジコン用でホビーショップから買う経路が安定しているようですが,小型軽量なLi-Poは小さなプロジェクト,特に身に付けるような作品をスマートに仕上げるには具合がいいので,3.7〜4Vあたりの動作の回路には積極的に使っていきたい感じですが,専用充電器じゃないと怖いよ,ということで手を出しにくいところだったかと思います.という意味で電池側にチップがあるのは楽でいいです.
ただ,Li-Poは充放電を繰り返しているうちに膨張していつか破裂するという宿命があり,それは避けられないこと,パッケージは柔らかいけれど衝撃等で内部に傷やひびが入るとボーイング787初期の燃焼事故のような感じでやっぱり燃えるので,荒っぽい使い方しないよう注意してほしいと思います.で,ちょっとでも危ない気配がしたら正しい回収先に出す.
YouTubeを「battery explosion」で検索すると,バッテリーケースやスマホ本体にナイフを打ち込んで爆発大炎上させるロックな動画がいっぱい出てきますが,よいこはまねしないでくださいね.
2015年9月10日木曜日
2015年6月23日火曜日
なのぼ〜どAG(2015年春版=V1.4)をArduino IDE 1.6.5でプログラムする(更新あり2015-09-10,2015-08-17, 2015-07-06, 2015-06-30, 2015-06-27)
(新しい2015年8月版1.4のなのぼ〜どAGが出たので,ともんさんのサイトを参照しましょう.本エントリは以後更新しません)
(重要な訂正:D3,5,6はPWMできませんでした。よって使えるのはD9,10,11のみ)
(重要な訂正:PWM端子がM1とM2で逆に書いていたのを直しました2015-07-06)
(更新内容:基板の端子の接続をテスターで確認しました)
ともんさんが頒布されている、なのぼ〜どAGは、もともとScratchセンサーボード互換にWeDo相当のモータドライバを載せる用途で開発されてきたものだったはずですが、Arduino互換なので、とても安価なArduinoとして使いたいという方も多いかと思われます。
学生実習用に、モータドライバつきでCdS、マイクロフォン、スライダーボリューム、タクトスイッチを搭載したArduinoが送料込み2,000円というのはたいへんありがたいので、使わせていただくことにしました。
現在の最新版はV1.4だそうで、裏面を見るとたしかにそうシルクされています。(2015-06-30追記)
回路図も公開されているのですが、ロットごとに、ともんさんが支援している、その時々のOtOMOの活動(主に子ども向けScratchプログラム学習イベント活動)に合わせて設計がかわるようなので、特にソケットのあたりは現状に合っていなくてしばし迷うところでありました。また、Arduino IDEについて、古い情報を更新するエントリが見当たらなかったので書いてみる次第であります。
まず2015年春版(年内にロットがはけたら次の設計にかわるかもしれないので、仮にこう呼ぶことにします。追記2015-06-30:4月末以後はV1.4だそうです)の外見は、「なのか〜」の写真が該当するように思われます。具体的にいうと、サーボモータ端子はなくなって、アナログ入力A,B,C,Dと同じ並びにD11とVccがきて、超音波距離センサーがそのままささるようになっています。(テスターで確認:2015-06-27)
あと、M1, M2のモータ端子横の3本のうち、外の2本が基板を電池駆動する場合の電源端子であること、スルーホールのままの3端子が電池ボックスからの電源スイッチを取り付ける場所であることが、「なのか〜」の写真からうかがえます。残る1端子は、モータドライバのモータ用電源端子につながっています(テスターで確認:2015-06-27)。
まとめると、こうなると思います。
この写真は上のスルーホールにピンソケットがついていませんが、本来はつけた状態が完成品のようです。手仕事の部分が残っているようなので、値段もたいへん手頃ですしScratchセンサーボードとしては本来不要なところなので、それをとやかく言うのはよろしくないと思います。(追記2015-06-30)
なのぼ〜どAGはATmega8Lの8MHzクロックなので、ATmega168に対してFlashが半分(8kB)ということさえ注意すれば、学習用のプロジェクトには十分使えるのではないかと思われます。ATmega8というと、初期のArduino NGなど古い基板の印象ですが、Adafruitの最近のヒット作Gemma(ATTiny85使用)にむしろ近いのかもしれず、そう思うとなんとなくモダンに見えなくもない感じです。
ただ、ATmega8L内部クロックで動作しているので、外付けクリスタルで動作するArduinoに比べればタイミングが不安定なときがあり、基板バージョンごとに対策をとって安定度は増しているものの、ときにスケッチ書き換え失敗がないとはいえないようです。つまり、Scratchセンサーボードのスケッチを消すのは自己責任と考えるべきだと思いました。基板に搭載されているクリスタルは、回路図を見ればわかりますがPL-2303HXC用、つまりUSB用です。(追記2015-06-30)
さて、まずはArduino IDEで使えるようにするために、boards.txtに何を書くのかということですが、最近のなのぼ〜どAGはoptibootをbootloaderに使っている、つまりUno R3などと共通のコードベースで動いているのでわりと素直です。1.0.5用として公式ページに書かれているものにちょっと追記したら1.6.5でもうまくいきました。
こんな感じ。
これで次に気になるのは搭載されているセンサー類がどうなっていて、自由に使えるアナログ入力があるかという心配ですが、なのぼ〜どAGはアナログ端子8個の設定なので、実は結構余裕。
D2-D4とD11-D13は未使用です(超音波距離センサーはA1(=D15)とD11を使用するので、その場合は他の用途に使わない)。D3とD11がPWM対応なのは通常のArduinoと同じです(D3,5,6はPWMできないので普通のArduinoと異なることがわかりました:2015-08-17追記)。また、D13には通常のArduinoと同じようにチップLEDが接続されています。
なお、アナログ端子はすべて10kΩ(103)抵抗でプルアップされているので、学習用に分圧回路組ませたりしなくても、なにか抵抗値が変化するものを入れるだけで値の取得ができます。プルアップが困る場合,プルアップ抵抗値を変えたい場合は,裏側にジャンパパターンがありますので,そこをカットすればプルアップ回路の切り離しを行うことができます。1MΩでプルアップすれば,Makey Makeyのようなタッチセンサー風味のことも十分可能です。(追記2015-08-17)
あと、基板手前側のピン、普通のArduinoでは電源やアナログ入力端子が出ているところの上がスライダー可変抵抗器でふさがってしまっているので、「A」〜「D」で外に出してある端子を使うべし、ということになろうかと思います。電源周りはあちこちにVccとGNDが出ているので、それらを利用すればそれほど苦労はしないと思います。
I2CはA5がSCL, A4がSDAですが、スライダーボリュームの横にA5が出ているので、こことアナログ「D」(A4)を活用すればなんとかなるかもしれません。ただしA4はプルアップをありがたく利用させていただくとしても,A5にはCdSがつながっているので、CdSに光が入らないよう、しっかり覆いをかぶせて高抵抗(1MΩぐらいになるはず)を保つか、確実なのは基板裏のA5とシクルされた部分のパターンをカットしてCdSを切り離す(追加2015-07-06,打ち消し線追加2015-08-17)べきと思います。どちらもA4は基板上で10kΩでプルアップされているのでそちらのI2Cのプルアップ抵抗外付け不要ですが,A5はパターンカットによりプルアップを失いますから,それを補う必要はあります(文章訂正2015-08-17)。
(重要な訂正:D3,5,6はPWMできませんでした。よって使えるのはD9,10,11のみ)
(重要な訂正:PWM端子がM1とM2で逆に書いていたのを直しました2015-07-06)
(更新内容:基板の端子の接続をテスターで確認しました)
ともんさんが頒布されている、なのぼ〜どAGは、もともとScratchセンサーボード互換にWeDo相当のモータドライバを載せる用途で開発されてきたものだったはずですが、Arduino互換なので、とても安価なArduinoとして使いたいという方も多いかと思われます。
学生実習用に、モータドライバつきでCdS、マイクロフォン、スライダーボリューム、タクトスイッチを搭載したArduinoが送料込み2,000円というのはたいへんありがたいので、使わせていただくことにしました。
現在の最新版はV1.4だそうで、裏面を見るとたしかにそうシルクされています。(2015-06-30追記)
回路図も公開されているのですが、ロットごとに、ともんさんが支援している、その時々のOtOMOの活動(主に子ども向けScratchプログラム学習イベント活動)に合わせて設計がかわるようなので、特にソケットのあたりは現状に合っていなくてしばし迷うところでありました。また、Arduino IDEについて、古い情報を更新するエントリが見当たらなかったので書いてみる次第であります。
まず2015年春版(年内にロットがはけたら次の設計にかわるかもしれないので、仮にこう呼ぶことにします。追記2015-06-30:4月末以後はV1.4だそうです)の外見は、「なのか〜」の写真が該当するように思われます。具体的にいうと、サーボモータ端子はなくなって、アナログ入力A,B,C,Dと同じ並びにD11とVccがきて、超音波距離センサーがそのままささるようになっています。(テスターで確認:2015-06-27)
あと、M1, M2のモータ端子横の3本のうち、外の2本が基板を電池駆動する場合の電源端子であること、スルーホールのままの3端子が電池ボックスからの電源スイッチを取り付ける場所であることが、「なのか〜」の写真からうかがえます。残る1端子は、モータドライバのモータ用電源端子につながっています(テスターで確認:2015-06-27)。
まとめると、こうなると思います。
![]() |
| なのぼ〜どAG 2015年春基板と端子の割り当て |
なのぼ〜どAGはATmega8Lの8MHzクロックなので、ATmega168に対してFlashが半分(8kB)ということさえ注意すれば、学習用のプロジェクトには十分使えるのではないかと思われます。ATmega8というと、初期のArduino NGなど古い基板の印象ですが、Adafruitの最近のヒット作Gemma(ATTiny85使用)にむしろ近いのかもしれず、そう思うとなんとなくモダンに見えなくもない感じです。
ただ、ATmega8L内部クロックで動作しているので、外付けクリスタルで動作するArduinoに比べればタイミングが不安定なときがあり、基板バージョンごとに対策をとって安定度は増しているものの、ときにスケッチ書き換え失敗がないとはいえないようです。つまり、Scratchセンサーボードのスケッチを消すのは自己責任と考えるべきだと思いました。基板に搭載されているクリスタルは、回路図を見ればわかりますがPL-2303HXC用、つまりUSB用です。(追記2015-06-30)
さて、まずはArduino IDEで使えるようにするために、boards.txtに何を書くのかということですが、最近のなのぼ〜どAGはoptibootをbootloaderに使っている、つまりUno R3などと共通のコードベースで動いているのでわりと素直です。1.0.5用として公式ページに書かれているものにちょっと追記したら1.6.5でもうまくいきました。
こんな感じ。
atmega8o83.name=chibiDuino pro ATmega8 38400 optiboot atmega8o83.upload.protocol=arduino atmega8o83.upload.tool=avrdude atmega8o83.upload.maximum_size=7680 atmega8o83.upload.speed=38400 atmega8o83.bootloader.tool=avrdude atmega8o83.bootloader.low_fuses=0×94 atmega8o83.bootloader.high_fuses=0xDC atmega8o83.bootloader.path=optiboot atmega8o83.bootloader.file=optiboot_cp83.hex atmega8o83.bootloader.unlock_bits=0×3F atmega8o83.bootloader.lock_bits=0×0F atmega8o83.build.mcu=atmega8 atmega8o83.build.f_cpu=8000000L atmega8o83.build.core=arduino atmega8o83.build.variant=standard atmega8o83.build.board=AVR_ATMEGA8O83
これで次に気になるのは搭載されているセンサー類がどうなっていて、自由に使えるアナログ入力があるかという心配ですが、なのぼ〜どAGはアナログ端子8個の設定なので、実は結構余裕。
| A0 | マイクロフォン(音量センサー) |
| A1 | 「A」端子 |
| A2 | 「B」端子 |
| A3 | 「C」端子 |
| A4 | 「D」端子 |
| A5 | CdS(光センサー) |
| A6 | スライダー可変抵抗器 |
| A7 | タクトスイッチ |
| D5 | モーターM2制御1 |
| D6 | モーターM2制御2 |
| D7 | モーターM1制御1 |
| D8 | モーターM1制御2 |
| D9 | モーターM1 PWM |
| D10 | モーターM2 PWM |
D2-D4とD11-D13は未使用です(超音波距離センサーはA1(=D15)とD11を使用するので、その場合は他の用途に使わない)。
なお、アナログ端子はすべて10kΩ(103)抵抗でプルアップされているので、学習用に分圧回路組ませたりしなくても、なにか抵抗値が変化するものを入れるだけで値の取得ができます。プルアップが困る場合,プルアップ抵抗値を変えたい場合は,裏側にジャンパパターンがありますので,そこをカットすればプルアップ回路の切り離しを行うことができます。1MΩでプルアップすれば,Makey Makeyのようなタッチセンサー風味のことも十分可能です。(追記2015-08-17)
あと、基板手前側のピン、普通のArduinoでは電源やアナログ入力端子が出ているところの上がスライダー可変抵抗器でふさがってしまっているので、「A」〜「D」で外に出してある端子を使うべし、ということになろうかと思います。電源周りはあちこちにVccとGNDが出ているので、それらを利用すればそれほど苦労はしないと思います。
I2CはA5がSCL, A4がSDAですが、スライダーボリュームの横にA5が出ているので、こことアナログ「D」(A4)を活用すればなんとかなるかもしれません。ただしA4はプルアップをありがたく利用させていただくとしても,A5にはCdSがつながっているので
登録:
投稿 (Atom)
