IoT 標(biāo) 簽
源 起:
在我們小區(qū)門口,有一家不大的店~叫“福美家超市”。主打是賣菜,兼有副食品和小百貨等。奇怪的是,旁邊有幾家類似功能的店,其他家多是冷冷清清,這一家卻總是得排隊(duì)付款。就算附近農(nóng)村賣小菜的農(nóng)民在附近圍了一圈兒又一圈兒,似乎也沒能沖淡這家店的生意!
今天,照例來到這家店里準(zhǔn)備買菜,大家伙兒自覺地站了兩排,向前推進(jìn)得似火比平常慢了點(diǎn)。正在選菜中,老板娘不知對誰發(fā)了個話,“哎,大媽,您稍等會兒啊,今天缺兩人沒來吶”。今天小兩口子一同協(xié)作:一個稱重貼標(biāo)簽,另一個掃碼收款(向多數(shù)老年人),年輕人常常是手機(jī)付款。時不時也有不想多等的年輕人離開店鋪。
我的感覺是排隊(duì)買菜的現(xiàn)象已經(jīng)有幾年了。有一次為關(guān)于他兒子學(xué)編程事聊了一會兒。他們每天3~4點(diǎn)就得起床,要趕往蔬菜集散中心采購,回到店里,還要不停地整理菜品,全家齊上陣,吃飯不定點(diǎn),直到晚上23點(diǎn)接近24點(diǎn)才能睡覺。幾乎天天如此,年年如此。所以老板的問題似乎也是我的問題,忽然自動激發(fā)了是不是可以利用最近學(xué)習(xí)人工智能技術(shù),其中之一是機(jī)器學(xué)習(xí),可以對各種菜品進(jìn)行訓(xùn)練學(xué)習(xí),達(dá)到一定次數(shù)后不難識別常見超市蔬菜瓜果等。由此制作一種能自動識別稱重貼標(biāo)的AI菜籃子。
這家店年輕的老板及老板娘怎么也不會想到,一位顧客會為他們店更高效地賣菜而想辦法。哈哈,這就是創(chuàng)客吧。
當(dāng)然,小白的我對人工智能才剛剛接觸,這個AI菜籃子當(dāng)前僅存腦海里備檔喲。
但是結(jié)合電子墨水屏制作未來超市的商品IoT標(biāo)簽并不難。
IoT標(biāo)簽:
一種在超市、便利店、藥房、甚至員工胸牌等場景顯示信息的電子類標(biāo)簽。隨著人工智能時代的來臨,將越來越多地替代傳統(tǒng)紙質(zhì)標(biāo)簽;每一個電子價簽通過無線網(wǎng)絡(luò)與商場計(jì)算機(jī)數(shù)據(jù)庫或上云互連,實(shí)時、準(zhǔn)確地顯示不同區(qū)域商品最新的基本信息。
IoT標(biāo)簽 VS 紙質(zhì)標(biāo)簽:
IoT標(biāo)簽 | 紙質(zhì)標(biāo)簽 |
1、便利性:一次到位,僅幾年后更換電池 | 繁瑣 |
2、體驗(yàn)佳:改善顧客線上線下體驗(yàn)不一致,更可實(shí)物參照 | 不同步 |
3、節(jié)約成本:人力、時間、環(huán)保 | 成本高,易出錯 |
4、易管理:隨時更新,調(diào)整,云上操作不易出錯,及時提供數(shù)據(jù) ...... |
目前制作IoT標(biāo)簽的最佳選擇是電子墨水屏。什么是電子墨水屏?(參考:電子發(fā)燒友網(wǎng)~"傳感器技術(shù)")
電子墨水屏(E-link):
電子墨水屏技術(shù)最早可以追溯到 1996 年,它基于美國麻省理工學(xué)院媒體實(shí)驗(yàn)室(MIT Media Lab)的一項(xiàng)研究,利用電泳技術(shù)(EPD)實(shí)現(xiàn)顯示,這類屏幕的顯示效果十分接近傳統(tǒng)紙張,因此也被成為“電子紙”。1997 年,麻省理工學(xué)院的教授 Joseph Jacobson 創(chuàng)立 E_Ink 公司,開始推動電子紙技術(shù)走向商業(yè)化,電子墨水技術(shù)成為電子紙的主流。
電子墨水與印刷使用的墨水很相似,都是用顏料所制,這也是為什么我們看到電子墨水屏和傳統(tǒng)紙張顯示效果相似的原因。電子墨水通常會制成薄膜,由大量微膠囊﹙microcapsules﹚組成,這些微膠囊只有人類頭發(fā)的直徑大小。微膠囊中的黑白小球是帶不同電荷的色素顆粒,初始狀態(tài)下,色素顆粒懸浮在微膠囊中,當(dāng)施加一定方向的電場后,相應(yīng)的色素顆粒被推到頂部,微膠囊就會顯示不同的顏色,而不同顏色的微膠囊組成了各種文字和圖案。電子紙顯示屏是靠反射環(huán)境光來顯示圖案的,不需要背光,即使是在陽光底下,電子紙顯示屏依然清晰可視,可視角度幾乎達(dá)到了 180°。因此,電子紙顯示屏非常適合閱讀。
電子墨水屏基本結(jié)構(gòu)如下圖所示:
⒈上層;⒉透明電極層;⒊透明微膠囊;⒋帶正電荷的白色顏料;⒌帶負(fù)電荷的黑色顏料;⒍透明液體(油);⒎電極像素層;⒏基板;⒐光線;⒑白色;⒒黑色。
電子墨水屏是由許多電子墨水組成,它是融合化學(xué),物理和電子學(xué)的整體產(chǎn)生的一種新材料。電子墨水可以看成一個個膠囊的樣子(如上圖所示)。每一個膠囊(位置6)里面有液體電荷,其中正電荷染白色,負(fù)電荷染黑色。當(dāng)在一側(cè)(位置8)給予正負(fù)電壓,帶有電荷的液體就會被分別吸引和排斥。這樣,每一個像素點(diǎn)就可以顯示白色或者黑色了。因?yàn)殡娮幽乃⑿率遣贿B續(xù)的,每一次刷新完成就可以保持現(xiàn)在的圖形,即使拔掉電池也依舊保存,因?yàn)殡娮幽哂须p穩(wěn)態(tài)效應(yīng)(磁滯效應(yīng))。
電子墨水屏的優(yōu)點(diǎn):
1、省電(可用于低功耗場景)
2、護(hù)眼(未來很可能替代紙質(zhì)閱讀)
電子墨水屏當(dāng)前的缺點(diǎn):
1、目前主要只有黑白產(chǎn)品,彩色有三色(黑白紅)/(黑白黃)/4096色。
2、不能快速響應(yīng)一些動畫類需求。
3、彩色屏刷新過程中會閃屏。
4、成本高。
微雪的柔性墨水屏祼屏(黑白):
尺寸: 2.13 inch
工作電壓:3.3V/5V
通信接口:SPI
點(diǎn)距:0.229* 0.228
分辨率:212*104
顯示顏色:黑、白
灰度等級:2
局部刷新 :0.3s
全局刷新 :2s
注意事項(xiàng)(摘自微雪):
1. 支持局刷的屏幕,注意使用的時候不能一直用局刷對屏幕進(jìn)行刷新,需要在做幾次局刷之后,對屏幕進(jìn)行一次全刷清屏。否則會造成屏幕顯示效果異常,無法修復(fù)。
2. 三色的墨水屏,建議將屏幕刷白朝上存放,使用前,先上電做幾次刷白操作。
3. 注意屏幕不能長時間上電,在屏幕不刷新的時候,要將屏幕設(shè)置成睡眠模式,或者進(jìn)行斷電處理。否則屏幕長時間保持高電壓狀態(tài),會損壞膜片,無法修復(fù)。
4. 使用墨水屏的時候,建議刷新時間間隔至少是 180s, 并且至少每 24 小時做一次刷新,如果長期不使用墨水屏的話,要將墨水屏刷白存放。
5. 屏幕進(jìn)入睡眠模式之后,會忽略發(fā)送的圖片數(shù)據(jù),只有重新初始化才能正常刷新。
6. 屏幕的 FPC 排線比較脆弱,注意使用的時候沿屏幕水平方向彎曲排線,不可以沿屏幕垂直方向彎曲排線。
7. 墨水屏屏幕較為脆弱,注意盡量避免跌落,碰撞,用力按壓。
DF~FireBeetle 三色電子墨水屏(黑白紅):
工作電壓:3.3V
數(shù)據(jù)總線:SPI
顏色:黑白紅三色
屏幕尺寸:2.13 inch
像素:212×104
刷新時間:12~15s
DF~FireBeetle 低功耗系列之一螢火蟲 ESP32微控制器 (支持WiFi&Bluetooth):
可以較方便地控制FireBeetle電子墨水屏。
DF為FireBeetle(三色)電子墨水屏提供的API列表:
#include "DFRobot_IL0376F_SPI.h"
DFRobot_IL0376F_SPI eink; //創(chuàng)建一個ePaper對象
函數(shù)功能:設(shè)定字庫和墨水屏片選引腳并初始化。
void begin(const char cs_W21, const char cs_GT30, const char dc, busy);
函數(shù)功能:清除屏幕為指定顏色。
InkScreen_Error clear(uint8_t color);
函數(shù)功能:顯示圖片(212*104),可以是紅色、黑白、紅白黑三色圖片。
void drawPicture(const unsigned char *pic_bw, const unsigned char *pic_red);
函數(shù)功能:刷新屏幕顯示。
void flush(void);
函數(shù)功能:顯示字符串。
void disString(uint8_t x, uint8_t y, char *ch, uint8_t color);
函數(shù)功能:畫點(diǎn)。
InkScreen_Error drawPoint(const unsigned char x, const unsigned char y, const unsigned char color);
函數(shù)功能:畫線。
InkScreen_Error drawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t color);
函數(shù)功能:畫矩形框。
InkScreen_Error drawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t color)
函數(shù)功能:畫圓形邊框或者填充圓形。
InkScreen_Error drawFillRect(uint16_t x1, uint16_t y1, uint16_t width, uint16_t length, uint8_t color);
參數(shù)1 (xc,yc): 圓心坐標(biāo) (xc∈(0,211),yc∈(0,103)。
InkScreen_Error drawCircle(uint16_t xc, uint16_t yc, uint16_t r, uint16_t fill, uint8_t color);
結(jié)合例程及上API對電子墨水屏~IoT貨架標(biāo)簽進(jìn)行界面布局:
主要是在程序中對各種元素進(jìn)行坐標(biāo)定位、字號選擇、顏色確定、圖形繪制等。
測試電子墨水屏程序(Arduino):
[C++] 純文本查看 復(fù)制代碼
01
02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
/*! * 08/19/2019測試電子墨水屏程序 * from file FigureDemo.ino * 分辨率:212*104
|
測試IoT程序(ARDUINO):
[C++] 純文本查看 復(fù)制代碼
001002003
004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 |
#include <WiFi.h> #include <PubSubClient.h> #include <ArduinoJson.h>
|
利用阿里云生成安卓APP:
本應(yīng)用采取 DHT11 溫濕度傳感器獲取環(huán)境溫度和濕度模擬商品庫存狀態(tài),并將數(shù)據(jù)傳輸給手機(jī) App 顯示,從而實(shí)現(xiàn)遠(yuǎn)程實(shí)時監(jiān)控庫存的功能。
應(yīng)用目標(biāo):通過手機(jī) App 實(shí)時監(jiān)測超市商品庫存情況。
所需元件:
DHT11 溫濕度傳感器 x1
FireBettle Board-ESP32 x1
FireBettle Gravity 擴(kuò)展板 x1
DHT11x1
智能手機(jī) x1
硬件連接:
把 FireBettle Gravity 擴(kuò)展板直插在 FireBettle Board-ESP32 主板上,再把 DHT11 溫濕
度模塊接在擴(kuò)展板的 D2 數(shù)字引腳上,確保電源引腳、接地引腳和信號引腳都連接正確。
按以下我親自成功的步驟進(jìn)行即可:(或者參考官方教程)
1.打開瀏覽器,輸入網(wǎng)址 https://iot.aliyun.com,登錄并進(jìn)入物聯(lián)網(wǎng)平臺.
2.創(chuàng)建一個名為“庫存監(jiān)測”的產(chǎn)品,如下圖所示,若產(chǎn)品創(chuàng)建成功,會自動出現(xiàn)在產(chǎn)品列表中;
3. 為庫存監(jiān)測產(chǎn)品定義功能名分別為“美福記”和“美福佳”的屬性,自定義產(chǎn)品標(biāo)識符,美福記取值范圍為0~100,美福佳為 0~100,如下圖所示。功能添加完畢后,會自動出現(xiàn)在自定義功能欄下。
4.為庫存監(jiān)測產(chǎn)品添加一個名為 STOCK 的設(shè)備,如下圖所示,設(shè)備添加完畢后,會自動出現(xiàn)在設(shè)備列表中。
5.將庫存監(jiān)測產(chǎn)品導(dǎo)入“我的智能云家庭管理”項(xiàng)目中,如下圖所示:
6.創(chuàng)建移動應(yīng)用開發(fā)APP:
選中左側(cè)導(dǎo)航欄的移動應(yīng)用開發(fā)在右側(cè)單擊打開“新增可視化應(yīng)用”,如下圖所示:
7.點(diǎn)擊自定義頁面后的+號,編輯,將“自定義新增頁 1”改為庫存監(jiān)測,用鼠標(biāo)將可視化組建下的實(shí)時曲線控件拖動到中間的頁面上,如下圖所示:
8.選中其中一個實(shí)時曲線,點(diǎn)擊數(shù)據(jù)->配置數(shù)據(jù),在彈出的選項(xiàng)框里選擇相應(yīng)的選項(xiàng),并點(diǎn)擊確定。
9.修改樣式,常常保存。
10.配置首頁模塊。這一步是為了設(shè)置一個導(dǎo)航欄,鏈接到上面設(shè)計(jì)的“庫存監(jiān)測”。選中[功能]首頁模塊->列表,如下圖所示,選中新增頁面入口,在彈出的“頁面入口 1”下,完成相應(yīng)信息的選擇,將其鏈接到剛才設(shè)計(jì)的“庫存監(jiān)測“頁面,如下圖所示,點(diǎn)擊確定完成配置后,別忘了點(diǎn)擊保存。
11.安裝包生成。在編輯頁面,點(diǎn)擊構(gòu)建,選擇 Andriod 構(gòu)建或 iOS 發(fā)構(gòu)建,如下圖所示:
12.手機(jī)掃碼,APP到手了!
13.我定義的APP~“IoT標(biāo)簽”界面:
以上測試程序合并為最終程序(ARDUINO):
[C++] 純文本查看 復(fù)制代碼
001002003
004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
#include "Arduino.h" #include <WiFi.h> #include <PubSubClient.h>
|
運(yùn)行代碼串口顯示溫度(庫存)28:
再看電子墨水屏顯示庫存(指紅色部分約28%):