がじぇっとろぐ

デジタルガジェットが好きなので、実際に購入して使ってみたデジタルガジェットのうち、これは良かったと思うものについて紹介していきたいと思います。

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
5 min read
M5PaperS3で週間天気表示

M5PaperS3で週間天気表示

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

ImadokoM5Unified

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

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
2 min read
M5AtomLite と HBridge Driver Kit, Fader Unitを使って鉄道模型を動かす
M5Stack

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
2 min read

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(
3 min read
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
3 min read
TWELite PALの開閉センサーをM5Atom 経由でLINEに通知する
TWELITE

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/] を使ったゲートウ
4 min read

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

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

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
3 min read
TWELITE StageボードとM5StackでTWELite PALのデータを表示する
M5Stack

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/
2 min read
M5Atom+PIR UnitをSinric ProでAlexaのモーションセンサーにする

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

M5Atom Lite とPIRセンサユニット を使って、SwitchBot を動かして照明を人感センサー付きにする、という記事 を最近掲載したばかりですが、実は人感センサーを付けたかったリビングには他にも1つ、赤外線リモコンで操作する照明があって、そちらも同時に人感センサーで制御したいなと思いました。そちらの照明はすでに、SwitchBotハブプラス でAlexa対応しており、SwitchBotもAlexaから制御できるので、このさいM5AtomをAlexaに対応したモーションセンサーにしてしまえば、Alexaの定型アクション 機能を使って、複数の照明を同時に制御できそうです。検索していたら、Sinric Pro という、Raspberry PiやESP32などをAlexaのスマートホームスキルに対応したセンサーやスイッチとして動作させるためのサービスがあったので、そちらを使ってM5Atom + PIRセンサーユニットをAlexaのスマートホームスキルで使えるモーションセンサーにしてみました。 作り方 Sinric Proでは、現在のところ5デバイスまでは無料で使えるようです。
2 min read
ピンク極小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
1 min read
M5Atom, PIR Unit, SwitchBotで照明に人感センサーをつける

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

最近SwitchBot が安く買えることが多いので、いつのまにか3つに増えていました。照明のスイッチにつけているので、人感センサーをつけて、5分動きがなかったら消灯、のような使い方が代表的かと思います。3つのうち1つはHueモーションセンサーからAlexa経由で、もう1つはモーションセンサー をつけたEcho FlexからAlexa経由で操作させ、人感センサーと連動させています。3つ目もモーションセンサーをつけたかったのですが、ちょうどM5Atom が届いたので、これとPIRセンサユニット を接続して、BLE経由でSwitchBotを操作することで、モーションセンサーと照明スイッチを連動させてみました。 接続 M5AtomとPIRユニットを接続するだけです。写真ではATOM Matrixを使っていますが、ATOM Lite を使っても、そのままのソースコードで動作しています。 仮止め状態なのできたないですが、ATOM LiteとPIRセンサーを電源につないで、SwitchBot(写真上の黒いタイプ) の近くに設置します。SwitchBotには1台ごとにBluetooth
2 min read
カムプログラムロボットキット

カムプログラムロボットキット

こどもの夏休み自由工作、今年は何かプログラミングをやらせようと思い、カムプログラムロボット工作キット [https://www.tamiya.com/japan/products/70227]を考えていましたが、最近になってこれをベースとしたと思われる新製品 マイコンロボット工作セット [https://www.tamiya.com/japan/products/71201/index.html] が出たので、そっちでやらせてみました。 左側が子供が作ったマイコンロボット工作キット、右側が一緒になって自分で作った、カムプログラム工作キットをベースにちょっと改造したものです。よく見るとギアボックスから上が前後逆についているという違いがありますが、基本的には多くの部分が共通です。カムプログラムロボット工作キットも、そのままでも物理的なカムを読むことでその指示に従った動作をするというプログラミングができますが、マイコンボードを装着することを想定したと思われる広いスペースが中央部にあいていて、マイコン制御に改造することが簡単にできます。micro:bit を用いた例がこちら [https:/
1 min read

wLinux & x410 & Rstudio setup

だいぶ前に書いたメモですが、一応公開しておきます。 Windows subsystem for Linux(WSL) は、Windows10でLinuxアプリケーションを動かす機能で、一般的にはそれほど必要とされる機会は多くはないかもしれませんが、R言語を日本語のWindowsで使うときは通常のWindows版Rを使うよりもトラブルなく利用できるため重宝します。というのも、Windowsにはいわゆるja_JP.UTF-8に相当するロケールがなく、日本語を使う場合はシフトJIS(CP932)を文字エンコーディングとするしかないので、日本語を意識していないパッケージの場合は、図表中の文字やR markdownの処理結果における文字化けなどがWindowsでだけ発生することがありました。WSL上でRやRstudioを使うことで、ja_JP.UTF-8ロケールが利用できますから、日本語を含む図表を作る場合でもトラブルは少なくなる印象です。 ここで取り上げているwLinuxは、最近ではPengwin という名前に変わっているようですが、RとRstudioをインストールして日本語環境を整える上で
2 min read

M5StackでownTracksの場所表示

久しぶりのブログですが、昨年の今頃国内でも売り出されてヒットしたWi-Fi/BLE搭載ESP32マイコンボードに、ちょうどいい大きさのカラーディスプレイとボタン、バッテリー、SDカードスロットなどをつけてきれいにパッケージにしたM5Stack が国内でも発売されたので、何か作ってみようということで、ownTracksで記録した位置情報を拾ってディスプレイ上に表示する、というものを作ってみました。 ownTracksは基本的にはMQTT で位置情報を送信するスマホアプリで、送信先のMQTTサーバを自由に選べますから、スマホの場所を送信/検索するようなサービスを自前で構築することができます。 M5StackにはMicroPythonが移植されており、LCD表示やMQTT、HTTP通信なども容易に取り扱うことができます。そして、Wi-Fiに常時接続している状態にするなら、M5Cloudというオンラインエディタ上でMicroPythonのコードを書いていき、クリック1回でそれをMStackの実機に同期して実行する、ということもできてしまいます。また、M5Cloudに接続した状態でも、M5S
2 min read

DS18B20 水温計

暑いです. 自分が暑いのはエアコンでなんとかなりますが,5匹しかいないとはいえ家の水槽の熱帯魚は温度が上がりすぎると死んでしまうので,水温を管理しないといけない季節になってきました. 今の熱帯魚たちは去年の秋頃からいるので,夏を越せるかどうか心配です. 水槽にはRaspberry Pi Zero [https://www.raspberrypi.org/products/pi-zero/] を使った定期撮影カメラをそばに置いてあるので,せっかくなのでこれを使って水温の監視をはじめてみました. 防水の温度センサとしては,DS18B20 [http://akizukidenshi.com/catalog/g/gI-05276/] をステンレスの容器に入れて簡単に防水にしたものがよく売られている [https://www.amazon.co.jp/gp/product/B00NFQOPE8/]ようなので,これを1つ買って,Raspberry Pi ZeroのpHAT [https://www.raspberrypi.org/forums/viewtopic.php?f=91&
1 min read

John Snow Pub

ゴールデンウィークの直前にイギリス、ロンドンに出張したので、飛行機の時間までに疫学の聖地、John Snow Pubでお昼を食べてきました。 John Snow [https://en.wikipedia.org/wiki/John_Snow]は1854年のロンドンでのコレラ流行 [https://en.wikipedia.org/wiki/1854_Broad_Street_cholera_outbreak] 時に、まだコレラの病原体が何であるかは不明であったにもかかわらず、井戸の場所と患者の発生頻度の関係から、飲料水が何らかの原因であるという結論を得たそうです。これが現在まで続く疫学の始まりとされています。 もっとも患者が多かった場所であるBroadwick street [https://en.wikipedia.org/wiki/Broadwick_Street]には、John Snowの名前がついたJohn Snow Pubがあります。2011年に訪れた時は、近くに井戸の形の記念碑もあったのですが、現在は付近の工事のため撤去 [http://www.
2 min read

メリークリスマス

今年のクリスマスは、イルミネーションをいくつか作ってみました。 まずはこちら。フルカラーLEDを118個つなげたテープです。職場の入り口ドアに飾り付けをしてみました。 これはフルカラーLEDでおなじみのNeoPixelのテープです。Adafruitのドライバ で、Arduinoからは簡単に制御できます。今回はArduino UNOで、このドライバのサンプルが派手で気に入ったので、そのまま使っています。シリアル制御なので、信号線は1本だけだから配線は難しくはないです。ESPr Developer でも制御できそうなので、そのうち無線で色を制御するようなこともやってみようかなと思います。 LEDとはいえ、100灯以上ですからそれなりに電流を使います。そのため、電源は注意して選ぶ必要があります。60灯でも3A以上使うようですから、今回は余裕をもって、以前別の目的で購入した 5V 10A switching power supplyとFemale DC Power adapter - 2.1mm jack to screw terminal blockから電源をとり、AWG20ぐらいの太
3 min read

サイズ

6S Plus, mini, Air2, MacBook 12inch, Pro iPad Proはたしかに,これぞタブレット,というサイズで良いです.iPad Proがあると,iPad Airを使う機会はやはり減ります. でも,MacBook 12インチより大きいというのはちょっとやりすぎかもしれない.MacBook 12インチは,デスクトップの代わりにはなりませんが,出先で小さいと思ったことはあまりなく,実に良いサイズです. iPad Proのサイズがあると,普通のiOSアプリだとちょっと画面の使い方がもったいなく感じます.iPad Pro専用アプリでこそ活かされるタブレット,なのかもしれません. Smart Keyboardがあるとはいえ,iOSがそれほどキーボードを活かせる機能を持っていないので,あくまでも今の所,ですが,安心して仕事をしたいときにはiPad ProよりもMacBook 12inchを持って出ます.Officeがあるとはいえ,メールの添付ファイル作成の自由度などの点で,やはりMacOSがあった方が安心です. ただ,電子書籍リーダーとしての使い勝手は,
1 min read

「R言語徹底解説」

Rの解説書の中で、おそらく最もディープな内容の名著の翻訳「R言語徹底解説 [http://www.amazon.co.jp/dp/432012393X]」 をご恵贈いただきましたので、ご紹介します。 原著者は ggplot2 [https://cran.ism.ac.jp/web/packages/ggplot2/index.html], dplyr [https://cran.ism.ac.jp/web/packages/dplyr/] を始め、本当に色々な、革新的なパッケージを作られている Hadley Wickham [http://had.co.nz] 氏です。Hadley先生の作るパッケージは、本書でも説明されているような演算子オーバーロードや非標準評価の仕組みを駆使しているので、一見するとRとは違う言語のように見えてしまう文法を使うことができ、非常に効率的な書き方ができるのが特徴かなと思います。 ただ、実は個人的にはggplot2もdplyrも今まではあまり積極的には使ってきませんでした。古典的なRの文法に慣れてしまっているので、
2 min read

IGZO液晶

最近話題の秋月IGZOです. 確かに綺麗な液晶なんですが,液晶パネルと制御基板の状態のものなので,実用するにはケースを作る必要があります. とりあえず,フォトフレームに挟んでみました. そのままだと,フォトフレームをネジで締める時に液晶パネルを挟んで壊してしまうので,高さというか長さ2.5mmのスペーサーを入れています.たまたまあったものを使っているだけなので,消音テープのようなものでも良いかもしれません.液晶パネルに力がかからないようにすると同時に,パネル自体は固定しておらず挟んでいるだけなので,パネルがおさまるべき位置の周囲にスペーサーを貼り付けて,パネルがずれないようにしています.ちなみに,スペーサーはセロテープでとめているだけなので見栄えは悪いです. 液晶パネルの裏側に両面テープをつけてしまうと,剥がす時におそらくパネルが割れると思いますから,パネルは固定しないままの方が良いんじゃないかと思います. 基盤の方はフォトフレームの裏面に,強力両面テープで貼り付けました.これが結構強力で,HDMIやUSBケーブルの抜き差しも安定してできています. さてこの液晶パネル,タブレッ
1 min read

早押しクイズ装置

仕事納めはまだですが,年末の仕事もだいぶ落ち着いてきたところでブログ更新です. 今回も自作ネタですが,某所のクリスマスパーティにてだいぶ好評をいただいた早押しクイズ装置の詳細のご紹介.まずは完成品の画像と,動いているところの動画から. 上の写真の他に,USBモバイルバッテリーと,適当なアンプ内蔵スピーカーが必要です.動画で使っているのは,オーディオテクニカのBoogieBox ですね. 4つついているスイッチは千石電商で買ってきたゲームスイッチですね.発泡スチロールを切って作った台に接着してあります.右上にある丸いLEDは,NeoPixel 16連フルカラーLEDです.これらをArduino バニラシールドにつないで,Arduinoシールドとしてまとめてあります.プルアップ抵抗をつけるのが面倒だったので,スイッチのプルアップ抵抗は全てArduinoの内部プルアップ抵抗を使っています. Arduinoとしては,タッチセンサーを12個もオンボードで搭載し,かつMicroSDカードスロットとMP3プレイヤー機能も持っている,Bare ConductiveのTouch Boardを使用し
2 min read