電力を測定するためのモジュールとしてPZEM-004Tが有名ですが,それの「ケースレスピンバージョン」を自作基板に実装するためのKiCad用シンボルとフットプリントです。
KiCad 8 で動作確認しています。
ScrapboxでCtrl-nを入力できるようにする(AutoHotkey v2)
ScrapboxのEmacsキーバインドは便利ですが,Chromeではデフォルトで新規ウィンドウが開いてしまいます。
ブラウザ操作時にJavaScriptでctrl + nを奪えないかによるとAutoHotkey が良いようですが,同ページではAutoHotkey v1スクリプトが紹介されているので,v2でうまくいった例を記します。
AutoHotkey からAutoHotkey_2.0.14_setup.exeをダウンロード,実行。
AutoHotkey Dashが起動するので,New Scriptから以下のようなスクリプト emacs-like-for-scrapbox.ahk
を作成。
#HotIf WinActive("ahk_class Chrome_WidgetWin_1")
^n::
{
Send "{Down}"
}
C:\Users\ユーザ名\Documents\AutoHotkey に保存される。これをダブルクリックで実行すると以降効くようになる。
永続的にするには,上記ahkのショートカットを,C:\Users\a\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup に置く。
ちなみに最初「#HotIf」の行がなかったときは,当然全ウィンドウに対してこの設定が効くが,これはTeraTerm上でEmacsを開いてC-nをやったりするのと相性が悪く,Emacsが重くなる。なので「#HotIf」を設定した。ahk_class は AutoHotkey Spyで調べられる。
KiCad 7のSpecctra DSNのNPTHがおかしい?
以下のバグは,KiCad 7.0.5 でfix済みとのことです!
KiCad のメジャーバージョンが7になって,白抜き文字や任意のフォントが使えるようになるなど,とても良くなっています。
しかし一点だけ困ったことがあって,NPTH(ノンスルーホール)を含むPCBでDSNをエクスポートすると,キープアウトエリアが異常に大きくなってしまい,freeroutingで正しく処理できなくなってしまうという点です。
自分で置いたMountingHole等ならいったんパッドに置き換えて配線してからまたMountingHoleに戻すという手もありますが,部品のフットプリント自体に「位置合わせ用NPTH」があったりするとそうもいかなくなります。
これについては,以下の手動対処で一応なんとか回避できるようです。
KiCad 7からエクスポートしたDSNファイルを任意のテキストエディタで開く。
以下のような行を探す。
(keepout "" (circle F.Cu 502200))
これを以下のように修正(今のところ,単純に500000を減算することで対処できています)。
(keepout "" (circle F.Cu 2200))
USB3150-30-130-A という部品にも2箇所のNPTHがあり,やはり以下のようなDSNが出力されるのですが,これらの500850を850に書き換えたところうまくいきました。
(keepout "" (circle F.Cu 500850 -1500 425))
(keepout "" (circle B.Cu 500850 -1500 425))
(keepout "" (circle F.Cu 500850 4100 425))
(keepout "" (circle B.Cu 500850 4100 425))
おそらくすぐにバグフィックスされるとは思いますが,とりあえずの対処法ということで。
STLファイルの寸法を知りたい
3Dプリンタでも良く使われるSTLファイルですが,人からもらったSTLファイルの外寸(寸法,サイズ)をさくっと知りたいときはRubyで以下のような感じです。
#!/usr/bin/ruby # stldimensions.rb: STLの外寸を求める。 # 要 stl (Gem) # usage: $0 stlfile require 'stl' class Points < Array def dimension(axis) (self.map(&axis).max-self.map(&axis).min) end end # STLファイル中の全平面の全座標を得る。各要素はGeometry::Point。 points = Points.new(STL.read(ARGV.shift).map(&:last).map(&:points).flatten) # 最大外寸を調べて表示 printf("%.2f x %.2f x %.2f\n", points.dimension(:x), points.dimension(:y), points.dimension(:z))
stlはgemでインストールできます。
$ gem install stl
STLビューアを立ち上げるのが面倒or不可能なときに。
ESPr Developer (ESP-WROOM-02) を電池で駆動する
小型で手に持てるIoT端末を作りたくて,スイッチサイエンスのESPr Developerがどんな電池で駆動できるか色々試しました。
- ESPr Developerは素のESP-WROOM-02よりいくつか回路が追加されているので,その分少しだけ消費電力は高いかもしれません。
- ESPr Developer以外に温湿度センサとNeoPixel WS2813Bも接続してテストしています。
- すべて,ESPr Developer のVINに入れているので,ESPr Developer上の3.3Vレギュレータは通っています。
- 都合により,Li-Poバッテリは使えない前提です。
- 本来は3.7~6.0 VをVINに入れるものなので,3Vは完全に定格外です。従って全くの無保証であり,たまたま動くこともあるんだねくらいの情報です。
電池 | 本数 | 合計電圧 | 動作したか |
CR2032 | 2本直列 | 3V x 2 = 6V | × |
CR2450 | 2本直列 | 3V x 2 = 6V | ○ |
単4 | 3本直列 | 1.5V x 3 = 4.5V | ○ |
単4 | 2本直列 | 1.5V x 2 = 3V | ○ |
単5 | 3本直列 | 1.5V x 3 = 4.5V | ○ |
単5 | 2本直列 | 1.5V x 2 = 3V | ○ |
CR123A | 2本直列 | 3V x 2 = 6V | ○ |
CR123A | 1本 | 3V | ○ |
CR2 | 2本直列 | 3V x 2 = 6V | ○ |
CR2 | 1本 | 3V | ○ |
コイン電池2枚も魅力的だったのですが,とりあえずの結論として,電池と電池ボックスの入手性も考慮して単5✕2本で動かしてみます。