デバイス・ボード

BeagleBone

産業向けの小型Linux SBC。豊富なI/Oが特長。

概要

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)の主要スペック

項目
SoCTexas Instruments AM3358 (Sitara)
CPUARM Cortex-A8 @ 1GHz(NEON SIMD)
PRU2× PRU(200MHz、4KB命令RAM・各8KB データRAM)
RAM512MB DDR3L @ 400MHz
eMMC4GB(オンボード)
SDカードmicroSDカードスロット(拡張・ブート用)
HDMIMicro HDMI(1280×1024@60fps)
Ethernet10/100 Ethernet(内蔵MAC + SMSC LAN8710A PHY)
USBUSB2.0ホスト × 1、USB2.0 OTG × 1
UART6本(TTLレベル)
SPI2本
I2C3本
CAN2本(DCAN)
ADC7ch(12bit、最大200ksps)
PWM8本(ePWM)
GPIO65本(P8/P9ヘッダー経由)
I2SMcASP(8ステレオ入出力)
JTAGヘッダー経由でデバッグ可能
RTC内蔵(バックアップ電源用コネクタあり)
動作電圧5V(USB または バレルジャック)
消費電流約210〜460mA(5V)
サイズ86.4mm × 53.3mm
OSDebian Linux(公式)

PRU(Programmable Real-time Unit)

BeagleBoneの最大の特徴がPRUです:

項目
コア数2基(PRU0 / PRU1)
クロック200MHz(5nsサイクル)
命令メモリ8KB × 2
データメモリ8KB × 2(PRU間で共有可能)
共有RAM12KB(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 CapeDCモーター・ステッピングモーター
LCD CapeカラーTFT LCDディスプレイ
Relay Cape4chリレースイッチ
RS485 CapeRS-485通信
Wireless CapeWi-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 BlackRaspberry Pi 4
CPUCortex-A8 1GHzCortex-A72×4 1.8GHz
RAM512MB2〜8GB
PRU(リアルタイムコプロセッサ)あり(200MHz×2)なし
GPIO数65本(豊富)26本
産業用途強い限定的
価格〜55ドル35〜75ドル
コミュニティ中規模巨大

リアルタイムI/O・産業通信・豊富なGPIOが必要な場合はBeagleBoneが優位です。一方、処理能力・コミュニティ・ソフトウェア資産ではRaspberry Piが有利です。

関連用語

参考リンク