2018年10月14日日曜日

TWELITE SDK on Docker

 最近、仕事で非公開用のgitサーバとしてGitLabをインストールしたところ、おまけで付いてきたGitLab CIと、gitlab-runnerで動かすDockerがとても便利で気に入りました。
 Linux上でビルドできるなら大抵のものに応用できるはずなので、試しにTWELITE SDKのLinux版を組み込んだDockerイメージを作って、GitLab CIと組み合わせてみました。
 サンプルのプロジェクトを、GitLabで公開しています。
  https://gitlab.com/twelite/app_twelite

 Dockerイメージを作るためのDockerfileは以下のようにしました。
FROM ubuntu:18.04

RUN sed -i s://archive.ubuntu.com://jp.archive.ubuntu.com:g /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y make curl libc6-i386
RUN curl -o MWSDK_Linux-i386_201805.tgz https://mono-wireless.com/download/SDK/MWSDK_201805/MWSDK_Linux-i386_201805.tgz
RUN tar zxf MWSDK_Linux-i386_201805.tgz
RUN rm -r MWSDK_Linux-i386_201805.tgz MWSDK/Wks_TWELITE
基本は、Ubuntu 18.04にTWELITE SDKをcurlでダウンロードして展開しているだけです。一点重要なのが、libc6-i386をインストールしておくことです。TWELITE SDKに入っているコンパイラの実行ファイルは32bit Linux用なので、これが無いと64bit Linuxのmakeからコンパイラを起動できず、
make: /builds/ChipLib/SW4063V1416/../../Tools/ba-elf-ba2-r36379/bin/ba-elf-gcc: Command not found
 のようなファイルがあるのに「コマンドが無い」という不可解なメッセージが出ます。
上記のDockerfileをビルドしたDockerイメージを、Docker Hubに用意しておきました。
    https://hub.docker.com/r/truenature/mwsdk/tags/

 GitLab CIの設定ファイル .gitlab-ci.yml は、以下のようにしました。
image: truenature/mwsdk:18.04_201805

stages:
  - build

before_script:
  - pwd
  - ln -s /MWSDK/* ../../

blue:
  stage: build
  script:
    - cd Master/Build
    - make TWELITE=BLUE clean all
  artifacts:
    name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
    expire_in: 2 weeks
    paths:
      - Master/Build/*.bin
ビルドしておいたDockerイメージを image: で指定しています。
 TWELITE APPSとして公開されているサンプルアプリは、2階層上のディレクトリにTWELITE SDKのツール群が配置されていることを前提にMakefileが用意されていますので、before_scriptで最初にシンボリックリンクを用意しています。
 サンプルアプリにはテストコードが含まれていないため、stagebuildだけです。サンプルアプリのトップにあるMakefileは下位のmakeにビルドを丸投げして失敗を無視する仕様のため、Master/Buildまで下りてmakeを行います。
 ビルドしたファームウェアバイナリは、artifactsでダウンロードできます。

 GitLab CI/CDを有効にしておくと、pushやマージリクエストが処理される毎にpipelineが実行されます。
  https://gitlab.com/twelite/app_twelite/pipelines
GitLabにホストされたプロジェクトでshared runnerだけを使っているので、とても時間がかかっているように見えますが、ローカルにGitLabをインストールして専用のgitlab-runnerを登録しておくと、見ている間に(数十秒で)完了します。

 プライベートなGitLabでローカルにビルドしたDockerイメージを使う場合は、

  • ローカルに命名、タグ付けしたイメージを image: で指定する
  • gitlab-runnerの pull_policy に'never'または'if-not-present'を指定してDocker Hubからのpullを予防する
のような設定が必要です。

2018年5月6日日曜日

Raspyberry Pi 3Bに小型ディスプレイを装着

 今まで、Raspyberry Pi 3BのディスプレイとしてPC用ディスプレイを使っていましたが、もっと手軽に使いたいので、安くてコンパクトなRaspberry Pi 3B用HDMIモニタをamazonで買いました。解像度は低いですが、私の用途では問題にはなりません。また、Windows 10 IoT用のドライバが無いのでタッチスクリーンが機能しませんが、USBマウスを使えば大丈夫です。


2018年4月21日土曜日

Windows 10 IOT Core + TWELITE

 Raspberry Pi 3Bで動いているWindows 10 IOT Core用にアプリを書き始めました。UWPアプリは初めてなうえに、XAMLも初心者の域を出ないので、なかなか捗りません。
 TWELITEでドアの開閉を検出して、予め登録したMACアドレスにWake On LANパケットを送出するのがアプリの主な機能です。同様の仕組みはPython/Raspbianで動作しているのですが、誰でもメンテナンスできるように、UWPアプリとして作り直すことにしました。
  • シリアルポートに流れるTWELTIEの出力を読むバックグラウンドアプリ
  • 設定およびログ表示のためのフォアグラウンドアプリ
という基本構成は固まりました。バックグラウンドとフォアグラウンドの間の通信ができるまでに試行錯誤を繰り返し、BackgroundTaskとAppServiceでやりたいことができるようになるまでかなり時間がかかりましたが、ようやく見通しが立ってきました。



2017年3月7日火曜日

TWE-LITE 2525Aの連続稼働が終了

 TWE-LITE 2525Aの連続稼働が、電池切れにより3月6日の朝で終了しました。11月17日の夜から開始して、およそ3カ月半、108日動き続けました。

 電池切れ間際の電源電圧は約2Vでした。グラフを見ると、2.2Vあたりから電圧低下が早くなっているように見えます。2.1Vから約1週間で終了しました。

 記録された送信回数は25,000以上でした。年末年始にログが取れなかった期間があるので、実際には26,000回を超えていたのではないかと思います。一回のドア開閉で2回の送信が行われるので、一日当たりドア開閉回数はおよそ120回という事になります。

 加速度センサーの消費電流を仮に40μAとすると、一日当たり0.96mAhが消費されます。使用したコイン電池の容量は210mAhですので、加速度センサーとTWE-Liteでだいたい半分ずつ消費していたようです。この計算だと、ドア開閉が多ければ電池切れはさらに早くなりますし、殆どドアを開けなければ半年くらいは持つかもしれません。

 使用した電池は、amazonで買った中国製電池です。星一つのレビュー評価が多いですが、普通に使えました。

2017年2月5日日曜日

PWMとLPFで疑似DA変換

 TWE-Liteのオーディオアプリでは、PWM出力をLPFに通すことで、デューティー比の変化を電圧に変換しています。Analog Discovery 2を買ったので、この様子を視覚的に確認してみました。

 LPFを通す前のPWM出力と、LPFとスピーカーアンプを通った後の音声出力にプローブをつないで、同時に波形を見てみました。
プローブの接続箇所
 波形は、このようになりました。上がPWM波形、下がスピーカー出力の波形です。この時は、テストトーン(正弦波?)を再生していました。
電圧の山では高デューティー比
電圧の谷では低デューティー比

 PWMのデューティー比が高い箇所(約60%)ではスピーカー出力の電圧が高く、デューティー比が低い箇所(約40%)では電圧が低くなっています。
 一見しただけではわかりにくいのですが、Quick Measureでカーソル位置の値を見ると、簡単に理解できます。


2017年1月22日日曜日

TWE-Liteで出力した赤外線リモコン信号の波形

 今までオシロスコープ無しで開発してきましたが、やっぱりあると便利なので、場所を取らないUSBオシロスコープ Analog Discovery 2 を秋月電子で買いました。

 とりあえず、TWE-Liteで作った赤外線リモコン信号の送受信機が正しく動いている事を確認しました。下のスクリーンキャプチャで、水色が赤外線受光モジュールの出力、黄色がTWE-Liteの赤外線リモコン信号出力です。同じタイミングで信号が出ていることが確認できました。

2017年1月20日金曜日

TWE-LITE 2525Aの連続稼働が2カ月を超えました

 11月中旬から動かし始めたTWE-LITE 2525Aは、予想を超えて、まだ動き続けています。


 現在の電源電圧は、2.4V前後です。もう少し、頑張れそうです。