PR

ラズパイで作るデジタルピッキングシステム、数千点の部品管理を自動化!(ハードウェア構築編)【前編】

ハードウェア制御 / 電子工作

デジタルピッキング 前編

スポンサーリンク

はじめに:光る棚で部品の払い出しミスを防ぐ

こんにちは、ニンジンです🥕

電子工作や製造の現場で「部品の払い出し」に苦労したことはありませんか。何百・何千とある部品棚から、構成表どおりに必要なパーツを探す作業は、慎重にやっても棚の読み間違いや数量ミスが起きます。

この連載では、Raspberry Pi・Python・「光るLED」を使って、誰でもミスなく部品を取り出せるデジタルピッキングシステムを自作します。前編のこの記事は、その土台となるハードウェアの構築編です。

従来の課題:部品が多すぎて配線が終わらない

最初は「部品IDとLEDを1対1で配線し、IDを指定したらそのLEDが光る」仕組みを考えましたが、すぐに壁にぶつかります。

  • 配線が膨大:部品が1,000点あればLEDも1,000個。個別配線は非現実的
  • 制御ピン不足:ラズパイのGPIOだけでは多数のLEDを個別制御できない
  • ID判別:「150番のLEDを光らせろ」と言っても、LED側に自分を識別する能力がなければ制御できない

解決策:アドレス指定型LED(WS2812B)

WS2812B(NeoPixel)LEDテープ

配線地獄を回避する切り札が WS2812B(通称:NeoPixel)です。1つ1つに制御ICが内蔵されていて、データ線1本で数珠つなぎに連結できます。

  • データ線1本でOK:GPIOから1本の線を伸ばし、LEDテープを棚に沿って貼るだけ
  • 位置指定ができる:「3番目のLEDを緑に光らせる」といった指示が簡単に出せる
  • Excel連携:棚番号とLEDのインデックスをExcelで管理すれば、数千点規模でも一括管理できる

この記事(前編)で分かること

  • WS2812B(NeoPixel)を選ぶ理由と、システム全体の構成
  • ラズパイとWS2812Bの配線(5V・GND・DIN=GPIO18)と、逆接続でICが焼ける注意点
  • Debian 12以降で rpi_ws281x などを入れる方法(--break-system-packages)
  • sudo でThonnyを起動して、3番目のLEDだけを緑に光らせる疎通テスト

スポンサーリンク

要素設計のロードマップ

デジタルピッキングシステムの要素設計は3ステップです。前編のこの記事はSTEP1を扱います。

  • STEP1:環境構築(この記事)— ラズパイとWS2812Bの物理接続、rpi_ws281x 等のインストール、LEDを1個点灯(疎通確認)
  • STEP2:要素技術の連携(後編)— ExcelをPythonで読み込み、指示に紐づくLEDを順番に点灯
  • STEP3:操作画面の実装(後編)— Flaskでサーバーを立て、タブレットで部品名・数量を表示、「完了」で次へ
📋 後編・STEP2〜3 ラズパイでデジタルピッキングシステムを自作する|Excelの部品表を読み込みFlaskのWeb UIで棚のLEDを操作 Excel(Master/Order)の読み込みと、Flaskで作るタブレット向け操作画面は後編で解説します。 →

スポンサーリンク

システム構成と準備するもの

項目役割
Raspberry Piシステムの司令塔。Excelの読み込みとLED制御を行う
WS2812B LEDテープ部品棚に設置。対象パーツの場所を光で示す
操作用端末(PC・スマホ・タブレット等)ブラウザで操作画面(Flask)を表示し、進捗を確認する

スポンサーリンク

STEP1:ハードウェアの配線

配線図の確認

ラズパイとWS2812Bの配線図

ラズパイとWS2812Bを接続します。WS2812Bには「向き(信号の流れる方向)」があり、テープ上の矢印の向きにデータが流れます。矢印の始点側(DIN)をラズパイにつなぎます。

接続ミスに注意:5VとGNDを逆につなぐと、WS2812Bの制御ICが一瞬で焼けます。配線前に必ず極性を確認してください。
LED側のピンRaspberry Pi側のピン
5V(赤)5V(物理2番 または 4番ピン)
GND(黒)GND(物理6番などのGroundピン)
DIN(中)GPIO18(物理12番ピン)

スポンサーリンク

ライブラリのインストール(rpi_ws281x・pandas・openpyxl)

ラズパイのターミナルで、LED制御用とExcel読み込み用のライブラリを入れます。

最近のRaspberry Pi OS(Debian 12以降)は、OSの安定性を守るため、pipでシステム領域に直接ライブラリを入れることが制限されています(externally-managed-environment)。正式には「仮想環境(venv)」を作りますが、この記事は実験用なので --break-system-packages で強行します。本番運用ではvenvを使ってください。
pandasとopenpyxlのインストール画面

pandas と openpyxl を入れます。

sudo pip3 install pandas openpyxl --break-system-packages
rpi_ws281xとneopixelのインストール画面

続けて、WS2812B制御用のライブラリを入れます。

sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel --break-system-packages

スポンサーリンク

Lチカテスト:3番目のLEDを緑に光らせる

正しく結線できているか、「3番目のLEDを緑に光らせるだけ」のコードで確認します。

sudo権限でThonnyを起動する

sudo thonny でThonnyを起動する

WS2812Bの制御にはroot権限が必要です。通常起動のThonnyでは動かないので、ターミナルから sudo 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()

pixel_pin = board.D18 がGPIO18(物理12番ピン)です。pixels[2] は0から数えて3番目のLEDを指します。色は (R, G, B) で、(0, 255, 0) が緑です。

テスト結果

3番目のLEDが緑に点灯したLEDテープ

3番目のLEDが緑に光れば、ハードウェア側の準備は完了です。


スポンサーリンク

まとめと次回予告

前編では、膨大な配線を不要にする「アドレス指定型LED(WS2812B)」を導入し、ラズパイからの疎通確認までを行いました。これで「光る棚」の土台ができました。

後編では、ソフトウェアの実装に入ります。

  • Excelデータの読み込み:部品リスト(Master/Order)をpandasで扱う
  • FlaskによるWeb UI:タブレットの「次へ」ボタンで操作する仕組み
  • 自動巡回モード:ピッキングの順番を光でナビゲート

次に読む記事

📋 後編・STEP2〜3 ラズパイでデジタルピッキングシステムを自作する|Excelの部品表を読み込みFlaskのWeb UIで棚のLEDを操作 Excelの読み込みと、Flaskで作るタブレット向け操作画面まで。 → 🔧 GPIOの基礎 Raspberry PiのGPIOをPythonで制御する基本3ステップ|setmode・setup・outputとプルアップ(PUD_UP) そもそもGPIOで何ができるのか、基本の考え方を押さえておくと理解が早いです。 →

スポンサーリンク

よくある質問(FAQ)

QWS2812BとNeoPixelは同じものですか?

A実質同じです。WS2812BがLEDチップの型番、NeoPixelはAdafruitが付けたブランド名です。SK6812など互換チップもあり、いずれもこの記事のライブラリで制御できます。

QなぜDINをGPIO18(物理12番ピン)につなぐのですか?他のピンでもよいですか?

Arpi_ws281xはPWM/PCM/SPIのいずれかを使ってLEDへ信号を送り、GPIO18(PWM0)が定番です。GPIO12・GPIO13・GPIO21なども使えますが、コード内のboard.D18を合わせて変更する必要があります。

Q--break-system-packages を使って問題ないですか?

AOS標準のPython環境に直接ライブラリを入れるため、厳密には非推奨です。他のツールとの依存関係が壊れる可能性があります。実験用なら手軽ですが、継続して使うならpython -m venvで仮想環境を作るのが安全です。

Q5Vはラズパイのピンから取ってよいですか?LEDは何個までつなげますか?

A数個〜十数個ならラズパイの5Vピンで足ります。数十個以上をつなぐ場合は、外部の5V電源から給電してください(ラズパイのレギュレータが過熱・故障します)。その際もGNDはラズパイと共通にします。

QLEDが白く光りっぱなしになる、またはチカチカします。

Aデータ線(DIN)の接触不良、電源不足、3.3V→5Vのロジックレベル不足が主な原因です。まずLED1個だけでpixels[0] = (0, 255, 0)を試し、配線を1本ずつ確認してください。

Qsudo なしで動かせませんか?

Arpi_ws281xはハードウェアのPWM/DMAにアクセスするため、root権限(sudo)が基本的に必要です。gpiozeroのPWMLEDやRaspberry Pi 5では事情が異なります。


ニンジン🥕アイコン

Follow me on X

本ブログの中の人「ニンジン🥕」はXやってます。新着記事はいち早くポストでお知らせしているので、見逃したくない方は @ninjin_py_vba をフォローしてみてください🥕

@ninjin_py_vba をフォロー

この記事が役に立ったら、シェアしてもらえると嬉しいです🥕

Xでポスト はてブ LINE Pocket

PROJECT LOG — SERIES INDEX
スポンサーリンク

シリーズ記事一覧

電子工作・自動化ツールの製作記録をシリーズごとにまとめています。気になるテーマからお読みください。


GPSロガーのCSVを地図に表示する方法|Pico 2 WでGT-502MGG-NとATGM336Hを車に積んで走行・トンネル比較【Python・folium】
GPSロガーで記録したCSVを、Pythonのfoliumと地理院タイルで地図に表示する方法。GT-502MGG-NとATGM336Hを車に積んで4回走り、再起動の原因やトンネルでの違いも比べました。
今週の注目ガジェット〜10/19週〜|電子工作・自作向け新製品まとめ(Romu/W1700K SDR ほか)
大手が拾わないニッチな新製品を毎週チェック。今週はe-Paper開発キット、超小型USBボード、自作SDRなど5本立て。
GT-502MGG-NとATGM336Hの使い方|Raspberry Pi Pico 2 WとMicroPythonでGPSを受信して2台を比較
GT-502MGG-NとATGM336Hの使い方を、Pico 2 W×MicroPythonで解説。北斗で衛星数が多いATGM336H、信号が強いGT-502MGG-N。単精度floatで緯度経度が約1.4m刻みになる落とし穴も紹介します。
今週の注目ガジェット〜10/12週〜|電子工作・自作向け新製品まとめ(Q8botOne/Sipeed SLogic32U3 ほか)
大手が拾わないニッチな新製品を毎週チェック。今週は四足歩行ロボット、ロジックアナライザー、広告ブロッカーなど5本立て。
MOSFETはPicoの3.3Vで足りる?DCソレノイド駆動でゲート電圧不足を実測【Pico 2 W】
Pico 2 WとMOSFET(IRLU3410)で12VのDCソレノイドを駆動。ゲート3.3Vでは発振し、オン抵抗も約2.4倍に。レベル変換で5V駆動にした比較と、電流が8割止まりだった本当の原因を実測で紹介します。
まとめハブ
ハードウェア制御 / 電子工作
スポンサーリンク

コメント