日記代わりのまったりブログ。
PSO2はShip5にMILAIでよく現れる。 話しかけると中の人が反応するかも?『PHANTASY STAR ONLINE 2』公式サイト
http://pso2.jp
-------------------------------------------
SEGA 『ファンタシースターオンライン2 ニュージェネシス』公式サイト
https://new-gen.pso2.jp/
<お断り>
当ブログの記事は商用・非商用に関わらず引用および転載、URL貼り付け等を一切禁止させていただきます。
まだC言語覚えるには至ってないけど。 [Arduino]
さて、久々のArduinoなお話。
以前作ったGPS時計はもう機能としては完成し、筐体をどう作るかで3Dプリンターと格闘しています。
モデルはできてるんだけど、安定した出力がどうしてもできなくて、毎度頭を悩ます状態。
とにかく3Dプリンターを手なずけなければ。
というわけで、あのGPS時計は今どうなっているかというと、BPE280のシールド使って温度と気圧表示を引っ張り出して、GPS時計からの情報と一緒に表示させる状態まで進化させてあります。
個人的にもうちょっと画面にこだわりたいので、液晶モニタ系のコントロールを仕込んでスタイリッシュに表示してみたいので、そっちの勉強中。
ちなみにGPSシールドですが、コレは最初から日本で使うなら「みちびき対応」のシールドを入れた方が楽です。
というか、そうしないとほぼ電波取れないなんてお話になります。
U-Blockの「7」の方だと晴れていても衛星位置が悪いと拾いませんし、「8」にしてもなんかちょっとあやふやな感じですので。
通信コードが合う状態にしてやれば使えるので、そこだけ留意かな?
んでもって今回のお話なんですが…コレは結構一足飛びな方向。
実はね、Arduinoでやれることとして「自動車用モニタリングシステム」をECU情報から取得してやれるはずじゃない?って思ってたので、シールドの仕組みを理解するのに時間かけてました。
…コレは絶対Arduinoが出てきたときに同じこと考えている人がいたに違いない!って思ったので、
ある程度仕様について調べてできるのを確信したところで、公開しているスケッチを探してみることに。
そしたら…出てきましたホントに;
日産のコンサルトシステム用の簡易データ表示スケッチが(ぇ
で、いろいろ調べている間に、どのデータがどのアドレスで出てくる、ってのを少し仕入れられていたので、
定義ファイルとかの中身見て、無かった部分を記述をまねて追加し、試しにコンパイルして上手くいったので、後はスケッチ修正でなんとかなるレベルまで変更させてしまいました。
あとは…LCDの種類変えたときの表示内容どうするか。
でねぇ…ちょっと気になってるのが、この公開していたスケッチなんですが、
開いてみたらキャプションで「もしこのスケッチを使って何かやろうとしてる人がいたら連絡してね。使いやすいように考慮しますんで」って書いてあったんだけども、中の連絡先URL開いたら「404」で連絡つけられないって言う;
※そろそろ無料でとれるアカウントのGithub登録やっといた方が良いかな?
連絡先そっちならわかりそうだし。
とりあえず個人で使う分には問題ないだろうからこのまま作業しますけども…
ちなみに、今応用で考えているのは「USBホストシールド」が使えないかという点。
コレは、Arduinoにシリアル通信シールドがあるのを知ったので、旧来のPCを使うコンサルト用のRS232C接続が存在していたことから、同じことできないとおかしいよな?って思ったからですな。
※USBホストシールド、どうやら現状では自作ロボット系の操作用コントローラー入力に使う人が多いようで、シリアル転送でデータのやりとりをする方向ってのがどうも少ないようです。
が、仕組み上は同じことのはずなので、指定方法だけのはずです。
でもって、現状でもう一つやろうとしているのがあって、この辺の制御が一通り使えるようになったら、
簡易的に現物を組み上げるのに「M5Stack」を使って小型化を楽にしてしまおうという目論見まで計算しています。
ていうか、もうM5Stack手に入れてあるんだけどw
M5Stack用のUSBホストシールドがサードパーティーしかないので、この際作っちゃうかなとか考えてます。
割と自由度高いのですごいなって思うんですよねコレも。
※とはいえ、コレもケース作らないといけないので結果3Dプリンタとの格闘が待ってるんですが←
しかしまぁ…組み込みシステムのエンジニア経験無い俺が、割と簡単に基本的な物ならすぐ組めるんですから、フィジカルコンピューターの世界ってすごいって何度も思っちゃいます。
俺が社会人になってちょっと経ったころがH8マイコン登場でしたから、まだまだ敷居が高かったですよ当時は。
<2019/09/12 追記>
昨日、USBホストシールド(UNO用)が届いたので、手持ちのUNOと表示パネルと組み合わせて動くようにしてみました。
スケッチには特にポート指定がないので、とりあえず組み合わせて見たらコンパイル通っちゃったのでそのまま入れてみて、PCにつないだままUSBホストシールドが外部とやりとりできているかはIDEのシリアルモニタへの出力で確認。
文字化けってるんですが…一定間隔で同じのが並んでいくのでどうやらUNOとシールドの間では上手くやりとりできている模様。
表示パネルの方も「接続無し」の条件で出る文字列が出たので大丈夫。
あとは一度車につないでみて、デフォルトで設定されている水温が出力されるかどうかですな。
あまりにもあっけなく終わってしまいそうで若干拍子抜けしていますが…そうは問屋が卸さないになるか?w
<2019/09/16 追記>
やっぱりというかなんというか、「そうは問屋のおろしニンニク」(←正しく言えよ)でした。
はい、「そうは問屋が卸さない」です(
想像通りだったんだけども、シリアル通信でUSBを使う必要があるので、仮想的にシリアルポートが設定されないとダメって感じですな。
この辺は全く言語わかってない俺っぽい間違いです。
ただ、いろいろ仕組み理解しようとスケッチと格闘しながら調べてたりして、やっぱりできるはずだよなって感じにはなってます。
検索すると英語のサイトの方が多いんですが、FTDIチップのTTL-USB(いわゆる「シリアル変換」)が使えないよって出てくるんですが、試してみたら別にFTDI専用の記述じゃなくてもちゃんとやりとりしてるんですな。
USB-Hubのスケッチとかでシリアルモニター立ち上げて見てるとちゃんと想定通りにUSBホストシールドも変換モジュールも動いてる。
となると、構造としては「連続して受信」をどう作るのかって感じじゃないかなと。
こう…ハードウェアで受け取った情報をどう変数として扱ってるのかがいまいちつかめないので、スケッチの記述見ていても理解が進まないんで、本気でC言語ちゃんとやんないとダメかなと;
なーんとなく「ここで1を受信したらTrueでこの動作して…違うの来たらfailsでエラー返して…」てな感じは見えるんですが…「なんでこの数式?;」(厳密には条件なので数式ではない)とか←
しかし…この考えてるときが好きなんだよなぁ…w
とにかく、とりあえず長期ものとして進めます。
…下手したらRaspberry Piの方が楽かもしれん;
CAN通信だったら専用の開発ボード出てるんだけど、高いし今の俺には無理そうだし;
そういやCANだったらArduino DUEなら標準搭載なんだっけ…って今調べたらUNO用CAN-busシールドあるんかーい(
でもねぇ…ER34だとCAN(OBD2)じゃないから無理なんだよね;
以前作ったGPS時計はもう機能としては完成し、筐体をどう作るかで3Dプリンターと格闘しています。
モデルはできてるんだけど、安定した出力がどうしてもできなくて、毎度頭を悩ます状態。
とにかく3Dプリンターを手なずけなければ。
というわけで、あのGPS時計は今どうなっているかというと、BPE280のシールド使って温度と気圧表示を引っ張り出して、GPS時計からの情報と一緒に表示させる状態まで進化させてあります。
個人的にもうちょっと画面にこだわりたいので、液晶モニタ系のコントロールを仕込んでスタイリッシュに表示してみたいので、そっちの勉強中。
ちなみにGPSシールドですが、コレは最初から日本で使うなら「みちびき対応」のシールドを入れた方が楽です。
というか、そうしないとほぼ電波取れないなんてお話になります。
U-Blockの「7」の方だと晴れていても衛星位置が悪いと拾いませんし、「8」にしてもなんかちょっとあやふやな感じですので。
通信コードが合う状態にしてやれば使えるので、そこだけ留意かな?
んでもって今回のお話なんですが…コレは結構一足飛びな方向。
実はね、Arduinoでやれることとして「自動車用モニタリングシステム」をECU情報から取得してやれるはずじゃない?って思ってたので、シールドの仕組みを理解するのに時間かけてました。
…コレは絶対Arduinoが出てきたときに同じこと考えている人がいたに違いない!って思ったので、
ある程度仕様について調べてできるのを確信したところで、公開しているスケッチを探してみることに。
そしたら…出てきましたホントに;
日産のコンサルトシステム用の簡易データ表示スケッチが(ぇ
で、いろいろ調べている間に、どのデータがどのアドレスで出てくる、ってのを少し仕入れられていたので、
定義ファイルとかの中身見て、無かった部分を記述をまねて追加し、試しにコンパイルして上手くいったので、後はスケッチ修正でなんとかなるレベルまで変更させてしまいました。
あとは…LCDの種類変えたときの表示内容どうするか。
でねぇ…ちょっと気になってるのが、この公開していたスケッチなんですが、
開いてみたらキャプションで「もしこのスケッチを使って何かやろうとしてる人がいたら連絡してね。使いやすいように考慮しますんで」って書いてあったんだけども、中の連絡先URL開いたら「404」で連絡つけられないって言う;
※そろそろ無料でとれるアカウントのGithub登録やっといた方が良いかな?
連絡先そっちならわかりそうだし。
とりあえず個人で使う分には問題ないだろうからこのまま作業しますけども…
ちなみに、今応用で考えているのは「USBホストシールド」が使えないかという点。
コレは、Arduinoにシリアル通信シールドがあるのを知ったので、旧来のPCを使うコンサルト用のRS232C接続が存在していたことから、同じことできないとおかしいよな?って思ったからですな。
※USBホストシールド、どうやら現状では自作ロボット系の操作用コントローラー入力に使う人が多いようで、シリアル転送でデータのやりとりをする方向ってのがどうも少ないようです。
が、仕組み上は同じことのはずなので、指定方法だけのはずです。
でもって、現状でもう一つやろうとしているのがあって、この辺の制御が一通り使えるようになったら、
簡易的に現物を組み上げるのに「M5Stack」を使って小型化を楽にしてしまおうという目論見まで計算しています。
ていうか、もうM5Stack手に入れてあるんだけどw
M5Stack用のUSBホストシールドがサードパーティーしかないので、この際作っちゃうかなとか考えてます。
割と自由度高いのですごいなって思うんですよねコレも。
※とはいえ、コレもケース作らないといけないので結果3Dプリンタとの格闘が待ってるんですが←
しかしまぁ…組み込みシステムのエンジニア経験無い俺が、割と簡単に基本的な物ならすぐ組めるんですから、フィジカルコンピューターの世界ってすごいって何度も思っちゃいます。
俺が社会人になってちょっと経ったころがH8マイコン登場でしたから、まだまだ敷居が高かったですよ当時は。
<2019/09/12 追記>
昨日、USBホストシールド(UNO用)が届いたので、手持ちのUNOと表示パネルと組み合わせて動くようにしてみました。
スケッチには特にポート指定がないので、とりあえず組み合わせて見たらコンパイル通っちゃったのでそのまま入れてみて、PCにつないだままUSBホストシールドが外部とやりとりできているかはIDEのシリアルモニタへの出力で確認。
文字化けってるんですが…一定間隔で同じのが並んでいくのでどうやらUNOとシールドの間では上手くやりとりできている模様。
表示パネルの方も「接続無し」の条件で出る文字列が出たので大丈夫。
あとは一度車につないでみて、デフォルトで設定されている水温が出力されるかどうかですな。
あまりにもあっけなく終わってしまいそうで若干拍子抜けしていますが…そうは問屋が卸さないになるか?w
<2019/09/16 追記>
やっぱりというかなんというか、「そうは問屋のおろしニンニク」(←正しく言えよ)でした。
はい、「そうは問屋が卸さない」です(
想像通りだったんだけども、シリアル通信でUSBを使う必要があるので、仮想的にシリアルポートが設定されないとダメって感じですな。
この辺は全く言語わかってない俺っぽい間違いです。
ただ、いろいろ仕組み理解しようとスケッチと格闘しながら調べてたりして、やっぱりできるはずだよなって感じにはなってます。
検索すると英語のサイトの方が多いんですが、FTDIチップのTTL-USB(いわゆる「シリアル変換」)が使えないよって出てくるんですが、試してみたら別にFTDI専用の記述じゃなくてもちゃんとやりとりしてるんですな。
USB-Hubのスケッチとかでシリアルモニター立ち上げて見てるとちゃんと想定通りにUSBホストシールドも変換モジュールも動いてる。
となると、構造としては「連続して受信」をどう作るのかって感じじゃないかなと。
こう…ハードウェアで受け取った情報をどう変数として扱ってるのかがいまいちつかめないので、スケッチの記述見ていても理解が進まないんで、本気でC言語ちゃんとやんないとダメかなと;
なーんとなく「ここで1を受信したらTrueでこの動作して…違うの来たらfailsでエラー返して…」てな感じは見えるんですが…「なんでこの数式?;」(厳密には条件なので数式ではない)とか←
しかし…この考えてるときが好きなんだよなぁ…w
とにかく、とりあえず長期ものとして進めます。
…下手したらRaspberry Piの方が楽かもしれん;
CAN通信だったら専用の開発ボード出てるんだけど、高いし今の俺には無理そうだし;
そういやCANだったらArduino DUEなら標準搭載なんだっけ…って今調べたらUNO用CAN-busシールドあるんかーい(
でもねぇ…ER34だとCAN(OBD2)じゃないから無理なんだよね;
2019-09-11 03:11
コメント(0)
コメント 0