WebIOPiでGPIO制御

事前準備

  1. SDカードフォーマットSDカードフォーマッターを使用
  2. Raspbianのダウンロード北陸先端大のミラーを使うと良いらしい

http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/

  1. ダウンロードしたzipファイルを解凍
  2. imgファイルをWin32DiskImager等で書込む
  3. sdカードを挿す
  4. キーボード、マウス、モニタをつないで電源投入
  5. 指示に従って初期設定ロケール

ユーザーパスワード

無線ルータ SSID,パスワード

IPの固定化

    将来Webサーバーとして外部からアクセスするのにDHCPを利用していては都度IPが変わって使いづらいので

    IPアドレスを固定する

    デスクトップ右上のネットワークのアイコン右クリック→Wireless & Wired Network Setting

    から行うとうまく設定できなかったので設定ファイルを直接いじる

  1. $ sudo nano /etc/dhcpcd.conf
  2. 以下の設定を書込みinterface wlan0

static ip_address=192.168.0.95/24    (注:今回は95にした。使えるIPは要確認)

static routers=192.168.0.2

static domain_name_servers=61.122.116.147

  1. Rebootしてネットワークが繋がっていたらOK

その他の設定

    $ sudo raspi-config 

    でコンフィグ画面起動

  1. 5.Interfacing OptionsからSSH, VNC, I2C, Serial, Remote GPIO をイネーブルにする
  2. 4.Localisation Optionsから
    1. I1 Change Localeを選択し、ja_JP, UTF-8 UTF-8が選択されていることを確認
    2. I2 Change TimeZoneを選択し、「アジア」→「東京」が選択されていることを確認
    3. I3 Change Keyboard Layoutを選択し、
      • 「標準 105 キー(国際)PC」→「日本語(OADG 109A)」
      • AltGrとして機能させるキー:デフォルト
      • コンポーズキー:コンポーズキーなし
      • Xサーバを強制終了するのにControl+Alt+Backspaceを使いますか? → はい
  3. Finish
  4. 再起動
  5. TeraTermからSSHでログインできることを確認※TeraTerm から SSHで操作するとき、DeleteキーがBackSpace動作してしまう問題

            TeraTermの設定→キーボード→DELを送信するキー からDeleteキーのチェックを外す

            その後設定を保存すること

OSのバージョン確認

    $ cat /etc/debian_version

    $ uname -a

nano Editorの設定

    $ sudo nano /etc/nanorc

  • set linenumbers のコメントを外す → 行番号表示
  • set tabsize 4 に変更 → タブサイズ設定

OSと各種プログラムのアップデート

    OSのアップデート

        $ sudo apt-get update

    各種プログラムのアップデート(動いていたプログラムが動かなくなることが多いので最初に1回のみ行うべき)

        $ sudo apt-get –fix-missing upgrade

    ディストリビューションのアップデート(動いていたプログラムが動かなくなることが多いので最初に1回のみ行うべき)

        $ sudo apt-get dist-upgrade

    再起動

ファイアウォールのインストールと設定

  1. ファイアウォールの設定を行うiptables用のルールの設定を行う$ sudo aptitude install iptables-persistent

途中でIPv4,IPv6用のファイルを設定するか確認ダイアログが表示されるのでどちらも「Yes」

  1. 再起動
  2. ファイアウォール インストール$ sudo apt-get install ufw
  3. ファイアウォールを無効にする$ sudo ufw disable
  4. デフォルトで全てのポートを使用禁止にする$ sudo ufw default deny
  5. ポート番号80の使用を許可$ sudo ufw allow 80

同様に以下のポートを許可

$ sudo ufw allow 22/tcp

$ sudo ufw allow 3389    → リモートデスクトップ用

$ sudo ufw allow 3350    → リモートデスクトップ用

$ sudo ufw allow 8000    → WebIoPi用

$ sudo ufw allow 8081

$ sudo ufw allow 8080

  1. ファイアウォールを有効にする$ sufo ufw enable
  2. 設定一覧の確認$ sudo ufw status numbered

不要なポート番号のルール削除はこの一覧で出てきた番号でしていする

ファイアウォールの設定での修正箇所

  1. Raspbian Stretchにおいて、自動起動設定のために以下のリンクを張る$ sudo ln -s /lib/systemd/system/ufw.service /etc/systemd/system/ufw.service
  2. Raspbian Stretchにおいて、OS起動時にufwが自動起動しない問題の対応$ sudo nano /etc/defaule/ufw

7行目付近のIPv6を無効化する

IPV6=no

  1. /etc直下のrc.localファイル最終行あたりの以下を追加$ sudo nano /etc/rc.local

systemctl start ufw

  1. ファイアウォールを自動起動設定にする$ sudo systemctl enable ufw
  2. 再起動してステータス確認$ sudo systemctl status ufw

緑字で active と出ていればOK

リモートデスクトップのインストールと起動

  1. vncサーバのインストール$ sudo apt-get install tightvncserver
  2. xrdpのインストール$ sudo apt-get install xrdp
  3. xrdpの日本語キーボードへの対応$ cd /etc/xrdp

$ sudo systemctl restart xrdp

$ sudo systemctl enable xrdp

  1. これで他PCからリモートデスクトップログインできるコンピュータ:192.168.0.95:3389(xrdpのポート番号 xedp.iniで規定されている)

※Windowsアクセサリ→リモートデスクトップ接続から Session : Xorg で接続する

DELLのリモートデスクトップから接続するとキーボード入力がおかしくなる

日本語入力設定

  1. 日本語入力システムをインストール$ sudo apt-get -y install ibus-mozc

    -y はyes/no を全部省略する

    ibusはUNIX系のインプットメソッドフレームワーク

    mozcはGoogleの日本語入力システム

  1. RaspberryPiのメニューの「設定」→「IBusの設定を選ぶ」IBusデーモンが実行されていません。起動しますか? で はい を選択
  2. 「IBusは起動されています・・・」のウィンドウで OK をクリック
  3. 設定ウィンドウはそのまま閉じる
  4. デスクトップ右上のJAアイコンをクリックし、日本語-Mozc を選択
  5. syncコマンドを3回実行した後再起動

Webサーバーのインストールと動作確認

  1. ダウンロードをインストール$ sudo apt-get install apache2
  2. 自動起動設定$ sudo systemctl enable apache2
  3. Webサーバーの実行状態を確認$ sudo systemctl status apache2

緑字で active (running) と出ていればOK

この時点でWebブラウザから http://IPアドレス と打てばデフォルトのページが表示される

/var/www/html/index.html

WebIOPiを使う事前準備

  1. apacheの実行ユーザーであるwww-dataをグループgpioに追加$ sudo gpasswd -a www-data gpio
  2. 確認$ nano /etc/apache2/envvars

APACHE_RUN_USERを検索してwww-dataがあればOK

  1. Webサーバーを再起動してステータス確認$ sudo systemctl restart apache2

$ sudo systemctl status apache2

  1. グループgpioにどのユーザが所属しているか確認$ getent group gpio

www-dataが表示されればOK

WebIOPiセットアップ

  1. ディレクトリを ~/workに移動しておく$ cd ~/work
  2. WebIOPiのダウンロード$ wget https://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
  3. WebIOPiの解凍$ tar xvzf WebIOPi-0.7.1.tar.gz
  4. 解凍したWebIOPiのディレクトリに移動$ cd WebIOPi-0.7.1
  5. 修正パッチのダウンロードwget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
  6. 修正パッチ適用$ patch -p1 -i webiopi-pi2bplus.patch
  7. セットアップスクリプト実行$ sudo ./setup.sh
  8. ダウンロードと設定が行われ、しばらく時間がかかるDo you want to access WebIOPi over Internet? で Y を入力
  9. WebIOPiをサービスとして開始するためのファイルをダウンロード$ cd /etc/systemd/sysytem/

$ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service

  1. 以下のファイルの内容を確認・変更
    • passwd-file … をコメントアウト
    • doc-root = /usr/share/webiopi/htdocs/
    • welcom-file = index.html
  2. webiopiサービスの再起動$ sudo systemctl restart webiopi

3分程度かかる

  1. ブラウザからアクセスhttp://(IPアドレス):8000/

認証アカウントを聞かれたら ID : webiopi / Pass : raspberry

    passwd-file … をコメントアウトしているので聞かれないはず

  1. メニューのGPIO HeaderをクリックするとGPIOを制御できる

I2Cの動作設定

  1. /etc/modulesの内容確認$ sudo nano /etc/modules

i2c-dev の記載があることを確認

  1. コンフィグ設定$ sudo nano /boot/config.txt

dtparam=i2c_arm=on を確認

dtparam=audio=on を#コメントアウト

  1. $ sudo reboot で再起動
  2. 設定が反映されていることを確認$ dmesg | grep i2c

[ *******] i2c /dev entries driver のように表示される

  1. $ sudo i2cdetect以下のような表示となる

i2c-1    i2c    bcm2835 I2C adapter    I2C adapter

  1. この段階でI2Cデバイスが接続されていれば$ sudo i2cdetect -y 1

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です