デジタルピッキング 前編
はじめに:光る棚で部品の払い出しミスを防ぐ
こんにちは、ニンジンです🥕
電子工作や製造の現場で「部品の払い出し」に苦労したことはありませんか。何百・何千とある部品棚から、構成表どおりに必要なパーツを探す作業は、慎重にやっても棚の読み間違いや数量ミスが起きます。
この連載では、Raspberry Pi・Python・「光るLED」を使って、誰でもミスなく部品を取り出せるデジタルピッキングシステムを自作します。前編のこの記事は、その土台となるハードウェアの構築編です。
従来の課題:部品が多すぎて配線が終わらない
最初は「部品IDとLEDを1対1で配線し、IDを指定したらそのLEDが光る」仕組みを考えましたが、すぐに壁にぶつかります。
- 配線が膨大:部品が1,000点あればLEDも1,000個。個別配線は非現実的
- 制御ピン不足:ラズパイのGPIOだけでは多数のLEDを個別制御できない
- ID判別:「150番のLEDを光らせろ」と言っても、LED側に自分を識別する能力がなければ制御できない
解決策:アドレス指定型LED(WS2812B)
- データ線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だけを緑に光らせる疎通テスト
システム構成と準備するもの
| 項目 | 役割 |
|---|---|
| Raspberry Pi | システムの司令塔。Excelの読み込みとLED制御を行う |
| WS2812B LEDテープ | 部品棚に設置。対象パーツの場所を光で示す |
| 操作用端末(PC・スマホ・タブレット等) | ブラウザで操作画面(Flask)を表示し、進捗を確認する |
ライブラリのインストール(rpi_ws281x・pandas・openpyxl)
ラズパイのターミナルで、LED制御用とExcel読み込み用のライブラリを入れます。
--break-system-packages で強行します。本番運用ではvenvを使ってください。sudo pip3 install pandas openpyxl --break-system-packagessudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel --break-system-packagesLチカテスト:3番目のLEDを緑に光らせる
正しく結線できているか、「3番目のLEDを緑に光らせるだけ」のコードで確認します。
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) が緑です。
テスト結果
よくある質問(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 をフォローシリーズ記事一覧
電子工作・自動化ツールの製作記録をシリーズごとにまとめています。気になるテーマからお読みください。
-
FILE.01 — IoT
Raspberry Pi Pico W × GASラズパイPico W×GASで自作!「LINEで動く温湿度&スマートリモコン」完全ロードマップ
「外出中のペットの室温が心配…」そんな思いからスタートしたIoT自作プロジェクトの総集編。温湿度監視からエアコン遠隔操作まで、仕組みをゼロから作りたい方のための全5回の開発記録です。
シリーズを読む -
FILE.02 — CNC
Arduino × レーザー刻印CNCCNC自作シリーズ
高精度な加工を目指し、本格的な自作CNC製作に挑戦中。現在は基幹パーツであるオリエンタルモーターの納品を待つ「設計・準備編」を公開。ハードとソフトの両面から、理想のマシンを形にする過程をリアルタイムにお届けします。
シリーズを読む -
FILE.03 — XY軸制御
Raspberry Pi × ステッピングモーターXYテーブルシリーズ
Raspberry Piとステッパモーターを使い、ゼロから2軸制御に挑む記録。OS設定から回路設計、多軸制御のPythonコードまで、躓きやすいポイントを徹底図解。電子工作初心者が「動く感動」を味わうための実戦ガイドです。
シリーズを読む -
FILE.04 — 業務自動化
Python × Excel × CustomTkinter【Python開発記】NINJIN Mail制作記
PythonとExcelを連携させ、実務で即戦力となるメール送信ツールを開発。CustomTkinterによるUI構築や、ミスを防ぐテンプレート活用術など、現場の「痒い所に手が届く」自動化ノウハウを細部まで丁寧に解説します。
シリーズを読む -
FILE.05 — 業務自動化
Python × Excel × GUIアプリ化Invoice Maker(請求書・見積書自動作成)
手作業の請求書作成から卒業!PythonでExcelデータを読み込み一括PDF化する「Invoice_Maker」の作り方を全3回で解説。基本ロジックからGUIアプリ化まで、実務で役立つ自動化ノウハウが満載です。
シリーズを読む








コメント