キノコの自省録

テクノロジーとコンテンツの融合を目指して

IoT智絵里アラームを作ろうと思う(4) - 電子回路実装編

前回の続き。

前回、箱に納まるよう部品を色々調達したので、今回は粛々と実装。

とりあえず、最終的な回路はこちら。 この通り、回路自体はかなりシンプルなので、はんだ付けと圧着を間違えないようにやるだけなんですが、思った通りに動かないとはままあることで……。

f:id:kinokorori:20180414145559p:plain:w600

スイッチピンはPullUpで、GNDに落としてOnとしてます。3.3Vで50mA以下という制約から、割と一般的な220Ωを採用しました。ちなみにラズパイのPullUpの内部抵抗が1.3KΩくらいらしいです。

D級アンプのPAM8403は、チップそのものではなく、モジュール品です。10個220円で買いましたが、HiLetgoが日本法人作った影響か、すぐ届くようになった代わりに値段が上がりました。

HiLetgo PAM8403 2 * 3W クラスD ミニ デジタル パワー アンプボード AMP 2.5-5V入力 (10個セット)

アンプがぷつぷつ言う問題

今回一番困ったのが、アンプがプツプツ音を出して、再生してくれないことが多い、という問題でした。波形をPWMから送っても、プツプツ言っている間は全く再生せず、圧着ハウジングの辺りを下に引っ張ると直って再生したりと、なんだかよくわからない現象。

どうもパワー切れを起こして、不安定になっている様子。上の回路では、47μFのケミコンが実装されてますが、最初は10μFで、1つしか差してませんでした。ということで、47μFのケミコンを追加。

さらっと書きましたが、前回のエントリの通り、小さい基板に実装しなければならないので、修正は容易ではありませんでした。しかも結構原因がわからず、コンデンサを付け替えたり、配線やり直したりと。

ただ、ケミコン追加してもまだ少し不安定で、一度ミュートをOn(ベース電流を流さない)にしないと再生が安定しません。うーん、ブレッドボード上では何の問題もなかったので油断してました。もう少し大きめのコンデンサを実装したいところですが、縦にも横にも隙間がないため断念。もう少し早く気づけば手の打ちようはあったのですが。ただ、とりあえず起動時にMute Onに変更するからまあ良しとします。

電源用USBケーブルの芯細すぎ問題

RaspberryPiはご存知の通りMicroBで給電できますが、Microといっても意外とコネクタはそこそこ大きさがある上、硬くて場所を取ります。MicroBコネクタが通るよう箱に大穴を開けるようなことをあまりしたくなかったことと、MicroBは引っ張ると抜けやすいので、MicroBをカットして圧着コネクタ(XH)を装着することにしました。

ということで、百均でTypeA - MicroBケーブルを買ってきて、MicroB側を切断、圧着端子のポスト側にはんだ付けをしたのですが、芯がめちゃくちゃ細いです。ちょっと引っ張っただけでポストから取れてしまいます。

対策は現在検討中。策はあるので、どれにしようかというところ。

その他

ラズパイはソケットを上から被せる格好になってます。そうすると、ソケットの逆側(要するに天井)からワイヤーを引っ張る必要があります。結構面倒くさいです。

確認したはずなのに、トランジスタの足を間違えるのはお約束……。

完成品

こんな感じになりました。

f:id:kinokorori:20180414222321p:plain:w500

右側のコネクタはスヌーズとアラームスイッチに、左側のコネクタは+5Vに繋がります。スピーカーモジュールも、ラズパイ側と着脱可能なように、XHコネクタで接続しています。

別に何の変哲もない圧着の様子をパシャリ。エンジニアのPA-09です。

f:id:kinokorori:20180321145432j:plain:w550

ということで、一通りハード系は完成といったところ。。。疲れました。もう少し取り付け作業を行って、残るはソフトとデコレーション。

IoT智絵里アラームを作ろうと思う(3) - 電子部品調達編

前回の続き。

前回紹介した通り、中に実装する回路は大まかにこんな感じ。

f:id:kinokorori:20180324162958p:plain:w250

回路自体はかなりシンプルなものの、これを百均の木箱に取り付ける部品選定に難儀。

f:id:kinokorori:20180304152939j:plain:w300

箱が小さい

この箱、外見はそこそこサイズあるように見えるんですけど、中は結構狭いです。

f:id:kinokorori:20180328220513j:plain:w400

実測すると、W87mm x D61mm x H22mmでした。Cタイプのユニバーサル基板より、一回り大きい程度のサイズです。 紙で表現するとこんな感じ。

f:id:kinokorori:20180328221111j:plain:w400

幅はそこそこありますが、奥行きと高さが厳しいです。この中に、

  • RaspberryPi Zero W
  • RaspberryPi Zero W用ピンソケット取り付け基板
  • RaspberryPi用電源+5Vケーブル
  • プッシュスイッチ (スヌーズ用)
  • アンプ回路 (ミュート含む)
  • スピーカー
  • トグル系スイッチ (アラーム自体のOn/Off)
  • 抵抗、コンデンサいくつか
  • ワイヤー、圧着コネクタ

を頑張って配置します。各モジュールを全部直はんだ付けしてしまえば省スペースになりますが、それするとにっちもさっちもいかなくなるので、圧着コネクタも必須です。

部品

プッシュスイッチとトグル系スイッチ、スピーカーは、少なくとも箱に入るサイズじゃなきゃ困るので、結構いろいろ買いました。電流はほとんど流さない(3.3V 30mA)ので、本当にサイズ次第です。

On/Offスイッチ

On/Offスイッチなので、スライド、ロッカー、トグルあたりが対象ですが、On/Offが目で見て分かりやすい方がいいので、ロッカースイッチを中心に探しました。この画像はボツ品です。理由はサイズが箱に対して大きすぎる、というだけです。一応ギリ嵌らなくはないものの、あまり大穴を開けると強度が心配。たぶん、ちょっと力が入るとボキッといきます。

f:id:kinokorori:20180328230930j:plain:w300

最終的に選んだのは、15mm x 10mmのスイッチ。結構小さめです。たぶんこれと同じだと思います。

プッシュスイッチ

プッシュスイッチは天板につけるので、サイズは結構余裕がある……と思いきや、底が浅いということを改めて気づかされる事態に。画像はよく見かけるゲームスイッチです。今回は全部採用見送り。右と左は高さが大きすぎるため、蓋が閉まらなくなります。中央も、ピンを曲げればギリ入る程度。ただ、流石に径が大きすぎて、超大穴が必要になってしまいます。

f:id:kinokorori:20180328232755j:plain:w400

スヌーズ用ということもあり、ある程度のサイズがあり、かつ押しやすさ加減が丁度いい品じゃないと、あまり芳しくありません。いろいろ押して回った結果、最終的にマル信無線電機 MS-370M(緑)にしました。割と押した感じが良く、高さもなんとか納まります。縦横が少し小さめですが、そこは上に何か置いて、見かけを大きくする予定。

f:id:kinokorori:20180328233621j:plain:w120

スピーカー

スピーカーも、小さい方が当然取り付けが楽なのは確かなんですが、音が小さかったり割れたりすると、今度はアラームとして意味がなくなってしまいます。色々視聴してみた結果、φ2.5cmでギリ音が許容レベル、かつこれ以上大きいと取り付けが厳しいというところで落ち着きました。

f:id:kinokorori:20180329000701j:plain:w220

ただ、これ磁石が後ろに出ているため、取り付けが厳しい中で絶縁が心配ではあります。表面実装スピーカーでもよかったかもしれないなどと思っています。私は音響波形の解析は結構経験多いんですけど、スピーカーに関する知識はかなり乏しいです。他に良いのがあったら、もしかしたら変更するかも。

RaspberryPi Zero W用ピンソケット取り付け基板

ラズパイのピンにはんだ直付けする実装は流石にナシなので、ユニバーサル基板に2x20ピンソケットを取り付けて拡張します。ユニバーサル基板はフリスクサイズのこれ。

ユニバーサル基板 56.5×32mm: パーツ一般 秋月電子通商 電子部品 ネット通販

そしてまたしても高さの問題が浮上。ラズパイ+ピンソケ付きユニバーサル基板を合わせると、天井まで5mmしか隙間がありません。なので、ユニバーサル基板に実装できるのは、せいぜいワイヤーか1/4W抵抗程度、ケミコンは寝せないと蓋が閉まらなくなります。EH/XHコネクタですらサイズオーバーになります。厳しい。

アンプ回路

基本はD級アンプPAM8403を実装したモジュールを使用します。10個220円で買いました。今は倍以上しますね。それでも10個550円。これにPWMと5VをRaspberryPiから入力して使います。

HiLetgo PAM8403 2 * 3W クラスD ミニ デジタル パワー アンプボード AMP 2.5-5V入力 (10個セット) [並行輸入品]

これは薄べったいし、あまりサイズも大きくないので、ラズパイの隣に配置できそうな感じ。こちらは高さは問題ないでしょう。たぶん……。

配置確認

天板に穴を開け、スヌーズスイッチの嵌り具合も確認。

f:id:kinokorori:20180329001326j:plain:w300

ゾリゾリ

部品を箱に仮配置して、まあ行けそうかな、というところ。次回はたぶん電子回路作成編。

IoT智絵里アラームを作ろうと思う(2) - ソフト・ハード概念設計編

前回の続きです。智絵里フィギュアの土台に電子回路入れて、目覚ましを作ろうプロジェクト。

目覚まし概要

目覚まし時計なので、時計表示やアラーム設定ができるディスプレイ、操作ボタンなどなど必要かな、と考えたのですが、 欲しいのはアラームであって、時計ではないのです。別に現在時刻を見る必要はないし、何らかの手段でアラーム時刻が設定できれば良い。そして、設定した時刻にアラームが鳴れば十分です。へんてこなボタンがゴテゴテついたら嫌なので、できればバッサリいきたい。

ということで考えたのが、スマホから設定できればいいや、というインタフェースです。どうやってアラームを設定するか?というところですが、いくつかの実現手段があります。BLE通信する、カメラで2次元バーコードを撮らせる、Webサーバを立てる、赤外線通信(これはiPhone側にないですが)、音声認識など。今回は一番楽で拡張性も容易なWebサーバでやります。RaspberryPi ZeroWを中に入れる予定なので、外部のどこか適当な場所にサーバを立てるのではなく、目覚まし自体をWebサーバにしてしまいます。RaspberryPiは家のWiFiに繋いでしまえば、同じネットワークドメインなら自由にアクセスできます。

要するに今流行りのIoT機器ということですね。IoT智絵里アラーム。

物理的なブロック構成は、以下のような感じになります。Webサーバはなんでもいいんですが、割と使い慣れたNode.jsでやります。

f:id:kinokorori:20180324162831p:plain:w600

目覚ましのペリフェラル

ディスプレイと、アラーム設定用ボタンは要らないですが、かといって全くインタフェースが要らないかというと、それも困ります。スヌーズボタンと、アラームOn/Offボタンくらいはないと、アラームとして機能しません。もちろん、スピーカーとアンプ回路も必須です。

以上を踏まえた最低限必要な機器構成は、以下のようになります。一見シンプルですが、ボタン2つにスピーカーと、大物が3つあるため、箱のどこに取り付けるか考える必要が出てきます。なお、図のピン配は適当です。

f:id:kinokorori:20180324162958p:plain:w400

ということで、これを前回の箱の内部に取り付けていきます。

f:id:kinokorori:20170906212353j:plain:w300

フィギュアに電子回路を取り付けて目覚ましにする

フィギュアやプラモ(特にガンプラ)ってエレクトロニクスと抱き合わせると、もっと面白く、表現豊かになるんじゃないかなと、前々から漠然と考えてました。といっても、実際に駆動させるとなると、それは材料からやり直しになる上、造形師の協力が必要なので、流石にそこまでのことはちょっと厳しいですが。ちなみに、この分野に真剣に取り組まれている、スピーシーズという会社があります。私はこの手の機構設計は全くさっぱり知識がないものの、興味はあります。ちょっとやってみたい。単純に面白そうだし、夢がある感じ。

HOME of Speecys Kichijoji Design Studio

今回は、もっと難易度を落として、フィギュアの土台をデコるついでに、土台の中に電子基板を入れて、ちょっとした機能を追加してみようと思います。それでも、結構面白い試みになるんじゃないかと思ってます。

台座って自作している方が多いみたいで、探すと多数見つかります。アクリル台座が多い印象。

何を作るか

とりあえず土台を何かの箱に差し替えて、中に基板を入れます。どういった機能を実装するかですが、今回は目覚まし機能を入れようと思います。目覚ましなら、キャラクターボイスが生かせますし。

対象と台座

この智絵里フィギュアを改造します。

あれ、今売ってるのって、アクリル台座なんですかね?手持ちとちょっと違います。しかもなんか値段が上がってますね。。。それはさておき、智絵里の見た目で、智絵里ボイスの目覚ましを作るということです。こりゃすげえ。

手持ちの台座は至ってシンプル。ABS樹脂ですかね?取り外しも簡単。中央の穴に足の先を挿入して立たせる感じです。

f:id:kinokorori:20180324140502j:plain:w300

代わりの台座は100均で買った、この木箱を使います。キャラ的に木材の方が合うかと思ったので。この中に回路を取り付ける予定。

f:id:kinokorori:20180304152939j:plain:w300

台座の穴あけ

採寸した足の穴を開けて、ヤスリかけて終わり。簡単です。穴は彫刻刀で開けました。ドリルや糸鋸使うなど、いくらかやり方がありますのでお好みで。

f:id:kinokorori:20170906211051j:plain:w300

ばっちり立ちます。鉛筆や削りの汚れがありますが、上にカバーかけてデコる予定なので無問題です。

f:id:kinokorori:20170906212353j:plain:w300

次回はソフトウェア・ハードウェアの設計のお話になると思います。

RaspberryPiでGPIO(I2S)を使ってマイクから録音する

RaspberryPiで録音方法について調べると、大抵USBマイクの紹介記事が見つかります。USBマイクは楽ですが、USB-Aが必要なのでRaspberryPi Zeroの場合はmicroB→HostA変換する必要がありますし、そもそも場所を取るので取り付けに困ったりします。特に、小型化したいとか、基板上に配置したいといった場合に苦労します。

ということで、GPIOで録音する方法を紹介。

方法

RaspberryPiはA-Dコンバータを積んでいないので、デジタル信号を入力する必要があります。音声信号のデジタル入出力は、I2S、PDM、TDMなどがあります。I2Sが一番メジャーで、RaspberryPiもI2Sをサポートしています。

そんなわけで、I2SでRaspberryPiに入力して録音する方法を模索します。

マイクの調達

まずはI2SでRaspberryPiにマイク音声を入力するって、どんな部品を調達すればいいいんでしょう?というところから。”I2S RaspberryPi”とかで検索すると、お値段の高いハイレゾDACに関する記事が大量に見つかります。いや、そっちじゃないんです。DACじゃなくてADCが欲しいんです。

それはさておき、I2SをOutputにするADCは例えばこんなものがあります。

ADAU1977 データシートおよび製品情報 | アナログ・デバイセズ

このADAU1977は、RaspberryPiに標準でDeviceTreeにドライバが登録されています。ただ、チップ単体販売なので、基板を作らなければならないので非常に面倒くさいです。私も扱ったことがないので、たぶんできるよとしか言えません。

しかし、世の中には、I2S出力するデジタルマイクが存在したりします。便利な世の中になったものです。手に入りやすいところではADMP441, SPH0645LM4H, ICS-43432あたり。ADMP441なら秋月電子DIP化キットが売っているので、今回はこれを使います。1つ750円。

ADMP441 DIPモジュール: パーツ一般 秋月電子通商 電子部品 ネット通販

SPH0645LM4Hにもスイッチサイエンス製のモジュールキットがあります。こちらはAmazonでも購入可能。


SPH0645LM4H搭載 I2S MEMSマイクモジュール

ADMP44 DIP化キットはんだ付けの注意

マイクの開口部が実装面の裏にあるので、ピンヘッダの装着面に注意しましょう。この通り、ちゃんと説明書に書いてあります。が、私ははんだ付けしてから気づきました……。

f:id:kinokorori:20180224212215j:plain

ピン配置

ピンの配置は次の通りです。直接挿すだけなので、難しくないです。L/RはGNDの場合は左チャンネル、+Vの場合は右チャンネルになりますが、1つしかマイクがない場合はどのみちモノラルになります。

電源電圧は1.8V~3.3Vなので、3.3Vピンに接続しましょう。動作時の消費電流が1.4mAなので、余裕で給電可能です。

f:id:kinokorori:20180225014458p:plain

RaspberryPiの設定(ソフト)

上記の通り、I2SのGPIOピンは18,19,20(,21)を接続し、ALT0で利用します。ただし、ALT0でI2Sを有効にするだけでなく、デバイスドライバも必要です。しかし、RaspberryPiのデフォルトでは、I2Sマイクで利用可能なモジュールが存在しません。

ただ、カーネルソースにはモジュールがあるので、カーネルをビルドしてカーネルモジュールとくっつけて利用する説明が数多く存在します。

この辺とか。

GitHub - nejohnson2/rpi-i2s: Using the ICS43432 MEMS microphone on a Raspberry Pi with i2s

調べていると、Device-Treeを利用した、もっと簡単な方法を公開している人がいましたので、今回はそちらを紹介します。

GitHub - gtalusan/admp441-rpi: ADMP441 for the Raspberry Pi

手順は書いてありますが、少し補足説明を加えておきます。

kernelフォルダのビルド

git cloneして、kernelフォルダの中身をビルドします。

$ git clone https://github.com/gtalusan/admp441-rpi.git
$ cd admp441-rpi
$ cd kernel
$ make
$ make install

おそらく、make時に以下のようなエラーが出ると思います。

make -C /lib/modules/4.9.59+/build M=/home/pi/admp441-rpi/kernel modules
make[1]: *** /lib/modules/4.9.59+/build: No such file or directory.  Stop.
Makefile:4: recipe for target 'all' failed
make: *** [all] Error 2

このエラーが発生した場合、

$ sudo apt-get install raspberrypi-kernel-headers

を実行してみてください。それでも解決しない場合、おそらくraspberrypi-kernel-headersでインストールされるバージョンと、uname -rのバージョンがずれています。カーネルビルドを施したのであれば、ターゲットのbuildから、ビルドに用いたlinuxディレクトリへのシンボリックリンクを貼ってみてください。

Device Tree Overlay

Device-Treeに登録します。

$ cd ../dts
$ dtc -@ -I dts -O dtb -o i2s-soundcard.dtbo i2s-soundcard-overlay.dts
$ sudo cp i2s-soundcard.dtbo /boot/overlays

これはただ実行するだけです。dtc実行時にwarningが出ますが、特に問題はなさそうです。

Configuration

以上の全てが完了後、/etc/modulesの末尾にadmp441を追加し、/boot/config.txtに、dtoverlay=i2s-soundcard,alsaname=mems-micを追加します。

編集を終えたらリブートをかけます。これで完了です。

※ ADMP411専用っぽい感じがしますが、I2SのMEMSマイクなら、同じモジュールで動作する可能性が高いです。

録音

まずは、録音デバイスの確認。arecord -lを叩いてチェックしてみます。

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: memsmic [mems-mic], device 0: bcm2835-i2s-admp441-hifi admp441-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

先ほど登録したmems-micがデバイスとして見えています。 では、早速録音してみます。

$ arecord -D plughw:1 -c1 -r 48000 -f S32_LE -t wav -V mono voice.wav
Recording WAVE 'voice.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo

これでvoice.wavに音声が録音されます。録音できました、やったーと思いきや、めちゃくちゃゲインが低いです。再生してもなんだかほとんど聞こえません。

ゲイン調整

alsamixerやamixerでボリュームを調整できるよう、ALSAのPCMプラグインを登録します。ALSAのPCMプラグインは、ユーザ設定の場合は~/.asoundrcファイルに、システム全体に反映させる場合は/etc/asound.confに書き出します。今回は~/.asoundrcに書き出します。ファイル内容は以下の通りです。

pcm.dmic_hw {
    type hw
    card memsmic
    channels 2
    format S32_LE
}

pcm.dmic_sv {
    type softvol
    slave.pcm dmic_hw
    control {
        name "Boost Capture Volume"
        card memsmic
    }
    min_dB -3.0
    max_dB 30.0
}

上記内容は、基本的にここの情報を参照して、少し組み替えています。 https://learn.adafruit.com/adafruit-i2s-mems-microphone-breakout/raspberry-pi-wiring-and-test

※PCMプラグインのフォーマットについては、こちらを参照のこと。 ALSA project - the C library reference: PCM (digital audio) plugins

登録はしたものの、alsamixerを開いても項目が出てきません。しかし、一度以下のようにもう一度arecordを実行したところ、alsamixerやamixerで設定できるようになりました。

$ arecord -D plughw:1 -c1 -r 48000 -f S32_LE -t wav -V mono -v voice.wav

うーん、これは要調査ですね。とりあえず今回は、この問題は横に置いておきます。

$ alsamixer

でalsamixerを起動し、F6キーを押して、”mems-mic”を選択します。mems-micのボリューム設定に切り替わったら、F4キー、またはTABキーを押して、Captureの音量設定に切り替えます。

f:id:kinokorori:20180304015007p:plain

ボリュームを適当にあげて、再度録音してみましょう。今度はだいぶ録音音量が大きくなったはずです。

RaspberryPi ZeroでGPIOを使って音声出力をするお話(2)

以下の続編(解説編)です。音声出力というより、どちらかというとGPIOのAlternative Functionの話です。

kinokorori.hatenablog.com

そもそも一体何をしているのか

dtoverlayを使用した方法では、以下のような指定をして、PWMを有効にしました。

dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4

また、gpio_altを使用した方法では、最終的には、以下を実行して、PWMを有効にしました。

$ gpio_alt -p 13 -f 0
$ gpio_alt -p 18 -f 5

果たしてこれは何をしているのでしょう、というお話。

PWM(パルス幅変調)を用いて音声出力する機能が、RaspberryPiに備わっています。それを有効にしているだけといえばだけです。PWMにはPWM0とPWM1の2pinが必要で、それをgpio_altやdtoverlayを使って有効にしているというのが、解説先で紹介されている方法です。

上記例では、GPIO 13のファンクションを0(ALT0)、GPIO 18のファンクションを5(ALT5)にすることで、GPIO13をPWM1に、GPIO18をPWM0に設定しています。

ALTって何?

BCM2835(RaspberryPiのCPU)のGPIOピンには、切り替え可能な機能が最大6種類割り振られています。それがALT0やALT5と呼ばれるものです。raspi-configを使用して、I2CやSPIなどを有効にしたことがあると思いますが、それは、対応するピンをALT0に変更するということを裏で行っています。ALTを設定していない状態の場合、大抵はINです。単純に外部からHIGH/LOWを受け取るだけの単純な機能ということです。

ALT0がどういう機能なのか、ALT5がどういう機能なのかは、このページを参照するのが良いと思います。

RPi BCM2835 GPIOs - eLinux.org

この表の通り、GPIO13のALT0はPWM1、GPIO18のALT5はPWM0です。GPIO18をALT0(I2S)として使いたい場合、別のPWM0の機能を持つピンを探せばよいということです。GPIO12のALT0にPWM0がありますので、gpio_altの場合、

$ gpio_alt -p 13 -f 0
$ gpio_alt -p 12 -f 0

を実行して、GPIO18からGPIO12に配線しなおせば、ちゃんと音声の再生ができるようになります。

dtoverlayの場合は、

dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4

となります。func=4がALT0です。紛らわしいので注意。うまく再生できない場合はgpio readallで確認しましょう。

Raspberry PiにNode.js + Expressをインストールする虎の巻

Node.js + Expressのインストール手順を紹介。半分は自分備忘録用。Raspberry Piとタイトルで書いてますが、基本的にどのLinux環境でもほとんど一緒です。自分の場合、AWS-Linuxでも同じ手順でやってます。

なお、gitがインストールされていることが前提。Raspbianならsudo apt-get install gitです。

$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ vim ~/.bash_profile
    #.bash_profileに以下を設定
    if [[ -s ~/.nvm/nvm.sh ]] ; then
            source ~/.nvm/nvm.sh
    fi
$ . ~/.bash_profile
$ nvm install --lts
$ nvm use --lts

ここでNode.jsが使用可能に。

$ node -v
v8.9.4

※バージョンはltsを指定しているので、インストールした日によって変わります。

最後にExpressの用意とプロジェクトテンプレートの展開。

$ npm install express-generator -g
$ express kinoko_project
$ cd kinoko_project
$ npm install

ここでExpressを使用したプロジェクトが使用可能に。

$ npm start

デフォルトポートは3000なので、localhost:3000にアクセスすれば、Webページが見れるはず。