連休に電子工作デビューしてみた
はじめに
こんにちは。最近は納豆パスタにハマっているchoco80(ちょこはま)です。
今回は、シングルボードコンピューター(以降、SBCと記載します。)を使った電子工作に初挑戦したときの記録をお届けします。
最寄りの電気街での本体購入から電子ペーパーにテスト画像を表示するまでの流れをお楽しみ下さい。
※本記事は自己学習を目的に作成されており、特定の製品を推奨するものではありません。
今回やりたいこと
やりたいことは大きく2つあります。
1つ目は、とにかくSBCを使ってみることです。以前から電子工作には興味があり、この機会に何か作ってみることにしました。
2つ目は、電子ペーパーに画像を表示してみることです。電子ペーパーとは薄型の液晶パネルのことです。ゆくゆくは天気予報を表示したいのですが、今回は下準備としてデモ画像を表示するまでをやることにしました。
ゴールとしては、こんな感じでSBCを使って電子ペーパーに画像を表示することを目指します。
できること
わたしにできることの中で、今回の工作に役立ったことをご紹介します。同じことを試したい方の参考になればと思います。
- プログラミング(使ったことのない言語でも、短いコードなら処理を読み取ることができる)
- GitHubの基本的な操作(公開されているリポジトリから必要な情報を読み取ることができる)
- 英語のリーディング(翻訳ソフトも使いながら英語の記事を読むことができる)
- トラブルを楽しむこと
できなくてもなんとかなったこと
無くても何とかなったスキルもお伝えしておきます。
- 電子工作の経験
- Linuxコマンドの使用経験
準備
やりたいことに必要なものを手に入れていきます。
電子部品屋さんに行く
物品はネットでも購入可能なのですが、せっかくの機会なので最寄りの電気街に足を運びました。
店内は電子工作で使われる部品のジャングルになっており驚きました。
製品によっては専用の売り場が設けられてます。
今回は、必要な物品が一通りまとめられているスターターキットを購入しました。
スターターキットに同梱されているものは、SBC本体、ケース、HDMIケーブル、ACアダプター、MicroSD(OS書き込み済み)です。
また、画像を表示するための電子ペーパーも入手しました。
SBCの設定
製品の開封
SBC本体はこんな感じです。サイズはクレジットカードより一回り大きいぐらいです。
SBCにMicroSDカードを挿入してケースを取り付けます。
起動
SBCにディスプレイ、キーボード、ACアダプターを接続します。
ACアダプターを接続した瞬間に電源がONになりファンが回りだして少し驚きました。
初めはモニターに何も表示されなかったのですが、SBC側のHDMI差込口を変えたところ解消しました。
画面に従って言語選択、ユーザー作成、Wi-Fi接続、ブラウザ選択、ソフトウェアアップデートを進めます。
10分ほど読み込みを待ち、デスクトップ画面が表示できました。
電子ペーパーに画像を表示
電子ペーパーのメーカーHPで公開されているガイド通りに進めていきます。
SBCと電子ペーパーの接続
SBC側でGPIOピン(基盤についている40本のピン)の割り当てを確認するコマンドを実行します。
私が使用したSBCでは以下のような出力結果が得られました。
次に、メーカーHPで電子ペーパーのコネクタの割り当てを確認します。
コネクタは8本あり、役割ごとに色が異なります。GPIOピンに何色のコネクタを接続するかを以下の通り整理しました。
コネクタを電子ペーパーとSBCのGPIOピンに接続します。
SBCの設定変更
電子ペーパーに画像を表示するために、SPIと呼ばれる設定を無効化します。
ライブラリのインストール
電子ペーパーを使用するために必要なライブラリをSBCにインストールします。
※以降、記載されているコードは全てメーカーHPで確認したものです。
※コードはC言語とPythonが選べます。今回はC言語の方を記載しています。
wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
make
sudo make install
sudo apt-get update
sudo apt install gpiod libgpiod-dev
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
sudo apt-get install wiringpiwget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v
画像の表示
デモ画像表示用のプログラムをダウンロードします。
git clone https://github.com/waveshare/e-Paper.git
cd e-Paper/RaspberryPi_JetsonNano/
プログラムをコンパイルします。
cd c
sudo make clean
sudo make -j4 EPD=epd4in2bV2
プログラムを実行します。
sudo ./epd
ドキドキしながら実行を見守りますが・・・いつまで待っても電子ペーパーに変化はありません。
切り分けとして、プログラムの実行ログを確認します。「busy」の文言は気になりますが、特にエラーは見当たらず、プログラム自体は動いてそうです。
EPD_4IN2B_V2_test Demo
/***********************************/
Current environment: Raspbian
/***********************************/
e-Paper Init and Clear...
Debug: e-Paper busy
Debug: e-Paper busy release
Debug: e-Paper busy
Debug: e-Paper busy release
Debug: e-Paper busy
Debug: e-Paper busy release
1 S
NewImage:BlackImage and RYImage
show window BMP-----------------
pixel = 100 * 100
Debug: e-Paper busy
Debug: e-Paper busy release
show red bmp------------------------
pixel = 400 * 300
pixel = 400 * 300
Debug: e-Paper busy
Debug: e-Paper busy release
show image for array
Debug: e-Paper busy
Debug: e-Paper busy release
Draw black image
Draw red image
EPD_Display
Debug: e-Paper busy
Debug: e-Paper busy release
Clear...
Debug: e-Paper busy
Debug: e-Paper busy release
Goto Sleep...
Debug: e-Paper busy
Debug: e-Paper busy release
close 5V, Module enters 0 power consumption ...
プログラムは問題ないとならハードウェア周りの不備かなと思い配線を確認すると・・・GPIOピンとコネクタの組み合わせを間違えていました。(2つも!)
配線を正しいものに修正してプログラムを再実行すると、無事に電子ペーパーに画像が表示されました。わかりにくいですが、十字形の文字と円が2つ表示されています。
以上で、今回やりたいことに挙げた2点が達成できました。
1つ目は、とにかくSBCを使ってみることです。以前から電子工作には興味があり、この機会に何か作ってみることにしました。
2つ目は、電子ペーパーに画像を表示してみることです。
おわりに
感想
シンプルに、画像を表示できたときに嬉しかったです。私は子供の頃から何かを作ることが好きで、久しぶりに物を作ることを楽しめた気がします。
また、一次情報を調べることが楽しいなと感じました。例えば、電子ボードのメーカーHPやSBCの公式ガイドなどです。
誰かが発信した情報もいいですが、自分で情報のソースにあたって手を動かすというのは他ではなかなか得られない経験で楽しかったです。
今後やりたいこと
今後はこんなことにチャレンジしたいと思います。
- インターネットから取得した情報を電子ペーパーに表示する。(天気予報、電車の発着情報、近隣のニュース、ゴミ出しの日など)
- PCIe接続用のコネクタを使ってなにかする。(SSDを差し込んでNASを作るなど)