とらりもんHOME  Index  Search  Changes  Login

RaspberryPi

2014/10/21 筑波大 秋津朋子 作成
2015/02/13 筑波大 秋津朋子 SDカードのフォーマット方法を追記
2020/08/27 筑波大 秋津朋子 SDカードにRasPi OSを焼く方法やRTCモジュールの設定等を最新情報に更新

ラズベリーパイ財団によって英国で開発された、名刺サイズのシングルボードコンピュータ。

よくあるトラブル

  • ラズパイが起動しない(画面に何も写らない) ... micro SDカードが中途半端にささっている(抜けかけている)。
  • micro SDがラズパイに対応していない or 相性が悪い。... micro SDにOSを書き込んだのに画面に何も映らない or カラフルな画像とブラックスクリーンが交互に写る。

beginner's packageの場合はいきなりセットアップ作業へ。

  1. $ sudo raspi-config
localization option -> time zone etc
interfacing option -> camera, ssh, I2C (for external clock)
advance option -> expand filesystem

準備:SDカードにOSを焼く

ラズパイとSDカードの相性

準備:SDカード, RaspberryPi以外のPC
ここから,しばらくはRaspberryPi以外のPCでの作業となる。

  • SDカードは通常FAT32等でフォーマットされているので,そのまま使える.しかし,これまでext4などでフォーマットしたものを使う場合はFAT32でフォーマットする.
  • ラズパイのOSをSDカードに焼くのとダウンロードは一気にできる!
    1. RaspberryPiのサイトにアクセスする。
    2. 「Raspberry Pi Imager for Ubuntu」等,自分にあったOSを選択して,ラズパイをSDカードに焼くアプリケーションをインストールする。
    3. 「Raspberry Pi Imager for Ubuntu」を起動して,自分のOS,SDカードを選んで,「Write」を押すだけ!
    4. SDカードを抜き、RaspberryPiに差し込む。

  • ここから「セットアップ」の前までは古い (Raspberry Pi Imagerがなかった時の) 情報なので,読み飛ばして,「セットアップ」へ進んでください。
    • RaspberryPi以外のPCを使って、FAT32(重要!!)でフォーマットする。下にubuntu14.04におけるコマンドでのフォーマット方法を記す.その他にも,Gpartedというソフトをインストールすると,GUIで簡単にフォーマットすることもできる($sudo apt-get install gparted).
    • SDカードがどこにマウントされているかとSDカードのフォーマット形式を確認する. $sudo blkid
    • SDカードが/dev/sde1にマウントされているとすると次のように表示される. 「/dev/sde1: UUID="ccf7a44f-4a4c-xxxxxxxx-xxxxxxxx" TYPE="ext3"」
    • (SDカードがマウントされている場所は,$dfでも確認できる.)
    • SDカードをアンマウントする. $sudo umount /dev/sde1(←SDカードのファイルシステム名.)
    • SDカードをFAT32でフォーマットする. $sudo mkfs.vfat -v -c -F 32 /dev/sde1
  1. RaspberryPiの最新版OS(Raspbian)をダウンロードする。
  2. ダウンロードしたzipを解凍する。(例:/home/raspberry)
    • $ mkdir ~/raspberry
    • $ mv ~/Downloads/2014-09-09-wheezy-raspbian.zip /home/raspberry/
    • $ cd /home/raspberry
    • $ unzip 2014-09-09-wheezy-raspbian.zip
  3. SDカードをアンマウントする. 
    • $ sudo umount /dev/sde1(←SDカードのファイルシステム名.)
  4. 下のコマンドで,SDカードにOSのイメージファイルを焼く。
    • $ sudo dd bs=1M if=2014-09-09-wheezy-raspbian.img of=/dev/sde
    • ※ifには解凍したファイルを指定。ofにはSDカードのファイルシステム名を指定(dfコマンドなどを打つか、/dev以下を検索するなどして調べる.※/dev/sde1の1はパーティション番号なので不要)。
    • ※bsは、一度に読み書きするファイルのサイズを指定するパラメータであり、PCのメモリと比較し大きいとメモリ以外にswap領域を使用するため、処理速度が遅くなる。一方で小さいと書き込む回数が多くなり、同じく遅くなる。
  5. 下のように書き込み結果が表示されて,コマンドプロンプトに戻るまでしばらく待つ.(数分かかるが,それまで絶対にSDカードを抜かないこと.)
    • 3125+0 レコード入力
    • 3125+0 レコード出力
    • 3276800000 バイト (3.3 GB) コピーされました、 341.726 秒、 9.6 MB/秒
  6. 最後にsync (システムを停止する前に、バッファ(メモリ上のデータ)内に蓄積されているデータで,まだハードディスクに書き込まれていないものを,強制的にディスクに書き込む。)
    • $ sudo sync
  7. SDカードを抜き、RaspberryPiに差し込む。

セットアップ

※DHCPが可能なインターネット環境にいる場合は、RaspberryPiをLANケーブルで接続すれば、この段階からsshで接続できるかも(未確認)?その場合は、自動で割り振られたIPアドレスをルーターのDHCPクライアントリストを見てIPアドレスを確認。sshで接続。設定画面を出す。$sudo raspi-config

ここからRaspberryPiでの作業
準備:RaspberryPi, ディスプレイ(要HDMI-DVI変換ケーブル または HDMI-VGA(D-SUB)変換ケーブル), USBキーボード, 電源ケーブル(スマートフォン用の電源)

  1. 電源を入れる。
  2. RaspberryPiの設定画面が現れるので、必要な設定を行う。この設定画面は最初に電源を入れた時には必ず開く。後で設定したい時は下のコマンドを入力する。画面はバージョンによって異なるので、必要とする設定をする場所は各自で探すこと。
$sudo raspi-config
  1. ファイルシステムの領域を広げる。[Expand Filesystem]
  2. 使用するキーボードの配列を設定をする。[Internationalisation Options]→[Change Keyboard Layout]→[Generic 105-key (Intl) PC] → [other] → [Japanese] → [Japanese - Japanese(OADG109A)]を選択。
  3. タイムゾーンを設定する。[Internationalisation Options]→[Change Locate]→[Asia]→[Tokyo]
  4. sshを使用可能にする。[Advanced options]→[SSH]→[Enable] 私の使用したRaspberryPiではデフォルトでssh使用可能[enable]になっていたが、念の為確認すること。
  5. 設定画面を終了する。[Tab]→[Finish]

スワップを無効化する

  • micro SDカードの寿命を伸ばすため。
  • 参考
  • sudo swapoff --all
  • sudo apt-get remove dphys-swapfile

osのversionを確認

lsb_release -a

インターネットの設定

IPアドレスを設定する。(Raspbian Wheezyの場合)→Raspbian JessieやStretchの場合は,この下の項目を参照のこと。

  • 注) Raspiは,IPアドレスを変更した後,再起動しないと新IPアドレスを認識しないよう。
$sudo vi /etc/network/interfaces
auto lo

iface lo inet loopback
# iface eth0 inet dhcp ←コメントアウトする。 
iface eth0 inet static ←追記

address 192.168.0.XXX ←追記
netmask 255.255.255.0 ←追記
gateway 192.168.0.1 ←追記
dns-nameservers 192.168.10.2 ←追記 (DNS サーバーのアドレス)

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
$sudo /etc/init.d/networking restart

IPアドレスを設定する。インターネットの設定(Raspbian Jessie, busterの場合)

$sudo vi /etc/dhcpcd.conf
interface eth0 ←追記
static ip_address=192.168.0.XXX/24 ←追記
static routers=192.168.0.1 ←追記
static domain_name_servers=192.168.0.1 ←追記
再起動する。

IPアドレスを設定する。インターネットの設定(Raspbian Stretchの場合)

  • Jessieの場合とほぼ同じだが,「eth0」が使えない。ifconfig等で自分のネットワーク名(数字とアルファベットからなる長い文字列)を確認してdhcpcd.confの「eth0」の場所にそのネットワーク名を書く。
  • Wifiで固定IPアドレスを設定するには,
    • まずは,WifiのSSIDとパスワードをwpa_supplicant.confに設定する。
    • 次に,
sudo dhclient wlan0

他のPCからsshでアクセスできるか確認。

$ping 192.168.0.XXX ←まずは、インターネットで認識されているかを確認。
$ssh pi@192.168.0.XXX

RaspberryPiのデフォルトのユーザー名とパスワード

user: pi
password: raspberry

最後に、忘れずにデフォルトユーザ「pi」を削除。

「新サイトPC設定」にしたがって、サイト名のユーザを作成した後に、ユーザpiを削除しておく。

$sudo userdel -r pi

RaspberryPiをアップデート

sudo apt-get update ... インストール済みのパッケージのアップデートするリストを取得
sudo apt-get full-upgrade -y ... 取得したリストに基づき,その全てをアップグレード。※時間がかかるので,終わるまで待つこと。
sudo apt-get autoremove -y ... アップグレード後に不要となったパッケージを削除
sudo apt-get clean ... SDカード空き容量を確保
sudo reboot ... 再起動

I2Cを使うには...

時計モジュール(Mini RTC Module)を取り付ける

  • 上記のようにしてI2Cが使えるようにする。
  • ここを見ながら時計モジュールを取り付ける。
  • sudo i2cdetect -y 1
    • その結果, 表みたいな表示が出て, 下の方に68という数値がぽつんと現れるはず。
  • $ sudo modprobe rtc-ds1307
  • $ sudo bash
  • # echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
  • # exit
  • $ sudo hwclock
    • まずは,hwclockを起動させる。下のコマンド「hwclock -r」「hwclock -w」をうってもエラーとなる場合,これをやってから,下のコマンドをうつと動く。
  • $ sudo hwclock -r
    • その結果, RTCの時計が表示される。多分, 現在とはだいぶずれている。
  • ラズパイをネットにつなぐかして, 時計をちゃんと合わせる。
  • 日本時間(JST)にしたい場合は, sudo dpkg-reconfigure tzdataでタイムゾーンを設定
  • sudo hwclock -w
    • その結果, ラズパイの現在時刻がRTCに書き込まれる。
  • sudo vi /etc/modules
    • → 末尾にrtc-ds1307という1行を追記する。
  • sudo vi /etc/rc.local
    • exit 0の直前に, 以下を記入 (参考: このページの最後らへん):
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s 
date

リアルタイムクロックの設定に関して、

sudo nano /etc/default/hwclock において HWCLOCKACCESS=no としてください(真ん中ら辺にある)。 一方、末尾のHCTOSYS_DEVICE=rtc0 はこのままでOKです。rtc0を書いていなければご記入ください。

これで、電源を切っても、システムクロックとハードウェアクロックが競合せずに? 正確な時刻をラズパイに送ることができるようになります。

ラズパイのディストリビューションやバージョンを確認する

lsb_release -a

ラズパイで動画再生

  • omxplayerを使う。エラーメッセージがなぜか"Have a nice day"。mpgは再生ダメ。mp4はOK。