概要
BeagleBoneはBeagleBoard.org財団(Texas Instruments支援)が開発するオープンソースのSBC(シングルボードコンピュータ)シリーズです。産業・研究・教育用途を主なターゲットとし、豊富な入出力ピン・リアルタイム処理能力・産業グレードの信頼性が特長です。
最も普及しているモデルがBeagleBone Black(BBB)です。Texas InstrumentsのAM335x SoC(ARM Cortex-A8、1GHz)を搭載し、**PRU(Programmable Real-time Unit)**と呼ばれる独自のリアルタイムコプロセッサを2基内蔵しています。PRUは最大200MHzで動作し、マイクロ秒以下のリアルタイムI/O制御をLinuxとは独立して実行できます。
Raspberry Piと比べるとコミュニティ規模は小さいですが、産業用途での実績・PRUによるリアルタイム性・豊富なGPIOがあり、工場自動化・産業通信・研究プロジェクトで採用されています。
歴史・背景
BeagleBoardの歴史は2008年にさかのぼります。Texas InstrumentsのOMAP3530(ARM Cortex-A8 + PowerVR SGX GPU)を搭載したBeagleBoardが登場し、低消費電力でLinuxが動くシングルボードとして研究コミュニティに普及しました。
2011年にBeagleBone(初代)が登場。AM3358 SoCを搭載し、2×46ピンのP8/P9ヘッダー(合計92ピン)という大量のI/Oピンと、クラウドIDEからブラウザ経由でプログラムできる「Cloud9 IDE」を採用しました。
2013年にBeagleBone Blackが発売。eMMC(4GB)内蔵・HDMIポート追加・45ドルという価格で普及が加速。産業機器・CNCマシン・3Dプリンター制御・ドローンに採用されました。
近年はBeagleBone AI(AM5729、ARM Cortex-A15×2 + 4×C66x DSP + 4×MXP)・BeagleBone AI-64(TDA4VM、ARM Cortex-A72×2 + 6×C7x DSP + AI推論エンジン)と高性能モデルも展開しています。
技術仕様
BeagleBone Black(BBB)の主要スペック
| 項目 | 値 |
|---|---|
| SoC | Texas Instruments AM3358 (Sitara) |
| CPU | ARM Cortex-A8 @ 1GHz(NEON SIMD) |
| PRU | 2× PRU(200MHz、4KB命令RAM・各8KB データRAM) |
| RAM | 512MB DDR3L @ 400MHz |
| eMMC | 4GB(オンボード) |
| SDカード | microSDカードスロット(拡張・ブート用) |
| HDMI | Micro HDMI(1280×1024@60fps) |
| Ethernet | 10/100 Ethernet(内蔵MAC + SMSC LAN8710A PHY) |
| USB | USB2.0ホスト × 1、USB2.0 OTG × 1 |
| UART | 6本(TTLレベル) |
| SPI | 2本 |
| I2C | 3本 |
| CAN | 2本(DCAN) |
| ADC | 7ch(12bit、最大200ksps) |
| PWM | 8本(ePWM) |
| GPIO | 65本(P8/P9ヘッダー経由) |
| I2S | McASP(8ステレオ入出力) |
| JTAG | ヘッダー経由でデバッグ可能 |
| RTC | 内蔵(バックアップ電源用コネクタあり) |
| 動作電圧 | 5V(USB または バレルジャック) |
| 消費電流 | 約210〜460mA(5V) |
| サイズ | 86.4mm × 53.3mm |
| OS | Debian Linux(公式) |
PRU(Programmable Real-time Unit)
BeagleBoneの最大の特徴がPRUです:
| 項目 | 値 |
|---|---|
| コア数 | 2基(PRU0 / PRU1) |
| クロック | 200MHz(5nsサイクル) |
| 命令メモリ | 8KB × 2 |
| データメモリ | 8KB × 2(PRU間で共有可能) |
| 共有RAM | 12KB(CPU・PRU間共有) |
| I/O直結 | GPIOを直接制御(OSのスケジューリング影響なし) |
| DMA | 直接DMA可能 |
PRUはGPIO入出力を1サイクル(5ns)で制御できるため、以下の用途で活用されます:
- WS2812(NeoPixel)LED制御(厳密なタイミングが必要)
- PWM信号の精密生成・計測
- ステッピングモーターのリアルタイムステップ出力
- RS-485 / Modbus のソフトウェア実装
- 超音波センサーのエコー計測(マイクロ秒精度)
P8/P9ヘッダーピン配置
BeagleBone Blackは2×46ピン(P8: 46ピン、P9: 46ピン)を持ちます:
P9ヘッダー(抜粋):
P9.1 / P9.2 : GND
P9.3 / P9.4 : 3.3V出力(最大250mA)
P9.5 / P9.6 : 5V出力(最大1A)
P9.11 : UART4_RX(またはGPIO30)
P9.13 : UART4_TX(またはGPIO31)
P9.17 : I2C1_SCL(またはGPIO5)
P9.18 : I2C1_SDA(またはGPIO4)
P9.21 : UART2_TXD(またはGPIO3)
P9.22 : UART2_RXD(またはGPIO2)
P9.39〜P9.46 : ADC入力(最大1.8V)
注意: ADCは最大1.8V。3.3V以上を入力すると破損!
動作原理
BeagleBone BlackはDebian Linux上で動作します:
# デフォルトでCloud9 IDEが起動(ブラウザでアクセス可能)
# http://beaglebone.local:3000/
# 起動メッセージ確認
journalctl -b
# PRU制御(remoteproc経由)
ls /sys/class/remoteproc/
# remoteproc0 (PRU0), remoteproc1 (PRU1)
# PRUファームウェアのロードと起動
echo stop > /sys/class/remoteproc/remoteproc1/state
cp pru_firmware.out /lib/firmware/pru-firmware.out
echo pru-firmware.out > /sys/class/remoteproc/remoteproc1/firmware
echo start > /sys/class/remoteproc/remoteproc1/state
# Pythonでのシステムfs経由GPIO制御(BeagleBone)
import Adafruit_BBIO.GPIO as GPIO
import time
GPIO.setup("P8_14", GPIO.OUT) # P8ヘッダー14番ピンを出力に設定
try:
while True:
GPIO.output("P8_14", GPIO.HIGH)
time.sleep(0.5)
GPIO.output("P8_14", GPIO.LOW)
time.sleep(0.5)
finally:
GPIO.cleanup()
// PRUのC言語プログラム(pru-software-support-package使用)
#include <stdint.h>
#include <pru_cfg.h>
#include <pru_iep.h>
#include <sys_pwmss.h>
volatile register uint32_t __R30; // 出力レジスタ(GPIOに直結)
volatile register uint32_t __R31; // 入力レジスタ
void main(void) {
// GPIOを1サイクル(5ns)ごとにトグルするPRUプログラム
while(1) {
__R30 |= (1 << 0); // PRU0 GPIO0をHigh
__delay_cycles(200); // 1µs待機
__R30 &= ~(1 << 0); // PRU0 GPIO0をLow
__delay_cycles(200);
}
}
用途・ユースケース
BeagleBoneが採用される主な用途:
- 産業用機械制御: CNCマシン・3Dプリンターのステッピングモーター制御(PRU活用)
- 産業ゲートウェイ: Modbus RTU/TCP・CAN・RS-485の複数プロトコル変換
- PLCの代替・補完: オープンソースのBeagleboneベースPLC
- 電力モニタリング: エネルギー計測のデータ収集・Modbus通信
- 研究・教育: 大学の制御工学・組み込みLinux実験
- ドローン・UAV: ArduPilot(オープンソース飛行制御ソフト)のサポートプラットフォーム
- 農業IoT: 温室・農地の多数センサー(I2C・SPI)のデータ収集
実装・開発のポイント
デバイスツリーオーバーレイによるピン設定
BeagleBone BlackではGPIOのピンマルチプレクサ設定をデバイスツリーオーバーレイで変更します:
# config-pinコマンドでピン機能を設定
config-pin P9.11 uart # P9.11をUART機能に設定
config-pin P8.14 gpio # P8.14をGPIO機能に設定
config-pin P9.14 pwm # P9.14をPWM機能に設定
# 設定を確認
config-pin -q P9.11
Cape(拡張ボード)
BeagleBoneの拡張ボードをCapeと呼びます。4枚まで積み重ね可能で、EEPROM(I2C)による自動認識をサポートします:
| Cape名 | 機能 |
|---|---|
| Motor Cape | DCモーター・ステッピングモーター |
| LCD Cape | カラーTFT LCDディスプレイ |
| Relay Cape | 4chリレースイッチ |
| RS485 Cape | RS-485通信 |
| Wireless Cape | Wi-Fi + Bluetooth |
ADCの注意点
BeagleBone BlackのADCは最大入力電圧が1.8Vです(3.3Vや5Vを入力するとチップが破損します)。センサーの電圧が3.3V出力の場合は分圧回路が必要です:
3.3V出力センサー → 分圧抵抗(例: 10kΩ + 20kΩ)→ BeagleBone ADCピン
出力電圧 = 3.3V × (20kΩ / (10kΩ + 20kΩ)) = 2.2V ... まだ高い!
正しい分圧: 10kΩ + 8.2kΩ → 3.3V × (8.2/18.2) ≈ 1.49V(安全範囲)
他技術との比較
BeagleBone Black vs Raspberry Pi 4
| 項目 | BeagleBone Black | Raspberry Pi 4 |
|---|---|---|
| CPU | Cortex-A8 1GHz | Cortex-A72×4 1.8GHz |
| RAM | 512MB | 2〜8GB |
| PRU(リアルタイムコプロセッサ) | あり(200MHz×2) | なし |
| GPIO数 | 65本(豊富) | 26本 |
| 産業用途 | 強い | 限定的 |
| 価格 | 〜55ドル | 35〜75ドル |
| コミュニティ | 中規模 | 巨大 |
リアルタイムI/O・産業通信・豊富なGPIOが必要な場合はBeagleBoneが優位です。一方、処理能力・コミュニティ・ソフトウェア資産ではRaspberry Piが有利です。