タグ

ブックマーク / lowreal.net (65)

  • El Capitan になってから、Mac の写真.appの自動起動がガチでうざい | tech - 氾濫原

    SDカードなどを接続したとき、使ってもいない写真.appがいちいち起動してだいぶ陶しいです。以下のコマンドで止めることができました。 defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool YES 昔は Image Capture.app の環境設定からデフォルトの設定が変えられたはずなんですが、El Capitan ではその機能が消滅していて、GUI で変更する方法がないようです。クソですね。 トップ tech El Capitan になってから、Mac の写真.appの自動起動がガチでうざい

  • 組込みでこそ C++ | tech - 氾濫原

    C++ はながいことわず嫌いだった。とにかく「難しい」というイメージだけ先行していた。 しかし、あくまで better C として使う限りでは難しくないし、可読性が上がるので、 C++ を使わない手はないという気持ちになった。 これまでの漠然とした C++ への不安 書いたコードと出てくるバイナリ C を書いていると、だいたいは書いたコードがそのままバイナリに翻訳されている感があり、安心感がある。struct はメモリ上の配置そのままだし、関数だって単に処理のまとまりに名前がついてて、呼び出しもとに自動的に戻ってくるラベルなだけだ。 C++ になるとオブジェクト指向に概念が入ってきて、これが実際どのようにコンパイルされるかに不安が出てくる。クラスはメモリ上でどう表現されているのか、メソッドディスパッチはどのように行われているか? もちろん知っている人にとっては簡単な話で class は単

  • メモ: ESP8266 での実測電流 | tech - 氾濫原

    コード 以下のようなコードで試した。概要としては 2.5秒に1度起動する (それ以外は deep sleep) 起動時にデータをRTCメモリに書きむ (センサーデータ取得を想定) 4回に1度 WiFi に接続し、UDP でセンサーデータを送信する というもの

    メモ: ESP8266 での実測電流 | tech - 氾濫原
  • ESP8266 (ESP-WROOM-02) の Deep Sleep でデータを引き継ぐ | tech - 氾濫原

    ESP8266 の deep sleep モードは CPU などの電源を全て落として、RTC (時刻を持ってるわけではないっぽいけど内蔵RTCがあるらしい) だけ生かして設定時刻になったら RTC にリセットさせるという挙動をする。 そういうわけで、ディープスリープ後はリセット直後と同じ状態になり、メモリなどは引き継げない。 もちろん deep sleep 時には wifi の接続も切れてしまうので、毎回繋ぎなおしになる。自分の環境だとAPに接続するまで5秒ぐらいかかるし、接続中は電流が80mA(データシート的には最大で180mA)ぐらい流れる。高い頻度で起動すると初期化のコストがかなり大きい。 ユースケース センサーデータは数秒に一度取得したいが、データ送信はさらに少ない頻度でどこかに送信したい、というような場合。 system_rtc_mem_read / system_rtc_mem

    ESP8266 (ESP-WROOM-02) の Deep Sleep でデータを引き継ぐ | tech - 氾濫原
  • Intel Edison のおもしろいところ | tech - 氾濫原

    ただのちっちゃい Linux だと思っていたけど、RTOS が入っているコプロセッサも持っていて、ホストCPUとシームレスに連携できるということがわかった。 アーキテクチャを見ると思いのほか面白かった。 https://software.intel.com/en-us/creating-applications-with-mcu-sdk-for-intel-edison-board ホストCPU上のLinuxからは、GPIOが sysfs 経由 (または Intel の提供するSDKなど) から見える。それと同時にコプロセッサの MCU からは直接 GPIO が見える。 ホストCPULinuxはリアルタイムではないので、最低でも10ms程度(カーネルの割込み頻度の設定による)、処理が遅延する。GPIO を正確にコントロールする場合この遅延は大きすぎる。 一方コプロセッサのMCUはリアルタ

    Intel Edison のおもしろいところ | tech - 氾濫原
  • トロイダルコアを使うときに便利なツール | tech | ham - 氾濫原

    http://toroids.info/FT140-43.php このサイト使ってる。好きなトロイダルコアを選んで、適当にパラメータを入力すればあとのものが計算される。つまり 7MHz で 3kΩ のインピーダンス確保するには? → 9ターンにで、50cm ぐらいの線長が必要 100uH 欲しいんだけど〜? → 11ターンで 55cm ぐらいだよ なんか20Tの作例あるんだけど、インダクタンスどれぐらいを想定してんの? → 350uH ぐらいよ みたいのができる。特に自分で巻く場合線長計算できるのが大変便利。ただ + 10cm ぐらい余分に切らないとだいたいの場合いろいろ厳しい思いをする。 トップ tech トロイダルコアを使うときに便利なツール トップ ham トロイダルコアを使うときに便利なツール

  • C++ でビットフィールドを再発明する | tech - 氾濫原

    ビットフィールドとは C/C++にはほとんど使われてないがビットフィールドという機能がある。 union { uint8_t raw; struct { unsigned FAULT_QUEUE : 2; unsigned CT_PIN_POLARITY : 1; unsigned INT_PIN_POLARITY : 1; unsigned INT_CT_MODE : 1; unsigned OPERATION_MODE : 2; unsigned RESOLUTION : 1; }; } config; このように書ける。struct 内で名前の後ろについているのが、そのフィールドで消費するビット数で、この場合合計で8bitになり、それを uint8_t と共用している。 こうすると config.OPERATION_MODE = 2; などと、マスクやシフトを伴わずに直接書けて、結果

    secondlife
    secondlife 2015/12/29
    組み込み開発でめっちゃ便利そう…
  • Quick Charge 2.0 から 9V/12V を出力させるデバイス (ATTiny13A) | tech - 氾濫原

    Quick Charge 2.0 電源から 9V をとる (任意の電圧をとる) | tech - 氾濫原 で、だいたいこれで良さそうと思ったので ATTiny13A 使ってユニバーサル基板にまとめた。 できたもの 風景 回路図 3端子レギュレータの S-812C33AY は安い (12.5円/個) から以外の意味はとくにない。ピン配置が GND IN OUT と 78* 系と違うので注意 Tiny13A は8pinなのでIOが最大で6pinしかない。そしてRESETをIOにするとISP書きこみができなくなるので、ISPを使うなら、実質5ピンのIOになる。 ファームウェアなど レポジトリ https://github.com/cho45/QCdirect コードは Arduino 版とほぼ同じだが、AVR ネイティブで書きなおしてある。 main.cpp https://github.com

    Quick Charge 2.0 から 9V/12V を出力させるデバイス (ATTiny13A) | tech - 氾濫原
    secondlife
    secondlife 2015/12/24
    QC 2.0 の USB 経由で 9V/12V 出力をユニバーサル基板上に実装
  • ESP-WROOM-02 OTA firmware update / platformio | tech - 氾濫原

    Over The Air で (すなわち Wifi 経由で)、ファームウェア書きかえをするやつ。 コード https://github.com/esp8266/Arduino/blob/master/libraries/ArduinoOTA/examples/BasicOTA/BasicOTA.ino これの通りにすればコード的にはとりあえずうまくいく。 platform.ini board は esp12e にしとかないとだめ。generic と書いてあるからといって、esp01 とか esp01_1m とかは flash のサイズが小さいので OTA_BEGIN_ERROR と言われる。 OTA の場合使える容量は半分以下になる。というのも、既存領域の余った部分にとりあえず書くからっぽい。 ref. https://github.com/esp8266/Arduino/blob/mas

  • WebAudio 直結 UART | tech - 氾濫原

    だいぶ忘れてたが、しばらくぶりにとりくんだらうまくいった。 やりたいこと ヘッドフォン出力から UART 信号を入力する (-1V〜1V) ぐらいを想定。何もしてないときは0V 300mV ぐらいでも動いてほしい UART へ出力する 何もないときはHIGHになってほしい 負を出力したときだけLOWになってほしい シミュレーション こんな回路で 入出力 入出力DCスイープ 回路の設計 1石で非反転にしたいのでベース接地とした。ヘッドフォン出力を入力にすることを想定しているので入力インピーダンスはそれほど高くなくても良いだろう。この回路の入力インピーダンスは約100Ω(100Ωと20kΩの並列) そして出力インピーダンスは100kとかなり大きいがデジタル入力なのでたぶん大丈夫だろう…… バイアスは0Vから飽和になるように選び、負の出力のときだけLOWに。 実験 赤が入力(ヘッドフォン出力)、

    WebAudio 直結 UART | tech - 氾濫原
    secondlife
    secondlife 2015/12/22
    おー、9600baud出るんだ〜
  • Arduino の digitalWrite / pinMode / digitalRead をコンパイル時に展開する | tech - 氾濫原

    先日 [tech] Arduino の digitalWrite をコンパイルタイムに解決する | Tue, Dec 15. 2015 - 氾濫原 というのをコンセプト的にやってみたが割と良さそうな気がしたので、.hpp なライブラリにしてみた。 https://github.com/cho45/Arduino-meta include してコンパイル時に -std=c++11 を指定すれば使える。 想定する使いかた #include <Arduino.h> #include "Arduino-meta.hpp" constexpr uint8_t LED_RED = 0; constexpr uint8_t LED_GREEN = 1; constexpr uint8_t LED_BLUE = 2; void setup() { pinMode(LED_BUILTIN, OUTPUT);

  • Arduino の digitalWrite をコンパイルタイムに解決する | tech - 氾濫原

    digitalWrite(pin, state) の引数はほとんど固定で使うことが多い (と思いますがどうでしょうか? http://lowreal.net/2015/12/14/1 こういうケースでは常に固定ですね) が、digitalWrite は実装上、実行時にいちいちテーブルを使って、ピン番号からどのポートのどのビットかをひいている。たいへん無駄である。 そして、digitalWrite() は1度の1つのビットしか設定できないという制約がある。これは大変こまる場合がある (同時に複数のビットを設定して出力を変化させようとしても、タイムラグができてしまう) ということで、これらを解決できないかと思った結果 C++ のテンプレートメタプログラミングに手を出すことになった 前提 Arduino が使っている 8bit AVR では PORTB, PORTC, PORTD などと最大8b

    secondlife
    secondlife 2015/12/16
    digitalWrite を静的マッピング&複数ビットを同時操作で高速化。avr-gcc で C++11 オプション付けコンパイル。
  • Quick Charge 2.0 電源から 12V とる | tech - 氾濫原

    回路図 12V を出す場合必要なのは D+ 0.6V / D- 0.6V なので、非常に簡単な構成。 VBUS には QC時に 5V〜12V の電圧がかかる。直接 Arduino の VIN に繋いでいるが、Arduino 側で 5V レギュレータが入っているので問題ない (ref. https://www.arduino.cc/en/uploads/Main/ArduinoNano30Schematic.pdf )。当然 5V ピンに直接繋いではならない (燃える) コード #include <Arduino.h> #include <avr/sleep.h> const int D_PLUS = 11; const int D_MINUS = 12; /** * Arduino nano has 5V regulated power, so required voltages are

    Quick Charge 2.0 電源から 12V とる | tech - 氾濫原
  • kakaku.com の最安データを Google Spreadsheet で自動的に使う | tech - 氾濫原

    =IMPORTXML("http://kakaku.com/item/xxxxx/", "string(//*[@id='minPrice']/a/span)")+0 みたいにすればいい。 Google Spreadsheet 側は ¥ マークとかカンマとかを無視して数値解釈してくれる。ただ、+0 をつけないと SUM() できない。 これで最安構成の合計金額をすぐだせます。 IMPORTXMLは2時間のキャッシュがあるそうですがこの用途では問題にはなりませんね。 トップ tech kakaku.com の最安データを Google Spreadsheet で自動的に使う

    secondlife
    secondlife 2015/10/30
    IMPORTXML() 実例
  • cdd とお別れして、別の cdd を定義した | tech - 氾濫原

    ずっと cdd ( http://secondlife.hatenablog.jp/entry/20080218/1203303528 ) を使ってたけど、以下のような感じでいいかなと思ったのでついに使うのをやめてみた。(cdd はスクリーンの別ウィンドウのディレクトリに簡単に移動するためのコマンド) function cdd() { if [[ $1 == "" ]]; then local selected_dir=$(lsof -c zsh -w -Ffn0 | perl -anal -e '/cwd/ and print((split /\0.?/)[1])' | uniq | peco) if [ -n "$selected_dir" ]; then cd ${selected_dir} fi else local pid if [[ $(uname) == "Darwin" ]

    secondlife
    secondlife 2015/10/27
    (ToT)/~~~
  • よしお前ら!!! WebAudio で LED を光らせるぞ!! | tech - 氾濫原

    最近 NXP Smartphone Quick-Jack Solution というドキュメントを読んだ。要約すると スマフォのオーディオジャックに繋ぐアクセサリについて 電源を音量最大にしたヘッドフォン端子の R チャンネルからとる チャージポンプダイオード昇圧 + LDO レギュレータで 3.3V を得る L チャンネルをスマフォ → マイコンの通信経路とする マイク入力をマイコン → スマフォの通信経路とする というもので、特に電源をヘッドフォンジャックからとってしまおうというところが、自分の中では結構びっくりだった。確かにヘッドフォンを駆動しているわけで、多少の電流はとれるだろうけど、マイコン動かすほどとれると思っていなかった。 このソリューションの良いところは 電源と信号線と一括で接続できてお手軽 オーディオ出力とマイク入力でコミュニケーションするので、WebAudio からでも応

    よしお前ら!!! WebAudio で LED を光らせるぞ!! | tech - 氾濫原
    secondlife
    secondlife 2015/09/05
    cool
  • Arduino のスケッチをコマンドラインからビルドする | tech - 氾濫原

    http://32bits.io/Arturo/ を使うといいっぽい。ino というコマンドがあったがメンテされてないので ano というフォークができたらしい。 使いかた $ ano init すると新規プロジェクトができる。 既存プロジェクトの場合、.ino ファイルは src ディレクトリ以下に入っている必要がある。 $ ano list-models yun: Arduino Yún uno: [DEFAULT] Arduino Uno diecimila: Arduino Duemilanove or Diecimila nano: Arduino Nano mega: Arduino Mega or Mega 2560 megaADK: Arduino Mega ADK leonardo: Arduino Leonardo micro: Arduino Micro esplor

  • スクリーンキャスト用のキーストローク表示アプリ | tech - 氾濫原

    前にMacRuby でスクリーンキャスト用のキーストローク表示スクリプトを書いたんですが、それを Swift で書きなおして機能を追加したりしてアプリにしました。 https://github.com/cho45/KeyCast 追加の機能:パスワードフィールドで自動非表示 基的に AXSecureTextField への入力って、そもそもアクセシビリティのコールバックにこない?っぽいのですが、一部のアプリでは飛んできてしまったり、よくわからない挙動をします。 なので、こちらのツール側で、パスワードフィールドかどうかを判定して非表示に切り替えています。 と書くと簡単なんですが、実際一番やりたい Google Chrome ではデフォルトではアクセシビリティオブジェクトが生成されないみたいな罠があったり (VoiceOver が有効でなければアクセシビリティオブジェクトを作らない)、やっか

  • YAPC::Asia で「ウェブエンジニアのローレベルプログラミング」という発表をしました | tech - 氾濫原

    ちょっと時間に対して話したいことが多すぎて、各分野での掘り下げが足りなかったとは思いますが、一通り下のほうまで盛りこみました。 電子工学について:自分は学校で電子工学を体系的に学んだことはありません。 YAPC 会期中はそこらへん歩いてます。

    YAPC::Asia で「ウェブエンジニアのローレベルプログラミング」という発表をしました | tech - 氾濫原
    secondlife
    secondlife 2014/08/29
    楽しそう…良い…
  • MacRuby でスクリーンキャスト用のキー履歴表示ツールを作る | tech - 氾濫原

    よくあるツールなんだけど、なかなか希望に叶うものというと見つけにくく、どうせなら自分で書いたらいいかと思ったので書いてみた。やってみたら割とすぐ書けた。 MacRuby のインストールが必要。1ファイルにしたかったので、XCode なしで使っている。あんまり XCode なしでの作例がないが普通に NSApplication.sharedApplication を取得したらいいだけだった。 NSEvent.addGlobalMonitorForEventsMatchingMask:handler: は「システム環境設定」→「セキュリティとプライバシー」→「アクセシビリティ」で macruby を許可しないと使えない。これができるということは、すなわちキーロガーが実装できるということなので、必要なときだけ許可するほうがいいと思う。 #!macruby framework "Cocoa" cl