サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
画力アップ
neocat.hatenablog.com
M5Paper を動作させっぱなしにすると残像が残る? M5Paper は、静電容量タッチスクリーン付きの 540 x 960 の4.7インチ電子ペーパー(EPD)を備えた、ESP32搭載のデバイスです。 無線LANやBT通信などと組み合わせて、色々なモノを作ることができます。*1 1150 mAhのLipoバッテリーを持っているため、これと電子ペーパーの電源を落としても表示が消えない特性を生かして、長期間ディープスリープさせながら定期的に画像取得するような作例がよく見られます。 しかし、タッチセンサーを利用した動作をする場合、タッチ状態を監視して反応(画面を再描画したり通信したり)したいため、内部状態がリセットされてしまうディープスリープは使えず、USB電源等に繋いで常時稼働させる必要があります。 さて、M5Paperでタッチ操作が可能なスケジューラを作り、常時通電で稼働させていたのです
ふと気がついたら自宅の電波時計がかなり進んでいました。そこで、ESP32 (M5Stick-C)を使って擬似的に微弱なJJYの標準電波を発信するデバイスを作りました。 M5StickC 基本的には下記のコードをベースにしたものですが、ESP32のArduinoライブラリはNTP同期機能を含んでいるので、より簡単になっています。 neocat.hatenablog.com Arduino IDEでESP32を使用するためのセットアップ手順は、下記サイトなどを参考にしてください。 esp32_setup – スイッチサイエンス さて、JJYは40kHzまたは60kHzの信号ですが、これはLEDCをGPIOにアタッチし、 ledcWriteTone() で出力できます。 #define GPIO_PIN 10 /* JJY擬似信号を出力するピン. 10は内蔵の赤色LED */ #define L
Bluetooth接続ができるUSB電圧・電流テスター「UM24C」を買ってみました。 公式のAndroid端末やWindows用のソフトを使って値を読み出すことができます。が、自作のプログラムからこれを読み出してみました。 カラーLCDがついていてなかなか派手ですが見やすい。上下に左右2つのボタンがついていて、これで操作します。操作HELP表示(英語)つき。これ単体で電圧や電流変化のグラフを見ることもできたりして、なかなか高機能です。 入手方法 Amazonでも購入できます。 慣れてる人ならAliExpressで購入した方が安く買えます。Alibaba グループ | AliExpress.comの 電圧メートル からの UM24C 2.0カラー液晶ディスプレイusb電圧テスター電流計電圧計amperimetroバッテリー充電ケーブル抵抗30% 中の UM24C 2.0カラー液晶ディスプレ
Arduino Leonardo等は、USBキーボードやマウスとして振舞わせ、PC等を操作するのに使うことができます。 同じくArduino IDEをプログラミング環境として使えるESP32ではUSBキーボード機能は付いていません。しかし、代わりにBluetooth LEを利用してキーボードとして振舞わせることができるはず。ということで、やってみました。 セットアップ 今回はM5StickCを使いましたが、ESP32ならどのボードでも同様です。 M5StickC ESP32 PICOミニIoT開発ボードフィンガーコンピューターカラーLCD付き Arduino IDEでESP32を使用するためのセットアップ手順は、下記サイトなどを参考にしてください。 esp32_setup – スイッチサイエンス BLE HID (Human Interface Device)のためのクラスはESP32のツ
最近のIoTブームでクラウドから制御できるコンセント(スマートプラグとかスマートコンセント)が安価に入手できるようになりました。どれもおおむね、専用のスマートフォンAppや、Amazon AlexaとかGoogle Home、IFTTTに対応しており、音声制御や自動化が可能になっています。それだけでも便利なのですが、LANに閉じて使いたいときもあるよね、ということで、クラウドに繋がらない状態でも制御できないかやってみました。 (何となく第三者のシステムから家庭内の機器を制御できる状態にしておきたくないとか、クラウドサービスが停止したら使えなくなるのがいやだという理由ですが。) 使ったもの 今回買ったのはこのHyletonという所の二つの製品。Amazonのタイムセールで一番安かったので。 Amazon.co.jp: Hyleton Wifiスマートプラグ スマートコンセント スマートソケッ
ESP32を使って、Amazonで安価に売られている64x32ピクセルのLEDマトリクスに色々表示できるようにしてみました。 ESP32 + 64x32 RGB LED Matrix 使ったもの ・ESP32-DevKitC ・P3 RGBピクセルパネルHDビデオディスプレイ64×32ドットマトリックスSMD LEDディスプレイモジュール192×96mm あとは適宜ブレッドボードなど。 配線 このパネルには HUB75 という規格に準じたピンが出ています。ただ通常とロジックが一部反転したりしているようです。 配線方法やピン配置については、Adafruit のパネルと同じなので、以下の記事が参考になります。 https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/connecting-with-jumper-wires パネルとESP32の
前の記事の続き。 スマートメーターからリアルタイムに消費電力を取得する - Okiraku Programming 前回の記事ではArduinoで電力を取れるようにしたわけですが、ログを取って統計処理したり、Webでリアルタイムに見れるようにしようとすると、やっぱりLinuxの方が便利なので、Linuxマシン(今回はPCduino3を使いましたが、RaspberryPiでも全く同様にできるはず)に移植しました。 前回の記事のスケッチを移植・改造した電力取得・ログ記録プログラム(C++) → WebSocketサーバ(Node.js) → ブラウザ上で動的にグラフ描画(Highcharts) という構成です。こんな感じのメーターがリアルタイム(5秒ごとくらい)にピコピコ動きます。 履歴も秒オーダー/分オーダー/時〜日オーダーで変化が見れたりします。 PCduino3に接続 接続は、電源(3.
iPhoneにも 8 / X でQiが搭載されました。 Qiでは受電機器から充電器に対して通信を行うことで、充電の開始/停止や電力の調整を行いながら動作しています。これにより異常があれば即時充電を止めるようになっているわけですね。 通信速度は2kbpsで、受電側の負荷を変化させることで充電側に電力の変化として通信データを伝える後方散乱変調という仕組みが使われています。詳しくは以下のデータシートなどが参考になります。 https://toshiba.semicon-storage.com/info/docget.jsp?did=14812&prodName=TC7763WBG 実際にどんな通信がなされているか気になったので、この通信パケットをキャプチャしてみました。 回路 回路図はこんな感じ。 適当に数回輪にした電線(INPUT)を受電機器と充電器の間に挟み、そこから信号を取り出します。Qi
巨大なテキストデータを標準入力(pipe等)から受け取り、1行ずつ何か処理をして、結果を標準出力(これもpipe等)に書くプログラムを書こうとしてハマるパターン。 (なお文字コードのことはここでは忘れたことにするので、別途対応が必要かもしれない。) 例えば、ssh remote-host cat huge-file.txt | node process-data.js | xz -c > compressed-data.xz などと使うような想定。 ダメな例1: var chunk; while(chunk = process.stdin.read()) process.stdout.write(`data: ${chunk}`); } { Error: EAGAIN: resource temporarily unavailable, read errno: -35, code: 'EA
新しいMacBook Proのtouch barで走るSLコマンドを作りました。 (touch barシュミレータでしか動作確認してませんが。) オリジナルのようにオプション(-a, -l, -F)には対応していません。 ソース(Swift)は以下。ビルド済みのバイナリも入ってます。 https://github.com/NeoCat/sl_on_touchbar 追記: 新しいmacOSでは、開発元が確認できないので開けない、というエラーが出ますが、一度 中にある「sl_on_touchbar」というappをctrlクリックして開くを選択すると、エラーダイアログに「開く」というボタンが現れますので、これをクリックすると以降は普通に開けるようになります。 なおビルドとシミュレータの動作にはmacOS Sierra 10.12.2 beta (16C41b)以降、XCode 8.2 beta
ESP8266(ESP-WROOM-02)を最近よく使っています。 ESP8266を使ったセンサを、Wi-Fiアクセスポイントから遠い、直接電波の届きにくい場所に置きたかったため、ESP8266をもう一つ使ってWi-Fiの到達範囲を拡張する中継機にした(といってもブリッジではなくNAPTルータ)という話です。 とその前に軽くESP8266について紹介しておくと…(もう知ってる方は読み飛ばしてください) ESP8266の紹介 ESP8266は無線LANモジュールです。購入した状態では外部のマイコンからATコマンドで制御できます。が、LX106という32bit MCUを搭載しており、このモジュール単体でArduino IDEからプログラミングして動作させることが可能です。この方が圧倒的に便利なので、私自身はATコマンドで使ったことはありません。 しかも安価(単体なら400円台)ですし、ESP-
LinuxでSDNっぽいことをOpen vSwitchでやろうとすると、BridgeやらNamespaceやらInterfaceやらが増えまくって全貌の把握が困難になってきます。また、なぜかpingが通らないときなど、あっちこっちでtcpdumpして回るのは大変です。 そこで、コマンド一つでOpen vSwitchやNamespaceの関係図を描き、ついでに全interfaceをtcpdumpしてpingがどこを通っているかも色で示すツールを作りました。 今のところ単一ホスト内のみなので複数nodeあるときは各nodeで実行する必要がありますが。 使い方 ソースは https://github.com/NeoCat/ovsimager にあります。sudo できるユーザかrootで $ sudo gem install ovsimager $ sudo yum install graphv
マイナンバーカードでSSHする - AAA Blog という記事が出ていたので、マイナンバーカードを使ったSSHログインをLinux上でやってみました。環境は出たばっかりのFedora 24です。 カードリーダーは、上記の記事のような非接触式ではなく、接触式のICカードリーダー NTTCom SCR3310を利用しました。 SCM ICカードリーダー/ライター B-CAS・住基カード対応 SCR3310/v2.0 【簡易パッケージ品】 出版社/メーカー: SCM Microsystemsメディア: エレクトロニクス購入: 25人 クリック: 176回この商品を含むブログ (1件) を見る まずは必要なパッケージをインストール。カードリーダーをUSB接続し、スマートカードデーモンpcscdを起動します。 $ sudo dnf install openssl-devel readline-de
少し前からスマートメーターの導入が始まっています。東電は2020年度末までに一般家庭などへの導入を完了させるそう。 http://www.tepco.co.jp/smartmeter/index-j.html 東電の場合、電力メーター情報発信サービス(Bルートサービス)を申し込むと、優先的にスマートメーターに交換してくれます。特に費用はかかりません。スマートメーターが設置されるとでんき家計簿から30分毎の電力使用状況グラフ(0.1kWh単位)を見ることができるようになりますが、加えて上記サービスに申し込むと、スマートメーターと家庭内のHEMS機器との間(これをBルートと言います)で通信を行うことが可能になり、リアルタイムで詳細な電力使用状況(瞬時電力値(W)、瞬時電流値(A)など)が取得できるようになります。 利用にあたってHEMS機器やサービスの導入に費用がかかるのがネックですが、HEM
Mac OS X 10.9くらいから、Iビームのマウスポインタが暗い背景で非常に見にくくなってしまいました。ターミナル等で背景色を黒っぽい色にしていると、テキストを選択しようとした時などにマウスポインタがどこにあるかわからず、非常に不便です。 MouseCapeというマウスポインタをカスタマイズすることができるソフトを使うことで、Iビームの周囲に白いハイライトを足すことで、見易さを改善できました。 作成したcape(カスタマイズされたカーソル集)はGitHubにあります。使い方はcapeファイルをダウンロードしてImportし、取り込まれた「Enhanced IBeam」をダブルクリックして適用するだけです。 https://github.com/NeoCat/enhanced-ibeam 他にもさまざまなcapeが公開されているので、自分好みに置き換えてみるのも楽しいかもしれません。 c
電流センサが転がっていたので、iPhone 6の充電電流をロギングしてみました。 縦軸は電流(mA)、横軸は時間(分)です。 グラフには現れませんが、電池のみならず充電器側の能力(たぶん電圧、というか出力インピーダンス)もモニタリングしながら流す電流を決めているようで、ACアダプタや電源ケーブルを変えただけでかなり電流値(ひいては充電時間)が変わってしまうようです*1。 そんだけ。 *1:内部抵抗が何段階か設定されていてその間で能力を見ながら切り替わる雰囲気
Chrome 38 (Win/Mac/Linux) がUSBセキュリティキーに対応し、あわせてGoogleの2段階認証もこれに対応しました。従来のスマートフォンによる認証と比べてキーを挿す*1だけとお手軽なほか、似たような外見・URLのフィッシングページに誘導されてもブラウザが正規のページか自動的に判断するので騙されてキーを入力してしまうことがなくセキュアだということです。 Use Security Key for 2-Step Verification - Android - Google Account Help 利用できるのは、FIDOが策定しているU2F (Universal 2nd Factor)に対応したキー。 私はamazon.comで↓のを買いました。 たったの$6なり。ボタン等はついてないので挿しっぱなしにはできず、認証時に挿すという感じになりますが、とにかく安かったので
LinuxのKVMで、ゲストのIPアドレスを取得する方法の覚え書き。 VMのNICの接続先が仮想ネットワークであれば、 /var/lib/libvirt/dnsmasq/virbr0.leases等にDHCPサーバが仮想マシンにリースしたIPアドレスが入っていますので、ここから取得できます。 一方、物理NICへのブリッジを作っている場合は、ここには記録されませんので、ゲスト内でip addrコマンド等を実行しなくてはなりません。QEMU guest agent(qemu-ga)がゲストに入っていれば、いちいちゲストにログインしなくてもホスト側からネットワーク情報を問い合わせることが可能です。 事前準備 最近のFedora(20で確認)であれば、自動的に下記のセットアップが行われるはずです。それ以前のVMの場合などは、手動で事前の設定が必要です。 チャネルの作成 最近のvirt-manage
最近のChrome, SafariのJavaScriptには音声合成APIが入っています。 使い方は簡単で、JavaScriptコンソール等で var msg = new SpeechSynthesisUtterance('こんにちは!'); msg.lang = "ja-JP"; // 言語指定 window.speechSynthesis.speak(msg); のようにするだけで喋ってくれます。 音声エンジンを変えることも可能です。使える音声の一覧を var voices = speechSynthesis.getVoices(); で取得すると、voicesに音声オブジェクトのリストが返ってくるので、この中のlangやnameを見て使いたいものを msg.voice = voices[3]; などとSpeechSynthesisUtteranceオブジェクトのvoice属性に指定す
先日のエントリ(Raspberry Piで航空機からの位置情報信号ADS-Bを受信してみた - Okiraku Programming)の続きです。 SDRチューナーに付属のアンテナでも最大100nm(180km程)の距離にある航空機の信号を拾えていましたが、ものは試しということで、グランドプレーンアンテナを作ってみました。1090MHz用なら小さくてすみますし。 材料はMCX用の変換ケーブルと1m程度の針金。変換ケーブルはamazon.comで買いました。 Amazon.com: DHT Electronics RF coaxial coax cable assembly SMA male to MCX male right angle 6'': Computers & Accessories amazon.co.jpで探すとこんな変換ケーブルとか、 Amazon CAPTCHA アンテ
最近大ヒットしたゲームと言えば2048。上下左右にタイルを動かして数字をくっつけ、2048を作るだけのシンプルなゲームですが、それだけにハマりやすい。 [参考記事: 「2048」:19歳のイタリア人が、ミニゲームでインターネットを征服!|WIRED.jp] 2の累乗が大好きなエンジニアの間でももちろん大人気なようです。 そんなわけで、2048をLinuxカーネルの中で動作させてみたいと思います。 といってもそのためにカーネルビルドしたりは面倒なので、SystemTapでランタイムにカーネルにロードすることにしましょう。 動かし方 以下、Fedoraの場合です。他のディストリビューションでの動かしたい方はマニュアル等でSystemTapの動かし方を調べてください。 1. 下記のソースを2048.stpという名前で保存します。 https://gist.github.com/NeoCat/99
最近ニュースで航空機の捜索が話題になっていましたが、その中でADS-Bという単語が出てきました。 ADS-B(Automatic Dependent Surveillance-Broadcast)は、航空機から1090MHzの周波数で発信されている、識別子、GPSによる現在位置、高度、対気速度などを含む信号で、この情報を地上や航空機間で利用することでより安全に航空機を運用できるようにするもので、近年これに対応したトランスポンダを搭載する航空機が増えてきているそうです。1030MHzで各航空機に問い合わせを送り、各航空機が1090MHzで応答するというプロトコルになっています。 参考: 空中衝突防止装置 - Wikipedia Flightradar24というサイトを見ると、航空機の位置情報をリアルタイムで見ることができますが、これはユーザの受信機が拾ったADB-Sの情報を収集して配信するこ
twicliでUser Streaming APIを利用できるようにするプラグイン stream.js を実験的に公開しました。 これを導入することで、 タイムラインを数分ごとの更新ではなく、リアルタイムで追いかけることができるようになります。 実験的ということで、不安定だったり、突然使えなくなったりする可能性があります。 利用にはWebSocketに対応したブラウザが必要です。(Firefox11、Chrome16, Safari6, Opera12, IE10以降など) 追加の手順 twicliで+タブから「設定」を開く プラグインの欄に「stream.js」という行を追加 「保存」をクリック twicliをリロード プラグインを外すときは、同じ手順でstream.jsの行を削除します。 実装についての覚え書き TwitterのStreaming APIは、HTTP 1.1のchunk
とあるカンファレンスのIntelブースで、販促品(?)のLEDつきファンを貰いました。 スイッチを入れるとファンが回転し、羽根に入っている7つのLEDが空中に文字を描き出すというもの。 もともとは求人広告として、「We're Hiring!」の文字とURLをアニメーション表示するようになっていました。 さて、このファンですが、よく見るとピンソケットが付いています。きっとマイコンか何かのプログラミング用だろうと思い、気になったので分解してみました。 なにやらピンソケットの近くにチップがあります。型番はT24C04A。検索してみると512 x 8bitのEEPROMでした。きっとこれにデータが入ってるのだろうと想像がつきます。 裏面見たらご親切にもシルクが入ってました。左からPAD, GND, CLK, VDD, DATAの5本。CLK, DATAはI²Cの信号ですから、ここからデータ書き換え
Leap Motionで手の位置やジェスチャーを認識し、それに合わせてロボットボールSpheroを走らせてみました。 手を握った状態から開くと、コントロール開始。 手を開いたときの位置を基準に、前後左右に手を動かすだけで、Spheroを思うがままに走らせることができます。手を大きく動かせば高速に、少しだけ動かせばゆっくりに。 Leap Motionによる認識結果はWebブラウザ上に表示されます。上の動画中ではブラウザをフルスクリーン表示にしてあります。この可視化部分まではSDKのサンプルそのままです。サンプルにWebSocket経由で認識結果を送るコードを追加し、それをRubyのスクリプトで受け取ってSpheroのコントロールを行っています。 コードはGitHubにあります。 実行にはLeap MotionのJavaScript SDK、およびrubyのSpheroライブラリ(gem in
ちょっと設定を見直したのでそのときのメモです。 拡張をいろいろ追加すると起動に時間がかかるというemacsの欠点を補う方法として、emacs --daemonというものがある。これは要するにemacsをデーモンとしてバックグラウンドで起動しっぱなしにしておき、使いたいときには手元の端末やXのウィンドウでクライアントを立ち上げてデーモンに接続するだけ、というもの。いちいち初期化しないので本当に一瞬で起動できます。 で、何らかのタイミング(マシン起動時とかログイン時とか)であらかじめデーモンを立ち上げておく必要があるのですが、普段デスクトップとして使っているマシン*以外*では、初回使用時にデーモンがいなければ起動するようにして使っています*1。 やり方としては、下記のスクリプトを"E"という名前でパスの通ったディレクトリにおいておきます。 ファイルを編集するときは "E ファイルパス" を実行
iOS7のSiriはMPTCP (Multi-path TCP) に対応しているとのこと。 参考: iOS 7は3G・4G通信とWi-Fiなどを同時使用して回線速度を安定させる「MPTCP(マルチパスTCP)」に対応していることが判明 - GIGAZINE 参考: iOS 7でMPTCPがサポートされた話 | nunnun's weblog RFC: RFC 6824 - TCP Extensions for Multipath Operation with Multiple Addresses ということで、実際にその通信をキャプチャしてみました。(ちなみにSiri以外の通信にはMPTCPは有効にならないようです。残念。) 3G/LTEの通信を直接キャプチャすることはできないので、ちょっとした細工がDNSに必要です。 まず、iPhoneからWi-Fiで接続できるゲートウェイ・サーバが必要
MacBookの日本語配列キーボードを使う際、英数キー、かなキーがスペースバーの両横にあるため、一発で英語入力/日本語入力を確実に切り替えることができるのが気に入っていたのですが、最近英語配列キーボードを使い始めたため、これらがなくなってしまい、不便だなあと思っていました。*1 *2 ↑日本語配列 ↓英語配列 調べてみたところ、KeyRemap4MacBookというソフトを導入すれば、左右のコマンドキーを空打ちした場合にそれぞれ英数/かなキーとして振る舞わせることができるとのことで、早速導入してみました。 設定としては、アプリを起動してChange KeyタブにてJapaneseで検索し、「左右のコマンドキーを「英数/かな」としても使う」にチェックを入れるだけです。ついでに「Command_L x2 to EISUU x2」「Command_R x2 to KANA x2」も入れておくと
ボストンに引っ越しました。 こちらのアパートは日本と違って各部屋のエアコンというものはなく、全室空調になっています。 その温度設定をするのがサーモスタットと言われているこういうコントローラ。 要するに、室温をセンサで読み取って、設定値より高く or 低くなると、暖房/冷房に繋がった線を短絡させて空調を作動させる装置です。 で、こいつは交換可能になっていて、時間によってプログラムした温度に調整してくれるとか、Wi-Fi経由でiPhoneから設定ができるとか、高機能なものに付け替えることができます。 そういうわけで、さっそくWi-Fi対応のものに交換してみました。Honeywellという会社のRTH6580WFというのを使いました。交換方法はメーカーがYouTubeで解説してくれています。 取り付けると最初はWi-Fiアクセスポイントとして機能して、そこに接続してWebページからWi-Fiルー
次のページ
このページを最初にブックマークしてみませんか?
『Okiraku Programming』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く