デザパタ実装例についても書かれた本
- 実践Python3を購入した。
- 幾つかに分類されたデザインパターンについてPython3系での実装例を交えて書かれていて便利そう。(まだチラ見)
- 以下見出しより
- 作者: Mark Summerfield,斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
cythonの本
cythonの本が新しく出た(2015/06)みたいなので買ってみた。
今開発中のシステムはCPUボトルネックではなく、通信ボトルネックなので、あまり使わないかもしれないけど。
でも配列と、画像圧縮扱ってるあたりでは部分的に使えるかもなー。
- 作者: Kurt W. Smith,中田秀基,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/06/19
- メディア: 大型本
- この商品を含むブログ (3件) を見る
CAN通信させてみた(BeagleBoneBlack-RaspberryPi間) - その2(2/3)
概要
BeagleBoneBlackとRaspberryPiの間でCANを利用した簡易通信実験ができるようになるまでに必要な情報をまとめた。
ほぼ先人の情報を参考にしてできたので、内容的には、その際に使用した参考にしたサイトを中心に紹介し、自分で実際にやってみて、間違えたところやうまくいかなかったところ、気づいた点などの情報を追記する形式とした。
間が空いてしまったが第2回は、RaspberryPiでのCAN利用について。
背景
CANを喋れるモーターコントローラーの話し相手に、まずは手元にあったRaspberryPiでCANをしゃべれるようにしてみた。
RaspberryPiはデフォルトではCANは話せない。
SPIの信号をCAN化する方法があったのでそれを試して通信するまでの手順について、参考にしたサイトの情報を記載した。
環境
PC: Ubuntu14.04 64bit (RasPi kernelのクロスコンパイル用)
仮想系。母艦はMacBookProのVirtualBoxとWindows8.1のVMwarePlayer
リンク
-
- 基本的に上記サイトを参考にさせていただき、その通り進めてCANを喋れることを確認した。
- 主な作業は、
- 1) CANのトランシーバ+コントローラ基盤の作成
- 2) パッチを当ててkernel rebuild
- 理由1) MCP2515をSPIから触れるようにするため
- 理由2) canをデバイスとして作成するため
- 3) ユーザ空間プログラムのbuild
- 理由: canのsend/receiveをコマンドベースで実行するため
CAN通信させてみた(BeagleBoneBlack-RaspberryPi 間) - その1(1/3)
概要
BeagleBoneBlackとRaspberryPiの間でCANを利用した簡易通信実験ができるようになるまでに必要な情報をまとめた。
ほぼ先人の情報を参考にしてできたので、内容的には、その際に使用した参考にしたサイトを中心に紹介し、自分で実際にやってみて、間違えたところやうまくいかなかったところ、気づいた点などの情報を追記する形式とした。
初回は、CANのプロトコル仕様について。
背景
モータードライバをCANでコントロールする必要に迫られ、とりあえずCANってどういう仕様?というお勉強から、具体的に動かすために何が必要か(エレキ、ソフトウェア)の調査、実際に作ってみて・buildして実験まではできたので、それをまとめてみることにした。
環境
PC: Ubuntu14.04 64bit (RasPi kernelのクロスコンパイル用)
仮想系。母艦はMacBookProのVirtualBoxとWindows8.1のVMwarePlayer
ロジックアナライザ: LogicCube(LAP-C16032)
StrawberryLinuxや秋月などで10k-12kほどで買えます。マルツでも買えるけどプローブが2個しかついてないみたい。
(マルツの方が安いのでプローブ持ってる人/使わない人は、そちらでいいかも)
リンク
まずは、CANの仕様について以下のサイトでお勉強してみた。
序章含めて全7回分あり、以下の4回を中心に読み進めた。
- CANプロトコルを理解するための基礎知識 (1/2) - MONOist(モノイスト)
- CAN通信におけるデータ送信の仕組みとは? (1/3) - MONOist(モノイスト)
- CANを理解するうえで欠かせない“フレーム”の知識 (1/3) - MONOist(モノイスト)
- 実装や試験で役立つ物理層から見るCANの仕組み (1/3) - MONOist(モノイスト)
上記サイトから、CANの特徴を表し重要と感じたキーワードをピックアップすると以下。
使う分には、ざっくりと以下の意味と背景を知り、トラブルが発生した時にキーワードが思い出せれば最初の段階としてはいいのではなかろうか。(と勝手に思ってる)
- ライン型構造
- マルチマスター方式
- CSMA/CA
- IDを使用したメッセージ・アドレッシング
- 耐ノイズ性に優れた物理層
- エラー検出メカニズム
- データの一貫性
- ドミナントとリセッシブ
- 同期
- ビットスタッフィングルール
- データフレーム
- (リモートフレーム)
- エラーフレーム
- (オーバーロードフレーム)
- コントローラとトランシーバ
感想としては、基本的には、IDとデータがあれば通信できると理解。
それをうまく動かす工夫として、ドミナントの意味と背景、ビットスタッフィングルールとエラー処理あたりがよく考えられてるなぁと感じた。
2線式だが低速の時は、1本切れても通信できたりも。
次回は、RasPi側のCANエレキ、ソフトの準備などについて記載予定。徐々にまとめる予定。
BBB(Ubuntu12.04)で11ac WLANアダプタを利用する
背景
ある探査ロボットを遠隔無線操縦し、画像転送を行う必要があり、帯域を広めに利用したかった。
BBB用に、.11ac WLANドライバをbuildしたので、そのdriverと使い方を公開する。ドライバのbuild方法は後日記載予定。
使い方
8812au.koをdownloadする。
https://github.com/nihohi0428/11ac_driver_for_BBB/tree/master
$ sudo cp 8812au.ko /lib/modules/3.8.13-bone30/kernel/net/wireless/ $ sudo chmod 644 /lib/modules/3.8.13-bone30/kernel/net/wireless/8812au.ko $ sudo /sbin/depmod -a 3.8.13-bone30
WLANアダプタを刺す。
$ sudo modprobe 8812au
11acとして使えてることが分かる。
$ sudo iwconfig wlan0 IEEE 802.11AC ESSID:"xxxxx" Nickname:"xxxxx" Mode:Managed Frequency:5.5 GHz Access Point: DC:FB:02:xx:yy:zz Bit Rate:867 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Encryption key:****-****-****-****-****-****-****-**** Security mode:open Power Management:off Link Quality=100/100 Signal level=-45 dBm Noise level=0 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 lo no wireless extensions. eth0 no wireless extensions. rename4 unassociated Nickname:"xxxxx" Mode:Managed Frequency=2.412 GHz Access Point: Not-Associated Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=0/100 Signal level=0 dBm Noise level=0 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
buildの仕方
- (後日記載予定)