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エディタの使い方

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に接続する

固定IPにする:

sudo vi /etc/dhcpcd.conf

interface eth0
static ip_address=192.168.0.70/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

無線LAN子機をRaspberry Piに接続

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

Pi (1) Install

用意するもの

下記の品物を用意する。

  • Raspberry Pi 3+ Model B
    [amazonjs asin=”B07BFH96M3″ locale=”JP”]
  • microSDカード(16G, Class10)
    [amazonjs asin=”B07BHZMDHX” locale=”JP”]
  • マイクロタイプのUSBケーブル + 電源アダプタ
    [amazonjs asin=”B0748C6YBZ” locale=”JP”]

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

  • ディスプレイ(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/

PINE A64 動作した

数日PINE A64試して、どうしても動く様子がない。HDMI出力の信号出てない!
ネットで調べると、HDMI出力の相性が結構厳しい。
こちらは、HDMI2AVI Monitor、HDMI TV、HDMI Monitor, HDMI Projector 計4種類調べたが、どれも  出力の信号出てない。焦った!
2016-06-25 15.20.42
電流は40mAくらい、HDMI 出力の信号出てない
Raspberry Pi からずーっとDebianを利用してた。ここてUbuntuで試したら、なんと動いた。これて自信が付いて、とりあえずこれて実験を進め;後で時間があれば、なぜDebian表示しないか、ゆっくり調べればいい。
2016-06-26 00.38.47
電流は600mAになり
2016-06-26 00.40.18a
HDMIも 出力

9ドルコンピュータC.H.I.PでiBeacon体験

最初の9ドルコンピュータC.H.I.Pの作品はiBeaconにすると思う。

Mechanism

普通iBeaconはクーボンなどの配信をする機器だか、こちらはこどもの下校帰宅の知らせ機器にする。機能として:

  1. こどもにiBeacon持たせて、帰宅すると感知する
  2. 感知したら、区別して「XXXちゃん、お帰り」をしゃべり
  3. 親にメールを送る「XXXちゃん帰宅」
  4. (将来)親の伝音をしゃべる

名刺半分サイズだから、PCスピードなどの中に空いてる空間に組み込むして運用すると考える。

 

Bluetooth検知

まずBluetooth検知から。下記のサイトを見ながら、教科書通りまずBluetooth keyboardからと考えた。

http://docs.getchip.com/#connecting-bluetooth-devices

C.H.I.Pには、Bluetooth 内蔵、OSも内蔵なので、特になにもインストールの必要がなく利用できる。まずbluetoothctlコマンド使って、find, pair with, and connectなどを試す。

  • root@chip:~# bluetoothctl
    [NEW] Controller 7C:C7:08:DE:2A:4E chip [default]
    [bluetooth]# power on
    Changing power on succeeded
    [bluetooth]# scan on
    Discovery started
    [CHG] Controller 7C:C7:08:DE:2A:4E Discovering: yes
    [NEW] Device DD:52:20:CC:66:BA N0U9Z

の感じで、もう新しいDevice 見つかった。その後延々と周囲のBluetooth 機器の情報を報告。

このN0U9Zはなぜか用意したBluetooth keyboard(電池切れ?)ではなく、近所のiBeaconらしい。そうしたらも教科書通りBluetooth keyboard接続など飛ばして、自分が用意したiBeaconで体験を継続。

Raspberry Piと iBeacon関連サイトを調べて、必要な情報収集を行った。そこでわかって、bluetoothctlコマンドで対話式操作の他に、hcitool lescan で近くに BLE の端末がある場合は近づけると Mac アドレスとデバイス名を表示することもできる

  • hcitool lescan — BLE 検知テスト

 

node.js/bleacon 環境構築

検出ができたので、実現したい機能をプログラミングするだが、プログラミング環境として、まずnode.jsを考えた。

nodebrewnode.jsをインストールして、それからbleaconというモジュールでBluetooth を操る。

bleaconを利用するために、まずは node.js をインストール。node のバージョン管理を行う nodebrew を利用してインストール。

C.H.I.Pには、curlもないので、そのインストールから

  • root@chip:~# apt-get install curl
  • root@chip:~# curl -L git.io/nodebrew | perl – setup
  • chen@chip:~$ vi .bashrc
  • chen@chip:~$ source .bashrc
  • chen@chip:~$ nodebrew install-binary v0.10.28

しかし”v0.10.28 is not found”と怒られて。node.jsしばらく放置したので、この間結構変わった。日本語のページは古いのままだが、英語のページも最新版4.4.0になった。それをインストールに。

  • chen@chip:~$ nodebrew install-binary v4.4.0
  • chen@chip:~/ibeacon$ npm install bleacon
    npm WARN optional dep failed, continuing xpc-connection@0.1.4
    npm WARN optional dep failed, continuing xpc-connection@0.1.4
    > bignum@0.11.0 install /home/chen/ibeacon/node_modules/bleacon/node_modules/bignum
    > node-gyp configure build
    make: Entering directory ‘/home/chen/ibeacon/node_modules/bleacon/node_modules/bignum/build’
    CXX(target) Release/obj.target/bignum/bignum.o
    make: g++: Command not found

しかしそのbleaconというモジュールのインストールにエラーがたくさん出るから、お手上げ。

 

python/pybluez/iBeacon-Scanner 環境構築

ネットいろいろ検索して、kakakikikekeのサイトを参考にpythonで試すことにした。

Python から操作するためのライブラリをインストールします
pip を使うのでインストールしています

  • sudo apt-get -y install python-pip
  • sudo apt-get install python-dev libbluetooth-dev libboost-all-dev
  • sudo pip install pybluez
  • sudo pip install pybluez[ble]

ここもエラーが見回り、pybluez[ble]のインストール失敗でした。

ここで試しにiBeacon-Scanner を入れてなんど機能した。

サンプルのソースは簡単で、10個 BLE情報を受信すると情報を出力しつづけてくれる。

 

これてこどもの下校帰宅の知らせ機器は、pythonでプログラミングすると決定。できたらまたレポートする。

 

参考サイト:

OrangePI PCのセットアップ

OrangePI(オレンジパイ)はオープンソースのシングルボードコンピュータ。UbuntuやRapbianなどLinuxが動作するもの。数種類がリリースされて、一番コスパがいいと思うOrangePI PCケースセット($19+送料)購入した。RaspberryPIの半分の値段かな。

RaspberryPIの経験から、ケースある方がいろいろと便利。しかし付属のケースはDC,HDMI,AVの端子をはめ込み固定する仕組みだったため,装着に苦労した.

様々なOSがorangepi.orgのサイト上で公開されており、ハードウェアのサポートなど優劣それぞれあるから、悩むところだが。RaspberryPIとして利用するつもりだから、まずRaspbianを使用すると考えた。

http://www.orangepi.org/downloadresources/ から、Raspbian_For_OrangePi_PC_v0_8_0.img.xzをダウンロードし、7zipで解凍、WIN32 Disk Imager というソフトを使って、さきほどダウンロード・解凍したOSイメージをSDのカードに書き込む。

2016-03-12 22.29.50 2016-03-12 22.27.35

OrangePIに、LAN、HDMIやUSBキーボードを接続し、最後に電源ケーブルを接続する。家のTVにHDMI端子につないてしばらくすると、OS起動画面が出てきて、やがて、ログイン画面が表示されます。Raspbianを使用したので、初期ユーザーは、root、パスワードは、orangepiになっているので、これを入力して、ログインする。

とりあえず、Webブラウジングして、ここまで特に異常がない。

9ドルコンピュータC.H.I.Pで話題のIoT体験

話題のIoTが、Raspberry Piですでに試したが、今度9ドルコンピュータC.H.I.Pでいろいろ体験すると思う。

まずWebから、LEDのON/OFFを試す。

1)環境作成:

最新状態にする

root@chip:~# apt-get update
root@chip:~# apt-get upgrade

localesを再インストールする。

root@chip:~# apt-get purge locales
root@chip:~# apt-get install locales
root@chip:~# dpkg-reconfigure locales (en_US.UTF-8 を選ぶ)

#これをしないと、下記のエラーは延々と出る。

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

apache2インストール

root@chip:~# apt-get install apache2
root@chip:~# a2enmod cgi.load
root@chip:~# /etc/init.d/apache2 restart

c環境をインストールする。

root@chip:/home# apt-get install gcc make

2)プログラミング

rootの実行権限でLEDを操作するから、最初Perlで簡単に作れると考えたが、うまくいかない。

下記の参考ページで、C言語で作った。

root@chip:/usr/lib/cgi-bin# cat on.c
#include        <stdio.h>

int main()
{
system("/usr/sbin/i2cset -f -y 0 0x34 0x93 0x1");
printf("Content-type: text/htmlnn");
printf("<HTML><BODY>");
printf("<H2>Hello! On</H2>");
printf("</BODY></HTML>");
return 0;
}
root@chip:/usr/lib/cgi-bin# cat off.c
#include        <stdio.h>

int main()
{
system("/usr/sbin/i2cset -f -y 0 0x34 0x93 0x0");
printf("Content-type: text/htmlnn");
printf("<HTML><BODY>");
printf("<H2>Hello! Off</H2>");
printf("</BODY></HTML>");
return 0;
}
root@chip:/usr/lib/cgi-bin#

コンパイルする

cc -o on on.c
cc -o off off.c

rootの実行権限を与える

chmod +s /usr/lib/cgi-bin/o*

3)プログラミング実行

最初に、コマンドラインで、LEDのOn/Offを確認する。

root@chip:~# /usr/sbin/i2cset -f -y 0 0x34 0x93 0x1 #On
root@chip:~# /usr/sbin/i2cset -f -y 0 0x34 0x93 0x1 #On

ブラウザから、LEDのOn/Offを試す

http://192.168.0.104/cgi-bin/on
http://192.168.0.104/cgi-bin/off

順調なら、話題のIoTが、まずWebから、LEDのON/OFFを試すことができた。

2016-03-08 (1)

2016-03-08 (2)

これから時間が空いたら、Raspberry Piの温度センサー、WebCameraもこちらに動かしてみる。

あとiBeaconの近接通知機能が試したいので、iBeaconのモジュールを注文した。

参考:

http://null-byte.wonderhowto.com/how-to/introduction-c-h-i-p-by-next-thing-co-iot-hacking-device-0168749/

話題の9ドルコンピュータC.H.I.Pが届いた

Next Thing Co社の9ドルコンピュータC.H.I.Pが届いた。

去年6月KickStater注文したので、また忘れかけたころに、届いた。

最初は9ドル一台に、送料の方が高いで15ドル。その後一台追加で、トータル33ドルなり、平均一台2000円未満。

C.H.I.Pは、Raspberry Piに似ている、マイクロ・コンピュータというもの、一番大きな違いは、値段とサイズ、そして予め802.11 b/g/n Wifi とBluetooth 4.0と4GのeMMCストレージ内蔵のこと.しかもLiPoバッテリー内蔵可能。

開封して、意外に小さいと、ビデオケーブルが短いと感じる。どう繋ぐかちょっと悩んでいたが、昔のビデオ切り替えスイッチが思い出して、探し出して繋がってみたら、ぴったりじゃないか!電子機器と部品自宅に溜まる一方で断捨離は時には問題。このビデオ切り替えスイッチ捨てたら、なにか買わない繋がらないね。USBハブでキーボードとマウスをつなぎ、マイクロUSBの電源をつなぎ、それだけで完成。

4GのeMMCストレージにOS内蔵し、Raspberry Piのように、ブートSD作る必要がない。電源スイッチだけで立ち上がた。

2016-03-06 23.37.35

コンポジットの解像度は昔のVGA、WiFi設定などが十分でした。IoTのマシンとして活用する予定って、ssh、Webサービス際使えるなら、モニターが必要がない。

root@chip:~# uname -a

Linux chip 4.3.0 #10 SMP Sat Nov 14 19:10:05 PST 2015 armv7l GNU/Linux

root@chip:~# cat /etc/debian_version

8.2

Linux のカーネルは4.3.0、OSはdebian8.2でした。

BLE(Bluetooth Low Energy)内蔵のため、これだけでiBeaconの近接通知機能が試せる、LiPoバッテリー内蔵すると、数時間モバイル運用も可能、いろいろの試すが可能だ。

AI from EDGE to CLOUD