RaspberryPi
気がついたらRaspberryPi2が発売されてましたが、
RaspberryPi B+を購入しました。
RaspberryPi2では、Windows10も提供って事でIoT周りがドンドン盛り上がってきてます。
「Raspberry Pi 2」にWindows 10が無償提供されることが決定 - GIGAZINE
動かすに当たって、RaspberryPi だけではダメで色々と必要です。
・シリアル接続のコード
ディスプレイやキーボードを持ってればいいけど持ってなかったので。普通持ってないよね?
Amazon.co.jp: Raspberry Pi Arduino PL2303HX内蔵USBシリアル変換ケーブル: パソコン・周辺機器
・OSインストール済みSDカード
普通、SDカードが読めるPCって持ってないよね。
Amazon.co.jp: debian OS for Raspberry Pi (Raspbian), OSインストール済み SDカード (microSDHC 32GB Class 6 (SDカードアダプタ付)): パソコン・周辺機器
・wifiアダプター
これも最近、ネットワークケーブルって周りに出てないでしょ
Amazon.co.jp: PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps GW-USNANO2A (FFP): パソコン・周辺機器
って形で色々と揃える必要があります。
写真の様な形で接続して、下記からドライバーをDLしてインストールします。
http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41
マニュアルに書いてある通り、自動でセットアップされたドライバーを削除して、このドライバーをインストールする必要がありました。
1.telnetで接続です。teratermを使いました。
接続後、シリアルのレートをraspberryPiに合わせて115200に変更します。
無事に接続されます!
こんな小さいのみ普通にLinuxが動いている事に感動です。
2.wifi設定
/etc/network/interfacesを編集
iface wlan0 inet dhcp
#iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
/etc/wpa_supplicant/wpa_supplicant.confを編集
network={ ssid="YOUR_NETWORK_NAME" psk="YOUR_NETWORK_PASSWORD" proto=WPA2 key_mgmt=WPA-PSK }
最後に
sudo ifdown wlan0
sudo ifup wlan0
で完了です。
ifconfigでwlan0 のIPを確認して、PCからsshも繋がりました。
3.node.jsを入れてみる
最初にnode.jsのバーション管理のnodebrewを入れます。
pi@raspberrypi:~$ 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:01 --:--:-- 0 100 22630 100 22630 0 0 10503 0 0:00:02 0:00:02 --:--:-- 920k fetching nodebrew... install nodebrew in $HOME/.nodebrew ======================================== Add path: export PATH=$HOME/.nodebrew/current/bin:$PATH ========================================
言われた通り環境変数追加
pi@raspberrypi:~$ vi ~/.bashrc export PATH=$HOME/.nodebrew/current/bin:$PATH pi@raspberrypi:~$ source ~/.bashrc
ということでnode.jsインストール
pi@raspberrypi:~$ 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% 36.9% Install successful pi@raspberrypi:~$ nodebrew use 0.10.28 use v0.10.28 pi@raspberrypi:~$ node -v v0.10.28
expressでwebサーバー化
pi@raspberrypi ~ $ npm install -g express-generator npm http GET https://registry.npmjs.org/express-generator npm http 200 https://registry.npmjs.org/express-generator npm http GET https://registry.npmjs.org/express-generator/-/express-generator-4.11.2.tgz npm http 200 https://registry.npmjs.org/express-generator/-/express-generator-4.11.2.tgz npm http GET https://registry.npmjs.org/commander npm http GET https://registry.npmjs.org/mkdirp npm http GET https://registry.npmjs.org/sorted-object npm http 200 https://registry.npmjs.org/mkdirp npm http 200 https://registry.npmjs.org/sorted-object npm http 200 https://registry.npmjs.org/commander npm http GET https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz npm http GET https://registry.npmjs.org/sorted-object/-/sorted-object-1.0.0.tgz npm http GET https://registry.npmjs.org/commander/-/commander-2.6.0.tgz npm http 200 https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz npm http 200 https://registry.npmjs.org/sorted-object/-/sorted-object-1.0.0.tgz npm http 200 https://registry.npmjs.org/commander/-/commander-2.6.0.tgz npm http GET https://registry.npmjs.org/minimist npm http 200 https://registry.npmjs.org/minimist npm http GET https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz npm http 200 https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz /home/pi/.nodebrew/current/bin/express -> /home/pi/.nodebrew/current/lib/node_modules/express-generator/bin/express express-generator@4.11.2 /home/pi/.nodebrew/current/lib/node_modules/express-generator ├── sorted-object@1.0.0 ├── commander@2.6.0 └── mkdirp@0.5.0 (minimist@0.0.8) pi@raspberrypi ~ $ pi@raspberrypi:~$ vi ~/.bashrc 追加 export PATH=$HOME/.nodebrew/current/bin:$PATH export PATH=$HOME/.nodebrew/node/v0.10.28/bin/express:$PATH export NODE_PATH=$HOME/.nodebrew/node/v0.10.28/lib/node_modules pi@raspberrypi:~$ source ~/.bashrc pi@raspberrypi:~$ mkdir httpd pi@raspberrypi:~$ cd httpd pi@raspberrypi ~/httpd $ express -e sample create : sample create : sample/package.json create : sample/app.js create : sample/public create : sample/public/javascripts create : sample/public/images create : sample/public/stylesheets create : sample/public/stylesheets/style.css create : sample/routes create : sample/routes/index.js create : sample/routes/users.js create : sample/views create : sample/views/index.ejs create : sample/views/error.ejs create : sample/bin create : sample/bin/www install dependencies: $ cd sample && npm install run the app: $ DEBUG=sample:* ./bin/www pi@raspberrypi ~/httpd $ pi@raspberrypi ~/httpd $ cd sample && npm install npm http GET https://registry.npmjs.org/body-parser npm http GET https://registry.npmjs.org/cookie-parser npm http GET https://registry.npmjs.org/ejs npm http GET https://registry.npmjs.org/morgan npm http GET https://registry.npmjs.org/serve-favicon npm http GET https://registry.npmjs.org/debug npm http GET https://registry.npmjs.org/express npm http 200 https://registry.npmjs.org/cookie-parser npm http 200 https://registry.npmjs.org/serve-favicon npm http 304 https://registry.npmjs.org/debug npm http 304 https://registry.npmjs.org/express npm http 200 https://registry.npmjs.org/morgan npm http 200 https://registry.npmjs.org/ejs npm http 200 https://registry.npmjs.org/body-parser npm http GET https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.2.0.tgz npm http GET https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.3.tgz npm http GET https://registry.npmjs.org/morgan/-/morgan-1.5.1.tgz npm http 200 https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.2.0.tgz npm http GET https://registry.npmjs.org/ejs/-/ejs-2.2.4.tgz npm http 200 https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.3.tgz npm http GET https://registry.npmjs.org/body-parser/-/body-parser-1.10.2.tgz npm http 200 https://registry.npmjs.org/ejs/-/ejs-2.2.4.tgz npm http 200 https://registry.npmjs.org/morgan/-/morgan-1.5.1.tgz npm http 200 https://registry.npmjs.org/body-parser/-/body-parser-1.10.2.tgz npm http GET https://registry.npmjs.org/etag npm http GET https://registry.npmjs.org/fresh npm http GET https://registry.npmjs.org/ms npm http GET https://registry.npmjs.org/parseurl npm http GET https://registry.npmjs.org/cookie npm http GET https://registry.npmjs.org/cookie-signature npm http 304 https://registry.npmjs.org/fresh npm http 304 https://registry.npmjs.org/etag npm http 304 https://registry.npmjs.org/cookie-signature npm http 304 https://registry.npmjs.org/ms npm http 304 https://registry.npmjs.org/parseurl npm http 304 https://registry.npmjs.org/cookie npm http GET https://registry.npmjs.org/basic-auth npm http GET https://registry.npmjs.org/depd npm http GET https://registry.npmjs.org/on-finished npm http 200 https://registry.npmjs.org/basic-auth npm http 304 https://registry.npmjs.org/on-finished npm http 304 https://registry.npmjs.org/depd npm http GET https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz npm http 200 https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz npm http GET https://registry.npmjs.org/bytes npm http GET https://registry.npmjs.org/iconv-lite npm http GET https://registry.npmjs.org/raw-body npm http GET https://registry.npmjs.org/media-typer npm http GET https://registry.npmjs.org/qs npm http GET https://registry.npmjs.org/type-is npm http 200 https://registry.npmjs.org/raw-body npm http 200 https://registry.npmjs.org/bytes npm http 304 https://registry.npmjs.org/media-typer npm http 304 https://registry.npmjs.org/type-is npm http 200 https://registry.npmjs.org/iconv-lite npm http 304 https://registry.npmjs.org/qs npm http GET https://registry.npmjs.org/raw-body/-/raw-body-1.3.2.tgz npm http GET https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz npm http GET https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.6.tgz npm http 200 https://registry.npmjs.org/raw-body/-/raw-body-1.3.2.tgz npm http 200 https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz npm http 200 https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.6.tgz npm http GET https://registry.npmjs.org/crc npm http 304 https://registry.npmjs.org/crc npm http GET https://registry.npmjs.org/ee-first npm http 304 https://registry.npmjs.org/ee-first npm http GET https://registry.npmjs.org/on-finished npm http GET https://registry.npmjs.org/parseurl npm http GET https://registry.npmjs.org/methods npm http GET https://registry.npmjs.org/range-parser npm http GET https://registry.npmjs.org/type-is npm http GET https://registry.npmjs.org/send npm http GET https://registry.npmjs.org/cookie npm http GET https://registry.npmjs.org/serve-static npm http GET https://registry.npmjs.org/vary npm http GET https://registry.npmjs.org/merge-descriptors npm http GET https://registry.npmjs.org/utils-merge npm http GET https://registry.npmjs.org/accepts npm http GET https://registry.npmjs.org/cookie-signature npm http GET https://registry.npmjs.org/content-disposition npm http GET https://registry.npmjs.org/depd npm http GET https://registry.npmjs.org/escape-html npm http GET https://registry.npmjs.org/etag npm http GET https://registry.npmjs.org/fresh npm http GET https://registry.npmjs.org/finalhandler npm http GET https://registry.npmjs.org/media-typer npm http GET https://registry.npmjs.org/path-to-regexp npm http GET https://registry.npmjs.org/proxy-addr npm http 304 https://registry.npmjs.org/on-finished npm http 304 https://registry.npmjs.org/parseurl npm http 304 https://registry.npmjs.org/send npm http 304 https://registry.npmjs.org/methods npm http 304 https://registry.npmjs.org/cookie npm http 304 https://registry.npmjs.org/range-parser npm http 304 https://registry.npmjs.org/vary npm http 304 https://registry.npmjs.org/serve-static npm http 304 https://registry.npmjs.org/merge-descriptors npm http 304 https://registry.npmjs.org/utils-merge npm http 304 https://registry.npmjs.org/type-is npm http 304 https://registry.npmjs.org/accepts npm http 304 https://registry.npmjs.org/cookie-signature npm http 304 https://registry.npmjs.org/content-disposition npm http 304 https://registry.npmjs.org/depd npm http 304 https://registry.npmjs.org/escape-html npm http 304 https://registry.npmjs.org/etag npm http 304 https://registry.npmjs.org/fresh npm http 304 https://registry.npmjs.org/finalhandler npm http 304 https://registry.npmjs.org/media-typer npm http 304 https://registry.npmjs.org/path-to-regexp npm http 304 https://registry.npmjs.org/proxy-addr npm http GET https://registry.npmjs.org/crc npm http GET https://registry.npmjs.org/ee-first npm http GET https://registry.npmjs.org/mime-types npm http GET https://registry.npmjs.org/negotiator npm http GET https://registry.npmjs.org/mime-types npm http GET https://registry.npmjs.org/forwarded npm http GET https://registry.npmjs.org/ipaddr.js npm http 304 https://registry.npmjs.org/crc npm http 304 https://registry.npmjs.org/forwarded npm http 304 https://registry.npmjs.org/ee-first npm http 304 https://registry.npmjs.org/ipaddr.js npm http 304 https://registry.npmjs.org/mime-types npm http 304 https://registry.npmjs.org/negotiator npm http 304 https://registry.npmjs.org/mime-types npm http GET https://registry.npmjs.org/destroy npm http GET https://registry.npmjs.org/ms npm http GET https://registry.npmjs.org/mime npm http 304 https://registry.npmjs.org/ms npm http 304 https://registry.npmjs.org/destroy npm http 304 https://registry.npmjs.org/mime npm http GET https://registry.npmjs.org/mime-db npm http 304 https://registry.npmjs.org/mime-db npm http GET https://registry.npmjs.org/ee-first npm http GET https://registry.npmjs.org/mime-types npm http 304 https://registry.npmjs.org/ee-first npm http 304 https://registry.npmjs.org/mime-types cookie-parser@1.3.3 node_modules/cookie-parser ├── cookie@0.1.2 └── cookie-signature@1.0.5 debug@2.1.1 node_modules/debug └── ms@0.6.2 morgan@1.5.1 node_modules/morgan ├── basic-auth@1.0.0 ├── depd@1.0.0 └── on-finished@2.2.0 (ee-first@1.1.0) serve-favicon@2.2.0 node_modules/serve-favicon ├── fresh@0.2.4 ├── ms@0.7.0 ├── parseurl@1.3.0 └── etag@1.5.1 (crc@3.2.1) ejs@2.2.4 node_modules/ejs express@4.11.2 node_modules/express ├── merge-descriptors@0.0.2 ├── utils-merge@1.0.0 ├── methods@1.1.1 ├── cookie@0.1.2 ├── fresh@0.2.4 ├── escape-html@1.0.1 ├── range-parser@1.0.2 ├── cookie-signature@1.0.5 ├── finalhandler@0.3.3 ├── vary@1.0.0 ├── media-typer@0.3.0 ├── parseurl@1.3.0 ├── serve-static@1.8.1 ├── content-disposition@0.5.0 ├── path-to-regexp@0.1.3 ├── depd@1.0.0 ├── on-finished@2.2.0 (ee-first@1.1.0) ├── qs@2.3.3 ├── proxy-addr@1.0.6 (forwarded@0.1.0, ipaddr.js@0.1.8) ├── etag@1.5.1 (crc@3.2.1) ├── send@0.11.1 (destroy@1.0.3, ms@0.7.0, mime@1.2.11) ├── accepts@1.2.3 (negotiator@0.5.0, mime-types@2.0.9) └── type-is@1.5.7 (mime-types@2.0.9) body-parser@1.10.2 node_modules/body-parser ├── media-typer@0.3.0 ├── bytes@1.0.0 ├── raw-body@1.3.2 ├── depd@1.0.0 ├── on-finished@2.2.0 (ee-first@1.1.0) ├── qs@2.3.3 ├── type-is@1.5.7 (mime-types@2.0.9) └── iconv-lite@0.4.6 pi@raspberrypi ~/httpd/sample $ pi@raspberrypi ~/httpd/sample $ node app 依存モジュールを入れる pi@raspberrypi ~/httpd/sample $ express -V 4.11.2 pi@raspberrypi ~/httpd/sample $ npm start > sample@0.0.0 start /home/pi/httpd/sample > node ./bin/www
無事動いた。パチパチ。
この後色々とやってみます。楽しみ。