linux

raspberry pi を使って何かするメモ。

何ができるかについての(偏った)考え方

  • ADCがない

raspberry piは、一般的なマイコンに付いているADCがついていないので、何かセンサをつなげるならば、デジタル信号がでてくるようモジュール化されたセンサを使うと楽。I2CやSPIはRaspberry piのGPIOにimplementされているので使いやすいのではないか。最近は秋月でI2Cインタフェースのセンサが多く売られている。

  • タイミング制御が得意でなさそう。

OSが走っているので。

 

上の二点のことがあるので、凝ったことをするなら、AVRなりで前処理して、AVR-raspberry pi間をUART,SPIなどで結ぶとか。
今回はraspberry piの動作確認程度を目的に、家に転がっていたI2Cインタフェースの大気圧センサ(秋月で650円, AE-LPS331、以前、液晶表示の温度・気圧計を作るときに使ったチップ)を使って大気圧と温度の履歴をグラフ化でもしてみます。
トラ技2014年7月号の3章にLPS331を使った似たような応用が紹介されていますが、センサは一緒だけどモジュール化しているメーカーが違って、ピン位置が異なるので、見ないようにする。

 

Raspberry piのI2Cピンは1k8Ωでプルアップされている。回路図をみると、R1,R2に相当している。GPIOピンの真横に見えるチップ抵抗。
プルアップが強すぎなので、チップ抵抗をマイナスドライバでふっ飛ばしてしまいたいが、借り物なのでそれもできず、このままやってみる。

 

基板を作って、LPS331をRaspberry piに載せた。
f:id:beiz23:20140726150536j:image:w250f:id:beiz23:20140726150552j:image:w250f:id:beiz23:20140726154939j:image:w250
表裏と載せたところ。

 

i2cの設定は各所で紹介されている通り。
/etc/modprobe.d/raspi-blacklist.conf
/etc/modules
の書き換えと、i2c-toolsでの動作確認。


pi@raspberrypi ~ $ 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: -- -- -- -- -- -- -- -- -- -- -- -- -- 5d -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

接続できた通信相手のアドレスの上位7ビット分が表示される。この場合は5d。
pythonでi2cポートを制御するため、python-smbusをapt-getでインストール。

 

ここまでできたら、あとはソフトウェアの開発。
大気圧と温度を記録してグラフにして他のPCからグラフを見る。までを作ることにする。次エントリ

 

次のラズパイ本が人気です。

 

 

mac osxとubuntu OSインストールめも

なんか結局何回もOSインストールしていて毎回やりかた調べるのめんどいのでメモ。
自分用。
macbook 4,1 (early 2008)に64GB SSD挿入したときの場合。

  • mac osxをインストール。言語・プリンタドライバを色々切っても15GBだとちょっときつい。事実アップデートできず。office 2004は(word, excel, powerpoint)は入った。officeファイル扱うときにしかmacは使わないのでこれでいいか・・。空き容量1.2GB。
  • refitインストール。sudo sh enable.sh, vi refit.confでwait 3sec, linuxを優先に。
  • ubuntu 10.04をインストール。sda3: 10GB / ext4, sda4: 5GB swap, sda5: 30GB /home ext4, でパーティション切る。
  • sudo aptitude update; sudo aptitude safe-upgrade
  • LANG=C xdg-user-dirs-gtk-update
  • update-locale LANG=en_GB.utf8; update-locale LC_CTYPE=ja_JP.utf-8
  • rsyncで/homeをごっそりもってくる。ドットファイルも忘れずに。ドットファイルが移動中はXをログアウトして、それが終わったころにログインするといい。
  • 無線ドライバインストール、ドライバ画面でボタンぽちぽち。
  • octave3.0, octave3.2, gnuplot, emacs23, sylpheed, a2ps, ntp, samba, preload, gconf-editor, python-visual, python-scipy, python-serial, python-numeric, gfortran, fort77, openssh-serverインストール
  • sudo aptitude install ubuntu-restricted-extras
  • sudo aptitude purge ubuntuone系とopenjdk系
  • System > admin > Software sourcesでlucid partnerにチェック。そのごsun-java6類を入れる。
  • System > admin > setup helper for Japanese environment
  • atok x3 入れる。updateファイルとか

[044609]Ubuntu 9.04 Desktop 日本語 Remix CDでのインストール方法
[037494]アプリケーションウィンドウや入力カーソルの下に表示される[ATOK]を非表示にしたい(参考情報)

  • cp ~/etc/hosts /etc/hosts

ここがとても参考になった。
http://www.k5.dion.ne.jp/~r-f/sicklylife/memo/ubuntu1004/setting_and_install.html

SSD用に

  • /etc/fstabを変更していわゆるramdisk(tmpfsのほう)を活用するようにした。firefoxのキャッシュなどはhomeディレクトリのramdiskに保存するように指定。

proc            /proc           proc    nodev,noexec,nosuid 0       0
UUID=x /               ext4    noatime,errors=remount-ro 0       1
UUID=x /home           ext4    noatime,defaults        0       2
UUID=x none            swap    sw              0       0
tmpfs   /tmp    tmpfs   defaults,size=512m  0   0
tmpfs   /home/ttt/tmp   tmpfs   defaults,size=512m  0   0

追記:最後のSSDの設定の/tmpをramdiskにするのはどうも好ましくないようで、いろいろ不具合を引き起こします。ググって別の方法を用いていただくか、そのままつかうのがよいと思います。