Raspberry PiでIoTなシステム開発:Raspberry PiのI2C
http://www.raspberrypi-spy.co.uk/2014/11/enabling-the-i2c-interface-on-the-raspberry-pi/Raspberry PiでI2Cを使う準備をします。とはいってもこちらの内容をそのまま実行するだけ。日本語の情報だとraspi-blacklist.confを編集して対象行をコメントアウトするという話しが多いのですが、今のディストリビューションの内容だと、そもそもそういったファイルがありませんし、特に変更をしなくても動作しました。あとI2Cはプルアップが必要という記載もありますが、Raspberry Piは基板上で既にプルアップされていますから、追加のプルアップは合成抵抗値と許容電流を確認して判断すべきです。基板の抵抗値はモデル・回路図で確認します。並列のプルアップがあると合成抵抗が下がり、ロー出力時の電流が増えます。ここで更にプルアップを追加すると抵抗値が更に下がって、Raspberry Pi の少ない許容電流量を更に圧迫します。本当はRaspberry Piの基板上からプルアップを外して外部に適正値の抵抗を付けるのがベストでしょう。ただそれはそれで外部回路がややこしくなりますから、とりあえずはオンボードのプルアップ抵抗を残して使うことにします。 “””
You should also read:
Raspberry PiでIoTなシステム開発:OSXのインターネット共有でIPを割り当ててログイン
Raspberry Pi用のpreempt_rtのコンパイル済みカーネルイメージが配布されているのを発見しました。http://docs.emlid.com/navio/Downloads/Real-time-Linux-RPi2/これであればバイク競技用計測器として実用になるものが作成できるかもという期待から、環境を構築してみることにします。本当はXenomaiの方が圧倒的にリアルタイム性が優れているようなんですが、rpi2ではなかなか起動に成功しないようです。https://www.osadl.org/fileadmin/dam/rtlws/12/Brown.pdfhttps://www.raspberrypi.org/forums/viewtopic.php?f=71&t=74686インストールは本家チュートリアルそのままです。ただしbs=1Mだと怒られるので、1mになっています。sudo dd bs=1m if=emlid-raspberrypi2-raspbian-rt-20150401.img of=/dev/rdisk2rdisk2だけ環境とタイミングにより修正ですね。さて本稿の本題はログイン環境の構築です。モニタ無しで運用する場合、最初の最初にPiにどうやってログインするかという問題があります。Piをさわり始めた当初はシリアル通信でログインしていたのですが、このイメージファイルではシリアルが無効化されていました。なお無線LANアクセスポイントになれるようなのですが、自分が使っているWifiアダプタは認識されないようでAPとしては動き出しません。もう一つのやり方としては有線LANでのログインです。以前やったのは、有線LANアダプタがデフォルトでDHCPでIPを取るようになっているので、ルーターを用意して、IPを取得させ、ルーター側の設定画面で割り振られたIPを確認するという方法。これは簡単でよいのですが、今回は手元に使えるルーターが無く、この方法だと時間がかかりそうでした(ルーターが手元に届くまで)。使用する機材も増えるのでスマートではありません。そこで思いついたのがMacのインターネット共有を使う方法。ググって見ると多くの先達が実行しているようです。早速Thunderbolt Ethernet アダプタに固定IPで192.168.2.1を振って接続してみると、あっさり成功しました。ネット上の情報だとクライアントには192.168.2.2が振られるという話しが多かったのですが、実際やってみると、リースされる毎にIPが変わりました。実際の割り当てを確認するには、bootpdのログを見ればいいらしく、以下のコマンドで抽出しました。 cat /var/log/system.log | grep bootpd Jan 28 07:33:20 kawauchiyasuo-no-MacBook-Pro.local bootpd[2491]: DHCP DISCOVER [bridge100]: 1,b8:27:eb:f6:3c:22 Jan 28 07:33:20 kawauchiyasuo-no-MacBook-Pro.local bootpd[2491]: OFFER sent 192.168.2.3 pktsize 300Jan 28 07:33:20 kawauchiyasuo-no-MacBook-Pro.local bootpd[2491]: DHCP REQUEST [bridge100]: 1,b8:27:eb:f6:3c:22 Jan 28 07:33:20 kawauchiyasuo-no-MacBook-Pro.local bootpd[2491]:…
Continue reading...Raspberry PiでIoTなシステム開発: Raspberry Pi にバイナリでNode.jsをインストール
数年前にNode.jsをインストールした頃既に、公式でのRaspberry Pi 用バイナリの配布が終わっていました(正確には配布しているけれども古いバージョン)。今回改めてインストールしようとしたところ、状況は相変わらずで、その一方でNodeのバージョンは大分と進んでいます。公式で配布されているのはv0.10.26で同系の最新はv0.12.7。v0.10.26のリリースは2014年2月なので、流石に古すぎます。既にメジャーアップでv4になっていますが、こちらを使わないにしても、旧系統のできるだけ新しいものを使いたいところです。そこで公式バイナリを使うのは諦めて、新しいバージョンをインストールすることにします。とはいってもPiでコンパイルして数夜の時間をかけたり、クロスコンパイル環境を作る気合いは無いので、バイナリを探すことにしました。定番はhttp://node-arm.herokuapp.com/こちらのサイトのものを使うようですが、僕はひねくれ者なので、http://conoroneill.net/node-v01040-and-v0127-for-arm-v7-raspberry-pi-2-banana-pi-odroid-c1-available/ここのバイナリを使わせてもらいました。このページに書いてあるスクリプトの順番は間違っていますので、 mkdir nodetempcd nodetempwget http://conoroneill.net.s3.amazonaws.com/wp-content/uploads/2015/07/node-v0.10.40-linux-arm-v7.tar.gztar -zxvf node-v0.10.40-linux-arm-v7.tar.gzsudo cp -R * /usr/local/cd usr/local としてください。パスを通しておかないと面倒ですので、.bashrc export PATH=/usr/local/bin:$PATH を追加して、 source .bashrc で反映させます。後は””node -v””/””npm -v””でバージョン番号が出れば成功確認ですね。””” 本文はNode.js 0.10・0.12・4系の時代の導入記録です。これらはサポート終了済みです。現在は公式が提供する対応CPU・OS向けの配布とリリース状況を確認し、旧第三者配布サイトのバイナリを新規導入の標準手順にはしません。
Continue reading...Raspberry PiでIoTなシステム開発:Raspberry Piの組み込み的モクモク用開発環境
現在、自画自賛的にスマートだと思っているRaspberry Piの開発環境の構成は次のとおりです。Raspberry Piのeth0に固定IPを割り当て、同じサブネットのIPを割り振っているMacのイーサネットポートからクロスケーブルで接続し、SSH+SFTPします。これでハブが要らないので、スパゲッティ感を大分と減らすことができます。電源はモバイルバッテリーです。最近のモバイルバッテリーの出力は大分と安定しているので、そう問題は出ないと思います。ただ当たり外れがあるので数種類買う勢いで試したほうがいいでしょう。Raspberry Piとはできるだけ太いゲージの電源専用USBケーブルで接続します。内部の電線が本当に太いかどうかは分かりませんが、電源だけの2線でこの太さなら通常のケーブルの2倍ぐらいの断面積はあるはずです。切って確かめたいのですが、もったいないのでそこまではできていません。無線LANはTELECの事がありますので国産のドングルを使用しています。アクセスポイントの接続設定をwpa_suppicantに記述し、複数のnetworkブロックを記述して、自宅、職場、iPhoneテザリングをシームレスに切り替えます。Mac側はシステム標準のターミナルとAtomです。ターミナルエミュレータはいろいろ試してみましたが、OSX標準のものが一番安定していて、動作も好感触でした。ソースコードの編集は最近流行のAtomです。Remote-FTPを入れると、SFTP経由でRaspberry Pi側のファイルを直接編集できます。さらにterm2も入れると、上のペインでコード編集、下のペインでそのまま実行作業ができ、Emacs的な環境に近づきます。そのままUTF-8で記述できます。2年前にRaspberry Piで制作をやっていた頃は、Emacsだけでゴリゴリやっていたのですが、日曜プログラマなのですぐに操作コマンドを忘れちゃうんです。これで大分とスマートに開発できるようになりました。 “”” 本文はAtomと旧Raspbianで組んだ開発環境の記録です。Atomは2022年12月15日に公式に開発終了となっています。また、USBケーブルの外径だけでは導体の断面積や供給時の電圧降下は確定できません。電源の安定性は対象基板の要求と負荷時の電圧・電流で確認します。
Continue reading...