mokjpn

mokjpn

M5PaperS3で週間天気表示

M5PaperS3で週間天気表示

毎朝、天気予報を見るためだけにスマートフォンを開くのが少し面倒でした。知りたいのは、今日とこの先数日の気温、雨の可能性、傘が必要そうかどうかです。そこで、M5Paper / M5PaperS3 の電子ペーパー画面を使って、壁に掛けっぱなしにできる週間天気表示システムを作りました。 いまは M5PaperS3 で運用していて、数週間単位で充電せずに動いています。壁への取り付けには、別途公開している M5PaperS3WallMountを使っています。電子ペーパーなので表示が紙のように落ち着いていて、普段の生活空間に置いても違和感が少ないのが気に入っています。 ソースコードはこちらです。 * mokjpn/M5PaperWeatherU * mokjpn/M5PaperS3WallMount 何を表示しているか 表示しているのは OpenWeather の One Call API から取得した 7 日分の予報です。 * 天気アイコン * 最高気温、最低気温 * 降水確率 * 降水量 * 更新時刻 * NTP 同期状態 * バッテリー残量と電圧 画面は横向
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(
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