PR

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

ハードウェア制御 / 電子工作
スポンサーリンク

はじめに

こんにちは!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を接続しましょう。WS2812Bには「向き(信号の流れる方向)」があるため注意してください。矢印の方向にデータが流れます 。

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で無理やりインストールします

sudo pip3 install pandas openpyxl --break-system-packages
sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel --break-system-package
スポンサーリンク

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

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

スポンサーリンク

まとめと次回予告

前編では、膨大な配線を不要にする「アドレス指定型LED」の導入と、ラズパイからの疎通確
認までを解説しました。これで「光る棚」の基礎ができましたね 。

次回の後編では、いよいよ本丸のソフトウェア実装に入ります。

  • Excelデータの読み込み:数千点の部品リストをPythonで操る。
  • FlaskによるWeb UI:タブレットから「次へ」ボタンで操作する仕組み。
  • 自動巡回モード:効率的なピッキングルートを光でナビゲート。

お楽しみに!

スポンサーリンク

他のシリーズ





【前編】数千点の部品管理を自動化!ラズパイで作るデジタルピッキングシステム(ハードウェア構築編)
「部品探しに時間がかかる…」そんな悩みを解決!Raspberry Pi(ラズパイ)とアドレス指定型LED(WS2812B)を使って、数千点の部品管理を自動化するデジタルピッキングシステムの作り方を解説します。前編は膨大な配線を1本にまとめるハードウェア構築編です。
業務自動化の第一歩!VS CodeでPythonを動かすための環境構築ガイド
Windows 11でPythonとVS Codeの開発環境を構築する手順を、全画面キャプチャ付きで徹底解説!「PATHを通す」設定や「MAX_PATH制限の解除」など、初心者がつまずきやすいポイントも丁寧にフォローしています。業務自動化の第一歩をここから踏み出しましょう。
【CNC自作】Amazon格安Z軸、精度ヤバい…RATTMMOTORを本気検証
自作CNCマシンのZ軸用にAmazonで購入したRATTMMOTORの格安リニアスライドモジュールを徹底検証!ArduinoとA4988ドライバを使った24V駆動テストで誤差0.05mm以内の高精度を記録。安価でコスパ抜群なパーツの実力と、購入時の注意点を詳しくレビューします。
NEMA17ステッピングモーター比較|42BYG-34012-22B vs PKP244D08A2 精度検証(CNC実測あり)
Amazonの2000円台格安ステッピングモーターはCNC自作に使える?オリエンタルモーター製と精度・動作音を徹底比較!10mm移動テストの実測データから分かった驚きの性能と、「メーカー品vs格安品」の賢い使い分け方をまとめました。
【CNC自作】ホーミング失敗(ALARM:8)の原因はこれ!4ステップ動作とZ軸未連動での突破方法(第6回)
CNCjsでホーミング失敗(ALARM:8)に悩んでいませんか?GRBLのホーミング挙動「4ステップ」を解明し、Z軸がないプロトタイプ機でも手動連打で原点復帰させる裏技を伝授。レーザー加工を見据えたPWM制御設定とLチカテストまで、要素設計の完結編です!

コメント