SShelf

名前は Searchable Shelf を省略して SShelf 。初見でかなり読みずらいと思うが"エスシェルフ"と読むことにする。

外観

SShelf外観

機能概要

  • どの部品をどこの引き出しに入れたかブラウザから手作業で登録できる。
  • 部品の在庫をブラウザから検索できる。
  • ブラウザから部品詳細ページを開くと、その部品が入っている引き出しのLEDが点滅する。
  • 引き出しユニットを16個まで追加できる。

機能の詳細

引き出し登録

引き出し登録

引き出し登録時は、以下をブラウザから入力する。

  • 引き出し名
  • 接続ポート番号(接続するPCA9685のポート番号)
  • メモ

部品登録

部品登録

部品登録時は、以下をブラウザから入力する。

  • 通販コード(任意)
  • 部品名
  • 個数
  • 収納場所(登録した引き出しから選ぶ)
  • メモ

なお、秋月電子の購入履歴をコピペすると、上記項目を自動で埋めてくれる機能もある。

秋月購入履歴からの部品登録

部品検索

部品検索

部品検索時は、検索したいワードをブラウザから入力する。

検索結果から部品詳細ページに飛ぶことができる。部品詳細ページを開くと、その部品が収まっている引き出しのLEDが点滅する。

技術部分の詳細

必要部品

引き出しの構造

引き出し外観1 引き出し外観2 引き出し外観3

工具を用いずに凹凸ではめ込めるようにした。はめ込みの精度は使用する3Dプリンターに依存するので、プリンターに応じて調整を行う必要がある。

フィラメント量を節約するため、全体的にスリムにしている。強度は度外視している。このページ用に撮影している間にも破損したので、当日までに構造を修正するかもしれない。

配線

それぞれの部品の各配線は以下の通り。

配線図

電源

ATOM LiteのUSB Type-C端子から供給する。

LED制御

PCA9685サーボシールドを用いている。現状LEDは消灯or点滅のパターンしかないが、PCA9685のおかげでPWM出力ができるので、ON/OFFだけでなく明るさの調整もやろうと思えばできる。

今のところ同時にたくさんLEDをつける予定はないため、ATOM Liteの5Vピンから電源を供給している。

DB

Sqlite3 Arduino library for ESP32を用いている。

データベースファイルはmicroSDカードに保存するようにしている。

E-R図

E-R図

エンティティ名をShelfにしてしまっているが、役割としては"棚"というよりかは"引き出し"が正しい。

Webサーバー

ESPAsyncWebServerを用いている。

作った理由

作った理由は、部品の在庫管理を行いたいと思ったため。今どれくらい部品が手持ちにあるか確認せずに、とりあえず必要な部品を(念のため)少し多めに購入する。ということを毎回繰り返していくと、余りの部品がどんどん生成されていく。これは健全ではないのではないかと思い、うまく管理したいなあと思った。

また、なんとなくのイメージとして、Googleみたいな検索エンジンから部品を検索して、現状の在庫から部品が見つかったらその部品の置いてある場所が光るみたいなものを作りたかった。今の自分の技術力で実現できそうなところを考えたところ、今回のような形になった。

しばらく自分で使ってみての感想

ひとまず手持ちの部品を登録してみて、実際に自分で使ってみた感想は以下。

  • 部品の登録・更新作業がひたすらにめんどくさい。
    • 部品を入れる時、出す時にいちいちブラウザを開いて作業するのはやってられない。
    • せめてバーコード読み取りとかで登録・更新作業ができるようにしないとやってけない。
  • ブラウザを開いて検索する前にとりあえず引き出しの中を見て確認してしまう。
    • どこに何があるかぼんやりと頭の中にあるので、それを頼りにとりあえず検索する前に引き出しの中を見てしまう。
  • 結局自分の頭の中にDBを作るのが一番強いと思う。
    • まあ無理なのだが。