USBキーボード作成までは順調に進んだが、それ以降はイバラの道であった。解決しても解決しても、次から次へと問題が沸いてきた。さしづめ開発元のDFRobotから送られてきた刺客とでもいうべきか。
【壱の刺客】ときどきUSBキーボードが消える
arduinoの起動がWindowsよりも早すぎるのが原因みたい。arduinoの起動でディレイを入れまくる方法もあるが、Windowsリブートだと対応できない(Windowsが落ちていてもarduinoは普通に動いている)ので、Windowsが起動したタイミングでarduinoに仮想COM経由でメッセージを投げて、メッセージを受け取ったarduinoは自分を再起動するようにした。
【弐の刺客】ブートローダーが頻繁に破壊される。
PICのHID bootloaderも1/256程度の確率で壊れたがarduinoの場合は20%~100%の確率で壊れる。アプリによって確率は異なるようだ(四の刺客参照)。PICのようにbootブロックをプロテクトする方法が使えればいいのであるが、調べた限り、arduinoではこの手は使えない。でも心配ご無用。壊れたのならまた書き込めばいい。このためのツールであるAVRライターであるが、秋月だと10000円以上するのでaitendoで買ってきた。500円程度でも売っているが、どうも怪しいので1500円のやつにした。言うまでもないがAVRライターは必需品である、
【三の刺客】AVRライターのドライバーがインストールできない
署名がないドライバーはインストールできないようだ。Windows10をテストモードにして、ブートメニューから署名なしドライバーを利用可能にした。画面の右下にテストモードと表示されるのは気にはなるが。。。
【四の刺客】arduinoをリブートするためWatchDogTimerを使ったところ、ブートローダーが氏ぬ?
おそらくだけど、ブートローダーは消えてもいないし、氏んでもいない。ではなぜブートローダーとして機能できないかというと、WDTが書き換え途中のarduinoをリブートしてしまうから、と思うのである。これは、WDTをリブート処理直前で有効にすればOK。WDTを本来の目的で使うことはarduinoでは禁忌ということになる。気を付けるべし。
【伍の刺客】COMポートがコロコロ変わるのでarduinoにリブート用コマンドを送れない。
これの動きは、はっきりしている。
COM3がある・・・・アプリのUSB周りの起動にプチ失敗している。arduinoをリブートする必要がある。完全に失敗したときはCOM3すら無い(COM1のみになる)。こうなってはAVRライタしか手はない。
COM4がある・・・・アプリが正しく立ち上がろうとしている状態
COM5がある・・・・アプリが正しく立ち上がっている。arduinoのリブートの必要は無い。
つまり、COM3に対してリブート用のコマンドを送ればいい。もし無ければarduinoはコマンドを受け取れないが、そもそもそのときは受け取る必要がない。
【六の刺客】D12をdigitalのインプットとして使えない
これは結局原因不明。チップが壊れていたり基板が壊れている可能性もゼロではないが、まあ仕様だろうと思うことにして、A0ポートをデジタル入力設定にして使うことにした。
【七の刺客】A0がデジタル入力として機能しない
まずはこの絵を見て、A0はD18として使えることを知る。アナログをデジタルに切り替えるなんか命令があるかと思ったが、通常と変わらずデジタルインプットとして設定すればいいらしい。
さーてと、D18と結線したスイッチを押したら。。。。何も起きない!なんだこれ?使えねーぞ!!
さらに調べると、D18は嘘でしたD14でした、というような記載を見つけた。むむむ!
さくさくっと18から14に書き換えて、さ~て、解決。。。。と思いきや、動かん!!なんじゃこりゃ!?
さらに調べると、アナログはデジタル化してもA0とかで指定できることがわかった。なので、ダメ元で、次のように試してみた。
pinMode( A0, INPUT )
digitalRead( A0 )
たぶんダメだろうなぁ、と思ったが、ビルドはでき、書き込みもできた。でも動かないだろうなぁ。。。。あれ?動いた。。。なんだかなぁ。。。解決!
【壱の刺客】ときどきUSBキーボードが消える
arduinoの起動がWindowsよりも早すぎるのが原因みたい。arduinoの起動でディレイを入れまくる方法もあるが、Windowsリブートだと対応できない(Windowsが落ちていてもarduinoは普通に動いている)ので、Windowsが起動したタイミングでarduinoに仮想COM経由でメッセージを投げて、メッセージを受け取ったarduinoは自分を再起動するようにした。
【弐の刺客】ブートローダーが頻繁に破壊される。
PICのHID bootloaderも1/256程度の確率で壊れたがarduinoの場合は20%~100%の確率で壊れる。アプリによって確率は異なるようだ(四の刺客参照)。PICのようにbootブロックをプロテクトする方法が使えればいいのであるが、調べた限り、arduinoではこの手は使えない。でも心配ご無用。壊れたのならまた書き込めばいい。このためのツールであるAVRライターであるが、秋月だと10000円以上するのでaitendoで買ってきた。500円程度でも売っているが、どうも怪しいので1500円のやつにした。言うまでもないがAVRライターは必需品である、
【三の刺客】AVRライターのドライバーがインストールできない
署名がないドライバーはインストールできないようだ。Windows10をテストモードにして、ブートメニューから署名なしドライバーを利用可能にした。画面の右下にテストモードと表示されるのは気にはなるが。。。
【四の刺客】arduinoをリブートするためWatchDogTimerを使ったところ、ブートローダーが氏ぬ?
おそらくだけど、ブートローダーは消えてもいないし、氏んでもいない。ではなぜブートローダーとして機能できないかというと、WDTが書き換え途中のarduinoをリブートしてしまうから、と思うのである。これは、WDTをリブート処理直前で有効にすればOK。WDTを本来の目的で使うことはarduinoでは禁忌ということになる。気を付けるべし。
【伍の刺客】COMポートがコロコロ変わるのでarduinoにリブート用コマンドを送れない。
これの動きは、はっきりしている。
COM3がある・・・・アプリのUSB周りの起動にプチ失敗している。arduinoをリブートする必要がある。完全に失敗したときはCOM3すら無い(COM1のみになる)。こうなってはAVRライタしか手はない。
COM4がある・・・・アプリが正しく立ち上がろうとしている状態
COM5がある・・・・アプリが正しく立ち上がっている。arduinoのリブートの必要は無い。
つまり、COM3に対してリブート用のコマンドを送ればいい。もし無ければarduinoはコマンドを受け取れないが、そもそもそのときは受け取る必要がない。
【六の刺客】D12をdigitalのインプットとして使えない
これは結局原因不明。チップが壊れていたり基板が壊れている可能性もゼロではないが、まあ仕様だろうと思うことにして、A0ポートをデジタル入力設定にして使うことにした。
【七の刺客】A0がデジタル入力として機能しない
まずはこの絵を見て、A0はD18として使えることを知る。アナログをデジタルに切り替えるなんか命令があるかと思ったが、通常と変わらずデジタルインプットとして設定すればいいらしい。
さーてと、D18と結線したスイッチを押したら。。。。何も起きない!なんだこれ?使えねーぞ!!
さらに調べると、D18は嘘でしたD14でした、というような記載を見つけた。むむむ!
さくさくっと18から14に書き換えて、さ~て、解決。。。。と思いきや、動かん!!なんじゃこりゃ!?
さらに調べると、アナログはデジタル化してもA0とかで指定できることがわかった。なので、ダメ元で、次のように試してみた。
pinMode( A0, INPUT )
digitalRead( A0 )
たぶんダメだろうなぁ、と思ったが、ビルドはでき、書き込みもできた。でも動かないだろうなぁ。。。。あれ?動いた。。。なんだかなぁ。。。解決!
PR
小さなPCが欲しくて買ったラテパンダだが、噂ではarduinoが内蔵されているらしい。PIC派の俺はarduinoなんて電子工作苦手な人がちょっとしたガジェットを作るときに使うものと思っていたけど、まあせっかくなので、試してみた。
まずは開発環境の準備を。。。あれ?ラテパンダに入っているや。
では、まずLEDチカから。まず、ラテパンダのarduinoはleonardoというものらしいので、開発環境をleonardoに合わせて、digitaiWriteでD13をチカチカさせるプログラムを5行くらいで書いてみて、arduinoに書き込んでみたところ。。。あれ?もう動いた。PICだと新しいチップでLEDチカチカさせる場合はチップの初期処理の作り込みで4時間くらいかかってしまう(コンパレータをオフにしたりなど、チップごとに初期処理が違う)のだが、それがarduinoでは5分くらいだ。じつは、arduinoって、けっこういいものかもしれない。
次、USBキーボードを作ってみた。これは難しいぞぉ。。。PICで新しいボードに実装する場合だとApplication Libraryをインストールして、基板にあわせて書き換えて、まずまず動くまでに8時間くらいかかるのだが、arduinoだとこれが。。。。10分かからない?。Arduino IDEにキーボードのサンプルソースコードが入っていて、基板をleonardoにして書き込むだけで完成。Arduinoだとチップや基板の選択肢はPICと比べて圧倒的に少ないが、逆に選ぶのに迷わなくてすみ、移植の手間がかからないというのは非常にすばらしいと思う。
ボタンを押したらshutdown、よく使うカーソルキーを実装、などをUSBキーボードで実装するのは簡単そうだ。この時点では、実装は8割ほど完成していると、そう思っていたのであるが。。。。。。。
ちなみにArduino leonardoとWindows10 PCとは内部でUSB接続されており、切ることはできないようだ。このUSBの仮想COMポートでArduino IDEとleonardoと通信し、プログラムを書き換えを行っている。このポートがCOM3になったりCOM5になったりしていたが、このときはあまり気にしていなかったが、これが後々深刻な問題を引き起こすことになろうとは、このときは思いもしなかった。。。。。
まずは開発環境の準備を。。。あれ?ラテパンダに入っているや。
では、まずLEDチカから。まず、ラテパンダのarduinoはleonardoというものらしいので、開発環境をleonardoに合わせて、digitaiWriteでD13をチカチカさせるプログラムを5行くらいで書いてみて、arduinoに書き込んでみたところ。。。あれ?もう動いた。PICだと新しいチップでLEDチカチカさせる場合はチップの初期処理の作り込みで4時間くらいかかってしまう(コンパレータをオフにしたりなど、チップごとに初期処理が違う)のだが、それがarduinoでは5分くらいだ。じつは、arduinoって、けっこういいものかもしれない。
次、USBキーボードを作ってみた。これは難しいぞぉ。。。PICで新しいボードに実装する場合だとApplication Libraryをインストールして、基板にあわせて書き換えて、まずまず動くまでに8時間くらいかかるのだが、arduinoだとこれが。。。。10分かからない?。Arduino IDEにキーボードのサンプルソースコードが入っていて、基板をleonardoにして書き込むだけで完成。Arduinoだとチップや基板の選択肢はPICと比べて圧倒的に少ないが、逆に選ぶのに迷わなくてすみ、移植の手間がかからないというのは非常にすばらしいと思う。
ボタンを押したらshutdown、よく使うカーソルキーを実装、などをUSBキーボードで実装するのは簡単そうだ。この時点では、実装は8割ほど完成していると、そう思っていたのであるが。。。。。。。
ちなみにArduino leonardoとWindows10 PCとは内部でUSB接続されており、切ることはできないようだ。このUSBの仮想COMポートでArduino IDEとleonardoと通信し、プログラムを書き換えを行っている。このポートがCOM3になったりCOM5になったりしていたが、このときはあまり気にしていなかったが、これが後々深刻な問題を引き起こすことになろうとは、このときは思いもしなかった。。。。。
久しぶりに秋葉原行ってきた。最近はdigikey、RS、mouserあたりを使うことが多かったんだけど、抵抗とかICソケットとかコンデンサなどの汎用品はネットより秋月のほうが安いよね。
で、散歩がてらにaitendoへ。途中の末広町近くにエウリアンが移転していて、まあこいつら懲りずによくやるよな?と思ったり。
aitendo到着。う~ん、なんか、わくわく感が、以前よりも減っている。掘り出し物、何かないかな?と探しているのが楽しかったんだけど、最近はハズレが多いんだよなぁ。。。
ということで、いままで買ったもので、ハズレ!というものを挙げてみた。
①はんだ
数百メートル巻きで1000円しなかったので購入。gootやアルミットと比べて1/2以下の値段。まあ、はんだなんてどれも大差ないだろうと思っていたら、大違い。フラックスが少ないのか、フラックスの質が悪いのか、粘りがない。しっかり付けたはずなのに、線がすっぽ抜けたりする。こんなの電子工作用じゃないよぉ。。。しばらくは我慢して使っていたけど不良品を量産するので捨てた。
②フラックス
なんだこれ?本当にフラックスなのか?鉄板はんだ溶接用のフラックスと似ている。少なくとも電子工作用ではない。
③はんだ吸い取り線
以外と高いんだよね。吸い取り線。他の店の半額以下なので購入したが、ぜんぜん吸い取らない。線の目は細かいけど、まったく話にならない品質。
④テストリード(テスターの線)
こういうやつです。秋月で500~600円、マルツで1000円弱と、けっこう高いものだが、aitendoだと100円台。ただの配線だし、違いなんてあるわけないよな?と思っていたら、大違い。aitendoのケーブルを使って抵抗値を測定すると、なぜか計測値がふらふらする。計測機って、見た目ではわからないことで、いろいろ工夫しているんだな、ってことが理解できた。
っと思っていたら、このケーブル、先端の金属部分が絶縁体でコーティングされているのであった。金属部分をヤスリで削れば調子良くなった。同様のことが以前ジャンパーワイヤでもあったが、たぶん作っている人は、何が大切なのか、まったくわからずに作っているのだろう。。。。
aitendoの仕入れ担当者には、目利きではない、電子工作素人が紛れ込んでいるようだ。そういう人は、見た目だけで判断するからなぁ。。。
まとめると、aitendoで絶対に買ってはいけないものは
・秋月や千石の 1/2以下の価格で売っているもの
・消耗品
・見た目で性能がわからないもの
逆にaitendoで買っていいものは
・aitendoでしか売っていないもの
・aitendoオリジナルキット
という感じかな。
で、散歩がてらにaitendoへ。途中の末広町近くにエウリアンが移転していて、まあこいつら懲りずによくやるよな?と思ったり。
aitendo到着。う~ん、なんか、わくわく感が、以前よりも減っている。掘り出し物、何かないかな?と探しているのが楽しかったんだけど、最近はハズレが多いんだよなぁ。。。
ということで、いままで買ったもので、ハズレ!というものを挙げてみた。
①はんだ
数百メートル巻きで1000円しなかったので購入。gootやアルミットと比べて1/2以下の値段。まあ、はんだなんてどれも大差ないだろうと思っていたら、大違い。フラックスが少ないのか、フラックスの質が悪いのか、粘りがない。しっかり付けたはずなのに、線がすっぽ抜けたりする。こんなの電子工作用じゃないよぉ。。。しばらくは我慢して使っていたけど不良品を量産するので捨てた。
②フラックス
なんだこれ?本当にフラックスなのか?鉄板はんだ溶接用のフラックスと似ている。少なくとも電子工作用ではない。
③はんだ吸い取り線
以外と高いんだよね。吸い取り線。他の店の半額以下なので購入したが、ぜんぜん吸い取らない。線の目は細かいけど、まったく話にならない品質。
④テストリード(テスターの線)
こういうやつです。秋月で500~600円、マルツで1000円弱と、けっこう高いものだが、aitendoだと100円台。ただの配線だし、違いなんてあるわけないよな?と思っていたら、大違い。aitendoのケーブルを使って抵抗値を測定すると、なぜか計測値がふらふらする。計測機って、見た目ではわからないことで、いろいろ工夫しているんだな、ってことが理解できた。
っと思っていたら、このケーブル、先端の金属部分が絶縁体でコーティングされているのであった。金属部分をヤスリで削れば調子良くなった。同様のことが以前ジャンパーワイヤでもあったが、たぶん作っている人は、何が大切なのか、まったくわからずに作っているのだろう。。。。
aitendoの仕入れ担当者には、目利きではない、電子工作素人が紛れ込んでいるようだ。そういう人は、見た目だけで判断するからなぁ。。。
まとめると、aitendoで絶対に買ってはいけないものは
・秋月や千石の 1/2以下の価格で売っているもの
・消耗品
・見た目で性能がわからないもの
逆にaitendoで買っていいものは
・aitendoでしか売っていないもの
・aitendoオリジナルキット
という感じかな。
FusionPCBに依頼して2ヶ月半。結局、届かなかった。
まあ今更届いても意味ないし。
結局Elecrowに依頼した。こちらは3週間かからず届いた。
ElecrowとSeeedStudioって同じようなものかと思っていた
(取引中に送られてくるメールの文言がまったく同じなので)
が、信頼性ではElecrowの方が上のようだ。
値段でも、ほぼElecrowが安いし。
もう、二度とSeeed Studioで製品を買うことはない。
最近は中国でもちゃんとした対応をしてくれるところが
多いが、このSeeed Studioは悪い意味でのチャイナクオリティ。
対応は最悪。何度連絡しても、対応してくれない。
Paypalに訴えて返金してもらってもいいのだが、たかが10ドル
ごときでそんな面倒なことは御免だ。
でも、FusionPCBも、最初のころは、それはもうすばらしい
対応だった。Elecrowが登場するまでは、何度もお世話になったし、
信頼もしていた。まあ直近2年ほどはあまり使わなかったが。。。
ということで、いままで5年間、ありがとう。
そして、さようなら。
まあ今更届いても意味ないし。
結局Elecrowに依頼した。こちらは3週間かからず届いた。
ElecrowとSeeedStudioって同じようなものかと思っていた
(取引中に送られてくるメールの文言がまったく同じなので)
が、信頼性ではElecrowの方が上のようだ。
値段でも、ほぼElecrowが安いし。
もう、二度とSeeed Studioで製品を買うことはない。
最近は中国でもちゃんとした対応をしてくれるところが
多いが、このSeeed Studioは悪い意味でのチャイナクオリティ。
対応は最悪。何度連絡しても、対応してくれない。
Paypalに訴えて返金してもらってもいいのだが、たかが10ドル
ごときでそんな面倒なことは御免だ。
でも、FusionPCBも、最初のころは、それはもうすばらしい
対応だった。Elecrowが登場するまでは、何度もお世話になったし、
信頼もしていた。まあ直近2年ほどはあまり使わなかったが。。。
ということで、いままで5年間、ありがとう。
そして、さようなら。
ひさしぶりにプリント基板製作。
3月18日注文。さてと。。。
03/18/2016 Confirmed
03/18/2016 PCB Confirmed This order has PCB item(s)
03/18/2016 PCB Confirmed Transaction ID: xxxxxxxxxxxx
Payment Type: PayPal Express Checkout (instant)
Timestamp: 2016-03-17T20:xx:xxZ
Payment Status: Completed
Amount: 24.11 USD
03/18/2016 PCB Processing PCB File:D203xxx_14xx62_xxxx001.zip is now under processing.
03/18/2016 PCB Processing PCB File:D203xxx_14xx62_xxxx001.zip passed file examination.
03/23/2016 Processing
03/23/2016 Traceable Order was Traceable
03/23/2016 Traceable Order was Traceable
3月23日に製造完了したように見える。
さて、今日は4月25日。まだ届かない。。。。
ここらへんが、中華クオリティーって感じかな。
とりあえず催促してみることにした。
というか、18日に催促していたんだけど、ヤフーメールが
スパム扱いされてエラーで届かない。。。。
仕方ないので、ホームページからクレーム入れようかな?
3月18日注文。さてと。。。
03/18/2016 Confirmed
03/18/2016 PCB Confirmed This order has PCB item(s)
03/18/2016 PCB Confirmed Transaction ID: xxxxxxxxxxxx
Payment Type: PayPal Express Checkout (instant)
Timestamp: 2016-03-17T20:xx:xxZ
Payment Status: Completed
Amount: 24.11 USD
03/18/2016 PCB Processing PCB File:D203xxx_14xx62_xxxx001.zip is now under processing.
03/18/2016 PCB Processing PCB File:D203xxx_14xx62_xxxx001.zip passed file examination.
03/23/2016 Processing
03/23/2016 Traceable Order was Traceable
03/23/2016 Traceable Order was Traceable
3月23日に製造完了したように見える。
さて、今日は4月25日。まだ届かない。。。。
ここらへんが、中華クオリティーって感じかな。
とりあえず催促してみることにした。
というか、18日に催促していたんだけど、ヤフーメールが
スパム扱いされてエラーで届かない。。。。
仕方ないので、ホームページからクレーム入れようかな?