Latest

ESP32 と電子ペーパーで気象庁の天気図を表示する

ESP32 と電子ペーパーで気象庁の天気図を表示する

7.5インチの電子ペーパーに気象庁の実況天気図を表示し、壁に掛けておける小さな表示システムです。表示内容は電源を切っても残るので、ESP32 は決まった時刻だけ起きて Wi-Fi に接続し、天気図を更新したらまた deep sleep に戻ります。 リポジトリは 、ケースの3Dプリント用データも含めてGitHub で公開しています。 * mokjpn/waveshare-esp32-weather-epaper 何をするシステムか 表示しているのは、気象庁の日本周辺域の実況天気図です。ESP32 側で画像処理をがんばるのではなく、Linux などで動かすリレーサーバが気象庁の画像を取得し、7.5インチ電子ペーパーにそのまま送れるサイズと形式に変換します。ESP32 は起床後にリレーサーバから manifest とバイナリ画像を取って、SPI で電子ペーパーに転送します。 現在の標準構成では、Waveshare の 7.5inch e-Paper 黒白 raw panel、800x480、4階調表示を使っています。リレーサーバは 800x480 の 2bpp gray4、9
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

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

MacOS (Big Sur)へのKH Coderのインストール

テキストマイニングで有名なKH coder [https://khcoder.net] ですが、macOSでのインストール手順はなかなか複雑なのでまとめておきます。 ダウンロード GitHubのKH coderリポジトリより、リリース版 [https://github.com/ko-ichi-h/khcoder/releases/] の最新バージョンをダウンロードするのが良いと思います。Macの場合、Source code(tar.gz)が良いでしょう。 展開すると、以下のようなフォルダ構造になっていると思います。 ビルド環境 これだけではKH coderは動かないので、MySQLや各種Perlモジュールをビルドしてインストールする必要があります。なにはともあれ、XCode command line toolsは必須なので、インストールしておきましょう。ターミナルから以下のコマンドでインストールができます。 $ xcode-select --install mecab, mecab-ipadic のインストール 何はともあれ形態素解析器が必要なので、mecabとmecab
mokjpn
TWELITE StageボードとM5StackでTWELite PALのデータを表示する

TWELITE StageボードとM5StackでTWELite PALのデータを表示する

家のドアにつけている開閉センサー [https://mono-wireless.com/jp/products/twelite-pal/sense/openclose-pal.html]は、最近 TWELite PAL [https://mono-wireless.com/jp/products/twelite-pal/index.html] を使っています。CR2032電池をつけて、電池交換なしで1年近く動作する省電力なところが気に入っています。 データの受信にはMONOSTICK [https://mono-wireless.com/jp/products/MoNoStick/index.html] をつけたNanoPi Neo [http://nanopi.io/nanopi-neo.html] を使って、LINEに通知をさせたりしていますが、直接の表示装置を持たないので、デバッグは少々面倒です。 TWELite DIP [https://mono-wireless.com/
mokjpn
M5Atom+PIR UnitをSinric ProでAlexaのモーションセンサーにする

M5Atom+PIR UnitをSinric ProでAlexaのモーションセンサーにする

M5Atom Lite [https://www.switch-science.com/catalog/6262/] とPIRセンサユニット [https://www.switch-science.com/catalog/5697/] を使って、SwitchBot [https://www.switchbot.jp/bot] を動かして照明を人感センサー付きにする、という記事 [/2020/05/04/m5atom-pir-unit-switchbotde-zhao-mingni/] を最近掲載したばかりですが、実は人感センサーを付けたかったリビングには他にも1つ、赤外線リモコンで操作する照明があって、そちらも同時に人感センサーで制御したいなと思いました。そちらの照明はすでに、 SwitchBotハブプラス [https://www.switchbot.jp/hub-plus] でAlexa対応しており、SwitchBotもAlexaから制御できるので、このさいM5AtomをAlexaに対応したモーションセンサーにしてしまえば、Alexaの 定型アクション [https://www
mokjpn
ピンク極小7セグLEDシールドにスマートメーターからの電力使用量データを表示する

ピンク極小7セグLEDシールドにスマートメーターからの電力使用量データを表示する

最近では、多くの家庭の電力メーターがスマートメーターに交換されており、Wi-SUNという長距離通信方式によって電力使用料が遠隔報告されているそうです。この使用料は、対応する通信装置さえあれば、自分でデータとして受信することができます。 きっと何かに役立つでしょ!? [https://kitto-yakudatsu.com/] さんが BOOTHで販売 [https://kitto-yakudatsu.booth.pm/items/1650727]されている、M5StickC 用Wi-SUN Hatに、ROHM 無線通信モジュール BP35A1 [https://www.amazon.co.jp/dp/B00YWLCWEU/] をつけることで、この電力使用料をM5StickC [https://www.switch-science.com/catalog/5517/] で受信することができます。受信したデータはAmbient [https://ambidata.io] などにインターネット経由で送信してグラフにしたりできますが、M5StickCではESPNow [https://www
mokjpn
M5Atom, PIR Unit, SwitchBotで照明に人感センサーをつける

M5Atom, PIR Unit, SwitchBotで照明に人感センサーをつける

最近SwitchBot [https://www.switchbot.jp/bot] が安く買えることが多いので、いつのまにか3つに増えていました。照明のスイッチにつけているので、人感センサーをつけて、5分動きがなかったら消灯、のような使い方が代表的かと思います。3つのうち1つは Hueモーションセンサー [https://www2.meethue.com/ja-jp/p/hue-motion-sensor/8718696769881] からAlexa経由で、もう1つはモーションセンサー [https://www.amazon.co.jp/dp/B07VF43BG1] をつけたEcho FlexからAlexa経由で操作させ、人感センサーと連動させています。3つ目もモーションセンサーをつけたかったのですが、ちょうどM5Atom [https://www.switch-science.com/catalog/6260/] が届いたので、これとPIRセンサユニット [https://www.switch-science.com/
mokjpn