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:タブレットから「次へ」ボタンで操作する仕組み。
  • 自動巡回モード:効率的なピッキングルートを光でナビゲート。

お楽しみに!

後編の記事はこちら
【後編】数千点の部品管理を自動化!ラズパイで作るデジタルピッキングシステム(Excel連携&Web UI編)


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

シリーズ記事一覧

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


Tapo P110Mの消費電力をExcelレポート化する【年次集計・電気代試算・セキュリティ判断編】
FastAPI+openpyxlでTapo P110Mの消費電力をExcelレポート化。15秒間隔の生ログを日次集計する設計や、31円/kWhでの電気代試算、外部公開を見送った理由まで解説します。
Tapo P110M × FastAPIで電力監視ダッシュボードを作る【SQLite記録・リアルタイム堅牢化編】
Tapo P110MのデータをSQLiteに記録し、FastAPI+Uvicornでリアルタイム電力監視ダッシュボードを作る方法を解説。通信失敗時の自動復旧など堅牢化のポイントも紹介します。
Tapo P110M × python-kasaで自作PDUを作る【環境構築・Unsupported device(TPAP)エラー解決編】
Tapo P110Mをpython-kasaで自作PDU化。「Unsupported device」TPAPエラーの原因と対処法、MACアドレスでIP変動に強くする設計、個別/一括ON-OFFの実装コードまで解説します。
Raspberry Pi Pico Wで作る熱中症警戒アラート表示器
Raspberry Pi Pico WとDHT11、0.96インチOLEDで熱中症警戒アラート表示器を自作。気温・湿度から簡易的な暑さ指数を計算し、5段階の顔アイコンで危険度を表示する作り方をコード付きで解説します。
CustomTkinterでオリジナルのメニューバー(File・表示・設定・Help)を自作する
CustomTkinterには無いメニューバー(File・表示・設定・Help)を、CTkFrameとCTkButtonで自作する方法を、5段階のサンプルコードとダウンロード付きで解説します。

コメント