デザパタ実装例についても書かれた本


実践 Python 3

実践 Python 3

cythonの本

cythonの本が新しく出た(2015/06)みたいなので買ってみた。
今開発中のシステムはCPUボトルネックではなく、通信ボトルネックなので、あまり使わないかもしれないけど。
でも配列と、画像圧縮扱ってるあたりでは部分的に使えるかもなー。

Cython ―Cとの融合によるPythonの高速化

Cython ―Cとの融合によるPythonの高速化

てるてる坊主をつくってみた

概要

LEDで目が光るてるてる坊主を作成した。

背景

  • 先日某所でフィールド実験をすることになったが、天気予報は雨。てるてる坊主を作ってみたが、某氏の「ワニ口クリップで繋げられてるし、LEDで目でも光るのかと思った」という発言を受け、期待に応えてみた。
  • ちょっと疲れてるので、たまには息抜きの投稿でも。

写真

てるてる坊主 ver.1.0


てるてる坊主 ver. 2.0
  • LED対応後


作り方

  • LED2つを直列に半田付けして、100オームの抵抗を挟み、5Vかけるだけ。(1-10mAのオーダー程度を想定)
    • LEDは極性に注意(足の長い方(アノード)が+)

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のVirtualBoxWindows8.1のVMwarePlayer

リンク

    • 基本的に上記サイトを参考にさせていただき、その通り進めてCANを喋れることを確認した。
    • 主な作業は、
      • 1) CANのトランシーバ+コントローラ基盤の作成
      • 2) パッチを当ててkernel rebuild
        • 理由1) MCP2515をSPIから触れるようにするため
        • 理由2) canをデバイスとして作成するため
      • 3) ユーザ空間プログラムのbuild
        • 理由: canのsend/receiveをコマンドベースで実行するため

写真

  • 作ったものたちは以下(クリックで拡大します)
  • 全体像。RasPi B+と、CANのコントローラ(MCP2515)、トランシーバ(MCP2551)を載せた基盤。
  • CANの変換基盤(コントローラ+トランシーバ)。図中の緑と橙の線がCAN_HとCAN_L
  • RaspberryPi B+
  • 参考にした回路図+メモ。回路図は上記リンク先のもの。

次回は、BeagleBoneBlack側のCANエレキ、ソフトの準備などについて記載予定。相互通信させてみた結果など。

CAN通信させてみた(BeagleBoneBlack-RaspberryPi 間) - その1(1/3)

概要

BeagleBoneBlackとRaspberryPiの間でCANを利用した簡易通信実験ができるようになるまでに必要な情報をまとめた。
ほぼ先人の情報を参考にしてできたので、内容的には、その際に使用した参考にしたサイトを中心に紹介し、自分で実際にやってみて、間違えたところやうまくいかなかったところ、気づいた点などの情報を追記する形式とした。
初回は、CANのプロトコル仕様について。

背景

モータードライバをCANでコントロールする必要に迫られ、とりあえずCANってどういう仕様?というお勉強から、具体的に動かすために何が必要か(エレキ、ソフトウェア)の調査、実際に作ってみて・buildして実験まではできたので、それをまとめてみることにした。

環境

PC: Ubuntu14.04 64bit (RasPi kernelのクロスコンパイル用)

仮想系。母艦はMacBookProのVirtualBoxWindows8.1のVMwarePlayer

ロジックアナライザ: LogicCube(LAP-C16032)

StrawberryLinuxや秋月などで10k-12kほどで買えます。マルツでも買えるけどプローブが2個しかついてないみたい。
(マルツの方が安いのでプローブ持ってる人/使わない人は、そちらでいいかも)

リンク

まずは、CANの仕様について以下のサイトでお勉強してみた。
序章含めて全7回分あり、以下の4回を中心に読み進めた。

上記サイトから、CANの特徴を表し重要と感じたキーワードをピックアップすると以下。
使う分には、ざっくりと以下の意味と背景を知り、トラブルが発生した時にキーワードが思い出せれば最初の段階としてはいいのではなかろうか。(と勝手に思ってる)

  • ライン型構造
  • マルチマスター方式
  • CSMA/CA
  • IDを使用したメッセージ・アドレッシング
  • 耐ノイズ性に優れた物理層
  • エラー検出メカニズム
  • データの一貫性
  • ドミナントとリセッシブ
  • 同期
  • ビットスタッフィングルール
  • データフレーム
  • (リモートフレーム)
  • エラーフレーム
  • (オーバーロードフレーム)
  • コントローラとトランシーバ

感想としては、基本的には、IDとデータがあれば通信できると理解。
それをうまく動かす工夫として、ドミナントの意味と背景、ビットスタッフィングルールとエラー処理あたりがよく考えられてるなぁと感じた。
2線式だが低速の時は、1本切れても通信できたりも。

次回は、RasPi側のCANエレキ、ソフトの準備などについて記載予定。徐々にまとめる予定。

固定IP設定失敗の時tips

BBBに載せたdebianで、
/etc/network/interfaceに固定IP設定をしても反映されなくてはまった。
/etc/network/interface~を消したら、ちゃんと反映されるようになった。
多分、一般的にdebian(他のdistr.でも?)全般にそうなのだろう。
/etc/hostsも、/etc/hosts~があって反映されなくて困ったとき、*~を消したら設定された。

BBB(Ubuntu12.04)で11ac WLANアダプタを利用する

概要

BeagleBoneBlack(BBB)で802.11ac無線LANアダプタ(WDC-867U3/添付写真も参照)を使えるようにする。

背景

ある探査ロボットを遠隔無線操縦し、画像転送を行う必要があり、帯域を広めに利用したかった。
BBB用に、.11ac WLANドライバをbuildしたので、そのdriverと使い方を公開する。ドライバのbuild方法は後日記載予定。

環境

BeagleBoneBlack(BBB) Ubuntu 12.04

WLAN adaptor:ELECOM WDC-867U3

使い方

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の仕方

  • (後日記載予定)