mokjpn

mokjpn

ImadokoM5Unified

ImadokoM5Unified

ImadokoM5Unified 今回は、ImadokoM5Unifiedについて紹介したいと思います。 ImadokoM5Unifiedは、ownTracksからMQTTを用いて得られる位置情報をもとに、OpenStreetMap等の地図を用いて画像を生成するPHPスクリプトであるstaticmap.phpで生成された地図画像をダウンロードして、M5Stackシリーズの画面上に地図を表示し続けるアプリケーションです。 M5Unifiedライブラリを用いているので、様々なM5Stackシリーズで動作します。ビルドはPlatformIO上で行っています。 動機と動作の仕組み このアプリケーションの目的は、自分の位置情報を家族が簡単に確認できるようにすることです。ownTracksは、スマートフォンにアプリをインストールすることで、スマートフォンの位置情報をMQTTサーバに送信することができるアプリケーションです。MQTTサーバは、位置情報を受け取って保存したり、他のデバイスやアプリケーションに配信したりすることができます。staticmap.phpは、OpenStreetMap
mokjpn
M5StickCの赤外線LEDでレゴテクニック RCトラックレーサーを動かす

M5StickCの赤外線LEDでレゴテクニック RCトラックレーサーを動かす

レゴの中でも、レゴテクニックのシリーズはいろいろな機械の動作メカニズムがレゴで再現されていて、大人が作ってもとても面白いものです。その中でも、Lego Power Functionモーターという赤外線受信器とモーター、ライトなどを組み込むことができるモデルがあります。これを1つ持っていたので、M5Stackから動かしてみました。 レゴテクニック RCトラックレーサー 42065 [https://www.amazon.co.jp/dp/B01J41LWFW/] これ、M5Camera [https://www.switch-science.com/catalog/5207/] を搭載するのにちょうどいいサイズで、レゴですから簡単にM5Cameraを固定して運転席視点のカメラ映像を楽しむことができます。 これに使われているモーターは、動くレゴとして有名なMindStormsのモーターとはまた違う種類なので、直接M5Stackに接続することは難しそうです。しかし、赤外線で制御するので、制御コマンドを解析してArduino用のライブラリが作成され、公開されていました。 Arduino
mokjpn
M5AtomLite と HBridge Driver Kit, Fader Unitを使って鉄道模型を動かす

M5AtomLite と HBridge Driver Kit, Fader Unitを使って鉄道模型を動かす

これは何? M5StackからFader Unitが出た時、あーこれは鉄道模型のコントローラーだなぁと思い、やはり最近出ていたATOM PWM Kitと組み合わせて簡単に作ってみて、製作記事をProtoPediaに公開 [https://protopedia.net/prototype/2447] しました。小さいのがいいところなので、Zゲージ鉄道模型を動かしてみていますが、PWMだけだと方向転換ができないので、HBridge Driver Kit [https://www.switch-science.com/catalog/6912/]を使って走行方向を変更できるようにしたバージョンを作りました。 動作しているところの動画 [https://youtu.be/6C2KhT92Gsg]です。 材料 * M5Stack Fader Unit [https://shop.m5stack.com/collections/m5-sensor/products/fader-unit-with-b10k-potentiometer-sk6812] * M5ATOM HBridge
mokjpn

Rで cut()による数値のカテゴリー化の時、 seq()を使うと計算誤差が問題になる

データ解析をするとき、連続変数を一定の値範囲ごとにカテゴリー化することがたまにありますが、その時には cut() 関数を使うことが多いと思います。 ただ、cutのbreaks引数に、区切りが一定だからといってseq()を使う、かつその時にseqの増分(by引数) に小数を使うと、思わぬトラブルに遭うことがある、という小ネタです。 たとえばこうすると、irisのSepal.Length は, 2.5, 2.6, 2.7,…を区切りとして、right=FALSEですから左側が閉じた区間となるようにカテゴリー化されるはずです。 cut(iris$Sepal.Length, breaks=seq(2.5, 6.5, by=0.1), right=FALSE) ところで、iris$Sepal.Lengthには、値が4.8である個体が5例含まれています。 > sum(iris$
mokjpn
M5Stampの動作確認

M5Stampの動作確認

M5Stamp [https://www.switch-science.com/catalog/7360/] が出ました。ESP32-Picoに無線アンテナとかGroveコネクタとかの必要最小限の追加回路を足したモノのようで、M5Atom [https://www.switch-science.com/catalog/6262/] よりもさらに小さいです。日本で発売されたのは、ピンヘッダ&ピンソケットとGroveコネクターがセットになったM5Stamp Mateだったので、早速ピンヘッダとGroveコネクタをはんだ付けして、OLED UNIT [https://www.switch-science.com/catalog/7233/] をつなげて動作をみてみました。Groveコネクタをつける時には、買った時のままだとはまらないので、一度付属のL字金具を使ってプラスチックパーツを取り外し、Groveコネクタに干渉する部分を折り取る必要がありました。 シリアルポートから状態を見たりファームウェアの書き込みをするには、USB-シリアルアダプタが必要です。シリアルポートを見るだけなら普通のU
mokjpn
TWELite PALの開閉センサーをM5Atom 経由でLINEに通知する

TWELite PALの開閉センサーをM5Atom 経由でLINEに通知する

電池持ちがいい無線センサーとして、TWELite PAL [https://mono-wireless.com/jp/products/twelite-pal/sense/openclose-pal.html] をよく使っていますが、無線がBluetoothなどではないので、センサの値をインターネット経由で観測するためには、何らかのゲートウェイが必要です。以前は小型のLinuxマシンである NanoPi Neo [https://akizukidenshi.com/catalog/g/gM-12301/]にMONOSTICK [https://mono-wireless.com/jp/products/MoNoStick/index.html] をつなげて、PythonプログラムでTWELite PALからのシリアルメッセージを受け取るようにしていました。しかし、たまにPythonプログラムが強制終了していたりすると通知が来なくなるので、安定して通知が来るように M5ATOM [https://www.switch-science.com/catalog/6262/] を使ったゲートウ
mokjpn

Windowsで日本語のユーザ名を使っている時のRパッケージインストール場所問題

結構歴史が長い問題なわけですが、実はR本体ではR 4.0時点でもいまだに解決がされていません。まぁファイルシステムのエンコーディングを誤ったまま起動時の環境変数が設定されてしまうのが問題なわけなので、理論上はR本体側で対処可能な問題だと思いますが、回避が結構簡単にできることもあってまだ残っていますね。 問題 Windowsのユーザ名が日本語を含む場合、すなわち、C:¥Users の下のホームフォルダの名前に日本語が含まれている場合、Rのパッケージをインストールしようとすると、personal libraryを作って良いかどうか確認をしているこのようなダイアログが何回も出てしまい、インストールができない 解決方法 Rstudioで操作する方法を説明しています。 まず、Personal Libraryを入れる場所を作る 回避策として、日本語を含まないパス名のところに、Personal libraryを入れる場所を作りましょう。 例えば、Cドライブ直下にRというフォルダを作って、そこにパッケージをインストールすることにします。RstudioのConsole部分などから、 dir.c
mokjpn