はじめに
こんにちは!Python-VBA Labのニンジンです。皆さんは、電子工作や製造の現場で「部品の払い出
し」に苦労したことはありませんか?
何百、何千とある部品棚から、構成表に従って必要なパーツを探し出す作業……。慎重に
やっていても、棚の読み間違いや数量のミスは起きてしまうものです 。
そこで今回は、Raspberry PiとPython、そして「光るLED」を駆使して、誰でもミスなく
部品を取り出せるデジタルピッキングシステムを検討します。
従来の課題:部品が多すぎて配線が終わらない?
当初の構想では、部品IDとLEDを1対1で紐付け、IDを指定したらそのLEDが光る仕組みを考え
ました。しかし、ここで大きな問題に直面します 。
- 配線膨大問題:部品が1,000点あれば、LEDも1,000個。それぞれに線を引くのは現実的ではありません。
- 制御ピン不足:ラズパイのGPIOピンだけでは、これほど多くのLEDを個別に制御しきれません。
- ID判別:プログラムから「150番のLEDを光らせろ」と言っても、LED側に自分を識別する能力がなければ制御できません。
これらの問題をスマートに解決するのが、今回紹介する「アドレス指定型LED:WS2812B」です。
解決策:アドレス指定型LED(WS2812B)の採用

配線地獄を回避する切り札が、WS2812B(通称:NeoPixel)です。このLEDは1つ1つに制御IC
が内蔵されており、データ線1本で数珠つなぎに連結できます。
このシステムの仕組み:
- データ線1本でOK:
ラズパイのGPIOから1本の線を伸ばし、LEDテープを棚に沿って貼るだけです。 - 位置指定が可能:
プログラムから「3番目のLEDを緑に光らせる」といった指示が簡単に出せます。 - Excel連携:
棚番号とLEDのインデックスをExcelで管理すれば、数千点規模の部品も一括管理可能です。
今回の要素設計のゴール
ラズパイとLEDテープを繋ぎ、Excelデータ(MaseterとOrder)を読み取って、対応するLEDを、Flaskで立ち上げたサーバーを経由でスマホ操作で光らせる
ロードマップ
今回のデジタルピッキングシステムの要素設計ロードマップです。
前編となる本記事はSTEP1まで実施します
STEP1:環境構築
- ラズパイとLED(WS2812B)の物理接続
- Pythonライブラリ(rpi_ws281x等)のインストール
- プログラムからLEDを1個だけ光らせる(疎通確認)
STEP 2:要素技術の連携
- ExcelファイルをPythonで読み込む
- 入力したIDに紐づく特定のLEDを光らせる
- NEXT: Order シートを読み込んで「部品名・数量・LED番号」をセットで取得する
STEP 3:UI(操作画面)の実装
- Flask(Webサーバー)を立ち上げる
- タブレットのブラウザに「部品名」と「数量」を大きく表示する
- 「完了」ボタンを押すと次の部品に進むロジックを作る
システム構成と準備するもの
| 項目 | 役割 |
| Raspberry Pi(ラズパイ) | システムの司令塔。Excelの読み込みとLED制御を行います。 |
| WS2812B LEDテープ | 部品棚に設置。対象のパーツの場所を光で示します。 |
| 操作用端末(PC スマホ タブレット等) | ブラウザで操作画面(Flask)を表示し、進捗を確認します。 |
STEP 1:ハードウェア接続と点灯テスト
配線図の確認
| LEDピン | Raspberry Pi ピン |
| 5V(赤) | 5V (2番または4番ピン) |
| GND(黒) | GND (6番などのGroundピン) |
| DIN(中) | GPIO 18 (12番ピン) |
※接続ミスに注意: 5VとGNDを逆に繋ぐとLEDのICが一瞬で焼けます。
ライブラリ(rpi_ws281x、Pandas、OpenPyXl)のインストール
ラズパイ側のターミナルで、LED制御用のライブラリをインストールします。
最近のRaspberry Pi OS(Debian 12以降)では、OS自体の安定性を守るために
、pipでシステム領域に直接ライブラリを入れることが制限されるようになりました。
これを回避してインストールするには、「仮想環境(venv)」を作るのが
標準的なやり方ですが、実験だし、面倒なのでBreak systemで無理やりインストールします
Lチカテスト(Python)
正しく結線出来ているか確認するため
まずは、「3番目のLEDを緑に光らせる」だけのコードでテストします。
権限を持たせて実行

※実行には権限が必要です
ニンジンはラズパイ上でPythonを動かす場合はThonnyで動作させますが、単純にThonnyを立ち上げると動作しません。
「sudo」を付けてThonnyに権限を持たせて立ち上げます。
テストコード:test_led.py
import board
import neopixel
# 設定: ピン番号、LEDの数、輝度(0.0〜1.0)
pixel_pin = board.D18
num_pixels = 20
ORDER = neopixel.GRB
pixels = neopixel.NeoPixel(
pixel_pin, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER
)
# 3番目(インデックスは2)を赤にする
pixels[2] = (0, 255, 0)
pixels.show()
テスト結果:test_led.py
まとめと次回予告
前編では、膨大な配線を不要にする「アドレス指定型LED」の導入と、ラズパイからの疎通確
認までを解説しました。これで「光る棚」の基礎ができましたね 。
次回の後編では、いよいよ本丸のソフトウェア実装に入ります。
- Excelデータの読み込み:数千点の部品リストをPythonで操る。
- FlaskによるWeb UI:タブレットから「次へ」ボタンで操作する仕組み。
- 自動巡回モード:効率的なピッキングルートを光でナビゲート。
お楽しみに!









コメント