2017年12月15日金曜日

ArduinoでArm開発 その2

Visual Studio Coreと Extension for Arduinoで、コンパイルと書き込みは出来る様になりましたが、VScoreでデバッグ出来るのは Arduino M0 / M0 Proだけで、DUEは対象外だと言われてしまいます。

Cortex-M0+ならサイズ的にSwitchScienceさんのSAMD21 Mini Breakoutにも対応していると嬉しいのですが・・・

VScoreが駄目だったんので、Atmel Studio 7に Arduino IDE for Atmel Studio 7をインストールして、Arduinoのプロジェクトを読み込みコンパイルする様にしました。
これでやっとデバッグまで出来る様になりました。

現状でCortex-M3は、初心者はArduino IDEで開発を始めてもらい、ある程度慣れてきたところで Atmel Studioでのデバッグに移行していくのが良いようです。

Atmel社のCPUだと 5Vタイプもあり制御屋には魅力的なんだけど、入手性が悪いのが問題です。

STMは安くて入手性も良くて、種類も多い。SW4STM32を使えば開発出来ますが、初めてマイコンに触る人にSW4STM32はちょっと難しすぎるんですよね。

Atmelに引き続き、Arduino環境でSTM32の開発が出来る STM32duinoを調査してみようと思います。

2017年12月13日水曜日

ArduinoでArm開発

なんで、Armの開発するのにArduinoっていう話ですが、そこにはArmがアーキテクチャの設計だけして、各メーカーがチップに纏めて製造するスタイルが関わっています。

いま関わっている仕事ではPICを使っているのですが、PICはマイコンの中でも非力な変わり者で、安くて入手し易いのは良いのですが、ちょっと複雑なことをさせようとすると色々と問題が出てきます。

そこで、Arm採用して貰いたいのですが、新しい開発環境を導入する必要があるし、ハード設計もいままでの知識が使えないということで、なかなか前に進みません。
更には、Armが複数のメーカーで製造されているため、一度あるメーカーのチップを選択するとそのチップ用の開発環境を使うことになり、他のメーカーのチップに切り替えるのが難しいことが問題になります。

mbedが複数のメーカーが採用しているし、IoT向けにRTOSも組み込んでとても魅力的なのですが、接続がUSBストレージ方式でセキュリティ的に問題なのと、ローカルの開発環境がいまいちなので二の足を踏んでいました。

色々悩んでいるときに、テスト用にArduino IDEがインストールされていることを思い出して、調べてみると、Arduino DUE、M0、M0 PROと Arm Cortex-Mのボードが販売されていました。

また、Atmel以外のSTMやNXP、KinetisなどのMCUにも XXduinoという、Arduino API(?)を組み込む記事が沢山あり、Arduino IDEを中心に色々なMCUを使うことが出来そうなことが分かってきました。Arduino IDEなら、PICしか触ったことがない人でも試して貰えそうです。

ということで、とりあえずは本家のArduino DUE(互換機)を購入して、開発環境を試してみることにしました。

とりあえず本家は高いので、購入したのは Kuman Due SAM3X8E 互換ボードです。

インストールしていたArduino IDEのボードマネージャでDUEを検索して、インストールするとArduino DUEが選択できるようになり、スケッチ例のBlinkを動かすことが出来ました。
ただし、Native USB Portでは書き込めるのですが、Programing Portでは「No debice found」と言われてしまいます。(調査中)

Arduino IDEのエディタはいまいちなので、ついでにVisual Studio CodeとExtension for Arduinoを入れて、コンパイルと書き込みがこちらから出来る様にしました。

追記:Programing Portの問題は、Erase釦を押してから書き込むと正常に終了しました。

2015年7月4日土曜日

systeminfoで、リモートで物理メモリの合計をゲット

工場内にある2000台近くのPCの実搭載メモリの調査が必要になり、systeminfoコマンドを使って調査を開始しました。

コマンドプロンプトで、下記のコマンドを発行すれば取得できます。
C:\>systeminfo /s HostName | find “物理メモリの合計”

しかし、このコマンドを2000回も繰り返すのは嫌なので、取りあえずHostNameのリストを読み込んで上記のコマンドをループするバッチを作って実行しましたが、そのままではレポートに出来ないので、VBscriptで作ることにしました。

Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("systeminfo /s " & strHostName )
Do While oExec.Status = 0
WScript.Sleep 100
Loop
WScript.echo oExec.StdOut.ReadAll

こんな感じで・・・

ところが、WshShell.Execは実行の終了を待たないので、oExec.Statusが終了を示す1になるまで待たせているのですが、なんといつまでたっても変化しません。

PowerShellのワンライナーを起動してみましたが、コマンドの戻り値が直接読めないので却下

WshShell.Exec(powershell -NoProfile -ExecutionPolicy Unrestricted -command ""& { Get-WmiObject -Class Win32_PhysicalMemory -computername "
strLine = strLine & objParm(0) & """}")

それでは、ということでVBscriptからWmiを呼び出してやることで対応しました。

Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer(objParm(0))

Set oClassSet = oService.ExecQuery("Select * From Win32_ComputerSystem")
For Each oClass In oClassSet
lRet = oClass.TotalPhysicalMemory
strHost = oClass.DNSHostName
Next

まあ、こんなことせずに System Center Configuration Managerで各クライアントのハード情報のレポートを出せば良いのですが、リアルタイムでは無いと思うので、仕方ないですね

それと、systeminfoはたくさんの情報を取ってくるので時間がかかりますが、wmiでハード情報だけを取ってくると4倍高速に取得出来る様になります。

2015年3月29日日曜日

ドアロック(サムターン)電動化装置

お義母さんが腰痛で移動が不自由になり、介護サービスを受ける際に部屋への出入りが問題になりました。

居宅介護サービスを受けるためには、支援者やヘルパーさんに部屋に入って来てもらわないと、サービスが受けられないわけですが、身体が不自由だと、ドアのロックを解除するのも大変です。

ヘルパーさんにカギを預かって貰えば良いのですが、プライバシー保護や盗難防止などの為、利用者のカギを預かることが出来ない事業者も多いようですね。

ドアロックが電動化されていれば、ワイヤレスリモコンなどと接続して、ベッドから開錠操作できますが、アパートやマンションなどの借家では、そのような改造は行えません。

そこで、下記の様なドアロックのサムターンをモーターで回す機構を取り付ける方法をとることにしました。(市販の装置もあるのですが、ここのドアは対応していませんでした)

総組立

ラジコン用のサーボモーターをマイコンで制御して、ドアのサムターンを回します。さらに、ベッドから操作できるように市販のワイヤレスチャイムから信号を取り出して、マイコンに接続します。

ワイヤレスチャイムの釦を押すと、ドアロックを20秒間解除して、その後ドアをロックして、その10秒後にサーボを切る(カギでの操作に対応するため)様にしています。なお、この時間は仮の設定で、取り付けてから相談して決めるつもりです。

No

品名

単価

備考

1

ワイヤレスチャイム

1

3,000

 

2

RCマイクロサーボ

1

1,000

 

3

マイコン基板

1

3,000

 

4

フレーム

1

2,000

アクリル

5

ネジ・電線ほか

1

1,000

 
   

10,000

 

設計・組立てを考えると、3万円位頂かないと割に合わないですが、今回は商売ではないので、材料費のみです。

今度、お義母さんの所へ行った時に取り付けて、動作を確認しようと思います。

【市販の電動サムターン】

2014年9月24日水曜日

クラウドサービスで、グループウェア運用の問題点は?

社内での情報共有の手段として、グループウェアを導入されている会社が多いと思います。
大手企業では、専用の業務システムに組み込まれているものや、Lotus Notes/DominoやMicrosoft Exchangeなどを使用されているところも多かったようです。
ところが、中小企業では業務システムとはいっても経理・会計システムが主で、グループウェアの機能まで組み込まれているものは少なかったと思います。

現在では、クラウドサービスが一般的になり、社内にサーバーを設置しなくてもグループウェアの機能が使えるようになりました。
そして、カレンダや文書管理、掲示板程度の簡単な機能だけであればサイボウズLiveやGoogleツール(カレンダ、メール、ドライブ)の様に無料で使用できるものも多くあります。

しかし、クラウドサービスのセキュリティが高いとしても、会社外のサーバーに社外秘のデータを保存するのも気持ちが悪い気がします。
また、クラウドサービスのサーバーは多重化されているはずなので、長時間ダウンすることは少ないでしょうが、インターネット回線に障害が発生して半日程度接続できなくなることは充分に考えられます。
クラウドサービスやインターネット回線に障害が発生したときに、業務が停止したり、データが流出したりする可能性を考えると、社内の情報共有をクラウドサービスに依存するのは、不安がありますね。

2014年9月21日日曜日

松下製FP1の読出しテスト

旧松下電工製のFP1をリニューアルする案件があり、現在の環境でFP1のプログラムが読み出せるかどうかテストしました。

テスト用のFP1-C14に、AFP8550(RS232C/RS422変換器)を接続して、それをDB-25P/9S変換コネクタを通して、パソコンのBSUSRC06(バッファロー製RS232C/USB変換器)に接続します。

BSUSRC06はWindows7の標準ドライバで認識できるので、追加ドライバ不要でインストール完了です。

何年も埃をかぶっていたFP1ですが、電源を入れると無事にRUNしてくれました。
後は、パソコンにインストールしているFPWIN-GRを起動して、「PLCからアップロード」でCOMポートを指定して、正常にプログラムを読み出すことができました。

パソコンは機種変更や再インストールなどで、以前に使用していた環境と変わっていることが多いので、普段使わない機器を接続する前には、ドライバやケーブルの確認をしておかないと、現場であわてることになってしまいますね。

2014年9月16日火曜日

soycmsで製作したサイトにブログを追加

soycmsは、国産のDB不要のCMSで、HTMLソースに簡単なタグを追加するだけでサイトを構築できるので便利ですが、soycmsのブログは使いづらくて、お客様にはお勧めできません。

そこで、WordPressでブログを作り、RSSフィードを使って投稿タイトルだけをトップページに表示するようにしました。
トップページの投稿タイトルをクリックすると WordPressのサイトに飛ぶのですが、デザインを合わせているので、URLを見なければ WordPressに移動したことはわからない様になっています。

さらにお客様のパソコンでは、Windows Live Writerを使って投稿するように設定しているので、画像のトリミングや簡単な修正は投稿時に一緒にやることが出来ます。

ただ、WordPressはSOYCMSに比べて重たいので、WordPressのサイトに移動するときに時間がかかってしまうのが難点です。
WP Cacheなどのツールで少しは改善しましたが、安価なサーバを使用しているので、限界があります。