Category Archives: Raspberry Pi System

Raspberry Pi (6) USB to PC 2nd

USB を通して、 PCに接続する 2nd実験。

USBアダプターの購入

RaspberryのUSB Connector Expansion Boardが安く売っているので、導入することに。

「ラズパイzero w usb」の画像検索結果

接続実験

SB を通して、 PCに接続する 実験は、以前できたことで、ハードウェア繋ぐだけで動くはずだが、苦労した。

ラズパイZeroまたはZero WをUSBケーブル1本でPCやMacに接続する方法は、いつの間にうまくいかなくなった。

つまり、ssh pi@raspberrypi.local がうまく繋がらない。

Raspberry Pi (5) USB to PC

Raspberry Pi Zero はWiFiもない、LANもないから、使いづらい。

USBで直接PCに刺して使えるならいいと思い、やってみた。

ハードウェア

ついてに、OLEDも繋げて、何かメッセージ見るとき便利。

完成した様子。

ソフトウェア

SDカードにRaspbianを書きこむ

いつもの方法

bootボリューム内の一部ファイルの修正

編集するファイルは3つ。

config.txt

次のコマンドでファイルを開く。

最終行に次の内容を追加。

 

cmdline.txt

次のコマンドでファイルを開く。

rootwaitquietの間にmodules-load=dwc2,g_etherを挿入。

編集後の内容は次のとおり。

 

ssh

現行のRaspbianは,デフォルトでsshによるログインが無効になっていて,モニタやキーボードを接続してローカルからログインする必要。でも,ファイル/boot/sshが存在すると,初回起動時にsshが有効になる。

以上の作業が終わったらMacからSDカードをアンマウントし,Zeroに挿入。

早速Macに繋いて動作確認。

 

Macのターミナルを起動し,次のコマンドでZeroにログインする。初期パスワードは”raspberry”。

ログインできたら、あとはLinuxとして自由に利用できる。

ネットワークに繋ぐには、Pi対応USB WiFi  ドングルを利用する。

参考

  1. http://blue-black.ink/?p=3674

Raspberry Pi (4) LAMP setup

Raspberry PiにLAMP環境を作る

install

念のため、updateしておく。

pi@raspberrypi:~ $ sudo apt-get update

AMPを一気にinstallする
pi@raspberrypi:~ $ sudo apt-get install -y apache2 php5 mysql-server
Apache2 Debian Default Page をみる
http://192.168.11.139/

PHP動作確認

Document Rootsは、/var/www/html の下。そこにinfo.php ファイルを作って、PHP動作確認する。
pi@raspberrypi:~ $ cd /var/www/html
管理者権限で、ファイルを新規作成。
root@raspberrypi:/var/www/html$ sudo nano info.php
またはrootユーザーになって
root@raspberrypi:/var/www/html#  nano info.php

ファイルの中身を確認
root@raspberrypi:/var/www/html# cat info.php
<?php
phpinfo();
?>
ブラウザーから、PHPの設定情報が見れる。
http://192.168.11.139/info.php
 

Raspberry Pi (3) Remote login

Raspberry Pi はIoT研究によく使われる機材。
Raspberry Pi の内部はLinux 動く、遠隔管理するため、LinuxのCUIで管理を行う。
ネットワーク接続した状態で、下記の作業へ進む。

ユーザー操作

ユーザuser1を対象とする。
ログイン、ログアウト、パスワード変更の他に、テキストファイルの作成、変更もよくあるので、テキストエディタviの基本操作を是非覚えてください。

ログイン

user1をipのサーバにログインとする。
$ ssh user1@ip
サーバの中身が入れ替わり、ログインできない場合、~.ssh/know_hostに該当する項目を削除してください。

ログアウト

$ logout

パスワード変更

$ passed user1

アドミン作業

SSHサーバーの有効化

  1. ターミナルで、設定ツールを起動
    $sudo raspi-config
  2. 8 Advanced Optionsを選択
  3. A4 SSHを選択
  4. [Enable]を選択
  5. 再起動を促されるので、再起動する

2016-11-25以降のISOイメージは、SSHはデフォルト無効にされた。SSH接続しようとしたがエラーとなる。
raspi-configで有効化するか、ブートパーテーションにsshという名のファイルを作るだけでもOK。

$ cd /boot
$ sudo touch ssh
$ sudo reboot

Terminal for Beginners Glossary

One of the great things about Linux is the terminal application. While it may look unfriendly and terse, if you want to really extend the capabilities of CHIP, you’ll often find yourself in the terminal. If you’re a beginner, here’s a quick reference of some really important and common commands. You can simply add -h to get some hints on how to use a command, such as cp -h or you can read a manual page using man cp. Most unix commands have a variety of options that can be executed in the command with flags, such as ls -l -a. Even better, search the internet! This primer is simply here to help you understand what a command might be doing, not to help you use it to its full ability.

  • cd change directory. open a folder. ex: cd ~/Pictures changes your current directory to the home Pictures folder, so you can easily access the files within.
  • mkdir make directory. create a folder. ex: mkdir Vacation makes a folder named Vacation in the current directory. mkdir ~/Pictures/Vacationmakes a Vacation folder in the home Pictures directory.
  • ls list files in the current directory so you know what is in it. Some options are ls -l to list in long format to provide information about permissions, size, and date. ls -a to show hidden files that start with the . character.
  • mv move a file from one directory to another, or to give it a new name. Ex: mv this.one that.one renames a file. mv this.one ~/Pictures/Vacation/ puts the file this.one into the Vacation directory.
  • cp copy a file from one place to another. Ex: cp this.one this_01.one will copy this.one to another file this_01.one. Add directories for more fun: cp ~/Pictures/Vacation/saturn.jpg /Users/otherone/Pictures/Vacation/saturn.jpg.
  • rm remove a file. delete it, and beware!. Use the -r to make it recursive to delete a directory. Ex: rm this.one deletes that file. rm -r ~/Pictures/Vacation to forget the good times.
  • sudo super user do. many commands need administrator-like privileges, otherwise they won’t work. apt-get is a command that needs to be run with sudo to allow files to be written to protected directories. You’ll see sudo as the first word in a lot of commands – all it is doing is giving the command the necessary access. You’ll be asked for a password the first time you use sudo. The default password and user is “chip”.
  • apt-get the command used for installing, removing, and finding software for Debian Linux systems, such as the CHIP Operating System. sudo apt-get install puredata installs the Pure Data program and any dependencies. sudo apt-get remove puredata will remove the program. sudo apt-cache search image will search apt repositories for the keyword search. And so on.
  • pwd present working directory. In case you forget where you are. Not much to it: pwd will output the directory name, such as /Users/home/chip/Pictures/Vacation/
  • grep a tool used for searching through files. It’s quite deep and can be complicated, but if you see the word grep in some command, you know it’s searching for a match.
  • | (pipe) a command used to redirect data into an application.
  • < (redirect) a command use to redirect data into a file.
  • cat and echo concactenate. append data to a file. Ex: echo "Last line of text" >> sometext.txt. Merge files: cat append.txt >> main.txtwill put all the text in append.txt into main.txt. Overwrite: echo "New contents of text file" > whatevs.txt will replace all text in the file with the text in quotes. Display text in file: cat showit.txt will print the contents in the terminal window. Create: cat > new.txt will let you create a new text file in the terminal by typing lines (ctl-c to exit).
  • less makes it so you can paginate and read a text tile. Ex: less longtext.txt will fill the screen with the first part of the longtext.txt file. Use the space bar to view the next page. Type q to exit.
  • nano a text editor. You’ll often see commands that call nano so you can edit a configuration. Ex: nano /etc/avahi/services/afpd.service to edit the avahi Apple file service file.
  • find look for files in the filesystem. Ex: find ~/Documents -name particular.txt -type f will look for the file with the name particular.txtin the Documents directory.
  • chmod change mode. Used for file permissions, which can be important when sharing things on the network, scripting actions, and many more reasons.
  • htop display the processes currently alive on the CPU. If things seem slow, or you want to see how much CPU or memory a program is using, just type htop to see a table of all running processes, then type q when you want to exit.
  • scp secure copy. copy a file from one computer to another over a network. Ex: scp Pictures/Vacation/motel.jpg Pictures/Vacation/accident.jpg chip@otherchip.local:~/Pictures copies a couple jpegs to another computer on the network.
  • ssh secure shell. access another computer on the network and use the terminal commands to make changes and control it. Ex: ssh chip@chip.local to access your CHIP on a local network.
  • CTRL C if you can’t use the terminal because a process is taking too long, type CTRL-C on your keyboard to cancel the most recent command.

参考:

  • http://net-newbie.com/linux/commands/vi.html – viエディタの使い方

Raspberry Pi (2) Network Config

Raspberry Piホスト名変更

Raspberry Piのホスト名は、初期raspberrypiになり、一台以上のRaspberry Piを立ち上がると、Network上識別しつらい。
早速ホスト名変更しましょう。下記のコマンドで関連ファイルを開き、raspberrypiを好みの名前(例えばweatherstation)に変更しましょう。
$ sudo vi /etc/hosts
$ sudo vi /etc/hostname

有線LANをRaspberry Piに接続

有線LANある環境で行う。
LANケーブルを用意し、有線LANをRaspberry Piに接続する

無線LAN子機をRaspberry Piに接続

無線LAN親機ある環境で行う。
Raspberry Pi3から、無線LAN内蔵になった。

Raspberry Pi (1) Install

用意するもの

購入する場合、https://chenlab.net/amazon/ も参照してください。

  • Raspberry Pi 3 Model B
  • microSDカード(16G, Class10)
  • マイクロタイプのUSBケーブル + 電源アダプタ

初期設定時に使用したもの

  • ディスプレイ(HDMI対応するもの)
  • HDMIケーブル
  • USB接続のキーボード
  • USB接続のマウス
  • Windows PC(microSDカードにインストーラをコピーする)

インストール

OS の起動ディスクの作成

OSはDebianをベースにした「Raspbian」をインストールすることにする。
インストーラのダウンロードは、こちら から行う。

NOOBS


ダウンロードしたzipファイルを展開し、ファイルをすべてSDカードにコピーする。

機器の接続

Raspberry Piにディスプレイなどを接続する。
接続するものは以下の通り
1. USBキーボード
2. USBマウス
3. HDMIケーブル(ディスプレイに接続)
4. microSDカード
5. LANケーブル(なくても良い)
6. マイクロタイプのUSBケーブル+電源アダプタ
(マイクロタイプのUSBケーブル+電源アダプタは最後につける)

Raspberry Pi起動 〜 OSインストール

  1. 電源ケーブルを接続すると、Raspberry Piが起動する。
  2. Raspbianにチェックを入れる。
  3. 下の方に言語と、キーボードを設定する箇所があるので日本語にしておく。
  4. Installをクリックする。
  5. 「本当にイメージを書き込んでもよいですか?この操作で既存の全てのデータは削除されます!」と確認がでるので
  6. 「はい」をクリックする
  7. Installが始まる
  8. Installが完了するまで少し待つ

Installが完了するとOSが起動する

セットアップ

ログイン

以下の初期ユーザ名:パスワードを入力し、ログインします。

ユーザ名 pi
パスワード raspberry

 

アドミン作業

アドミンの作業はユーザの追加と停止。
また機材の提案と購入作業もあるので、お薦め部品もリストする。
複数使う機材、またはインターネット上サービスを行う場合、ユーザの追加と、デフォルトユーザpiの停止が必要。

ユーザの追加

# adduser user1
# adduser user1 sudo

ユーザの停止

#

追加情報

SDカードフォーマット

OS書き込み後のSDカードは、パーティションが切られ、普通のパーティション削除はできなくなり、再インストールする際困る方が多いでしょう。
OS書き込み後のSDカードのフォーマットは、専用のツールが必要。
* SD Card Formatter – SD Association
https://www.sdcard.org/downloads/formatter_4/
使い方はインストールして、フォーマットするだけ。

機材の購入

機材を購入する場合、https://chenlab.net/amazon/ にお薦め部品も参照してください。
小型タッチパネルつきLCDを装着する様子
自動代替テキストはありません。
 
 
ディスプレイ付きPi-Top
 

 

参考書

[amazonjs asin=”480071138X” locale=”JP”]
サポートページ(正誤表・ダウンロード):
http://www.sotechsha.co.jp/sp/1138/

RaspberryPiにNode.js

Node.jsとは、JavaScriptの一種で、サーバーが構築できる言語。

「リアルタイムweb」とは、ほぼタイムラグなしにブラウザ上情報の更新を反映する、FacebookのメッセージやGoogleDocsなどの感じ。

Nodeには「ページに新しい情報が来たよ!」と教えてくれる機能があり、Socket.IOというパッケージにて実装できる。

間隔を開けてサーバにポーリングなどいらない分、サーバの負担が軽減てき、より多数のブラウザが接続できる。

環境構築

まず、Node.jsのバージョンを管理するためのマネージャをまずインストールする

chen@juno ~ $ curl -L git.io/nodebrew | perl – setup
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 –:–:– –:–:– –:–:–     0
  0     0    0     0    0     0      0      0 –:–:–  0:00:02 –:–:–     0
100 22630  100 22630    0     0   5045      0  0:00:04  0:00:04 –:–:– 14432
fetching nodebrew…
install nodebrew in $HOME/.nodebrew

========================================
Add path:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

chen@juno ~ $ vi .bashrc
chen@juno ~ $ source .bashrc

 

Node.jsのインストール

Node.jsをバイナリからインストール。参考サイトの言われたままに、Raspberry Pi向け(arm-pi)の最新版バイナリが用意されていないため、v0.10.28を使用。

chen@juno ~ $ nodebrew install-binary 0.10.28
fetch: http://nodejs.org/dist/v0.10.28/node-v0.10.28-linux-arm-pi.tar.gz
######################################################################## 100.0%
Install successful
chen@juno ~ $ nodebrew use 0.10.28
use v0.10.28
chen@juno ~ $ node -v
v0.10.28
chen@juno ~ $ npm -v
1.4.9
chen@juno ~ $

Hello Worldの表示

以下のコードをapp.jsというファイル名で保存して、Node.jsで実行してみよう。

実行して見る:

chen@juno ~ $ node app.js

Server running at http://192.168.0.207:1337/

ブラウザから確認:

image

Raspberry Pi にWordPressを動かすまで(Lighttpd編)

Raspberry PiのApacheから、軽いLighttpdに切り替えた記録。

Raspberry PiのBタイプは2台購入して、一台目は初期ものでメモリ256Mのみ、数ヶ月後2台目のメモリは512Mに増強した。そのため一台目最初からLighttpdで運用し、2台目余裕があると思って、最初はApacheで運用したが、いろいろ用途が増やすとやはりメモリ不足に落ち、Lighttpdに切り替えた。

# /etc/init.d/apache2 stop
# dpkg -l | grep apache

ii  apache2-mpm-prefork                   2.2.22-12                          armhf        Apache HTTP Server – traditional non-threaded model
ii  apache2-utils                         2.2.22-12                          armhf        utility programs for webservers
ii  apache2.2-bin                         2.2.22-12                          armhf        Apache HTTP Server common binary files
ii  apache2.2-common                      2.2.22-12                          armhf        Apache HTTP Server common files
ii  libapache2-mod-php5                   5.4.4-14+deb7u3                    armhf        server-side, HTML-embedded scripting language (Apache 2 module)

# apt-get –purge remove apache2.2
# apt-get –purge remove libapache2-mod-php5
# apt-get install lighttpd
# lighty-enable-mod fastcgi
# lighty-enable-mod fastcgi-php
# vi /etc/lighttpd/lighttpd.conf  // 設定を確認
# lighty-enable-mod ssl
# /etc/init.d/lighttpd force-reload
# lighty-enable-mod ssl

WordPressのリダイレクト設定は、Apacheと違うので結構ネットぐぐったけど、試行錯誤で下記の設定がOKでした。

url.rewrite-if-not-file = (
“^/{$rewrite_path}(wp-.+).*/?” => “$0”,
“^/{$rewrite_path}.*?(\?.*)?$” => “/{$rewrite_path}index.php$1”
)

マルチドメインの場合、さらに複雑なり、下記の書き方がいいらしい。

url.rewrite-if-not-file = (
“^/(.*/)?files/$” => “/index.php”,
“^/(.*/)?files/(.*)” => “/wp-includes/ms-files.php?file=$2”,
“^(/wp-admin/.*)” => “$1”,
“^/({_0}+/)?(wp-.*)” => “/$2”,
“^/({_0}+/)?(.*\.php)$” => “/$2”,
“^/(.*)/?$” => “/index.php/$1”
)