カテゴリー別アーカイブ: LINUX

Auto Start Node.js

Raspberry Pi A+をボタンで自動的にシャットダウンすることがNod.jsを使って行うことができました。そこでNode.jsのプログラムを自動起動させようと思います。

まずpm2をインストールします。
npm install pm2 -g

アプリを起動してみます。
pm2 start app3.js

pm2で起動することを確認しました。

次に自動ログインの設定を行います。
sudo nano /etc/inittab
テキストエディタnanoが開くので、以下の行を、行頭に#をつけてコメントアウトさせます。
#1:2345:respawn:/sbin/getty 38400 tty1
次に、以下の行を書き込みます。
1:2345:respawn:/bin/login -f ユーザー名 tty1 </dev/tty1>/dev/tty1 2>&1

ctrl+Xで保存し、RaspberryPiを再起動させると、自動ログインするようになります。

次にアプリの自動起動のため次のファイルを編集します。
sudo nano /etc/rc.local

exit 0の行の前に2行追加します。
export PATH=/home/pi/.nvm/v0.10.22/bin:$PATH
pm2 start /home/pi/node/app3/app3.js -i 1 –name sd-task

ctrl+Xで保存し、RaspberryPiを再起動させると app3.jsが自動起動します。ボタンを押すとRaspberry Pi A+がシャットダウンするプログラムが自動起動する様にできました。

これで、画面が無くてもボタンだけでシャットダウンして電源を切ることができるようになりました。

Raspberry Pi A+ NODE.JS LED BLINK&SHUTDOWN

node.jsでGPIOとコンソールコマンド使えるようになったので、起動するとLEDの点滅、スイッチを押すとシャットダウンするソフトを作成します。 
Raspberry Pi A+は、画面の無いシステムなす。電源をブチ切りするのは避けたいのでこのスイッチを追加しました。
Jpeg

必要なライブラリをインストールします。 
npm install onoff  
npm install exec-sync 
npm install 
 
以下サンプルソフトです。 
######################################## 
var execSync = require(‘exec-sync’); 
 
// button is attaced to pin 20, led to 21 
var GPIO = require(‘onoff’).Gpio, 
led = new GPIO(21, ‘out’), 
button = new GPIO(20, ‘in’, ‘both’); 
 
var interval = setInterval(function() 
{ 
    led.read(function (err, value) 
    { 
        if (err) 
        { 
            throw err; 
        } 
        else 
        { 
            var val = value === 0 ? 1 : 0; 
             led.writeSync(val); 
        } 
    } );  
}, 500); 
 
// define the callback function 
function shutdown(err, state) 
{ 
    // check the state of the button 
    // 0 == pressed, 1 == not pressed 
    if(state == 0) 
   { 
        clearInterval(interval); 
        // turn LED on 
        led.writeSync(0); 
   // Shutdown 
        var poff = execSync(sudo shutdown -h now); 
        console.log(opoff);     
    } 
} 
 
// pass the callback function to the 
// as the first argument to watch() 
button.watch(shutdown); 
######################################## 
 
ソフトを起動すると500msec毎にLEDが点滅し、ボタンを押すとRaspberry Pi A+がシャットダウンできました。 

Raspberry Pi A+ NODE.JS CONSOLE COMMAND

node.jsでコンソールコマンドを使えるようにします。 
ライブラリは、exec-syncを使いました。 
まずは、ライブラリのインストールを行います。 
Jpeg

npm install exec-sync 
npm install 
 
以下サンプルソフトです。 
######################################## 
var execSync = require(‘exec-sync’); 
 
var shutdown = execSync(sudo shutdown -h now); 
console.log(shutdown); 
######################################## 
 
実行するとシャットダウンするソフトです。次は、GPIOと連携させたいと思います。

 

Raspberry Pi A+ NODE.JS GPIO

node.jsでGPIOを使ってみようと思います。
GPIO20を入力、GPIO21を出力にします。入力には、スイッチを、出力には、LEDを接続しました。
GPIO21 → 100Ω → LED1 → 3.3V

GPIO20 → 33kΩ → 3.3V
→ SW1  → GND

Jpeg

GPIOの制御ライブラリには、onoffを使用しました。
まずは、ライブラリのインストールを行います。

npm install onoff
npm install

以下サンプルソフトです。
########################################
// button is attaced to pin 20, led to 21
var GPIO = require(‘onoff’).Gpio,
led = new GPIO(21, ‘out’),
button = new GPIO(20, ‘in’, ‘both’);

// define the callback function
function light(err, state)
{
// check the state of the button
// 0 == pressed, 1 == not pressed
if(state == 0)
{
// turn LED on
led.writeSync(0);
}
else
{
// turn LED off
led.writeSync(1);
}
}

// pass the callback function to the
// as the first argument to watch()
button.watch(light);
########################################

スイッチを押すとLEDがつくソフトです。ボタンに従ってLEDが点灯、消灯することができました。

Raspberry Pi A+ Setup

今回は、GUIは使わずCUIで運用するため立ち上げに画面表示が必要なNOOBSは使用しません。
https://www.raspberrypi.org/downloads/

RASBIANを単独でダウンロードします。
インストールの仕方は以下のURLにあります。
https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
LINUXでSDカードの作成を行います。SDカードを作業用PCに差し込みます。 df -h コマンドでSDカードがマウントされたデバイス名を確認します。 /dev/sd*1 *は、アルファベットが入ります。作業フォルダにダウンロードしたOSイメージを解凍します。imgファイル名が「2015-05-05-raspbian-wheezy.im」の時の例です。
sudo dd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/sd*
*は、アルファベットが入ります。
SDカードへの書き込みが終わるまでしばらく待ちます。終わったら
Sync コマンドで書き込みを終わらせ、SDカードを安全な取り外しをします。

■ターミナル接続の準備
モニタに繋がず立ち上げるのでターミナル接続の準備をします。
IOが3.3Vで動作するUART-USB変換を準備します。http://akizukidenshi.com/catalog/g/gM-08461/
超小型USBシリアル変換モジュール
P1コネクタの4、6、8、10ピンを使用します。
RasPi P1とUART-USB変換の接続
4PIN    -    5V0                     <-     5V
6PIN    -    GND                   <->  GND
8PIN    ー    UART0_RXD <-    TXD
10PIN    ー    UART0_TXD  ->    RXD
電源5VもUART-USB変換から供給します。ただ、単独起動は問題ありませんがUSB Wifiドングルを繋ぐと電流が足りず、ボードのマイクロUSBから給電しました。
Jpeg

■起動
LANがないと何かと不便なのでUSB Wifiドングルをつけてセットアップしました。Raspberry Pi A+は、USBが1ポートしかないのでそこに接続しました。
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4PTC
http://www.planex.co.jp/products/gw-usnano2a/

作成したSDカードをRaspberry Pi A+に差し込み、UART-USB変換をPCに差し込み電源を入れます。
ターミナルの通信設定は、通信速度115200bps、データ長さ8ビット、ストップビット1、パリティなしです。
起動後、ユーザ名:pi、パスワード:raspberryでログインします。

sudo iwlist wlan0 scan
自分が接続したいSSIDを見つけます。
今回はWEPで接続すします。Raspberry Piで無線LANを利用するときに必要な情報が書かれているファイルは以下になります。
/etc/network/interfaces
テキストエディタは、nanoが入っているのでこれを使います。
sudo nano /etc/network/interfaces

#####################################
allow-hotplug wlan0
iface wlan0 inet dhcp
wireless-essid 接続先のSSID
wireless-key 接続先のキー
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#####################################

接続先のSSIDには、””ダブルコーテーションはつけません。
接続先のキーには、アスキー設定の場合、s:を先頭につけます。

Jpeg

■接続確認
sudo reboot で再起動してwifi接続の確認します。
ifconfig -a
これでwlan0にIPアドレスが設定されていればOKです。

■システム更新
インターネットにつながったのでシステムの更新します。
sudo apt-get update
sudo apt-get upgrade

いつもし使用しているテキストエディタVIMを入れておきます。
sudo apt-get install -y vim

以上でセットアップ完了です。

Raspberry Pi A+

Jpeg
Raspberry Pi A+です。
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4N4D
Raspberry Pi2でサーバを構築しているので、クライアント側でもRaspberry Piが使えないかと思いA+を購入しました。思いのほか小さいです。Raspberry Pi2にくらべCPUも非力で、メモリも256MBしかないのでGUIで使用するつもりはありません。CUI運用で画面なしのモバイル機器を検討したいと思います。
Jpeg
Jpeg

Jpeg
http://www.sengoku.co.jp/mod/sgk_cart
/detail.php?code=EEHD-4KZB
Raspberry Pi B+用ブレッドボード接続T型基板キットも購入したのでセンサなども繋いでいきたいと思います。
JpegJpeg

Raspberry Pi2 Auto Login

Raspberry Pi2をホームサーバ&KIOSK端末として使用するための準備をします。
まずは、自動ログインの設定を行います。電源を入れると自動的にログインします。普通にGUIにははいり、 LXTerminalを起動し、以下のように入力します。
$sudo leafpad
テキストエディタが開くので、/etc/inittabを開いていてください。
以下の行を、行頭に#をつけてコメントアウトさせます。 #1:2345:respawn:/sbin/getty 115200 tty1 1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1
次に、以下の行を書き込みます。
1:2345:respawn:/bin/login -f ユーザー名 tty1 /dev/tty1 2>&1
ユーザ名はデフォルトではpiです。
保存し、Raspberry Pi2を再起動させると、自動ログインするようになります。

次にウィンドウシステムまで自動的に入るようにします。
起動時の表示をデスクトップ画面に設定するため、 LXTerminalを起動し、以下のように入力し「raspi-config」を開きます。
$ sudo raspi-config
設定画面が開くので、「3 Enable Boot to DeskTop/Scratch」を選択します。 次の画面が開くので、「DeskTop Log in・・・」の行を選択します。 閉じてRaspberry Pi2を再起動すると、自動でデスクトップ画面まで表示するようになります。

次にKIOSK端末の表示のためのブラウザをインストールします。ブラウザには、Chromeのオープンソース版のChroiumを使用します。
以下の順番でインストールします。
$sudo apt-get update
$sudo apt-get upgrade -y
$sudo apt-get install chromium x11-xserver-utils unclutter

次にスクリーンセーバを無効化し、Chromiumを前画面表示で自動起動します。
$sudo leafpad
でテキストエディタを開き /etc/xdg/lxsession/LXDE/autostartを開きます。
#@xscreensaver -no-splash
スクリーンセーバの行をコメントアウトして以下行を追加します。
@xset s off
@xset -dpms
@xset s noblank
続いて以下行を追加してChromiumを全画面表示します。
@chromium –kiosk –incognito –ignore-certificate-errors –disable-restore-session-state http://www.yahoo.co.jp

今回はテストのためYHOOを開きます。

DPMSとスクリーンセーバを無効化するためもう一つのファイルを編集します。
$sudo leafpad
でテキストエディタを開き /etc/lightdm/lightdm.confを開きます。 省電力モードでディスプレイがOFFしないようにします。
[SeatDefaults]
xserver-command=X -s 0 -dpms

以上で、電源を入れると自動でブラウザが前画面表示になるKIOSK端末の準備が出来ました。

Raspberry Pi2 Model B

ラズパイ2です。ラズパイ1に比べてとにかくハイパワーです。
Jpeg
秋葉買出し物件です。千石電商で購入したRaspberry Pi2です。ケースも一緒に買いました。
https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4PPM
https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4PLB
購入したのは、RS版です。購入時特に指定していません。指定買いする人いるのかな?
https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4R3F
Jpeg
めちゃくちゃ進化しています。
CPUは、700 MHz/ARM1176JZF-S 1コアから900MHz/ARM Cortex-A7 4コア、メモリは512MBから1GBへ倍増。
Jpeg
裏側です。SDカードは、マイクロになりました。
Jpeg
LANポートとUSBポートです。USBは4口あります。
Jpeg
電源用のマイクロUSBとHDMIとコンポジット&音声です。
Jpeg

OSはDebianをベースにした「Raspbian」をチョイスしました。といっても、面倒を省いてインストーラである「NOOBS」をダウンロードしてmicroSDにコピーするだけです。
起動画面、CPUのクアッドコア化の証、ラズベリーが4個です。
Jpeg
デスクトップ画面には、でかいラズベリー。
Jpeg
ブラウザを開いたところです。余裕です。
処理能力が向上したのでデスクトップPCとして使用できます。
ラズパイ1のようなイライラはありません。
ちょっと前のスマホ並の性能があるので当然なのですが・・・・・。
Wifiは、ロジテックのLAN-W300N/U2Sを使用しました。特に認識に問題ありません。本当は、より小さいバッファローのWLI-UC-GNMを使いたかったのですが、熱くなりすぎて不安だったので交換しました。ラズパイ1よりラズパイ2の方がボード温度が高いような気がします。

Samba on BeagleBoad-xM

先日、Beagleboard-xMに入れたDebianに余っているSATA2のSSDを繋げてNAS化しました。
■ntfsでフォーマットしてあるのでntfs-3gをインストールします。
$ sudo apt-get install ntfs-3g
■続いてSambaをインストールします。
$ sudo apt-get install samba
■マウントフォルダを作成します。
$ mkdir /mnt/usb/ntfs
フォルダのアクセス権をフルアクセスにします。
$ chmod -R 777 /mnt/usb/ntfs
■デバイスをマウントします。
$ sudo mount /dev/sda1 /mnt/usb/ntfs
ドライブのアクセス権もフルアクセスにします。
$ sudo chmod -R 777 /dev/sda1
■fstabを変更します。
自動的にマウントするために/etc/fstab に追記します。
/dev/sdb1 /mnt/usb/ntfs ntfs-3g defaults,rw,umask=000 0 0
■sambaの設定ファイルを書き換えます。
/etc/samba/smb.confを編集します。
まずは、設定のバックアップをしておきます。
$ sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf.bk
vimで開きます。
$ sudo vim /etc/samba/smb.conf
以下/etc/samba/smb.confの編集内容です。
[global]
client code page = 932
coding system = cap
dos charset = CP932
unix charset = EUC-JP
display charset = EUC-JP

[usb]
comment = USB HDD
path = /mnt/usb/ntfs
public = yes
guest ok = yes
browseable = yes
read only = no
writable = yes
force user = debian
mangled names = yes
mangle case = no
default case = lower
preserve case = yes
short preserve case = yes

■Sambaの再起動を行います。
$ sudo service smbd restart

■WindowsからLinuxのファイルシステムにアクセスしてみます。
Windows のexploreでパスを”¥¥hostname¥username”と直打すると、USB接続したSSD HDDににアクセスアクセスで来ました。ファイルのコピー、削除、編集も出来ましたが、日本語ファイル名には対応で来ませんでした。日本語ファイル名は、 この目的で使用しないのでこのままとします。
当然LINUXからもアクセス出来ます。
Screenshot_from_2015-06-02 00:16:20

Debian on BeagleBoad-xM

秋葉買出しでボードが増えたので整理しています。最近あまり使っていないBeagleboard-xMをサーバとて使用できないか思案中。とりあえずDebianを入れてみました。
バイナリイメージをダウンロードして使用します。以下サイトからダウンロードします。
BeagleBoardDebian
http://elinux.org/BeagleBoardDebian
Debian (jessie) Image Updated:2015-05-08
Beagle xM: v4.0.2-armv7-x2 kernel
イメージを取得します。
$ wget https://rcn-ee.com/rootfs/2015-05-08/microsd/bbxm-debian-8.0-console-armhf-2015-05-08-2gb.img.xz

圧縮ファイルを解凍します。
$ unxz bbxm-debian-8.0-console-armhf-2015-05-08-2gb.img.xz

SDカードに焼きます。
$ sudo dd if=./bbxm-debian-8.0-console-armhf-2015-05-08-2gb.img of=/dev/sdb

SDカードをBeagleboard-xMに挿して起動します。
ユーザ名: debian
初期パスワード: temppwd

最初の起動後SDカードのパーティションをリサイズします。
$ cd /opt/scripts/tools
$ git pull
$ ./grow_partition.sh
$ sudo reboot

Screenshot_from_2015-05-22 22:41:36

再起動後にシステムを更新します。
$ sudo apt-get update
$ sudo apt-get upgrade

今回はCUIで使用する予定です。Ethernetは、eth0でDHCPでそのまま認識します。
設定ファイルのの編集用にvimを入れておきます。
$ sudo apt-get install vim

タイムゾーンの変更をTokyoにしておきます。
$ dpkg-reconfigure tzdata
これで設定画面が立ち上がります。

最後にパスワードを変更してとりあえず終了します。
$ sudo passwd

© 2014 Spineedge Corporation.