IoT 標(biāo) 簽
源 起:
在我們小區(qū)門(mén)口,有一家不大的店~叫“福美家超市”。主打是賣(mài)菜,兼有副食品和小百貨等。奇怪的是,旁邊有幾家類似功能的店,其他家多是冷冷清清,這一家卻總是得排隊(duì)付款。就算附近農(nóng)村賣(mài)小菜的農(nóng)民在附近圍了一圈兒又一圈兒,似乎也沒(méi)能沖淡這家店的生意!
今天,照例來(lái)到這家店里準(zhǔn)備買(mǎi)菜,大家伙兒自覺(jué)地站了兩排,向前推進(jìn)得似火比平常慢了點(diǎn)。正在選菜中,老板娘不知對(duì)誰(shuí)發(fā)了個(gè)話,“哎,大媽,您稍等會(huì)兒啊,今天缺兩人沒(méi)來(lái)吶”。今天小兩口子一同協(xié)作:一個(gè)稱重貼標(biāo)簽,另一個(gè)掃碼收款(向多數(shù)老年人),年輕人常常是手機(jī)付款。時(shí)不時(shí)也有不想多等的年輕人離開(kāi)店鋪。
我的感覺(jué)是排隊(duì)買(mǎi)菜的現(xiàn)象已經(jīng)有幾年了。有一次為關(guān)于他兒子學(xué)編程事聊了一會(huì)兒。他們每天3~4點(diǎn)就得起床,要趕往蔬菜集散中心采購(gòu),回到店里,還要不停地整理菜品,全家齊上陣,吃飯不定點(diǎn),直到晚上23點(diǎn)接近24點(diǎn)才能睡覺(jué)。幾乎天天如此,年年如此。所以老板的問(wèn)題似乎也是我的問(wèn)題,忽然自動(dòng)激發(fā)了是不是可以利用最近學(xué)習(xí)人工智能技術(shù),其中之一是機(jī)器學(xué)習(xí),可以對(duì)各種菜品進(jìn)行訓(xùn)練學(xué)習(xí),達(dá)到一定次數(shù)后不難識(shí)別常見(jiàn)超市蔬菜瓜果等。由此制作一種能自動(dòng)識(shí)別稱重貼標(biāo)的AI菜籃子。
這家店年輕的老板及老板娘怎么也不會(huì)想到,一位顧客會(huì)為他們店更高效地賣(mài)菜而想辦法。哈哈,這就是創(chuàng)客吧。
當(dāng)然,小白的我對(duì)人工智能才剛剛接觸,這個(gè)AI菜籃子當(dāng)前僅存腦海里備檔喲。
但是結(jié)合電子墨水屏制作未來(lái)超市的商品IoT標(biāo)簽并不難。
IoT標(biāo)簽:
一種在超市、便利店、藥房、甚至員工胸牌等場(chǎng)景顯示信息的電子類標(biāo)簽。隨著人工智能時(shí)代的來(lái)臨,將越來(lái)越多地替代傳統(tǒng)紙質(zhì)標(biāo)簽;每一個(gè)電子價(jià)簽通過(guò)無(wú)線網(wǎng)絡(luò)與商場(chǎng)計(jì)算機(jī)數(shù)據(jù)庫(kù)或上云互連,實(shí)時(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é)約成本:人力、時(shí)間、環(huán)保 | 成本高,易出錯(cuò) |
4、易管理:隨時(shí)更新,調(diào)整,云上操作不易出錯(cuò),及時(shí)提供數(shù)據(jù) ...... |
目前制作IoT標(biāo)簽的最佳選擇是電子墨水屏。什么是電子墨水屏?(參考:電子發(fā)燒友網(wǎng)~"傳感器技術(shù)")
電子墨水屏(E-link):
電子墨水屏技術(shù)最早可以追溯到 1996 年,它基于美國(guó)麻省理工學(xué)院媒體實(shí)驗(yàn)室(MIT Media Lab)的一項(xiàng)研究,利用電泳技術(shù)(EPD)實(shí)現(xiàn)顯示,這類屏幕的顯示效果十分接近傳統(tǒng)紙張,因此也被成為“電子紙”。1997 年,麻省理工學(xué)院的教授 Joseph Jacobson 創(chuàng)立 E_Ink 公司,開(kāi)始推動(dòng)電子紙技術(shù)走向商業(yè)化,電子墨水技術(shù)成為電子紙的主流。
電子墨水與印刷使用的墨水很相似,都是用顏料所制,這也是為什么我們看到電子墨水屏和傳統(tǒng)紙張顯示效果相似的原因。電子墨水通常會(huì)制成薄膜,由大量微膠囊﹙microcapsules﹚組成,這些微膠囊只有人類頭發(fā)的直徑大小。微膠囊中的黑白小球是帶不同電荷的色素顆粒,初始狀態(tài)下,色素顆粒懸浮在微膠囊中,當(dāng)施加一定方向的電場(chǎng)后,相應(yīng)的色素顆粒被推到頂部,微膠囊就會(huì)顯示不同的顏色,而不同顏色的微膠囊組成了各種文字和圖案。電子紙顯示屏是靠反射環(huán)境光來(lái)顯示圖案的,不需要背光,即使是在陽(yáng)光底下,電子紙顯示屏依然清晰可視,可視角度幾乎達(dá)到了 180°。因此,電子紙顯示屏非常適合閱讀。
電子墨水屏基本結(jié)構(gòu)如下圖所示:
⒈上層;⒉透明電極層;⒊透明微膠囊;⒋帶正電荷的白色顏料;⒌帶負(fù)電荷的黑色顏料;⒍透明液體(油);⒎電極像素層;⒏基板;⒐光線;⒑白色;⒒黑色。
電子墨水屏是由許多電子墨水組成,它是融合化學(xué),物理和電子學(xué)的整體產(chǎn)生的一種新材料。電子墨水可以看成一個(gè)個(gè)膠囊的樣子(如上圖所示)。每一個(gè)膠囊(位置6)里面有液體電荷,其中正電荷染白色,負(fù)電荷染黑色。當(dāng)在一側(cè)(位置8)給予正負(fù)電壓,帶有電荷的液體就會(huì)被分別吸引和排斥。這樣,每一個(gè)像素點(diǎn)就可以顯示白色或者黑色了。因?yàn)殡娮幽乃⑿率遣贿B續(xù)的,每一次刷新完成就可以保持現(xiàn)在的圖形,即使拔掉電池也依舊保存,因?yàn)殡娮幽哂须p穩(wěn)態(tài)效應(yīng)(磁滯效應(yīng))。
電子墨水屏的優(yōu)點(diǎn):
1、省電(可用于低功耗場(chǎng)景)
2、護(hù)眼(未來(lái)很可能替代紙質(zhì)閱讀)
電子墨水屏當(dāng)前的缺點(diǎn):
1、目前主要只有黑白產(chǎn)品,彩色有三色(黑白紅)/(黑白黃)/4096色。
2、不能快速響應(yīng)一些動(dòng)畫(huà)類需求。
3、彩色屏刷新過(guò)程中會(huì)閃屏。
4、成本高。
微雪的柔性墨水屏祼屏(黑白):
尺寸: 2.13 inch
工作電壓:3.3V/5V
通信接口:SPI
點(diǎn)距:0.229* 0.228
分辨率:212*104
顯示顏色:黑、白
灰度等級(jí):2
局部刷新 :0.3s
全局刷新 :2s
注意事項(xiàng)(摘自微雪):
1. 支持局刷的屏幕,注意使用的時(shí)候不能一直用局刷對(duì)屏幕進(jìn)行刷新,需要在做幾次局刷之后,對(duì)屏幕進(jìn)行一次全刷清屏。否則會(huì)造成屏幕顯示效果異常,無(wú)法修復(fù)。
2. 三色的墨水屏,建議將屏幕刷白朝上存放,使用前,先上電做幾次刷白操作。
3. 注意屏幕不能長(zhǎng)時(shí)間上電,在屏幕不刷新的時(shí)候,要將屏幕設(shè)置成睡眠模式,或者進(jìn)行斷電處理。否則屏幕長(zhǎng)時(shí)間保持高電壓狀態(tài),會(huì)損壞膜片,無(wú)法修復(fù)。
4. 使用墨水屏的時(shí)候,建議刷新時(shí)間間隔至少是 180s, 并且至少每 24 小時(shí)做一次刷新,如果長(zhǎng)期不使用墨水屏的話,要將墨水屏刷白存放。
5. 屏幕進(jìn)入睡眠模式之后,會(huì)忽略發(fā)送的圖片數(shù)據(jù),只有重新初始化才能正常刷新。
6. 屏幕的 FPC 排線比較脆弱,注意使用的時(shí)候沿屏幕水平方向彎曲排線,不可以沿屏幕垂直方向彎曲排線。
7. 墨水屏屏幕較為脆弱,注意盡量避免跌落,碰撞,用力按壓。
DF~FireBeetle 三色電子墨水屏(黑白紅):
工作電壓:3.3V
數(shù)據(jù)總線:SPI
顏色:黑白紅三色
屏幕尺寸:2.13 inch
像素:212×104
刷新時(shí)間:12~15s
DF~FireBeetle 低功耗系列之一螢火蟲(chóng) ESP32微控制器 (支持WiFi&Bluetooth):
可以較方便地控制FireBeetle電子墨水屏。
DF為FireBeetle(三色)電子墨水屏提供的API列表:
#include "DFRobot_IL0376F_SPI.h"
DFRobot_IL0376F_SPI eink; //創(chuàng)建一個(gè)ePaper對(duì)象
函數(shù)功能:設(shè)定字庫(kù)和墨水屏片選引腳并初始化。
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ù)功能:畫(huà)點(diǎn)。
InkScreen_Error drawPoint(const unsigned char x, const unsigned char y, const unsigned char color);
函數(shù)功能:畫(huà)線。
InkScreen_Error drawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t color);
函數(shù)功能:畫(huà)矩形框。
InkScreen_Error drawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t color)
函數(shù)功能:畫(huà)圓形邊框或者填充圓形。
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對(duì)電子墨水屏~IoT貨架標(biāo)簽進(jìn)行界面布局:
主要是在程序中對(duì)各種元素進(jìn)行坐標(biāo)定位、字號(hào)選擇、顏色確定、圖形繪制等。
測(cè)試電子墨水屏程序(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測(cè)試電子墨水屏程序 * from file FigureDemo.ino * 分辨率:212*104
|
測(cè)試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)境溫度和濕度模擬商品庫(kù)存狀態(tài),并將數(shù)據(jù)傳輸給手機(jī) App 顯示,從而實(shí)現(xiàn)遠(yuǎn)程實(shí)時(shí)監(jiān)控庫(kù)存的功能。
應(yīng)用目標(biāo):通過(guò)手機(jī) App 實(shí)時(shí)監(jiān)測(cè)超市商品庫(kù)存情況。
所需元件:
DHT11 溫濕度傳感器 x1
FireBettle Board-ESP32 x1
FireBettle Gravity 擴(kuò)展板 x1
DHT11x1
智能手機(jī) x1
硬件連接:
把 FireBettle Gravity 擴(kuò)展板直插在 FireBettle Board-ESP32 主板上,再把 DHT11 溫濕
度模塊接在擴(kuò)展板的 D2 數(shù)字引腳上,確保電源引腳、接地引腳和信號(hào)引腳都連接正確。
按以下我親自成功的步驟進(jìn)行即可:(或者參考官方教程)
1.打開(kāi)瀏覽器,輸入網(wǎng)址 https://iot.aliyun.com,登錄并進(jìn)入物聯(lián)網(wǎng)平臺(tái).
2.創(chuàng)建一個(gè)名為“庫(kù)存監(jiān)測(cè)”的產(chǎn)品,如下圖所示,若產(chǎn)品創(chuàng)建成功,會(huì)自動(dòng)出現(xiàn)在產(chǎn)品列表中;
3. 為庫(kù)存監(jiān)測(cè)產(chǎn)品定義功能名分別為“美福記”和“美福佳”的屬性,自定義產(chǎn)品標(biāo)識(shí)符,美福記取值范圍為0~100,美福佳為 0~100,如下圖所示。功能添加完畢后,會(huì)自動(dòng)出現(xiàn)在自定義功能欄下。
4.為庫(kù)存監(jiān)測(cè)產(chǎn)品添加一個(gè)名為 STOCK 的設(shè)備,如下圖所示,設(shè)備添加完畢后,會(huì)自動(dòng)出現(xiàn)在設(shè)備列表中。
5.將庫(kù)存監(jiān)測(cè)產(chǎn)品導(dǎo)入“我的智能云家庭管理”項(xiàng)目中,如下圖所示:
6.創(chuàng)建移動(dòng)應(yīng)用開(kāi)發(fā)APP:
選中左側(cè)導(dǎo)航欄的移動(dòng)應(yīng)用開(kāi)發(fā)在右側(cè)單擊打開(kāi)“新增可視化應(yīng)用”,如下圖所示:
7.點(diǎn)擊自定義頁(yè)面后的+號(hào),編輯,將“自定義新增頁(yè) 1”改為庫(kù)存監(jiān)測(cè),用鼠標(biāo)將可視化組建下的實(shí)時(shí)曲線控件拖動(dòng)到中間的頁(yè)面上,如下圖所示:
8.選中其中一個(gè)實(shí)時(shí)曲線,點(diǎn)擊數(shù)據(jù)->配置數(shù)據(jù),在彈出的選項(xiàng)框里選擇相應(yīng)的選項(xiàng),并點(diǎn)擊確定。
9.修改樣式,常常保存。
10.配置首頁(yè)模塊。這一步是為了設(shè)置一個(gè)導(dǎo)航欄,鏈接到上面設(shè)計(jì)的“庫(kù)存監(jiān)測(cè)”。選中[功能]首頁(yè)模塊->列表,如下圖所示,選中新增頁(yè)面入口,在彈出的“頁(yè)面入口 1”下,完成相應(yīng)信息的選擇,將其鏈接到剛才設(shè)計(jì)的“庫(kù)存監(jiān)測(cè)“頁(yè)面,如下圖所示,點(diǎn)擊確定完成配置后,別忘了點(diǎn)擊保存。
11.安裝包生成。在編輯頁(yè)面,點(diǎn)擊構(gòu)建,選擇 Andriod 構(gòu)建或 iOS 發(fā)構(gòu)建,如下圖所示:
12.手機(jī)掃碼,APP到手了!
13.我定義的APP~“IoT標(biāo)簽”界面:
以上測(cè)試程序合并為最終程序(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)行代碼串口顯示溫度(庫(kù)存)28:
再看電子墨水屏顯示庫(kù)存(指紅色部分約28%):