✖
スマフォのテザリングを主回線にした家庭内LANの構築
結局これを買って、あとかなり昔に買ったしょぼいルーターを使って構築してみた。
- インターネット → (LTE) → スマフォ → (Wi-Fi) → イーサネットコンバーター LAN-PW150N → (LANケーブル) → ルーター → (Wi-Fi or LANケーブル) → 各端末
LAN-PW150N は初期設定に LAN ケーブルが必要だけど、昨今の Mac にはイーサネットポートがついてないので、Windows 機をひっぱりだしてきて設定した。スマフォのAPに特に問題なく設定できた。
スマフォのテザリングは切ったり入れたりをよくするので、LAN-PW150N がそれなりの速度で再接続を行ってくれるかが心配だったけど、特にそれも問題ない感じだった。
これで以下のようなことが可能になった
- 同じネットワーク間のコンピュータでの通信 (スマフォのテザリングのオンオフ関係なしに)
- DLNA
- ファイル共有
スマフォのテザリングは 2GHz バンドでしかできないっぽい。ルーターから出す電波は 5GHz バンドにしたほうが干渉しにくくなって良さそうだけど、うちにあるしょぼいルーターだとできないので多少そのへんが犠牲になってる。
↑ これが欲しい。
関連エントリー
- ✖ 今、自宅回線は LTE オンリーで生きているので (テザリング)、スマートフォンがルーターを兼ねてる。だいたいこれでいいんだけど、スマートフ...
- 4本しか結線されてないLANケーブルでハマった 自作キーボードのコネクタとして 8P8C を使っていて、市販のLANケーブルを流用しているのだけれど、特定のLANケーブルで動作せず悩んだ。...
- ✖ 自宅の光回線を解約した。EVO WiMAX 付属の WiMAX + テザリングだけでどんぐらい生きていけるか試してみます。 課題 Windo...
- 実家のネットワーク更新 Before ONU (GE-PON<M>A GE-PON-ONU<1><2>) 光ルータ (RT-200NE) のハブ 光ルータ (RT-...
- Raspberry Pi で別のマシンと有線LANを直結して通信 スイッチを介さず直接イーサネットケーブルを接続して相互通信を行いたいというケースがあった。あんまりやらないので不安に思ったけど簡単にできた。...
JT65
微弱信号通信用の通信プロトコルに JT65 というのがあるらしい。もともと VHF の EME (月面反射通信) 用に考えられたみたいだけど、それを HF 帯の地上間通信にも応用して流行ってる?みたい。実際信号を聞いたことはない。しかしプロトコル自体の解説が全然見つからなくてよくわからない。
- 72bit のメッセージに 6bit シンボルの RS(63,12) (リードソロモン12シンボル長データに51シンボルのパリティ)。
- 72 / 6 = 12 シンボル に対し訂正符号51シンボル
- 64 トーンの FSK
- 2の6乗、すなわち1シンボルにつき1トーン
- 1分間間隔で TX/RX が切り替わる (正確な時間で同期をかける)
細かい部分がまだよく理解できてない。ものすごいおおざっぱに理解すると、
- 厳密にお互い同期した時間を持っていることを前提に
- かなり強い誤り訂正符号を付与して
かすかに受信できる信号を本来のデータにデコードできるようにする、という話っぽい。あとよく使うメッセージに関してはショートハンドメッセージというのを定義してより受信しやすくしている (プロトコルにこういうヒューリスティックな要素があるのはだいぶ気持ちが悪いしチートっぽい)
EME の場合、月まで往復約2.5秒かかるけど、正確な時間の同期はどうしているんだろう? 定数?
関連エントリー
- WebAudio FSK モデム 前文 我々は、ブラウザの WebAudio サポートによって、空気をメディアに使う方法を手に入れた。これにより、またひとつクロスドメイン通信...
- Web Audio (JavaScript) で RTTY (周波数偏移変調) をデコード RTTY (ラジオテレタイプ = 無線による文字伝送) というものがありまして、大変昔昔に考えられた通信プロトコルなのですが、アマチュア無線...
- Ampero Control でのスイッチを押した瞬間のMIDIメッセージ送信 Ampero Control は Bluetooth / USB / DIN で MIDI メッセージを出せるフットスイッチ。かなり汎用性が...
- Mac の時計がずれるので ntp.conf いじってみる なんかしらんが Mac の時計が狂う。JT65 というプロトコルは時刻に強く依存しているため、1秒以内に時計があっていないとうまく交信できな...
- JTAG/SWD 関係の用語 デバッグ機能の分類 デバッグ制御インターフェイス : CPU制御を行う。ブレークポイントやプログラムカウンタの増加(実行)など トレース機能...
換気扇から煙草の臭いが入ってきて不快
結構前からなんだけど、キッチンの換気扇を止めているとき、煙草の臭いが入ってくることがある。不愉快極まわりないうえに完全な対応法がない。吸ってるやつを見つけだして磔にしたい。ヒカリエに磔にしたい。
原因は
- 外にタバコの臭いがしばしば蔓延している
- うちはこのせいで窓が殆どあけれない。磔にしたい
- 部屋の中が負圧になってる
- 浴室の換気扇をつけっぱなしにしているからだと思う
解決方法としては
- 吸ってるやつを全員磔にする
が最も効果的で最良の方法なんだけど、合法的に行う方法が思いついていない。
なので仕方なく、換気扇をプラスチックダンボールと磁石で作った自作の蓋で塞いでる。3ヶ月ぐらいこれで (つまり運用で) カバーしているけど、プラスチックダンボールだと硬さが足りなくて耐久性が低く、よく落ちてきてしまって、これがまたストレスが溜まるんだけど、まぁまぁお手軽なので現状これでやってる…… もっといい方法を知りたい (例えば喫煙者を全員合法的に磔にする方法とか)。
関連エントリー
- ✖ 22:00 ぐらいから1時間ぐらい、タバコの臭いがあまりにもひどかった。基本、止まっている換気扇から入ってくるから、プラスチックダンボールで...
- 煙草の臭いも消せる最強の消臭スプレー TOSHIBA エアリオンスプレー デオドライザー 無香料消臭剤 SG-240SP cho45 東芝(TOSHIBA) ★ 5.0 / 5....
- デスク裏の整理 こんな感じで壁に背を向けて座る感じでデスクを設置したので、普通に部屋に入ってくるとき、デスクの裏側が見えるようになってる。 ケーブル自体はデ...
- デスク整理用のなにか デスクを部屋の中に向けて配置しているけど、必然的に部屋の中側にケーブルが煩雑に這うようになるので、これの見た目を多少でも良くしようと覆いをか...
- ミョウバン使ったら洗濯機の臭いが消滅して快適 標題の通りだけど、洗濯の際、柔軟剤としてミョウバンを使って仕上げると消臭に劇的に効果があった。 【焼ミョウバン】硫酸アルミニウムカリウム(乾...
✖
✖
✖
梅の気持ち BOX cho45
異常に食べたくなったので買った。
梅みんつ的なものは100均で2種類ぐらい買ってみたけど、メーカーによる個体差が激しい (香料効かせすぎていて美味しくないやつもひいた…)。小さめのほうが好きだけど、オリオンのは少し大きい。
関連エントリー
- ピーラーは100均やIKEAのものを買ってはいけない。 IKEA で買ったピーラーの切れ味がよくなくて、うちで不評だったので以下を買った。知り合いの家にあって、便利だったので、検索してみたらすぐ見...
- 今年 子ども関係で買ったもの 先にまとめておくと、おむつの支出が支配的で、それ以外だと直接子ども用のものをあんまり買ってない。絵本とかをあんまり買ってない気がする。 おし...
- 今年買ってあまり良くなかったものまとめ 慎重に買ってるつもりだから、あんまり思いつかないんだけど ブドウ糖 大丸本舗 ぶどう糖 ボトル入 135g cho45 大丸本舗 ★ 2.0...
- 保護メガネを新調した 3M バーチュア V4 保護めがね 11672 cho45 スリーエム(3M) ★ 5.0 / 5.0 cho45 今まで100均の保護メガ...
- 今年買ってよかったものまとめ ドラム式洗濯・乾燥機 NA-VX7200L-N パナソニック ドラム式洗濯乾燥機 cho45 パナソニック(Panasonic) ★ 5.0...
✖
元気が全く、全然出てこなくて、どうしようもない。1回大きい負荷がかかって以来全方面にすっかり心が折れてるのがずっと続いてる。
コーディングは、別に、個人的に書きたいコードとかは比較的普通に書けるしまぁまぁ楽しめるけど、誰か別の人間のためにコードを書こうという気が前にも増して一切失くなってる。
アルゴリズム的なものに実装に挑戦しようとしたりしているけど、全然どこから手をつけたらいいのかわからなくて、本当、自分は実力というのがなくて、積み木を積むことしかできないということを痛感してやる気がなくなる。理論的な部分が、イメージは掴めても、コードに落としこめない。コードが普通に書ける人からしたら「はぁ?」って感じのレベルだし、そのせいで、こういったコードを書こうとすると、コードを普通に書ける人にバカにされることばかり考える。「そんなこともできないでプログラマ〜やってるの?」「そんな実装普通しないよww」とか、そういったことが常に頭に浮かぶ。
具体的には、隠れマルコフモデルとかリードソロモン符号とかが、なんとなくかっこいいし実用的そうなのでやってみたいけど、途中で挫折してる。隠れマルコフモデルはモデルの作りかた(学習のさせかた)がさっぱりわからず、コードをコピってきたとしても、欲しいものを作りあげることができない。リードソロモン符号は根本的にガロア拡大体の変換規則みたいなやつが理解できない。リードソロモン、ググっていると「こんなのもできないのは〜」みたいのがひっかかってほんと萎える。
コード以外でも、モールスの聞き取りは気分転換にやっているつもりなんだけど、全然成長している感じがしない。こっちは定量的評価として聞き取り精度を記録していて、全く成長していないなんてことはないんだけど、とにかく成長が遅すぎてめげそう。ある程度は訓練が習慣になっているとはいえ、こんなことしても1円にもならないし、バカにされるだけというのが多重でつらい。
無線工学の勉強も、一定の成果は見せていて、テスト問題で評価する限りでは向上が見られるけど、主観的には向上した感じがしていない。
英語の勉強は毎回それをしようと始める前にめげる。何度始めようとしても「いくら勉強したってネイティブ並に喋れる日本人にバカにされる」状況しか思い浮かばず、メリットが押し潰される。ドヤ顔で日本人に説教されるのほどイライラすることはないと思う。そいつらがみんな死んだらやる気になってもいい。TOEIC満点とるのが普通です、みたいなのやめてほしい。そういった形でバカにされることがないぶん、モールスのほうが100倍ぐらいマシに感じる。モールスは、十分に習得した人がレベルが低い人をバカにすることはあまりない。なんで同じような技術訓練なのに、モールスと英語でこんなに違うのだろう。
いずれにせよ、遅かれ早かれ、技術力の向上を目指すならば以下の点を改善する必要がある
- 数学力
- 英語力
英語はともかく数学力を向上させる方法がさっぱり思い浮かばない。かけ算九九がクソ遅い時点で躓いてる。これら、できる人からひたすらバカにされ続ける感じの分野なので、本当につらい。
RPG のレベル上げみたいに、特に負荷をかけなくても、単純作業をやっていたらレベルが上がっていったらいいのにと思いながらドラクエ1をクリアした。現実は少し強めの負荷を継続的にかけないとレベルは上がらない。同レベル以下のモンスターだと経験値が0になるネトゲのような感じだ。
関連エントリー
- ✖ 何をするにせよ出てきて、自分をバカにしてくる鬱陶しいドヤ顔というのがあって、それを消滅させたい。 何をするにせよ頭にイメージとして自動的に浮...
- JavaScript で書かれたリードソロモン符号のエンコーダ・デコーダ JavaScript だと、デコーダだけ、エンコーダだけ、というのはあったり、GF(2^8) オンリーなものはあったりするんだけど、汎用的な...
- HTML5 Web Audio でモールスを解読する というのをちょっと前に作ったけど日記に書いていなかった。 デモ (音アリじゃないとよくわからない): 音ナシ: http://lowreal...
- モールスデコーダの続き RNN モールスデコーダの試作 | tech - 氾濫原 波形ではなくSFFTの結果を認識させる モールスで必要なのはキャリア周波数の周辺帯...
- 尊重されないということ 普段からほとんど常時に「バカにされている」と感じている。基本的には特定の誰かというわけではない。ただしコンテキストによっては特定の誰かの顏が...
✖
✖
読んでて、実際実践しないとだめなそうな感じだけど、結局役に立たない気がする。
第七章を読んでて、じゃあタバコ臭いやつに対して怒りが出ないようにできるか?っていうと、全然解決方法が見えてこない。
- 「タバコなんて誰もが吸うべきではない」
- ↑ 反論:人の勝手
- 「路上喫煙はもはや禁止されてる」
- ↑ 反論:?
- 「タバコを吸うやつはゴミクズ」
- ↑ 反論:そうとは限らない
- 「タバコを吸うやつのドヤ顔に嘔吐がでる」
- ↑ 反論:誰もがドヤ顔ではない
こんなことしても意味があるように思えない。公正さが相対的だなんてあたりまえすぎる。
生理的に受け付けることができず、逃がれることもできないことに対しての対処法が示されていないように思う。それに対して「認知の方法を変えろ」っていうのはすなわち我慢しろってことと一緒だ。結局我慢するしかないってこと。怒らないで、諦めろってだけ。どうしようもないから、単に諦めて我慢しろ、としか言っていない。「なんであんなゴミクズ共がドヤ顔で路上喫煙してるのに、何も悪くない自分が我慢しなくてはいけないんだ?」とは考えてはいけない。単に我慢して通りすぎろってだけ。どうしようもない。何の救いもない。思考を停止しろってこと。こんなのなら、ツールとしての神様というのを考えると「あいつらには天罰が下るから放っておこう」と考えたほうが、精神のコントロール方法として惨めにならないぶんまだマシだと思う。
関連エントリー
- ✖ 22:00 ぐらいから1時間ぐらい、タバコの臭いがあまりにもひどかった。基本、止まっている換気扇から入ってくるから、プラスチックダンボールで...
- 煙草への憎悪 受動喫煙と肺がんに関するJTコメントへの見解 << 国立がん研究センターについて (国立がん研究センターの見解) ⇒ 受動喫煙は「迷惑」や「...
- ✖ 何をするにせよ出てきて、自分をバカにしてくる鬱陶しいドヤ顔というのがあって、それを消滅させたい。 何をするにせよ頭にイメージとして自動的に浮...
- 小田原駅から小田原城へ歩くと1分に1度は灰皿 小田原駅を降りてまっすぐ小田原城に行こうとすると「錦通り(?)」を歩くことになるが、この通りは治安が悪いのでやめたほうが良い。店前にいちいち...
- ✖ 少しでもストレスが解消されることがら 散歩 掃除 睡眠 うざくないお笑い番組 (内村さまぁ〜ずみたいなやつ) 悪役が出てこないアニメ 高徳な...
✖
認知療法の「考え方を変えろ」というやつが、そもそもアイデンティティを毀損していて、デッドロックが発生しているように感じる。
これまでの「考え方」はこれまでの人生そのものではあるけど、全てを変えない限りではアイデンティティは破壊されない。これからの人生は別に考え方を構築できる?
しかし自動思考ってものすごいアイデンティティに密着しているように感じる。1個取り外せば、全部こんがらがっているから、全部出してくるしかないような。
関連エントリー
- サービスごとの連携サービスの扱い Google https://plus.google.com/connectedaccounts で、接続して公開設定にしていると、プロフィ...
- ✖ 認知行動療法のうち認知療法はいまいちうさんくさい (結局性格を楽観的にしろとしか言っていないように感じるから) が、マインドフルネスはメタ認...
- 人類は特別だという素朴で傲慢な感情なんだろうな 少し前まで反AIなんて笑い話の一つだったのに、すっかりそういう派閥が「変な人」ではないカテゴリになりつつある。AIの進化と表裏一体にすすんで...
- 明治大学博物館 明治大学博物館 駿河台キャンパス(神田・お茶の水)の地下にある広い。2フロアある。企画展、大学史、常設展 考古学領域だと石器の種類が多いかも...
- ネクスケアがすごかった ( vs キズパワーパッド) 3M 絆創膏 ネクスケア キズ キレイに 治す ハイドロ コロイド メディカルパッド M サイズ 10枚 HCD10M cho45 スリーエ...
✖
習慣とか考え方って、急に変化させることはできない。徐々にしかできない。
ウェブサービスは「リニューアル」をすべきではないと思う。少しずつ変えていって、最終的に目的ものに変化させるしかない。過渡をおろそかにしているから、結局ユーザに大きな反感を買う。
✖
何をするにせよ出てきて、自分をバカにしてくる鬱陶しいドヤ顔というのがあって、それを消滅させたい。
何をするにせよ頭にイメージとして自動的に浮かんでくる。これは、特定の誰かというわけではなく (直近で嫌なことを言われた場合その人物になるけど)、いろんな顔が重ねあわさっている。
不愉快なことがあったときも、その「不愉快な顔の集合」みたいなのが脳裏に浮かんでくる。タバコ吸ってるゴミ共の場合、そういう人らのドヤ顔が合成されて脳裏に浮かぶ。
幻視・幻聴というレベルではないと思う。実際それがないことはわかっているけど、自動的に想像される。何が原因になってこれが起こるようになったのか、全くわからない。いつからなのかもわからない。少なくとも大学生のときにはあった。一番遡って思い出せる範囲でバカにされて傷ついたことを思い出すと小学1年生のときの給食で教師にバカにされたことだと思う。今思い出しても理不尽さに腹が立つ。とはいえ、たぶん特定の1事象でこうなったわけじゃなくて、積み増しされて不愉快な顔が合成されているんだと思う。
関連エントリー
- 不愉快なやつが儲かり、不愉快なやつほど社会的に価値がある 不愉快なやつがエントリを書くと、バカな人たちがよってたかって不愉快なやつのエントリを拡散する。不愉快なやつは広告で儲かる。不愉快なやつは不愉...
- 尊重されないということ 普段からほとんど常時に「バカにされている」と感じている。基本的には特定の誰かというわけではない。ただしコンテキストによっては特定の誰かの顏が...
- ✖ 元気が全く、全然出てこなくて、どうしようもない。1回大きい負荷がかかって以来全方面にすっかり心が折れてるのがずっと続いてる。 コーディングは...
- ✖ 不愉快な顔の自動思考も、社会性にスイッチが入っているときは起こらない。これは社会性にスイッチが入っているかどうかじゃなくて、単に社会性の負荷...
- ランハラ なぜポリティカリコレクトネスとか叫ばれまくってるくせに「このプロジェクトは英語でだけ書け!」みたいなランゲージハラスメントがまかり通っている...
✖
タバコについては、独りでいるときはアンコントローラブルな部分があって、即殺したい感じになるけど、社会性にスイッチが入っているときはほぼ何も考えず無視できる程度の自動思考だと思う。実際、喫煙者がいる飲み会とかは (飲み会中は) キレたりはしない。帰ってからがひどいだけだ。
✖
不愉快な顔の自動思考も、社会性にスイッチが入っているときは起こらない。これは社会性にスイッチが入っているかどうかじゃなくて、単に社会性の負荷が重すぎるので、そのへんの自動思考まで負荷がかけられないからだと思う。
しかしタバコに対する不快感の場合、人前で抑えていれば十分なので、社会性スイッチと同期しているのは都合がいいというか、表面的には問題がないけど、何らかの学習とか、コードを書くとかの場合、社会性スイッチが必ず切れている状態になるから、非常に大きな問題になってる。
関連エントリー
- ✖ タバコについては、独りでいるときはアンコントローラブルな部分があって、即殺したい感じになるけど、社会性にスイッチが入っているときはほぼ何も考...
- Fusion 360 の練習 - トグルスイッチ・DCジャック・LED トグルスイッチが面倒そうだと思ったけど、意外と簡単だった (正確な寸法はよくわらないけど)
- ステレオ・バランスド経路 (4ch) 切り替えスイッチ ステレオ・バランスド経路を排他的に2分岐するスイッチが欲しかったが見つからず、仕方ないので作った。 GND もスイッチしたかったが6回路の物...
- ✖ 何をするにせよ出てきて、自分をバカにしてくる鬱陶しいドヤ顔というのがあって、それを消滅させたい。 何をするにせよ頭にイメージとして自動的に浮...
- Quick Charge 2.0 バッテリーから12Vをとる(追試) とりあえずとれるところまではやっていたが、ちゃんと負荷をかけていなかったのでかけたメモ cho45 ★ 5.0 / 5.0 cho45 例に...
✖
22:00 ぐらいから1時間ぐらい、タバコの臭いがあまりにもひどかった。基本、止まっている換気扇から入ってくるから、プラスチックダンボールで蓋 (当然タンボールの方向的に隙間ができにくいようにはしてある) をつけてるにも関わらず、ひどい臭い。しかたないので換気扇をまわして、臭くない方向の窓をあけた。
外にいて多少タバコ臭い、というのがぎりぎり我慢できる限界で、家の中に臭いが入ってくるのは完全に我慢の限界を超えている。タバコ吸ってる汚物は、自分が汚物であることを自覚して、締めきった部屋でもちろん換気扇もつけずに、すなわち自分という汚物を完全に密閉して吸ってもらいたい。それができないならタバコを吸うな汚物。
関連エントリー
- 換気扇から煙草の臭いが入ってきて不快 結構前からなんだけど、キッチンの換気扇を止めているとき、煙草の臭いが入ってくることがある。不愉快極まわりないうえに完全な対応法がない。吸って...
- ✖ 〈増補改訂 第2版〉いやな気分よ、さようなら―自分で学ぶ「抑うつ」克服法 cho45 デビッド・D.バーンズ ★ 3.0 / 5.0 cho...
- 急激な体調不良 月曜日20時ぐらいに急激に全身倦怠感が起こり、だんだん体が重く、21時には寝はじめたがこのときはもうほとんど動く気がしないぐらいだった。寒気...
- 煙草への憎悪 受動喫煙と肺がんに関するJTコメントへの見解 << 国立がん研究センターについて (国立がん研究センターの見解) ⇒ 受動喫煙は「迷惑」や「...
- 煙草の臭いも消せる最強の消臭スプレー TOSHIBA エアリオンスプレー デオドライザー 無香料消臭剤 SG-240SP cho45 東芝(TOSHIBA) ★ 5.0 / 5....
✖
✖
つかれた
✖
今年買ってよかったものまとめ
ドラム式洗濯・乾燥機
買ってから半年ぐらい経ったけど不満なし。常に乾燥まで一気にやっていて、一切外に干していない。
食洗機
これも買ってから半年ぐらい経ったけど一切不満がないし、これなしではもはや生きていけない。
手で洗うよりも確実に綺麗になるので安心感がある。無理してでも設置する価値が絶対にある。
食洗機用小物カゴ(丸型) TD10 cho45
小物洗うには別途カゴも必要。これは厚さを2段階に調節できて便利。ステンレスだから清潔な感じがするし良い。
ルンバ
これも買ってから半年ほどだけど満足度が高い。普段の掃除の殆どを自動化できる。
これに限らないけど、ここまで書いた「家事自動化」は確実に生活が向上する。特に、1つ自動化できればその間に他のことをすることができる。
シャトルシェフ
これは自分では買っていなくて、結婚祝いにもらったんだけど、同じように便利。
煮ている間、火を使わないのでつきっきりでいる必要がなくなる。家事自動化と同じような効果があって、他のことに時間を使うことができるようになる。洗濯機まわしつつ、食洗機まわしつつ、ルンバを起動して、シャトルシェフでカレーを作りながら風呂に入ったりとかできるようになる。神か。
髪の毛くるくるぽい
掃除しやすくなっていい。あと見てると渦ができて楽しい。ただ、設置方法的に、くるくるぽいに髪の毛が挟まっていることがあって、これがうまく解決したらいいなあと思う。
万年筆
kakuno のコストパフォーマンスが非常に高い。書くのが楽しくなる。勉強とかテンションあがらないけど、多少テンションをあげることができて良い。
これらも買うとさらにテンションをあげることができる。インクを早く使いきるぞ!っていうモチベーションが生まれるのでかなり良い。
スピードサラダ
スピードサラダ 19639 cho45
切れるピーラーを使うべき。千切り機能が思いのほか便利だった。
ロールシャープナー
包丁研ぐの面倒だけど、これだとすぐ研げるので良い。切れない包丁はかえって危険なのでこまめに研げるのがいい。
10口OAタップ
10口ある OA タップはなかなかない。四角でデザインもわるくない。横と縦につけれるので、幅が大きいACアダプタが多い場合も有効に使いやすい。
ACアダプタ繋げるタップ
AC アダプタばっかり繋げる場合、こういうのがあったほうが便利。
テービルタップボックス、モール
テーブルタップボックス、モールは「見た目」の観点から語られることが多いけど、ルンバを使う場合、ケーブルを床に這わせると悲しいことになるので、これらが必須。もちろん見た目もかなり良くなるので大変良かった。一旦設置したら動かすことも殆どないので、面倒くさがらず一回やったらよい。
ドリルドライバ
ドリルとしても使えるし、ドライバとしても使える。クラッチがついてるので一定の締め付け度になると空転してくれる。普通に使ってる。
踏み台 セノビー
トレードワン 踏み台 高さ39cm×幅39×奥行32cm 折り畳み 隙間収納 ステップ 室内・屋外 洗車 釣り ブラック セノ・ビー のっぽ君 10052 cho45
うちが狭いので、あまり踏み台とか買っても置き場がないんだけど、これだと折り畳めるので便利。普通に使いまくってる。
ワットモニター
消費電力の可視化は重要。まずは測定。間違った思い込みで節電しても効果は薄い。
関連エントリー
- 急速充電用の USB ACアダプタでいいのがない。 手元にあったACアダプタが突然死したため、代わりのを探しているけど、いいのが本当にない。不思議 アダプタ内で D+ D- ショート(急速充電...
- 今年買ってあまり良くなかったものまとめ 慎重に買ってるつもりだから、あんまり思いつかないんだけど ブドウ糖 大丸本舗 ぶどう糖 ボトル入 135g cho45 大丸本舗 ★ 2.0...
- 食洗機による日常生活ゲーミフィケーション 長らく (本当に長らく) 欲しかった食洗機をついに購入した。今迄購入に踏み切れなかったのは、置く場所がとにかく問題だったからだ。しかし、いろ...
- ルンバ770 を買った cho45 ★ 4.0 / 5.0 cho45 数日つかってみたけど確かに心底便利だなあと思う。有利な点は明白なのでおいといて、気になる点を...
- オーブンレンジをパナソニックのビストロに買い替え パナソニック スチームオーブンレンジ ビストロ 30L ヘルツフリー ブラック NE-BS805-K cho45 パナソニック(Panaso...
AVR progmem に long を置く方法
PROGMEM をつけると (const も必須)、その変数の示す先がプログラムメモリー領域になる。そのままだと使えないのでワーキングメモリ (SRAM) にコピーする必要がある、という話。大きい定数は SRAM に置けないので、基本的にプログラムメモリ (フラッシュメモリ) 上に置いて、必要なときだけコピーするようにする。
avr/pgmspace.h に byte やら word を読み出す関数は提供されているけど、long はない。どうするのが正しいのかなあと思ったけどよくわからなかった。
結局以下のように memcopy でうまくいった。
const uint32_t MORSE_CODES[] PROGMEM = {
...
};
uint32_t current_sign;
memcpy_P(¤t_sign, &MORSE_CODES[character], 4);
progmem 調べていると prog_ が prefix された型を使え、って書いてあるのがよく検索ででてくるけど、それは obsolete で、使うとエラーになる。ヘッダを読んだほうが良い。const と PROGMEM をつけるのが正しい。
しかしヘッダ見ると far とか near とかよくわかんない関数がいっぱいあって混乱する。far は 64KB 以上のフラッシュがあるデバイスしか関係ないっぽいので気にしないほうがいいっぽい。つまり near_ だけ使っていれば良い (実際、 near も far もついていない関数は near のエイリアスになっている)
ヘッダファイルの冒頭部分の一部を訳してみた。
\note If possible, put your constant tables in the lower 64 KB and use
pgm_read_byte_near() or pgm_read_word_near() instead of
pgm_read_byte_far() or pgm_read_word_far() since it is more efficient that
way, and you can still use the upper 64K for executable code.
All functions that are suffixed with a \c _P \e require their
arguments to be in the lower 64 KB of the flash ROM, as they do
not use ELPM instructions. This is normally not a big concern as
the linker setup arranges any program space constants declared
using the macros from this header file so they are placed right after
the interrupt vectors, and in front of any executable code. However,
it can become a problem if there are too many of these constants, or
for bootloaders on devices with more than 64 KB of ROM.
All these functions will not work in that situation.
可能なら、定数テーブルは 64KB 以下に配置し、pgm_read_byte_far() や pgm_read_word_far() の代わりに pgm_read_byte_near() や pgm_read_word_near() を使ったほうが効率が良いし、なおかつ 64KB 以上は実行コードに使える。
プリフィックスに _P がついている全ての関数はELPM 命令を使わず、フラッシュROMの64KB 以下を引数にとる。これは大抵の場合、このヘッダファイルのマクロを使って定義されたプログラムスペース定数はリンカーが割込みベクターのすぐ後に配置するので、気にすることはない。
しかしながら、もしこのような定数が多すぎる場合や、デバイス上のブートローダーが 64KB 以上の場合問題をひきおこすかもしれない。これらの関数はこのような状況では一切動かないだろう。
関連エントリー
- MCD-ST Liberty SW License Agreement V2 はフリーなライセンスか? STM32CubeMX でジェネレートされるコードは MCD-ST Liberty SW License Agreement V2 というラ...
- ASUS ZenFone 2 の Android M (6.0) アップグレードは遅延 2016 Q2 には (すなわち6月中には) アップグレードするという話だったのですが、どうやら遅延しているようです。以下はフィリピン版の ...
- textarea.value は代入すると値が変わる 以下のような挙動をする。 var textarea = document.createElement('textarea'); textar...
- 広色域時代の画像の正しい扱いかた モバイル端末も iPhone7 など DCI-P3 サポートが増えてきて、CSS での広色域サポートもはじまりつつあるなかで、サーバサイドな...
- STM32F072 で、ユーザーコードから DFU モードに入る。 STM32 には出荷時点でブートローダーが入っていて、様々な方法ですぐ書きこめるようになっている。ブートローダーは、書き換えできない「システ...
電子部品の整理
抵抗器とかコンデンサとかをうまく整理する方法を考えてる。とにかく種類が多いし、そこそこ体積があったりするので面倒くさい。
値わけして袋詰めするまではいいとして、袋がばらばらにあっても、ソートされていないと見つけることができないのでゴミと変わりがない。
抵抗
抵抗はそんなに大きくないので (100本ぐらいだと結構…) 100均のハガキ用バインダーにだいたい納まった。E24 系全部持ってたりすると2冊ないとダメそう。
コンデンサ
電界コンデンサだと特にだけど、そこそこ体積があるので、バインダーみたいのに入れこむのはつらい。こちらは普通に横長のプラスチックケースにソートして入れるみたいにしてみた。
本当は仕切りが可変できるパーツボックスがあればいいんだけど、結構高いのしかないので、これで我慢する。
半導体
半導体が一番悩ましい。ソートしようがないので、できるだけ 一覧性が高い形で保存したいけど、いい方法が思いついてない。
基本は用途別にわけていくのがよさそう。
- ダイオード
- 整流用
- 小信号用
- ツェナー
- LED
- 形別にわける
- トランジスタ
- 耐圧ごと? になんとなくソート?
- フォトカプラも
- FET
- 耐圧ごと? になんとなくソート?
- センサー系
- ロジックIC
- オーディオ関係IC
- マイコンチップ
関連エントリー
- チップ部品 1608 (1.6mmx0.8mm)のチップコンデンサを安いばっかりに現物見ずに買ってみたらだいぶ小さすぎた…… 3216 か 2012 に...
- チップ部品のススメ 最近はできるだけチップ部品を買うようにしている。特に抵抗やキャパシタではチップ部品のメリットが極めて多いように思うからだ。 小さいので保管に...
- ダイソー300円スピーカーのちょい改造 なかなか見た目も可愛いのでエンクロージャーから作りなおすというほどでもない。吸音材(ホワイトキューオン)をいれるのと、回路定数だけ見なおすこ...
- 「コイルとコンデンサは電圧と電流の位相差を90度進めさせる/遅れさせる」とはどういう意味なのか 「コイルとコンデンサは電圧と電流の位相差を90度進めさせる/遅れさせる」という説明を良く見ますが、どうも直感的に理解できていませんでした。電...
- フィルムコンデンサを分解してみる 0.1μF 100V (おそらく) のフィルムコンデンサ。樹脂で覆われているので ニッパーやらカッターやらでゴリっとやると剥れる。リード側は...
✖
1アマ (第1級アマチュア無線技士) 試験を受験した
アマチュア無線の試験を前回 (3級) 受けたのは、まだ電信受信試験があった中1のときだったので、実に14年ぶりぐらいの試験になった。その間に電信の試験は廃止され2級と1級はあまり難易度に差がなくなったみたいなので (数学的な部分だけ?)、2級は受けないことにした。
動機
- 10MHz, 14MHz (2級以上で許可) に出てみたくなった
- 3級とか小学生でもとれるし恥ずかしい感じがする
- 資格の説明が「 アマチュア無線局の無線設備の操作」 とシンプルになってかっこいい
やりたいことは2級でもできるし、QRO (2級で最大200W、1級だと最大1000Wまで許可されるけど、集合住宅だと出力をあげるのは悪手) する気もないので、モチベーション的な問題が大きい。
勉強
昔はどうだったか知らないけど、1アマは難しい難しいと聞いていた割に、今はそんなに難しい試験ではないように思った。中学で数学ちゃんとやって卒業してたら余裕、みたいな感じだと思う…… (複素数の計算が一部あるけど、1アマだとたいしたことはしない) 電信聞き取りがないし、ほんと単に数学力が難易度に直結する。
自分は中学・高校で数学をちゃんとやらなかったばかりか、かけ算九九でミスをするレベルなので、そのへんが大変つらかった。問題を方程式にするまではできても、かなりの頻度で計算ミスをして、しばらく気付けないことがある。計算ミスが多いと、それに気をとられるがあまり、考慮不足で根本的に間違えることもあって辛い。
2ヶ月前から落ちてもいいから基礎からというつもりで準備をしたけど、本気でやりまくったのは最初の1ヶ月だけで、模試をしてみたら合格点を超えてしまったのでだんだんやる気が落ちていった。使った本は
と、中学生レベルの計算を思い出すためにドリルを買って2回ぐらいやった。高校受験用だと中1〜3まで纏まっていて便利。
ドリルは体感的にはかなり効果があって、その後問題を解くのが気分的にもだいぶ楽になった。
あと、本でよくわからなかったところは以下のサイトが大変わかりやすかった。たぶん以下のサイトと過去問題だけでも工学は受かると思う。
前述の通り、複素数に関しては1アマでは普通に文字式を解くのと変わらないレベルのことしか要求されないので、余計な勉強はしてないし、特に苦手意識もつかなかった。新たに覚えたのは分母にj がきたとき共役複素数で分母を有理化というルールだけだった。
本番
直近の過去3回の問題は事前にやってたけど、工学は本番の問題が思いのほか難しく感じた。これは1枚目に計算問題が集中しており、なおかつその全てが事前にやった問題集や試験問題に同じ形の問題がないというものだったからだと思う。なのでかなり焦った。そう難しい変化ではないとはいえ、方程式の変形をよくミスするので、結局念のため4回ぐらい解いたりした…… (おかげでこれらは正答できた)
能動素子 (半導体) の問題が全然でなかったなあという印象だった (出たことは出たんだけど)。ことごとく、出たらいいなあとなんとなく思っていた問題はでなかった。逆に、出たら捨てようと思っていた過渡状態の問題がでて悲しかった (けどこれは改めて考えたら解けた)
間違えた問題(A問題の2問)の原因は、理解不足による勘違いと、根本的な解きかたのケアレスミス (2倍するのを忘れた的な) だった。
久しぶりに全力で応用部分の頭使った感じだった。終わったあとヘロヘロになった。
法規は単に覚え間違いが多かった。「無線電信とは~通信設備である」が何度見ても納得いかない。設備じゃねーだろと思うんだけど、定義だから仕方ない……
答えあわせ
試験日の3日後?の15時に公式の解答が出るみたいで、答えあわせをした。(法規、工学ともに、150点満点中 105点 正答率70%以上が合格ライン)
- 法規: 130点 (正答率87%)
- 工学: 140点 (正答率93%)
だった。試験後の印象としては、法規は余裕で工学がヤバイ、だったけど、点数的には逆だった……
マークミスさえなければ、合格しているはず。25日に正式な合格発表がある。
まとめ
やればできた。勉強はじめる前はいろいろあって受かる気がしなかったんだけど、実際勉強してみると、そんなグダグダ言うほどには難しくなくて、これさえ受かないとかだと自分相当ダメなんじゃないかと思ってプレッシャーだった。(難易度的には1陸特より少し難しいぐらいらしく、無線資格としては1陸技・1総通まであるわけで、入門レベルなのだなあという感じ…)
たまには試験的なものをしてみるのもいいかもなあと思う。けど、受けるモチベーションが起こる試験があまりない。多少勉強する姿勢ができたので、継続して何かしら勉強をしたい。
関連エントリー
- ✖ ここ1ヶ月ぐらいでG検定とDS検定という民間検定試験を受けてみてた。Di-Liteとかいう枠組み?のやつ。他の人にすすめられるような試験なの...
- 第二種電気工事士 筆記試験 日曜日が試験日だった。近所の大学が試験会場だった。思いのほかたくさん受験者がいてびっくりしてしまった。学生が結構いたかな。工業高校とかの生徒...
- ITパスポート試験を受けてきた IT技術者なのに情報処理系の試験はまったく受けずに生きてきてしまった。アマチュア無線技士や第二種電気工事士とは違って法的に別にできることが増...
- 1アマ (第1級アマチュア無線技士) 免許がきた 12月10日に受験して、12月24日の合格発表と同時に申請を出し、免許日は1月9日で、それから2日後には不在票 (書留にしたので) が入って...
- 勉強 アンテナの設計とか測定とかをしているうちに、もうちょっとちゃんと無線工学を学んでみようということで、いろいろやってる。 しかし、実際はじめて...
✖
仮にも (こういう言い方をすると怒られそう) プログラマとして働いているのに、情報処理試験を一度も受けたことがなく、勉強の機運が高まっているので受けてみようと調べてみたけど、やはりメリットが感じられず、モチベーションが沸いてこなかった。
情報処理の試験は受かっても別になにか独占業務があるわけではないので、何に価値を見い出せばいいのかよくわからない。「情報セキュリティスペシャリスト」とか名前かっこいい!ぐらいしかない…… ウェブ業界だと、資格持ってても github しか見られないし就職には殆ど意味を感じられない。
勉強すること自体には意味があるけど、過程だけに意味があってもやる気沸いてこない。なんか「これは!!」っていうメリットはないんだろうか。
関連エントリー
- ITパスポート試験を受けてきた IT技術者なのに情報処理系の試験はまったく受けずに生きてきてしまった。アマチュア無線技士や第二種電気工事士とは違って法的に別にできることが増...
- 1アマ (第1級アマチュア無線技士) 試験を受験した アマチュア無線の試験を前回 (3級) 受けたのは、まだ電信受信試験があった中1のときだったので、実に14年ぶりぐらいの試験になった。その間に...
- 第二種電気工事士 筆記試験 日曜日が試験日だった。近所の大学が試験会場だった。思いのほかたくさん受験者がいてびっくりしてしまった。学生が結構いたかな。工業高校とかの生徒...
- ✖ 写真展なんかで写真を見ると、無意識に近付いて見てしまうことがある。しかし写真の場合、撮影時・プリント時の解像度以上の情報は、たとえ近付いたと...
- ✖ もっと丁寧に日記を書いたほうが良いということはしばしば思っているんだけど、それだと気力が持たない。将来的に自分が困りそうなのでメモ書きとして...
✖
今年買ってあまり良くなかったものまとめ
慎重に買ってるつもりだから、あんまり思いつかないんだけど
ブドウ糖
大丸本舗 ぶどう糖 ボトル入 135g cho45
頭良くなるかな〜 と思ったけど (この発想が頭悪い)、まぁ砂糖だね… って感じだった
電工ペンチ
フジ矢 電工ペンチ FA003 cho45
ワイヤストリッパーは便利だけど、圧着端子は別の工具が必要だな、思った。結構つらい。
頭洗うやつ
悪くはないんだけど、ちょっと面倒でたまにしかやらなくなった。でもたまに使うと気持ちいい。充電が地味に面倒なので、非接触充電になったらなあ。
モンキーレンチ
専用サイズのレンチのほうが100倍ぐらい使い勝手が良い。あると便利だけど、あくまで非常用だなあという感じ。100均でもそこそこの種類のレンチは買える。
6口スイッチつき電源タップ
エレコム 電源タップ color style 雷ガード 省エネ 個別スイッチ 6個口 2m ブラウン T-BR04-2620BR cho45
スイッチついててもあんまり使わないので口数が多いほうがうれしい…… 一応プリンタの待機電力が非常に多いのでできるだけ切るようにしてるけど、なんともいえない。
Qi 用のエネループ充電器
Qi (無接触電源) で単3エネループを充電するやつ。Qi は電力供給能力が低いので充電速度が遅いし、結局普通ので充電していて使ってない。
舌ブラシ
舌は確かに綺麗になるけど、最近使ってない。商品は悪くないと思う。
結論:よくなかったものまとめてもテンションあがりませんね。
関連エントリー
- 電工ペンチを捨て、専用ストリッパーと圧着ペンチを買った 電工ペンチ (圧着とかストリップとか一通りできる便利道具) を捨てて、ちゃんとした圧着ペンチとストリッパーをそれぞれ買った。 ホーザン(HO...
- 12本のNiMHを充電できる充電器を買った いままでSANYO時代のエネループ充電器を使っていたが、必要性が増してきたのでこのようなものを買った。 ニッケル水素充電池用充電器 単3単4...
- USB 電圧・電流計 【ノーブランド】 USB簡易テスター ストレート型 cho45 ルートアール ★ 5.0 / 5.0 cho45 これ安いし1個あるととても...
- 電源タップ cho45 ★ 3.0 / 5.0 cho45 あまりない10個口だとこれが一番良さそう。1個持ってて、口数が多いことに安心感がある。あと四...
- ニッケル水素 (NiMH) 充電池はアスクルかロハコで買うのがよさそう ニッケル水素充電池というとエネループだけど、これが最近どうもかなり高くなってしまっている。 【Amazon.co.jp限定】パナソニック エ...
✖
数学ができない人間に特に便利な、方程式を自動で解くツール (Maxima)
方程式解くのがクッソ苦手でも、コンピュータで方程式を解くためのツールというのが存在するので、大抵のものは自分のようなバカでも自動で解くことができる。
Maxima は Common-Lisp で書かれた数式処理ツールで、方程式を解くこともできる。例えば以下のように
(%i96) assume(C > 0, L > 0);
(%o96) [C > 0, L > 0]
(%i97) solve([ (2 * %pi * f * L = 1 / (2 * %pi * f * C))], [f]);
1 1
(%o97) [f = - ---------------------, f = ---------------------]
2 %pi sqrt(C) sqrt(L) 2 %pi sqrt(C) sqrt(L)
(%i98) tex(%);
$$\left[ f=-{{1}\over{2\,\pi\,\sqrt{C}\,\sqrt{L}}} , f={{1}\over{2\,
\pi\,\sqrt{C}\,\sqrt{L}}} \right] $$
(%o98) false (負のやつが出てくるのはどうしたらいいのかわからない。f > 0 を assume しても消えない)
また、出てきた方程式は tex(%oNN) とすると tex 記法にできて、そのまま使える (手直しが必要な場合も多いけど)
数学ができない僕みたいな人間にとってはこの程度の使い方でも死ぬほど便利だと思う。プログラムを書いてるとしばしば方程式を解いて使う場面があって、そういうとき試行錯誤なしにパツイチで求める式が出てくるのはうれしい。
問題は数式を Maxima の式になおすとこなのですこしだけメモ。演算子, ベーシックな関数
| 式 | 例 |
|---|---|
| y = 2 * x | |
| 2^n | |
| sqrt(2) | |
| %pi | |
| %e^(-t / (C * R)) | |
| sum(2 * n, n, 1, k) |
simplify_sum
sum をとにかく計算したいときは
$ load(simplify_sum); $ simplify_sum(sum(2 * n, n, 1, k));
ってやると
ってでてくる。便利すぎる。
log10
log10 はなぜか定義されていないので
log10(x) := log(x) / log(10)
してあげる必要がある。面倒だから最初から定義されていてほしい。
assume()
よくある、一部変数の値の範囲を仮定できる。一回定義したのは forget(定義) で消せる。全部消したいときは forget(facts()) で消せる。
関連エントリー
- アンテナアナライザの回路 シリーズ抵抗1本型 http://www.rigexpert.com/index?s=articles&f=aas このページが面白いので、1つ1つ見ていきたい...
- ✖ 最近ちょっと数学がおもしろい。数学といってもレベルが低いことしかしてない (なんといっても僕は微分積分を高校で習っておらず、微分積分の解きか...
- ✖ 直列/並列共振回路の共振周波数 リアクタンスとの関係 インピーダンスの式 共振状態ではリアクタンス部(虚数部)はゼロになる (抵抗成分だけ)...
- 伝送路中の定在波の最大電圧と最大電流 伝送路インピーダンス50Ω 送信機出力 50W では、完全に整合していれば、50Vrms 1A になる。ただ、SWR が悪化すると (すなわ...
- アンテナアナライザの回路 - ブリッジの三つの電位差を測るタイプ http://www.rigexpert.com/index?s=articles&f=aas ブリッジの50Ω/50Ωで分圧したほうの電位...
Dell UP2414Q 4K 23.8インチディスプレイ
Dell ディスプレイ モニター UP2414Q 23.8インチ/4K/IPS非光沢/8ms/DPx2,HDMI/AdobeRGB 99%/USBハブ cho45
4K で10万円を切る値段のがでてきた。23.8inch 3840 x 2160 非光沢 IPS。重要なのはディスプレイサイズが今までのに比較して、小さいところだと思う。AdobeRGB 99% カバーらしいし、写真扱うなら本当に欲しいものが出てきた感じだ。
ディスプレイのppiはどれぐらい必要か? というのを書いたけど、これの場合、ppi は約185。デスクトップに置いたとき、ディスプレイの大きさとのバランスが良いのがでてきたなぁという印象。
MacBook の最新モデルからは 4K 解像度に対応しはじめたので、ようやく使える環境が整いつつある。しかし、割と最近にディスプレイ買ったばっかりなのでちょっと手が出ない…… (とかいって買いそう)
function ppi (w, h, inch) { return Math.sqrt(w * w + h * h) / inch };
ppi(3840, 2160, 23.8); //=> 185
関連エントリー
- 4Kと2Kが同じにみえる、という人もいるらしい。 たとえば視力2.0の人が300ppiのディスプレーで十分に綺麗に(隣り合うピクセルを区別できない)見れる距離で使っていたとしたら、同じ鑑賞距...
- 4Kモニタ、24インチ (P2415Q) か、27インチ (P2715Q) か Dell 4Kモニター 23.8インチ P2415Q(3年間無輝点交換保証/sRGB 99%/広視野角/IPS非光沢/フリッカーフリー/DP...
- ディスプレイのppiはどれぐらい必要か? 疑問:ディスプレイサイズが大きくなるほど鑑賞距離も長くなっていき、ppi もそれほど必要なくなるはずだが、実際のところどれぐらいの ppi ...
- 紅葉の写真が綺麗に見えないのはディスプレイ解像度のせいです 桜もそうだけどディスプレイ解像度が足りないとほんとに綺麗にみえない。
- 最近書いたやつをあとで読みなおす用のまとめ カメラ・写真関係 「標準レンズ」について 写真のプリント画質と画角・人間の視力 手ぶれを無視できるシャッタースピード レンズの解像度限界 デ...
✖
✖
✖
✖
Mac で SD カードの速度を測定
買ったSDカードあるいは持っているSDカードの速度がどんなものか測りたいとき、Mac だといまいち良いツールがなかったけど、いつのまにか良さそうなのがでてた。
ただ、SDカードの領域を埋めつくすまで書きこもうとするのでかなり時間がかかるのがイマイチな感じ。意図としてはカード全体がちゃんと動いてるかどうかをチェックという感じだと思う。実際、途中から速度が大幅に変わったりする。
以下のスクリーンショットは手元にあった microSD カード (カード上の表記は Class10) を測定中のもの。最初は 6MB/s だったけど、途中から 11MB/s ぐらいになった。Class10 は綺麗な状態での書き込み10MB/sを保証するので、仕様には適合している。
関連エントリー
- SDカードリーダーの速度が出ないときの挙動チェックリスト UHS-II 対応で USB 3.2 Gen1 接続し、最大 200MB/s ぐらいの読み込み速度が出るはずなのに、速度が出ないときの原因 ...
- Raspberry Pi の SD カードを Mac でバックアップ 特筆するほど難しいことはないけど書いておく。基本的に dd を使う方法が最速だと思うけど、dd コマンドはうっかり使うと死ぬ感じなので、こう...
- ✖ SP Silicon Power シリコンパワー microSDHCカード 16GB class10 アダプタ付 ブラック SP016GBS...
- 一度セットアップした Raspberry Pi を使いまわす Raspbian を書きこんで適当にセットアップする NOOBS は使わないこと。 SDカードのコピー dd で普通にもってくる。 $ di...
- FlashAir TOSHIBA FlashAir SDカード 8GB SD-WL008G cho45 東芝(TOSHIBA) ★ 3.0 / 5.0 cho...
✖
AVR のタイマー計算機
というのを作ってみた。
AVR に限らないけど、マイコンで時間を測るにはCPUクロックを数えるわけですが、欲しい時間に対して分周比とかを求めるのが面倒なのでかいた。
F_CPU は CPU クロック数、Seek Freq. のほうに欲しい周波数または時間間隔を入れて、Calculate を押すと、各分周比において CTC でいくつを設定すればいいか、あるいはオーバーフローでいけるかどうかとかを出す。
16MHz で 1msec を測りたい場合、
Pre-scaler:1, 16bit Timer CTC:16000 Pre-scaler:8, 16bit Timer CTC:2000 Pre-scaler:64, 8bit Timer CTC:250 Pre-scaler:256, no result for 62.5 Pre-scaler:1024, no result for 15.625
このようにでる。この場合は 8bit タイマーで 64 分周して CTC を 250 に設定したらよい。
関連エントリー
- AVR で USB 接続の PC キーヤーを作る PC からモールス符号を発生させて無線機に入力するものが欲しいと思っていた。当然既にそういうのはあるんだけど、どうも気に入るのがないので、必...
- 割込みと WFI 命令を使った sleep の実装 mruby で Raspberry Pi の GPIO をいじるというやつで、sleep をビジーループにしていたのがどうしてもひっかかって...
- Mac で simavr + avr-gdb を使い AVR プログラムを PC 上でデバッグする Mac の場合 AVR Studio を使えないので、いろいろ不便である。しかし一応開発環境がととのった。結構ググったけど、このようにして開...
- Arduino のスケッチをコマンドラインからビルドする http://32bits.io/Arturo/ を使うといいっぽい。ino というコマンドがあったがメンテされてないので ano というフ...
- Rock64 を買って golang で赤外線受信を試してみた Rock64 http://akizukidenshi.com/catalog/g/gM-12382/ というのを買ってみた。 とりあえず ...
1アマ合格
25日発表ってアナウンスされてたと思うんだけど、なんとなく見にいったら24日に発表されてた。合格日は速報の日と同じらしいので、さっさと書いて出してきた。
25日にハガキが届いた。はやい。
関連エントリー
- 1アマ (第1級アマチュア無線技士) 免許がきた 12月10日に受験して、12月24日の合格発表と同時に申請を出し、免許日は1月9日で、それから2日後には不在票 (書留にしたので) が入って...
- 1アマ (第1級アマチュア無線技士) 試験を受験した アマチュア無線の試験を前回 (3級) 受けたのは、まだ電信受信試験があった中1のときだったので、実に14年ぶりぐらいの試験になった。その間に...
- Canyon のロードバイクプレゼントで当選したらしい ULTIMATE CF SLX 8.0 があたった…… アンケートに答えるともらえるキャンペーンしてたので応募しておいたんだけど当選したらし...
- YAPC::Asia Tokyo 2014 の感想 全体的に Perl 以外の話が例年にも増してたいへん多かったように感じた。といってもやっぱり Perl を知ってること前提にして他の話題、と...
- MicroVert アンテナの設計ツール なんかエクセルで計算できるのがでまわっているっぽいのだけれど、HTML で計算したいので JavaScript で書きなおした。 http:...
Raspberry Pi がきたのでセットアップして I2C デバイスを読むところまで
Raspberry Pi だ! ππだ!! Raspberry Pi は約5000円ぐらいで買うことができるカードサイズの Linux パソコンです。当然スペックとしてはしょぼいのですが、ホームサーバ用途とかには十分な感じです。
まぁそれだけでも安くて便利なボードなのですが、キモはさらに GPIO (General Purpose IO) がついているところです。基板にピンが立っていて、そのピンを Linux 側から制御できるので、マイコンの延長として使うことができます。普通、マイコンといえども性能が良かったり複雑なインターフェイスをつけようとすると、結構コストがかかるので、多少複雑なことをしたい場合、このような安い Linux コンピュータで比較的富豪的に諸問題を解決するのは個人レベルではかなりコストパフォーマンスが良い気がします。
これです。クリアケース付きです。本体の他に
- 4GB Class4 以上 SD カード
- microUSB 5V 0.7A以上のACアダプタ (容量が多いほうがよい)
- USB Wi-Fi アダプタ
が必要です。
SD カードの速度
Raspberry Pi 側は UHS-1 とか SDXC には対応していないので、仕様上 Class10 の SDHC 32GB というのが最大限富豪な選択になります。。
http://elinux.org/RPi_SD_cards を見ると、だいたい Read Write ともに 20MB/sec 程度でればいい方みたい (異常に早い報告もあるけどよくわからない)。
イメージの書きこみ
オンラインインストールのものではなく、普通にイメージを落としてきて Mac から書きこみました。特別別途ソフトがいるとかはないので楽です。
diskutil list diskutil unmountDisk /dev/disk99 sudo dd bs=1m if=2013-09-25-wheezy-raspbian.img of=/dev/rdisk99 sudo diskutil eject /dev/rdisk99
指定するのはあくまでディスクであって、パーティションではないところに注意が必要です (/dev/disk2s1 とかはパーティション)。df で出てくるのはマウント済みのパーティション一覧で紛らわしいので、diskutil list を使ったほうが良いです。dd で指定するディスクファイルは r (raw) をつけて指定します。
dd の指定をミスると指定ディスクの内容が消えて悲しいのでこわい。
dd でイメージ作ってるけど、初期設定でパーティションを拡張するようになっているので、でかいカードを使っておいても損はしない。
初期設定
最初はキーボードと HDMI だけ繋げて起動します。
- Expand Filesystem を実行して、SDカード領域全域を使えるようになる。これは一瞬で終わります。
- Internationalization Options → Locale で en_US.UTF-8 をスペースで選択して、デフォルトを en_US.UTF-8 にする
- Internationalization Options → Timezone を Asia/Tokyo にする。
- Advanced Options → SSH を Enable にする。
- Finish して reboot をする。
reboot が終わったら、とりあえず pi/raspberry でログインしてみて
sudo shutdown -h now
して終了させます。
Wi-Fi 設定
さっさと SSH したいのでネット設定します。
念のため終了して電源ケーブルを抜いてから USB Wi-Fi をつけます。
でもう一度電源ケーブルをさして起動
IP は固定で指定します (SSH しやすいように)
$ sudo vi /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet static address 192.168.0.250 netmask 255.255.255.0 gateway 192.168.0.1 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf # WiFi アダプタが異常に遅い現象が出るのでオフ wireless-power off iface default inet dhcp
めんどうなのでパスは直書き。
$ sudo su # wpa_passphrase ESSID password >> /etc/wpa_supplicant/wpa_supplicant.conf # exit
でもって
$ sudo ifdown wlan0 $ sudo ifup wlan0
以下のようなエラーが出た場合、less /var/log/daemon.log を見るとエラってる部分がわかるはず。
wpa_supplicant: /sbin/wpa_supplicant daemon failed to start
うまくいった場合何も表示されない。daemon.log を見てうまくいっているか確認し、ifconfig を実行する以下のように IP アドレスが割当られます。
pi@raspberrypi ~ $ ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:eb:01:5c:f2
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2434 (2.3 KiB) TX bytes:2434 (2.3 KiB)
wlan0 Link encap:Ethernet HWaddr b0:c7:45:a9:9e:91
inet addr:192.168.0.250 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:176 errors:0 dropped:0 overruns:0 frame:0
TX packets:112 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:36200 (35.3 KiB) TX bytes:17924 (17.5 KiB) これで SSH できるようになったはずなので、手元のマシンからログインします。
$ ssh pi@192.68.0.250 pi@192.168.0.250's password: Linux raspberrypi 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Sep 26 07:18:58 2013 pi@raspberrypi ~ $
~/.ssh/authorized_keys に手元のマシンのキーを追加して公開鍵認証にしとく。これで、もはやキーボードと HDMI はいらないので外します。
dns-sd 化
IP アドレス固定にしているので必須ではないけど、手元のヒストリとかが綺麗になるし、便利なのでやっておく
$ sudo apt-get install avahi-daemon $ sudo insserv avahi-daemon
で avahi-daemon を入れて、起動スクリプトを登録する。
以下のファイルを作って SSH をアナウンスするようにする。
$ sudo vim /etc/avahi/services/multiple.service
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=RaspberryPi</txt-record>
</service>
<service>
<type>_ssh._tcp</type>
<port>22</port>
</service>
</service-group> それで avahi-daemon を再起動
$ sudo /etc/init.d/avahi-daemon restart
これで名前でアクセスできるようになる。
$ dns-sd -B _ssh._tcp $ ssh -c arcfour pi@raspberrypi.local
アップデート
まずこれをやらないとこわいのでやっておきます。upgrade で結構時間がかかります。1時間ぐらい。
$ sudo apt-get update $ sudo apt-get upgrade
ここまできたらあとは普通に自分の環境をつくります。
環境作り
zsh は重いのでいれず、手元の dotfiles は .bashrc も入れてあるのでそれを使います。
$ ssh-keygen # して key を github に登録 $ cd $ git clone git@github.com:cho45/dotfiles.git $ cd dotfiles $ ruby setup.rb $ sudo apt-get install screen libncurses5-dev vim $ screen -S main $ curl -L http://cpanmin.us | perl - --sudo App::cpanminus ### 以下は時間がかかりすぎるのでやめた $ mkdir tmp $ cd tmp $ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 $ tar xjvf vim-7.4.tar.bz2 $ cd vim-7.4 $ ./configure --prefix=/usr/local/vim7 --enable-multibyte --enable-gpm --enable-cscope --with-features=huge --enable-fontset --disable-gui --without-x --disable-xim --disable-perlinterp $ make # かなり時間がかかる $ sudo make install
raspi はさすがに遅いので vim のコンパイルとかはしないほうが良いみたいです。
perl はデフォルトで 5.14.2 が入っているので十分で、cpanm さえ入れればよさそうです。ruby は 1.9.4p194 が入っていて、まぁそのまま頑張るほうがよさそうです。
I2C できるように
デフォルトでは有効になっていないらしいので有効にします。
/etc/modules に以下を追加
i2c-dev
/etc/modprobe.d/raspi-blacklist.conf の以下の部分のコメントアウトする
# blacklist i2c-bcm2708
でリブートして
$ cat /var/log/dmesg | grep i2c $ sudo apt-get install i2c-tools
確認して、関連ツールを入れておきます。
I2C 確認のため MPL115A2 (気圧計) を読む
仕様を確認しておくと
- 3.3V
- プルアップ抵抗は実装済み
- 3.3V ピンから 50mA しかとれない
- 5V ピンは供給電源から本体の電流(700mA)を引いたぶんだけ使える。1A のアダプタなら 300mA
- しかしレギュレータで 3.3V 安定化するか、入出力部分はレベル変換が必要
となっています。ハードウェア部分はミスると普通に壊れるので、気をつけて作業する必要があります。
手元に、ワンチップで簡単そうなのは MPL115A2 という気圧計しかないのでこれを頑張って読むことにしました。3.3V で使えるし、消費電力もほとんどないので簡単そうです。
http://elinux.org/RPi_Low-level_peripherals を参考に結線すると i2cdetect にでてきます。このアドレスは仕様書に書かれてるのと一緒です。
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- sudo してるのは /dev/i2c* のパーミッションが一般ユーザに許可されていないからですが、面倒なので pi ユーザも許可するように変えます。/dev/i2c* は i2c グループが所有者になっているのでi2c グループに pi ユーザを追加します。そのうち必要になりそうなのも追加しとく。
sudo usermod -G i2c,spi,gpio,dialout pi
いっかい exit でログインしなおさないと反映されないっぽいです。
でもって MPL115A2 の仕様書通りに値を読みだして計算します。今回は Ruby で書いてみました。
| #!/usr/bin/env ruby | |
| # coding: utf-8 | |
| class I2CDevice | |
| # ioctl command | |
| # Ref. https://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/include/linux/i2c.h | |
| I2C_RETRIES = 0x0701 | |
| I2C_TIMEOUT = 0x0702 | |
| I2C_SLAVE = 0x0703 | |
| I2C_SLAVE_FORCE = 0x0706 | |
| I2C_TENBIT = 0x0704 | |
| I2C_FUNCS = 0x0705 | |
| I2C_RDWR = 0x0707 | |
| I2C_SMBUS = 0x0720 | |
| I2C_UDELAY = 0x0705 | |
| I2C_MDELAY = 0x0706 | |
| attr_accessor :address | |
| def initialize(address) | |
| @address = address | |
| end | |
| def i2cget(address, length=1) | |
| i2c = File.open("/dev/i2c-1", "r+") | |
| i2c.ioctl(I2C_SLAVE, @address) | |
| i2c.write(address.chr) | |
| ret = i2c.read(length) | |
| i2c.close | |
| ret | |
| end | |
| def i2cset(*data) | |
| i2c = File.open("/dev/i2c-1", "r+") | |
| i2c.ioctl(I2C_SLAVE, @address) | |
| i2c.write(data.pack("C*")) | |
| i2c.close | |
| end | |
| end | |
| class ACM1602NI < I2CDevice | |
| MAP = Hash[ | |
| [ | |
| "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚".split(//).map {|c| | |
| c.force_encoding(Encoding::BINARY) | |
| }, | |
| (0xa1..0xdf).map {|c| | |
| c.chr | |
| } | |
| ].transpose | |
| ] | |
| def initialize | |
| super(0x50) | |
| initialize_lcd | |
| end | |
| undef i2cget | |
| def initialize_lcd | |
| # function set | |
| i2cset(0, 0b00111100) | |
| sleep 53e-6 | |
| # display on/off control | |
| i2cset(0, 0b00001100) | |
| sleep 53e-6 | |
| clear | |
| end | |
| def clear | |
| i2cset(0, 0b00000001) | |
| sleep 2.16e-3 | |
| end | |
| def put_line(line, str) | |
| str.force_encoding(Encoding::BINARY) | |
| str.gsub!(/#{MAP.keys.join('|')}/, MAP) | |
| str = "%- 16s" % str | |
| # set ddram address | |
| i2cset(0, 0b10000000 + (0x40 * line)) | |
| sleep 53e-6 | |
| i2cset(*str.unpack("C*").map {|i| [0x80, i] }.flatten) | |
| sleep 53e-6 | |
| end | |
| # Usage: | |
| # lcd.define_character(0, [ | |
| # 0,1,1,1,0, | |
| # 1,0,0,0,1, | |
| # 1,1,0,1,1, | |
| # 1,0,1,0,1, | |
| # 1,1,0,1,1, | |
| # 1,0,0,0,1, | |
| # 1,0,0,0,1, | |
| # 0,1,1,1,0, | |
| # ]) | |
| def define_character(n, array) | |
| raise "n < 8" unless n < 8 | |
| raise "array size must be 40 (5x8)" unless array.size == 40 | |
| array = array.each_slice(5).map {|i| | |
| i.inject {|r,i| (r << 1) + i } | |
| } | |
| i2cset(0, 0b01000000 + (8 * n)) | |
| sleep 53e-6 | |
| i2cset(*array.map {|i| [0x80, i] }.flatten) | |
| sleep 53e-6 | |
| end | |
| end | |
| class MPL115A2 < I2CDevice | |
| def initialize | |
| super(0x60) | |
| coefficient = i2cget(0x04, 8).unpack("n*") | |
| @a0 = fixed_point(coefficient[0], 12) | |
| @b1 = fixed_point(coefficient[1], 2) | |
| @b2 = fixed_point(coefficient[2], 1) | |
| @c12 = fixed_point(coefficient[3], 0) / (1<<9) | |
| p [@a0, @b1, @b2, @c12] | |
| end | |
| def fixed_point(fixed, int_bits) | |
| msb = 15 | |
| deno = (1<<(msb-int_bits)).to_f | |
| if (fixed & (1<<15)).zero? | |
| fixed / deno | |
| else | |
| -( ( (~fixed & 0xffff) + 1) / deno ) | |
| end | |
| end | |
| def calculate_hPa | |
| i2cset(0x12, 0x01) # CONVERT | |
| sleep 0.003 | |
| data = i2cget(0x00, 4).unpack("n*") | |
| p_adc = (data[0]) >> 6 | |
| t_adc = (data[1]) >> 6 | |
| p_comp = @a0 + (@b1 + @c12 * t_adc) * p_adc + @b2 * t_adc | |
| hPa = p_comp * ( (1150 - 500) / 1023.0) + 500; | |
| end | |
| end | |
| mpl = MPL115A2.new | |
| loop do | |
| puts "%d hPa" % mpl.calculate_hPa | |
| sleep 0.5 | |
| end |
校正値が入っていてそれを考慮して計算しないといけないので多少面倒だけど、比較的すぐ書けました。
やった〜! 天気図を見た感じではだいたいあってる感じです。センサー自体の精度が ±1kPa なので、下1桁は信用できない値です。
関連エントリー
- NanoPi NEO2 + NanoHAT OLED に armbian しばらく放っておいてどうセットアップしたか忘れたので、https://www.armbian.com/nanopi-neo-2/ armbi...
- Raspberry Pi で別のマシンと有線LANを直結して通信 スイッチを介さず直接イーサネットケーブルを接続して相互通信を行いたいというケースがあった。あんまりやらないので不安に思ったけど簡単にできた。...
- RaspberryPi を家庭内 LAN の DNS キャッシュサーバーに LAN向けのDNSキャッシュサーバ 経緯としてRTX1200 の DNS 機能が TCP フォールバックに対応してないのでオフにした、という...
- Linux 上の LL で I2C する (Ruby) なんとなく i2c-dev.h とかで定義されているAPIを呼ばないと使えないのかなあと思っていたけど、デバイスファイルの読み書きと ioc...
- Ubuntu 18.04 LTS に Tensorflow GPU nvidia driver のインストールまわりで Ubuntu が起動しなくなったり操作不能になったりする。OS 再インストールを何度かし...
SPDY とか新しいプロトコルがよくわからないので簡単にまとめた
HTTP 0.9
RFC (rfc:1945) は1996年 (HTTP 1.0と同じRFCで説明されてる)
最初の HTTP。GET メソッドしかなかった。レスポンスヘッダもない (ボディーだけ)。
HTTP 1.0
RFC (rfc:1945) は1996年
- メソッドに GET POST HEAD が追加された
- ヘッダが追加された
HTTP 1.1
RFC (rfc:2068 → rfc2616) は1997年
HTTP 1.0 に Keep Alive とかを追加したやつ。
- バーチャルホストに対応 (Host ヘッダが必須に)
- Keep Alive が可能
- 1つのTCPセッションで複数のファイルのやりとりができる
- リクエストパイプラインが可能
- リクエストを複数個レスポンスを待たずに送ることができる
- サーバ側で対応が必要なのであまり有効活用されてない
HTTPS
RFC (rfc:2817, rfc:2818) は2000年
HTTP 1.0 または 1.1 を TLS (暗号化層) にのっけたもの (暗号化通信)
(SSL は TLS の元になったプロトコルの名前)
WebSocket
RFC (rfc:6455) は2011年。HTTP を拡張したもの、と言っていいか微妙だけど、HTTP でセッションを初期化して 101 Switching Protocols で専用プロトコルに切り替わる関連技術的なもの。
- ブラウザでソケットのようにサーバと自由に送受信ができるようにするのが目的
- サーバプッシュが可能
- 普通 JS と一緒に使う
SPDY
Google が作ったプロトコル。現在は SPDY Protocol - Draft 3.1 が最新。
- レンテンシを低くするのが目的
- HTTPS のように TLS (暗号化層) にのっかってるので、常に暗号化通信
- HTTP は SPDY プロトコル上にのっかる感じに
- サーバープッシュが可能
- サーバーヒント
- 予め必要そうなファイルをサーバから送りつけることができる
HTTP 2.0
SPDY を元に提唱されてる新しい HTTP のバージョン。SPDY を HTTP 2.0 として標準化しよう、って感じかな。現状では SPDY と一緒。
QUIC
Google が作ってるあたらしいプロトコル。上記までのような HTTP の互換レイヤーの話ではなく、その下のレイヤーのプロトコル。
- レンテンシを低くするのが目的
- TCP の代替
技術の発展とともに TCP がネックになることが増えてきたので、UDP を使って TCP+TLS レイヤーを実装しなおすという感じ。
わからないところ
未来における WebSocket の立ち位置がよくわからない。HTTP 2.0 になったとして (SPDY 実装はすすんでいるし、たぶんなるだろう)、WebSocket はどうなるだろう。HTTP 2.0 上で WebSocket を使うのか、あるいは HTTP 2.0 のセッションを JS からコントロールできるような API が整備されるのか。
関連エントリー
- golang で websocket websocket.JSON を使った場合 JSON をやりとりする場合専用の方法がある (JSON-RPC ライクな実装を書いてみた場合)...
- センサーデータ用に RabbitMQ + MQTT をセットアップする RabbitMQ + MQTT で Pub/Sub サーバを立てることにしました。 いろいろなセンサーのグラフ化にあたって GrowthFo...
- リクエスト時の Cache-Control、max-age=0 と no-cache の違い ほとんどのブラウザで、通常リロードは Cache-Control: max-age=0、スーパーリロードで Cache-Control: n...
- RaspberryPi を家庭内 LAN の DNS キャッシュサーバーに LAN向けのDNSキャッシュサーバ 経緯としてRTX1200 の DNS 機能が TCP フォールバックに対応してないのでオフにした、という...
- HTTPS 開発環境 そろそろ HTTPS でしか使えない新機能なんかを使いたくなるので、すこしずつノウハウを溜めようという気持ちはあります。 localhost...
Linux 上の LL で I2C する (Ruby)
なんとなく i2c-dev.h とかで定義されているAPIを呼ばないと使えないのかなあと思っていたけど、デバイスファイルの読み書きと ioctl だけで普通に使うことができた。
書きこみ
- /dev/i2c-1 とかを rw+ で open
- ioctl で I2C_SLAVE コマンドを使ってスレーブアドレスを指定する
- write する
I2C 的には START -> SLAVE + W -> DATA送信 -> STOP が行われる。
読みこみ
- /dev/i2c-1 とかを rw+ で open
- ioctl で I2C_SLAVE コマンドを使ってスレーブアドレスを指定する
- 読みこみたいアドレスを write する
- read す
I2C 的には START -> SLAVE + W -> DATA送信 -> ReSTART -> SLAVE + R -> DATA受信 -> STOP が行われる。
たぶん一度 write/read するたびに Repeated Start が送られるのかな。
Ruby での例
Ruby でやる場合以下のような感じでいけた。デバイスによってはうまくいかないかもしれない。
class I2CDevice
# ioctl command
# Ref. https://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/include/linux/i2c.h
I2C_SLAVE = 0x0703
attr_accessor :address
def initialize(address)
@address = address
end
def i2cget(address)
i2c = File.open("/dev/i2c-1", "r+")
i2c.ioctl(I2C_SLAVE, @address)
i2c.write(address.chr)
ret = i2c.read(1).ord
i2c.close
ret
end
def i2cset(*data)
i2c = File.open("/dev/i2c-1", "r+")
i2c.ioctl(I2C_SLAVE, @address)
i2c.write(data.pack("C*"))
i2c.close
end
end
関連エントリー
- AVR TWI (I2C) 用のライブラリ そこそこ使いやすい感じなのを学習しながら書いてみた。 https://github.com/cho45/avr-utils/blob/mas...
- ruby-serialport で任意のボーレートを設定するには (ただし Linux に限る) ruby serialport は、このあたりで設定できるボーレートを列挙していて、これら以外のボーレートを設定できないようです (unkn...
- GPIO (sysfs) を使ったソフトウェア I2C 普通の GPIO 経由で I2C できたらなんとなく嬉しいかなと思って作ってみた。つまりソフトウェアでピン状態をいじって I2C 通信すると...
- AVR で USB 接続の PC キーヤーを作る PC からモールス符号を発生させて無線機に入力するものが欲しいと思っていた。当然既にそういうのはあるんだけど、どうも気に入るのがないので、必...
- Ruby で sysfs 経由での GPIO 操作 GPIO の操作はいろいろやる方法があるみたいだけど、LL からだと sysfs への IO を行うのが一番簡単っぽい。以下のような感じでか...
Raspberry Pi の GPIO でシリアル通信
GPIO に UART があるけど、デフォルトではシリアルコンソールとして使うことが想定されていて、カーネルメッセージとかが流れる。これを無効にして、普通のシリアルポートとして使う。
/etc/inittab を書きかえる。ttyAMA0 の行をコメントアウトする
#Spawn a getty on Raspberry Pi serial line T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
/boot/cmdline.txt を書きかえる。デフォルトだと以下のようになっているので
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
- console=ttyAMA0,115200 を削除 (シリアルコンソールのオプション)
- kgdboc=ttyAMA0,115200 を削除 (カーネルデバッグ用のオプション ref. kgdboc
して以下のように
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
で reboot すると普通にユーザレベルで自由に使えるようになる。
3.3V なので、RS-232C レベルにするなら 3.3V でも使えるドライバICを使う必要がある。ICL3232 だと100円ぐらい。
回路
FET らへんは GPIO 25 (22pin) をオンにしているときだけスイッチを入れるための仕組みなので RS-232C のためには必須ではない (GND を普通に繋ぐだけ)
関連エントリー
- Rasberry Pi で使える2000円ぐらいのTFT液晶モジュール http://www.wvshare.com/product/3.2inch-RPi-LCD-B.htm これっぽいものを ebay から買...
- Raspberry Pi 3 で、シリアル経由でシェルを使うには 基本 Raspberry Pi 3 からはデフォルトで UART にシェル割当されなくなったので設定する必要がある。 sudo raspi-...
- Raspberry Pi 3 で自動ログイン systemd になって inittab が消滅したので途方にくれましたが以下のようにするとできました。 serial ログイン UART ...
- Node.js の fs モジュールだけで GPIO の割込みを扱うには? 以下のようにすれば動くことが確認できた。 select や poll を明示的に呼び出すことができないが、edge を設定しさえすれば fs...
- Ruby で sysfs 経由での GPIO 操作 GPIO の操作はいろいろやる方法があるみたいだけど、LL からだと sysfs への IO を行うのが一番簡単っぽい。以下のような感じでか...


![NEC Aterm WR9500N[HPモデル] PA-WR9500N-HP - NEC](https://m.media-amazon.com/images/I/511gs8lfhgL._SL500_.jpg)















































