【人工智慧】自製萬能AI POS結帳機

作者:曾成訓(CH.Tseng)

現實生活中除了單純以「物品數量」結帳外,還有其他情況是以「秤重」來計算價格的,也就是「重量乘上單位價格」,這類的場景像是水果攤、糖果鋪、自助餐、中藥行、菜市場等,在實際消費上比前者更為普遍。

如果有一台 POS 機,能夠識別物品並自動切換以重量或數量的方式來結帳,該有多方便啊!下方我們就來實作一台自動 POS 機,能夠辨識商品並依據商品種類來決定所採用的計價方式,像是西瓜用公斤,木瓜用台斤,雞蛋則用顆數來計算等。

所需材料只要一片普通的樹莓派,不需要任何貴鬆鬆的硬體加速器,大約三千元就能完工,對於不需要列印發票或連接後台 POS 系統的小商家、攤販可說是相當方便!

功能需求

  1. 自動辨識商品
  2. 秤重功能

各個商品可設定自己的秤重單位及單位價格(如公斤、台斤、公克)

  1. 連續物品的結帳功能(一位顧客會購買多樣商品,因此需一樣樣依次辨識秤重後再一起結帳)
  2. 不同類商品但單位重量價格若相同,可放在一起同時結帳

使用零件

  • 樹莓派板子 x1 (約台幣 1,300~1,500)

(圖片來源:曾成訓提供)

其實使用樹莓派 3B+ 即可,辨識秤重約 3 秒可完成,但當然如果能使用 4 版當然會更好,使用者體驗會更佳!

  • 樹莓派 7” 官方螢幕(含觸控) x1 (約台幣 2,500~3,000)

(圖片來源:曾成訓提供)

您也可以使用其它種類的螢幕(只是後面我所附的 3D 列印外殼可能就不適用了),另外程式中的互動方式我是以觸控方式來設計,因此有觸控功能會比較方便。

  • HX711 模組+5 kg 壓力感測器 x1 (約台幣 190~300)

(圖片來源:曾成訓提供)

這類的壓力感測器是將應變片貼附在鋼或鋁的柱狀體上,主要是透過感應這個柱狀體上微小的變化來探知物體的重量:另外,HX711 為 24 位元的 A/D 轉換器,由於其感應的數值很小,需透過 HX711 模組來放大。

  • Web Camera x1 (約台幣 250~850)

(圖片來源:曾成訓提供)

相機部份這邊使用的是 C310(只要是標準的 USB WebCam 都可以使用),而由於 YOLO V3-Tiny 模型的圖片尺寸需求為 416×416,因此使用一般最便宜的 VGA 解析度即可。

 3D 列印外殼

外殼設計如下,分別為主體秤重盤,可一體化樹莓派和秤重模組等零件;這邊是以白色來列印,不過由於螢幕為黑色,因此模型顏色使用黑色其實會更適合。

(圖片來源:曾成訓提供)

(圖片來源:曾成訓提供)

組裝及接線

由於零件不多,因此組裝相當容易,基本上就是把秤重模組放入圓形凹槽、樹莓派含螢幕倒扣置於方形凹槽即可。

(圖片來源:Raspberry Pi Tutorials

HX711 模組與樹莓派的接法如下:

  • VCC 🡪 5V
  • GND 🡪 接地
  • DT 🡪 Pin 29(GPIO 5)
  • SCK 🡪 Pin 31(GPIO 6)

(圖片來源:曾成訓提供)

組裝後應該像這樣子:

(圖片來源:曾成訓提供)

程式設計

  • 使用者動作流程:同一位顧客的多個商品,可使用結帳按鈕來累積其金額:清空按鈕則可清除目前的購物車,開始下一位客人的結帳。

(圖片來源:曾成訓提供)

  • 秤重模組程式 :HX711 在網路上有現成的 python module 可直接使用,我參考的是這個,有稍加修改後再整合到程式中;這個程式每次執行時,會先偵測目前的重量,以其作為基準(代表重量為零),所以一開始執行程式時記得不要放任何東西在秤盤上。

程式及參數檔說明

程式在這邊,如果您使用的零件皆相同,基本上只要修改設定檔 pos.ini 的內容,並改成您自己訓練好的模型即可。

各項參數說明如下:

小結

影片中,不同種類的物品可設定專屬的秤重單位(公斤、公克、台斤),或換成以數量計價;影片中商品的辨識時間約為 4 秒,如果想要更快的速度,可將樹莓派 3 替換成第四代,或者加上 NCS 加速棒甚至改用 Jetson Nano,相信能得到更好的辨識效率。

(本文經作者同意轉載自 CH.TSENG 部落格原文連結;責任編輯:賴佩萱)

曾 成訓

Author: 曾 成訓

人到中年就像沒對準的描圖紙,一點一點的錯開,我只能當個Maker來使它復位。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *