Raspberry Pi 3とArduinoで作る自作ノートPC:ステップバイステップガイド
必要なパーツと用品
| パーツ | 数量 | 備考 |
|---|---|---|
| Raspberry Pi 3 Model B | 1 | メインボード |
| Arduino Micro | 2 | バッテリー表示用・内蔵Arduino用 |
| Onion Corporation OLED拡張ボード | 1 | バッテリー残量表示用 |
プロジェクト概要
はじめに:Raspberry PiとArduinoのノートPC化
Raspberry Piを入手して以来、いつかはPi搭載のノートPCを作りたいと考えていました。Pi 3のリリースを機に、過去の失敗(リボンケーブル断線、ヒンジ機構の問題など)を教訓に、ついに完成させました。
ステップ1:何を実現したいか決める
以下の機能を目標に設計しました:
- 統合トラックパッド(マウス)
- 長時間バッテリー駆動
- USBポート×2以上
- フルキーボード
- Arduino駆動のバッテリー残量表示(OLED)
- 内蔵Arduinoのピンヘッダーに外部からアクセス可能
- コンパクトなフォームファクタ
Pi 3はWi-Fi/Bluetooth内蔵なのでドングル不要です。内蔵Arduinoは常時使える開発環境として、またバッテリー監視用として二役を担います。
ステップ2:パーツ調達
- Raspberry Pi 3 ×1
- Arduino Micro ×2
- 7インチRaspberry Pi公式タッチスクリーン ×1
- リチウムイオン18650電池 ×3
- モバイルバッテリー用充放電制御基板 ×1
- USBハブ ×1
- ミニUSBキーボード(7インチタブレット用) ×1
- USBオスコネクタ ×1
- SPI接続OLEDディスプレイ ×1
- 強化段ボール(ケース用)
- トラックパッド(過去プロジェクトの流用)
ステップ3:Piとスクリーンのセットアップ
7インチスクリーンはHDMIではなく、50ピンリボンケーブルでGPIOに接続します。デフォルトではHDMI出力なので、SDカード内のconfig.txtを編集してDPI出力に切り替える必要があります。
dtoverlay=dpi24
enable_dpi_lcd=1
display_default_lcd=1
dpi_group=2
dpi_mode=87
dpi_output_format=0x6f005
hdmi_cvt 1024 600 60 6 0 0 0
また、ケース内に収めるため、Pi基板上の片方のUSBポートをはんだ除去し、代わりにUSBハブを直付けしました。
ステップ4:バッテリーの構築
18650電池3本を並列接続(合計約7200mAh)。全セルを4.2Vまで個別に充電してから接続するのが安全です。正極同士、負極同士を太めのワイヤーで並列接続し、モバイルバッテリー基板の入力につなぎます。これで約4.5〜5時間駆動可能です。
ステップ5:バッテリー残量表示(OLED)の製作
Arduino MicroにOLEDを接続し、分圧抵抗(10Ω×2)でバッテリー電圧をA0ピンで測定します。OLEDピン配置は以下の通り:
- RST → Pin 7
- DC → Pin 12
- CS → Pin 9
- DIN → Pin 11
- CLK → Pin 13
- VCC → 5V
- GND → GND
電源はモバイルバッテリー基板の5V出力から取ります。コードは後述の
ステップ6:残りパーツの準備
- キーボード:タブレット用ケースから基板のみ取り出し、4線をUSBハブへ
- トラックパッド:マイクロUSBケーブルでUSBハブへ接続
- 内蔵Arduino:全ピンにヘッダーをはんだ付け(ブレッドボードで固定すると真っ直ぐ付けやすい)、マイクロUSBでUSBハブへ
ステップ7:全結線(回路の統合)
- USBハブをPiの残ったUSBポートにはんだ付け、もう1ポートを外部用USBメスポートに延長
- トラックパッド、キーボード、内蔵ArduinoをUSBハブへ
- モバイルバッテリー基板の5V出力をPiの5V入力(マイクロUSBまたは基板裏のパッド)へ
- 画面側:50ピンリボンケーブルでメインスクリーンとPiを接続
- バッテリー表示用Arduinoから3本線(A0→バッテリー正極、VIN→5V出力、GND→GND)を画面ヒンジ経由で通す
- バッテリー基板のGNDとPiの間にスライドスイッチを挟み、電源ON/OFF可能に
※Piにはソフトウェアシャットダウン後に物理電源を切るのが望ましいです。
ステップ8:ケース製作
3Dプリンターがないため、強化段ボールと可塑性プラスチック(熱で柔らかくなり冷えると硬化)で自作。段ボールをスーパーグルーで組み、内側をホットグルーと可塑性プラスチックで補強。寸法は記事内の画像を参照してください。
ステップ9:画面ヒンジ
最も苦労した部分。古いノートPCから硬めのヒンジを入手し、画面とベースに切り欠きを作って可塑性プラスチックで埋め込み固定。失敗してもドライヤーで再加熱してやり直せます。
ステップ10:注意点と改善案
- リボンケーブルは抜き差しに弱い。テスト時は慎重に扱うこと(私は1本破損させました)
- ベース内に2つのArduinoがあるため、Arduino IDEでポートを間違えるとトラックパッド用に書き込んでしまい動作しなくなる。デバイス名で区別すること
- コード量は少なく、Pi財団のおかげでセットアップは容易
ステップ11:完成
日常的にメモ取り用として使用中。LibreOffice標準搭載で実用的。Wi-Fi/Bluetooth接続も快適。Minecraftやレトロゲームも動き、バッテリーも長持ち。非常に楽しく、おすすめのプロジェクトです。
コード
config.txt追記内容
dtoverlay=dpi24
enable_dpi_lcd=1 display_default_lcd=1 dpi_group=2 dpi_mode=87 dpi_output_format=0x6f005 hdmi_cvt 1024 600 60 6 0 0 0
製造プロセス
- シームレスMQTT統合:NodeMCU DHT22センサーとRaspberry Pi 3 B+ブローカー
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
- Raspberry Pi 3 B+ – アップデートされた機能、仕様、購入ガイド
- MrRobot: Ubuntu Mobile で操作する Rapiro ロボット – 音声、タッチ、シェイクインタラクション
- Raspberry Pi と Python でロボットを構築:完全ガイド
- Bluetooth 制御 Raspberry Pi ロボットに音声フィードバックを追加して構築
- Arduino & Raspberry Pi でインターネット制御ビデオストリーミングロボットを構築
- Arduino UNOで作るLCDアニメーション&ゲーム入門
- Arduino Nanoと128x64 OLEDで実行するセルラーオートマトン「ライフゲーム」