★つれづれ出張所♪

プログラム開発情報(主にWindowsPhone!)を発信していま~す。(*^_^*)

久しぶりにOBD2アプリ(Android版)を更新しました

題名の通り、本当に久しぶりに先ほどアプリをバージョンアップ(Ver 1.8.0.0)しました。
まだ更新通知が行っていない方は、しばらくすると更新案内が来ると思われます。(^^;)

今回は、見た目はほとんど変わりませんが、内部的にほぼ全て手が入っています。
Screenshot_2017-05-16-02-11-34
よってリリース前のテストは相当したのですが、万が一不具合がある可能性も否定できません。
その点はご了承ください。見つけ次第すぐに修正する予定です。

で、、、今回の主な更新内容は以下の通りです。

①一部の端末で画面を回転すると表示がおかしくなるのを修正
②各種ダイアログ表示時のロジックを変更
③メーター計の描画方式を変更
④新規インストール時の初期設定値を変更
⑤シングルメーターでのログ出力設定を追加
 シングルメーターでは、全てのOBD2データを取得していないので一部データの記録となります
⑥設定画面の項目位置を一部変更
 それに従い近年のセキュリティ懸案などを考慮しメール送信機能を非サポート項目に変更
⑦高解像度端末向けアイコンを追加


以上を踏まえちょっと補足します。

①と③に関する問題?
これ長い間、ほったらかしにしていた問題です(汗)。
端末を回転すると描画がおかしくなる問題。ほぼ修正しました。
とは言え、まだ一部問題を抱えています。AndroidのOS側の問題で、こちらのプログラムだけでは対応しきれませんでした。
対象OSを4.x以降にすれば、解決するのを確認しています。
よって将来のバージョンアップで、対象OSを4.x以降にさせてもらった時に完全対応となります。
(まだ多少使っている人がいる様ですが、もういいですよね?OS2.3系を捨てちゃっても!?)

また、今回の対策の副産物として、ほぼ全ての近年発売された端末であればハードウェアアクセラレーターをONにするとメーターの描画が速くなります。
Screenshot_2017-05-16-01-42-53
OSが4.x以降の方は、アプリの設定画面内のチェックをONにしてみてください。恩恵が受けれると思います!

あとは、まぁ最近の状況に応じて各種対応(謎)を加えておきました。(;´Д`)
これらも含め多少なりとも使いやすくなったと思います。


それから今後の予定は、まずアプリ内課金に対応させます。
新しい機能を追加したら、ちょびっとだけ徴収させてもらえればと思っています。
またかねてからの懸案?であった、広告非表示もこれで対応させる予定です。(オフィシャルデバイスを使うと表示消してはいるんですけどね…。できれば買ってね♪)
申し訳ないですが、開発費用も半端ないので寄付がてらお願い出来ればと思っています。

てな感じで、見捨ててはいませんので今後ともよろしくお願いいたします!m(_ _)m

PS.
最近オフィシャルデバイス(↓左MAXWINブランド)が安くなってきたので、そちらを推奨させてもらいます。
あと、保証は出来ませんが、自分の手持ちと同じものだとおもう?(↓右KONNWEI)と言うデバイスを最近使っています。メインチップがARMだと思われるので多少動作が速いです。勝負したい人はこちらをどうぞ!(^^;)

 

マイコン開発でOBD2(車両)を制御しましょ。まずは基板づくり!

まえにSTM32F7-DISCOVERYの開発環境構築等をお伝えしました。
現在は、ちょっと時間が無く停滞気味なのですが、その後の仕上がり具合をお伝えしておきます。

ただ単に開発環境を整えるだけで遊ぶのではツマラナイですので、うちの開発らしく?車両制御(情報取得)を行いたいと思っています。
まずは、この写真のようにブレッドボードとワイヤーを使って、既存のセンサーモジュール等をつなげて動作確認を取りました。

0001
繋いでいるモジュールは、以下の通り・・・。 ※スミマセン!正式なサイトが無いのでamazonへリンクしています

1)MCP2515 CAN制御モジュールx2
  ※前に掲載した要のモジュールですよ! マイコンとはSPI接続です

2)DS1307 クロックモジュールx1
  ※電源を落とすと時刻が保持できないのでその対策用 マイコンとはI2C接続です

3)WS2812 5050 RGB LEDモジュールx2
  ※フルカラー制御できるLEDです マイコンとは、GPIO直結です

4)ADXL345 3軸加速度センサーモジュールx1
  ※そのまんま加速度を計測できるブツです マイコンとはI2C接続です

いずれも、そこそこ手に入りやすく、なるべく安い物をピックアップしたつもりです。

さらに温度センサー、ブザー、電圧計測用およびK-LINE対応回路を考えております。
STM32F7-DISCOVERYは、ARDUINO互換で外部接続ピンが少ないのもあり以上が取り付けられる物の限界です。
とは言え、車載機器として楽しそうなものは全部付けたつもりなので大丈夫?かなと思っています。(;´Д`)


とりあえず、プログラムしての動作確認は出来たので、これらのモジュールやSTM32F7-DISCOボードを繋ぐ専用基板を起こしてみました。
 ※1行で書いていますが、じつはこの動作確認がもの凄く大変でしたw

最近は、個人で基板を作るのも大変安く気軽に作れるようになりました!
まずは、KiCadと言うソフト(フリーです!)を使い回路図の設計。その後、基板の設計をしてポチっと中国の製造(今回はErecrowと言う所です)へ投げます。

■これは、回路図の設計画面
0020

■これは、基板回路の設計画面
0030

■出来上がりイメージを3Dで表示することも出来ます!
0040

ちなみに基板の設計は、プログラムの数百倍「楽!」です。
日本の大メーカー(大手?)は、いまだにハード主義な感じがありますが、ソフトを作るのに比べればハード設計など楽なもんです。
今回もブレッドボードとワイヤーを使った動作確認のプログラムをする方が、もの凄く時間が掛かっています。
その後の基板設計などそれに比べれば、あっという間ですw
よって、本当にプログラム出来る人であれば、ハード設計などすぐに覚えられますので、KiCadと一緒に覚えましょう!世界が広がりますよ。( ̄▽ ̄)


と言う事で、届いた基板はこちらになります!(いわゆるElecrowガチャは5→7でした)
 ※特に急いでないので安便で発注しました。それでも10日ほどで届きます
0045
しかし、、、、本当はこの前にもう一つあった(発注していた)のですが、凡ミスをしてしまい再度修正して発注し、届いたものになります(汗。
 ※日本の製造会社に出すよりはるかに安いのでミスしてもダメージ少ないですねぇ~。いい時代になりましたw

なお、Elecrowでは基板のカラーも製造発注時に選べます。
自分は今まで赤、青、黒しか指定したことありませんでしたが、今回おまけで新色のパープルを使った基板「ものさし」が入っていましたのでご覧くだされ!0050
今のところパープルは、別料金になるので自分は遠慮しておきたいと思いますがw、良い感じです。セレブな人はアリ!だと思います。
ついでにと言っては何ですが、黒は非常にカッコイイです。
ですが基板回路上の配線が見ずらいので、ジャンパーする時に困ります。よって完全に完成した場合に黒を選択する方が良いと思います。
それと定番の『緑』を発注したことが無いのは、日本の製造へ出すと標準価格のカラーだからです。
それ以外のカラーは、別料金になるので、貧乏性な自分はどうしても『緑』以外のカラーを選んでしまっています。(;^ω^)


完成基板は、4月中旬には届いていたので5月の連休中に組み立てていじろうと思っていましたが、時間がなく断念!?
その前に本家OBD2アプリの改良を施すのに手間がかかり過ぎたと言う事情がります。。。(汗)


と言う事で、唐突にここでお知らせ。
OBD2アプリ(Android版になります)、久しぶりにバージョンアップします。
現在最後の確認中ですので、今しばらくお待ちください。ウヒヒ♪


マイコンOBD2開発については、進捗があり次第ブログに掲載します。
こちらについては、回路図等も含めすべて公開する気であります。何時になるかは知りませんが・・・(^_^;)
お楽しみに・・・!



電子部品・工具の専門店!!

QNAPサーバーのHDD移行。完結編

前回のつづき・・・

手持ちの外付けUSB HDDケースは、USB2.0なのでコピーするだけでも時間がかかるのが想定されます。
そんなの面倒なので、探すとAmazonでお安いのが見つかりました。
ORICO の3588US3-V1と言うやつです。USB3.0でしかもUASP規格にも対応しています。
早速ポチリ。

DSCN5080
このケースは、ねじを使用しないとありましたが本当でした。すべてはめ込み式です。
DSCN5083
上下に挟み込むためのスポンジは付属していましたが、端子部からすっぽ抜けないかちょっと怖いので、、、
手持ちのスポンジテープを隙間に挟み込みます。

DSCN5092
これで、やっと再スタートが出来そうです。
QNAPの背面にあるUSB3.0端子に先ほど完成した外付けHDDを接続します。
キャプチャ01
システム設定画面から「外部デバイス」→「USBDisk1」を選択。(※これを選択しないと次のメニューが現れません。注意!)
キャプチャ02
上記メニューが有効になるので、そこにあるQ-RAID1を選択。

自動的にマスターHDDとの同期(RAID)が始まります。
なお同期の間もNASは、普通に使えます。
が、時間が非常にかかるので覚悟してくださいw

システムログを見ると、、、
キャプチャ_qstart
11:47 にスタートして、翌日 05:56 に終わりました。
キャプチャqend
完了するまで17時間もかかりますので余裕をもって作業しましょう・・・・(;´Д`)
 ※約700GBでこの時間です。UBS2.0接続やもっと容量が多いととんでもない時間かかりますヨ!


ハイ!終わったので、RADIでクローンされた新しいHDDに付け替えます。

電源ON~~~~!!!!
あれ!?新規HDDとしてしか認識しない?失敗ですか?

またかよぉ~~~~~!(´・ω・`)

これは、おかしい!

ググる。。。
明らかに同じ症状の人を発見!
http://gshoes.myqnapcloud.com/freo/index.php/view/830

もしかして、QNAPのファームが、4.x.x になってから出来なくなった?
自分も昔は出来た記憶があるので、なんとなくコレが濃厚そう・・・。
てか、これってバグじゃね?

ちゅう事で、もう横着せずHDDの移行をすることを決意!
先の人も進めている QNAP に搭載されている FileManager を使ってコピーを行う。
また、NASの設定もバックアップ、リストア出来るのでコピー前に新HDDでリストアを済ませておけばOK!
その後にコピーを開始して楽に出来ましたよ。
新しく購入したORICOのHDDケースの威力もこのコピー方式のほうが発揮された感じ。トータル半日もかからずにコピー出来ました。

あ~、それにしてもこんな罠が潜んでいたとは。。。無駄な数日間を過ごしました。

QNAPさんはよ修正してください!切に願います。


で、ORICOのHDDケース。使い勝手もいいので TOSHIBA の TV REGZA 42Z8に繋いでみました。
変なUSBケースを使うとスリープからの復帰でHDDを見失うことがあるのですが、一週間ほど経っても今のところ問題なさそう。
ちゅう事で、こっちの方がお勧めです。(;´∀`)

以下、ORICOの3588US3-V1細かいところの紹介写真。
DSCN5101
アクセスランプは背面にしか無いですが、赤と青のLEDが点きます。(赤は紫っぽく見えます!)
右のぽっちは、電源ボタン。


DSCN5111
ACアダプタにも緑色のLEDが点きます。


 

QNAPサーバーのHDD移行。失敗編

宅内サーバーとして、QNAP(1ベイのTS-121)のNASを使っています。
なんか最近、NASから変な音がするなぁ~と思っていたら案の定QNAP-NASから警告が発生しました。(>_<)

C5r2ZwgUsAA273t
HDDのSMART情報を調べると Current_Pending_Sector が書き変わっておりそれで警告が出た模様です。
放置しておいてもしばらくは、問題ない?警告だと思いますが、壊れた後よりも早めにHDD移行をした方が楽ですので早速行動を開始します。

ちなみに警告の出たHDDは、WDの俗に言われるGREEN(2.0TB)と言うやつです。
いまいち購入時期は、覚えていませんが刻印を見ると2010年なので6~7年ほど前に買ったはずです。
24時間電源入れっぱなしで5年以上も使えたので、十分許容範囲です。HDDは消耗品ですしね。

新しく購入したのは、同じWD製のBLUEと言われるものです。
IMG_20170304_174705
回転数も5400rpmと遅めですが、低消費電力なのもありコレ一択です。
なお、同じWDからREDと言われるNAS向けのHDDも売られていますが、HDDなど所詮消耗品ですので値の張るREDは購入しません。安く購入するぶん、どんどん交換する主義です。(それでも結構持つけどね)
あと容量も同じ2.0TBをチョイスしました。現時点で使用容量も700GB弱なので自分には十分すぎる容量なんです。(^_^;)


では、ここからはQNAPのHDD移行について考えてみます。
案としては、、、
 ①別機器を使ってHDDをまるごとクローンする
 ②QNAP NASのRAID機能を使ってクローンする
  ※これには、USBの外付けHDDケース等が必要
 ③PCから地道にファイル単位でコピーする

さすがに③は、バカらしいので①を試みます。
あと②は、手持ちのUSBのHDDケースが他に使っているのでやるとしても後回しにします。
また、USBの外付けケース等を使ってコピーすると時間がかかると言うのもあります・・・w


DSCN4965
と言う事で①の手段。HDDをまるごとコピー(クローン)する事にしてみます。
デスクトップPCのSATAポートを使って直接コピーを試みます。

まずは、WDのHDDに付属する(ダウンロードする)専用のクローンツールを使ってみます。
旧:GREEN → 新:BLUE へまるまるクローンします。


最大転送速度のSATAでもそれなりに時間がかかります。
 ※コピー中の写真を失念・・・orz


待つこと4~5時間・・・クローンが完成したので、QNAPに取り付けてみます。
電源ON~~~~!!!!
あれ!?新規HDDとしてしか認識しない?失敗ですか?

仕方がないので、別のクローンツールを使います。
今まで散々使ってきた EaseUS Todo Backup で、セクタバイセクタ方式でクローン開始します。

こちらは、待つこと半日以上・・・w
やっとクローンが完成したので、QNAPに取り付けてみます。
電源ON~~~~!!!!
あれ!?またまた新規HDDとしてしか認識しない?失敗ですか?

ムムム・・・(;´Д`)
もしかしてQNAPは、HDDをクローンしたのでは認識しないかのか?

つう事で、外付けHDDケースを使ってRAIDを組むことに作戦を変更します。

つづく・・・



  

STM32F746G-DISCOでARMマイコン開発。最初からプロジェクトを作成する方法!

ここでは『SW4STM32 - System Workbench for STM32』を使って最初からプロジェクトを作成する方法を示します。

SW4STM32を起動すると毎度のことながらworkspaceの場所を聞かれますので、今まで通り .\Ac6\workspace で進めてください。

起動したらメニューから [File] → [New] → [C++ Project] を選択するとダイアログが開きます。
ここでは、Project Nameを "test" としておきます。
また、Project Typeを Executable → Ac6 STM32 MCU Projectを選びToolchainsが、"Ac6 STM332 MCU GCC"とします。
そして[Next]ボタンで次に行きます。
キャプチャ10

ここでは、特に何もせず[Next]ボタンで次に行きます。
キャプチャ11

MCU Configuration ダイアログが出るので、Seriesから"STM32F7"を選んで、、、Boardから"STM32F746G-DISCO"を選びます。
これは、SW4STM32があらかじめ今回のターゲットボード設定が登録されています。楽ですね!
と言う事で、またまた[Next]ボタンで次に行きます。
キャプチャ12

Project Firmware Configuration ダイアログが表示されます。
ここでは、No firmware か Hardware Abstraction Layer (Cube HAL)が選べますので、Cube HALを選んでください。
 ※Standard Peripheral Library (StdPeriph)は、選べませんが・・・(理由は後述)
そして初回だと必要ファイルのダウンロードが必要なので、[Download target firmware]ボタンを押します。
キャプチャ13

ライセンスの確認ダイアログが出るので、了解 (I accept the agureement.) して[Ok]ボタンを押します。キャプチャ14

ダウンロードが開始されます。茶でもすすりながら待ちま~す♪
キャプチャ15



ここで、先ほどちょろっと出てきたCubeHALの説明です。
これは、STマイクロ社が自社のSTM32シリーズで使えるライブラリー提供しておりその名称になります。
 ①Standard Peripheral Library (StdPeriph)
 ②Hardware Abstraction Layer (Cube HAL)
上記2つが、存在していて①が初期の頃からあるハードウェア寄りの基本的なライブラリーです。
対してCube HALは、近年登場してきたマイコン間の差異を吸収するように出来ているリッチなライブラリーです。
最新のSTM32マイコン(高性能版)は、StdPeriphがサポートさずにCubeHALに移行してきています。
今回使っているSTM32F746G-DISCOボードに搭載されているSTM32F746NGH6マイコンは、高性能版ですのでCube HALのみサポートされていて、先ほどのインストールダイアログでStdPeriphが選択できなかったのは、このような事情からです。
 ※なお、StdPeriphを使う場合は、CooCox IDEを使っていたりします。
 ※今のことろ自分はこっちの方が使いやすいです。詳しくは勝手に調べてくださいw(;´∀`)


はい、ダウンロードが完了したら色んな項目が選択出来るようになりました!
ここでは、初期状態のまま[Finish]ボタンで終了させます。
キャプチャ16
なお、その他項目の意味は以下のような感じです。
①Extract all firmware in separate folder はライブラリファイル(ファーム及びドライバー)をworkspace内にダウンロード保存します。
②Add low level diver in the project は、プロジェクトに先ほどダウンロードしたライブラリ(ファーム及びドライバー)をリンクする設定です。
 ※As sources in the application project ... ロジェクト内に必要ファイルをコピーする
 ※As static external libraries ... コピーせず必要ファイルを参照する
③Additional drivers / Additional utilities and third-party utilies は、各種ライブラリーをプロジェクトに取り込みます。
 ※前にサンプルを実行する例を示しましたが、これらに組み込まれているライブラリー(リアルタイムOSやFATファイルシステム等)を自動で個別追加できます。


やっとプログラムを作るうえでのひな形(プロジェクト)が出来上がりました。
左側のProject Explorerに今回作成した test が加わります。
 ※ダウンロードした stm32f746g-disco_hal_lib も追加されています。

test → src → main.c を選んでファイルをオープンしてください。
画面で示したように main(){ ... } 関数内に記述しましょう!
これは、ボードに搭載されているLEDを500ミリ秒周期で点滅させるプログラムコードになります。
キャプチャ17
コードを記載したらメニューから[Project] → [Build All] ビルド(コンパイル)しましょう!
しばらくするとビルドが終了します。
 ※Build Finished ってコンソールに表示されます
キャプチャ18

前のエントリーで示した通り、左側のProject Explorerにある test プロジェクトを左クリックしてメニューを出し、[Debug As] → [1 Ac6 STM33 C/C++ Application]を選ぶとボードに書き込みを行いデバッガーを実行します。
あとは、デバッガーが一旦停止するので[F8]キーを押して実行(スタート)させます。

どうですか?ボード裏面の緑色LEDが点滅しましたか?
IMG_20170106_021558
こんな感じで新規のプロジェクトを作っていきます。
ぜひ、沢山あるサンプルコードを参考にしていろんなものを作ってみて下さい♪(^^)/


Yahoo!ショッピングでSTM32F7を検索