Miruken(ミルケン)
概要
ラズパイでトランザクションを検知する。
トランザクションのメッセージをE-Paper上に表示する。
なぜ作ったか
トランザクションの通知だけであればスマホで事足りるが、なぜわざわざHWを作ったかと言うと、楽しそうだったから(笑)
というのは冗談で(半分以上は本気)、スマホの通知は日常生活のなかで埋もれがちになる。
人は情報が多いと不要だと思うのもを遮断する生き物である(持論)
あえて飾り物として常時決まった場所においておくことにより、時計やカレンダーの様に常に気にかける存在としてなり得るのでは無いかと思ったためである。
情報過多なこの時代にアナログチックなものをコネクトしたかったのである。
また、メッセージに指令を込め、様々なHWやリソースとコネクトすることを最終目的として制作している。
処理の流れ
+---------------+
| Block Chain |
+------+--------+
|
|
| WebSocketで特定アドレスを監視
|
miruken for Rasberry Pi |
+-----------------------------v--+--+
| |
| +-Nodejs listener-------+ |
| | | |
| | | |
| | dist/main.js | |
| | | |
| | | |
| +-----------+-----------+ |
| | |
| +-python----v-----------------+ |
| | | |
| | - Generate image | |
| | | | QR Codeを読み込んでExplorer表示
| | - Generate QR Code | | +-----------------------+
| | | | | Symbol Block Explorer |
| | - Show E-ink E-Paper +---+---> |
| | | | +-----------------------+
| +-----------------------------+ |
| |
+-----------------------------------+
実行環境
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
環境構築
音声ツールのインストール
sudo apt update
sudo apt install mpg321
SPIを有効にする
sudo raspi-config
sudo reboot
電子ペーパーを制御するためのツールインストール
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60/
sudo ./configure
sudo make
sudo make check
sudo make install
#wingpiインストール
sudo apt-get install wiringpi
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
#wingpiは非推奨になったので下記を実行 参考:https://qiita.com/ma2shita/items/b11045717333bcd79d15
raspi-gpio get
raspi-gpio get 6 | awk -v RS=" " -F "=" -v k="level" '$1==k {print $2}'
# install Python3 libraries
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
Nodejsインストール
nvmを入れる
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
nvm install 18
※nvmが見つからないときはreboot
foreverインストール
sudo npm install -g forever
インストール
pip3 ライブラリのインストール
cd miruken/python
pip3 install -r requirements.txt
npm ライブラリのインストール
cd miruken/node
npm install
.envの設定
python/.env
# Twitter投稿用の設定
# TwitterAPIより取得して設定してください
CONSUMER_KEY=
CONSUMER_SECRET=
ACCESS_TOKEN=
ACCESS_TOKEN_SECRET=
nodejs/.env
# Symbolネットワーク設定 testnet or mainnet
NETWORK_TYPE=testnet
# SlackWebHookURL
SLACK_WEBHOOK_URL=
# 受信するアカウントのプライベートキー
PRIVATE_KEY=
※プライベートキーにしているのは今後の開発を見据えてのこと
使用方法
cd /home/pi/miruken/nodejs
# プログラムのビルド
npm run build
# 実行
node dist/main.js
# foreverにより永続化することも可能
forever start dist/main.js
部品
必須
オプション(普通にスピーカー繋ぐなら不要)
- ミニブレッドボード BB-601(白)
- PAM8012使用2ワットD級アンプモジュール
- 3.5mmステレオミニジャックDIP化キット
- ブレッドボード用ダイナミックスピーカー
- 小型ボリューム 1KΩB
- 小型ボリューム用ツマミ(ノブ) 15mm ABS-28
配線
GPIO接続
e-Paper | Raspberry Pi |
---|---|
VCC | 1番ピン(3.3V) |
GND | 6番ピン(GND) |
DIN | 19番ピン(GPIO9) |
CLK | 23番ピン(GPIO11) |
CS | 24番ピン(GPIO8) |
DC | 22番ピン(GPIO25) |
RST | 11番ピン(GPIO17) |
BUSY | 18番ピン(GPIO24) |
動作イメージ
こちらをクリック
実際の動きを確認する動画は作成物イメージ
現在の監視アドレス
NAKSFNW3VT45NEPU7NF4BVKCKKKXCNDQ3L22BZI
こちらのアドレスにメッセージを投げるとmirukenに表示されます。 また、動作がわかりにくいのでTwitterにも生成したメッセージ画像を投稿しています。 ➾BotXym
その他
現在はメッセージに半角文字列が交じると文字を正常に表示出来ません。 そのうち直します。