ArduinoをPS/2キーボードとして振る舞わせる

Arduino (Pro Mini) からPS/2キーボードの信号を送り、PCにキー入力ができないかやってみました。 PS/2端子 キーボードやマウス用の端子であるPS/2端子。今時は搭載していないPCも多いですが、例えばASRockのマザーボードには今でも搭載されているようです。…

IR202赤外線カメラのデータを取得

IR202 という携帯電話に接続する赤外線カメラを買ってみました。 解像度80x60とちゃんと画像として見られるレベルながら比較的安価です(最近円安のせいか値上がりしていますが…)。 PerfectPrime IR202 赤外線サーマルイメージャーカメラ (Android TypeC)通…

Arduino MKR WAN 1310に搭載されたECC508を利用して乱数を生成してみる

Arduino MKR WAN 1310にはECC508というセキュアエレメントが搭載されており、これを用いて公開鍵認証などを安全に実現することができます。 ハードウェア乱数生成器を搭載しているため、暗号論的にセキュアな乱数を生成することもできます。以前の記事で紹介…

LoRaの通信波形をSDRで見てみた

前の記事で作成したGPSノードの通信の波形を、SDR (Software Defined Radio)で捉えて可視化してみました。 neocat.hatenablog.com SDRの受信にはRTL2832Uなどのチップを積んだ安価なUSB TVチューナーなどが使えます。 が、今回は HackRF One を使用しました…

GPSの現在位置をLoRaで送信して距離を測ってみた (Arduino MKR WAN 1310)

TL;DR LoRa は最大数kmの長距離でセンサデータ等の通信ができるとされている通信方式です。 実際にGPSで取得した現在位置を送信するノードをArduino MKR WAN 1310を使って作成し、都市部(東京23区内)でこれを持ち歩いた時にどのくらいの距離まで通信できるの…

USB Type-Cケーブルで接続すると動作しないQiワイヤレス充電器の謎を調べてみた

古めのUSB Type-C接続のデバイスの中には、なぜかUSB Type-C ⇔ Type-Cケーブルを使って電源に接続すると動作しないものがあります。 具体的には、リリース直後のM5StickCは、Type-C ⇔ Type-CケーブルでMacに接続すると動作しない問題がありました。 これは現…

M5Paperの動作中の消費電力を削減する

M5Paper を動作させっぱなしにすると残像が残る? M5Paper は、静電容量タッチスクリーン付きの 540 x 960 の4.7インチ電子ペーパー(EPD)を備えた、ESP32搭載のデバイスです。 無線LANやBT通信などと組み合わせて、色々なモノを作ることができます。*1 1150 …

Macのスリープが時々勝手に解除されるのを防ぐ

Mac

Macのスリープが時々勝手に解除されている? 前の記事でUSBファンを繋いだのですが、Macのスリープが数時間に1回、勝手に解除されてはまたスリープするという動作をしているらしく、時々ファン音がするのが気になるようになりました。ファン以外でも、USB HDD…

Macに外付けしたUSBファンの電源を自動でOn/Off

Mac

USBファンの電源を自動でOn/Off 夏になってきて暑くなってきました。そしてMacBook Proも負荷がかかるとCPU温度が上がり、サーマルスロットリングがかかって処理が遅くなる現象が起きるようになってきたため、外付けのUSB冷却ファンをつけてみました。 LiANG…

M5PaperでSPIFFSに日本語TTFファイルを置いて描画する

M5Paperでスケジューラを作りました。 M5PaperのM5EPDライブラリは、日本語等のUTF-8の文字列をTrueTypeフォント(TTF)を使って描画することができますので、スケジューラでもこれを使っています。 最初はSDカードに日本語TTFを置いていたのですが、高々数MB…

Wireless Analog Terminal Bellを作った

Wireless Analog Terminal Bell Analog Terminal Bell の動画にInspireされて、Wireless Analog Terminal Bell を作りました。ターミナルで作業している時に何か間違えると、分かりやすく(物理的な)ベルが鳴ってお知らせしてくれます。youtu.be 仕組み 端…

Bluetooth対応のHue(スマートライト)をRubyとBLEで制御してみた

Bluetooth対応のHue(スマートライト)をRubyとBLEで制御してみた 去年くらいに、PhilipsからBluetooth LEに対応したHue (スマート電球) が発売されました。 HueはもともとZigbeeを使用しており、色や明るさの制御にはHueブリッジという装置をLANに接続する必…

ESP32 (M5Stick-C) で電波時計を合わせよう

ふと気がついたら自宅の電波時計がかなり進んでいました。そこで、ESP32 (M5Stick-C)を使って擬似的に微弱なJJYの標準電波を発信するデバイスを作りました。 M5StickC 基本的には下記のコードをベースにしたものですが、ESP32のArduinoライブラリはNTP同期機…

Wio TerminalでBad Apple!!の影絵を再生してみた

Wio Terminalが届いたので、例の影絵を再生してみました。Wio TerminalでBad Appleひとまず描画データはPCからUSB UARTで送信しており、音声は別再生です。 白黒2値限定ですが、差分だけを描画するという方法で、一部の前フレームとの差分が極端に大きいシー…

Arduino ESP32からBluetoothシリアル(SPP)デバイスに接続する

Arduino ESP32は、Bluetoothシリアル(SPP)のスレーブデバイスになるサンプルは付属しており、PCからはBluetoothシリアルで容易に接続することができました。 (例えば arduino-esp32/SerialToSerialBT.ino at master · espressif/arduino-esp32 · GitHub など…

LinuxのHDDに不良セクタが発生したので修復してみた

NAS(Linux機)からファイルを読み出していたら、突然ハングアップしてしまい‥…dmesgを調べてみるとHDDに不良セクターと思しきI/O Errorが発生していました。 sda: Current: sense key=0x3 ASC=0x0 ASCQ=0x0 Info fld=0x43c024d6 end_request: I/O error, dev …

ESP32をBluetoothキーボードやマウスにする

Arduino Leonardo等は、USBキーボードやマウスとして振舞わせ、PC等を操作するのに使うことができます。 同じくArduino IDEをプログラミング環境として使えるESP32ではUSBキーボード機能は付いていません。しかし、代わりにBluetooth LEを利用してキーボード…

太陽電池で動くワイヤレス環境センサー

前回の記事のドアセンサーで使ったTWELITEを使って、太陽電池で動くワイヤレス環境センサーを作りました。 BME280で温度・湿度・気圧を計測し、定期的に無線で送信することができます。電気二重層コンデンサを搭載しており、夜間もデータ送信が可能です。 主…

ボタン電池で年単位で使えるワイヤレスドアセンサーを作った

ボタン電池で数年ほど動作し続ける、ワイヤレスなドアセンサーを作りました。よくあるIoTネタですが、オフィスのトイレ個室が混雑しがちなので、自席で空きがわかると良いなというやつです。外観と、ドアの上部に載せたところ。 仕様 センサーは、1分間ごと…

EXAPUNKSのソリティアを自動操作で解く

前回の記事でソリティアの解法を求めるコードを紹介しましたが、これに画像認識と自動マウス操作機能を加えて、全自動で解くようにしました。youtu.beコードはGitHubにあります。 GitHub - NeoCat/exapunks_solitaire_solver: Automate EXAPUNKS ПАСЬЯНС (So…

EXAPUNKSのソリティアをRubyで解くついでにJITを試してみる

プログラミングっぽい独特なパズルゲームを開発しているZachtronicsが出したEXAPUNKSというゲームで遊んでいます。 簡単なアセンブリのような言語でEXAというウイルスのようなエージェントをプログラミングし、ストーリーを追いながらハッキングでデータを改…

Macのテキストエディットやメモで入力される制御コード

Mac

macOS (Mojaveで確認) のテキストエディットやメモ、メールといった、標準テキスト入力を使ったアプリケーションでは、option や ctrl キーの組み合わせによって特殊な制御文字コードが入力される場合があります。これらは目に見えなかったり単なる改行に見…

ESP32で2枚の64x32 LEDマトリクスパネルに128x32で描画してみた

以前の記事で64x32のLEDマトリクスパネルにESP32 (ESP-WROOM-32) を使って描画するライブラリを公開していました。これを改造してパネル2枚を連結した128x32に描画してみました。www.youtube.com 使っているのは以前の記事とおなじパネル2枚とESP32です。 P3…

スマートコンセントをクラウドを使わずLANから制御してみた

最近のIoTブームでクラウドから制御できるコンセント(スマートプラグとかスマートコンセント)が安価に入手できるようになりました。どれもおおむね、専用のスマートフォンAppや、Amazon AlexaとかGoogle Home、IFTTTに対応しており、音声制御や自動化が可…

ESP32で64x32 LEDマトリクスパネルを制御

ESP32を使って、Amazonで安価に売られている64x32ピクセルのLEDマトリクスに色々表示できるようにしてみました。 ESP32 + 64x32 RGB LED Matrix 使ったもの ・ESP32-DevKitC ・P3 RGBピクセルパネルHDビデオディスプレイ64×32ドットマトリックスSMD LEDディ…

Bluetoothで値が読めるUSB電圧・電流モニター「UM24C」を使ってiPhone Xの充電状況を測ってみる

Bluetooth接続ができるUSB電圧・電流テスター「UM24C」を買ってみました。 公式のAndroid端末やWindows用のソフトを使って値を読み出すことができます。が、自作のプログラムからこれを読み出してみました。 カラーLCDがついていてなかなか派手ですが見やす…

赤外線アレイセンサ AMG8833 (Grid-EYE) をWebSocketで見てみる

赤外線アレイセンサ AMG8833、いわゆるGrid-EYEを使ってみました。 www.switch-science.com 上記の説明の通り、60度の四角錐の測定エリア(2次元)を8x8に分割した64個のピクセルについて、0〜80℃の温度が得られます。時間分解能は10fpsです。 これを、ESP8266…

GitHubのPull Reqest作成ページをコマンド1つで開く

Mac

何かコードを書いて、ブランチをGitHubにpushしたあと、そのブランチのプルリクエストをさくっと作りたかったので、1コマンドで現在のブランチからのPull Request作成ページを開くコマンドを作りました。(共有レポジトリを想定)以下のコードを実行可能権限を…

Qiのパケットを解析してみる

iPhoneにも 8 / X でQiが搭載されました。 Qiでは受電機器から充電器に対して通信を行うことで、充電の開始/停止や電力の調整を行いながら動作しています。これにより異常があれば即時充電を止めるようになっているわけですね。 通信速度は2kbpsで、受電側…

pryがCtrl-Yでサスペンドしてしまう

Macのターミナル上でRubyのpryを使っている際、Ctrl-Kなどでカットした文字列を貼り付けようとCtrl-Yをタイプすると、サスペンドしてしまうことがあります。ちなみにirbだと発動しません。 $ pry [1] pry(main)> [^Yをタイプ] [1]+ Stopped pry $ これはDSUS…