基于ESP32單片機(jī)的自動(dòng)售貨機(jī)設(shè)計(jì)
王惠1,聶建華2,王慶龍1 2022/12/6 21:57:23
(接上頁(yè)),以此可以擴(kuò)展24個(gè)I/O口,I/O分配見表2。
表2 74HC595 I/O分配
芯片 引腳 功能
74HC595-1 15 A商品的步進(jìn)電機(jī)啟動(dòng)引腳
1 B商品的步進(jìn)電機(jī)啟動(dòng)引腳
2 C商品的步進(jìn)電機(jī)啟動(dòng)引腳
3 D商品的步進(jìn)電機(jī)啟動(dòng)引腳
4 E商品的步進(jìn)電機(jī)啟動(dòng)引腳
5 F商品的步進(jìn)電機(jī)啟動(dòng)引腳
6 A商品有貨/無(wú)貨顯示
7 B商品有貨/無(wú)貨顯示
74HC595-2 15 C商品有貨/無(wú)貨顯示
1 D商品有貨/無(wú)貨顯示
2 E商品有貨/無(wú)貨顯示
3 F商品有貨/無(wú)貨顯示
4 步進(jìn)電機(jī)A步信號(hào)輸出
5 步進(jìn)電機(jī)B步信號(hào)輸出
6 步進(jìn)電機(jī)C步信號(hào)輸出
7 步進(jìn)電機(jī)D步信號(hào)輸出
74HC595-3 15 5角LED輸出
1 1元LED輸出
2 2元LED輸出
3 3元LED輸出
4 4元LED輸出
5 5元LED輸出
6 電子支付完成輸出
7 無(wú)
3個(gè)74HC595的SHCP引腳并聯(lián)后接入單片機(jī)IO12引腳,STCP引腳并聯(lián)后接入單片機(jī)IO13引腳。將74HC595-1的數(shù)據(jù)輸入接入單片機(jī),數(shù)據(jù)輸出腳接到74HC595-2的數(shù)據(jù)輸入腳,再將74HC595-2的數(shù)據(jù)輸出接到74HC595-3即可。
4.2 電機(jī)及安全輸出模塊
本設(shè)計(jì)采用28YBj-48步進(jìn)電機(jī)。該步進(jìn)電機(jī)為彈簧貨道的旋轉(zhuǎn)提供動(dòng)力,使得彈簧貨道旋轉(zhuǎn)推送最前端的商品掉落出貨。加之彈簧墊片的減振作用,可以有效減少商品晃動(dòng)。步進(jìn)電機(jī)驅(qū)動(dòng)芯片采用ULN2003,出貨檢測(cè)模塊采用GP2Y0A51SK0F紅外測(cè)距模塊。
無(wú)人售貨機(jī)有6個(gè)出貨倉(cāng),因此有6套步進(jìn)電機(jī)以及ULN2003控制模塊。若為每個(gè)ULN2003都配備4個(gè)信號(hào)輸入,會(huì)導(dǎo)致I/O占用數(shù)量太多,本產(chǎn)品將6ULN2003的信號(hào)輸入全部并聯(lián)接入單片機(jī),使用一個(gè)N-MOS將ULN2003的GND引腳與N-MOS的D腳相連,N-MOS的S腳與電路的負(fù)極相連。如此只需要進(jìn)行4個(gè)信號(hào)輸入腳和6個(gè)N-MOS控制腳的控制,即可完成對(duì)6路步進(jìn)電機(jī)的控制。
4.3 輸出顯示模塊
為了直觀顯示每個(gè)貨物格子的有貨/缺貨狀態(tài),采用兩個(gè)LED燈來(lái)顯示,紅色LED燈亮起代表缺貨,綠色LED燈亮起代表有貨。
此次設(shè)計(jì)的自動(dòng)售貨機(jī)采用一塊18英寸的LCD屏幕,主控為ST7735S,通過(guò)SPI總線直接與單片機(jī)連接,用于無(wú)人售貨機(jī)的產(chǎn)品、數(shù)量、進(jìn)行的步驟等參數(shù)的顯示。
5 軟件設(shè)計(jì)
自動(dòng)售貨機(jī)軟件采用Arduino開發(fā)環(huán)境。初始化程序調(diào)用ST7735顯示器的庫(kù),將ST7735初始化,將對(duì)應(yīng)按鍵的引腳設(shè)置為輸入上拉,將74HC595的信號(hào)引腳設(shè)置為輸出模式,貨物L(fēng)ED燈初始化。
5.1 主邏輯部分
自動(dòng)售貨機(jī)的程序是按照一整套邏輯的順序控制,通過(guò)最初定義一個(gè)變量zt在開機(jī)時(shí)定義為0,當(dāng)前步驟完成后,變量zt的數(shù)值加1。單片機(jī)通過(guò)檢測(cè)zt的數(shù)值執(zhí)行對(duì)應(yīng)的程序,從而進(jìn)入相應(yīng)的步驟,當(dāng)完成一個(gè)循環(huán)后,當(dāng)前變量會(huì)初始化為0,進(jìn)入主界面,等待進(jìn)入下一個(gè)循環(huán)步驟。
5.2 關(guān)鍵模塊
程序的按鍵部分在初始時(shí)將引腳設(shè)置為輸入上拉模式。將開關(guān)一腳接單片機(jī)對(duì)應(yīng)引腳,另一腳接地,即可讀取當(dāng)前按鍵狀態(tài),會(huì)返回一個(gè)為0或者1的值,如果按鍵按下,引腳返回的值為0,如果沒被按下會(huì)返回1。單片機(jī)通過(guò)檢測(cè)zt的數(shù)值,進(jìn)入數(shù)值對(duì)應(yīng)的步驟,以此打開不同的按鍵檢測(cè)子程序,以完成選擇貨物和投幣等功能。
5.3 顯示模塊
界面顯示通過(guò)定義一個(gè)變量ye,初始ye=0,系統(tǒng)會(huì)顯示主界面。當(dāng)系統(tǒng)檢測(cè)到商品選擇按鍵返回的值為0時(shí),被檢測(cè)到的按鍵會(huì)映射到A~F的商品選擇,ye會(huì)變?yōu)閷?duì)應(yīng)的1~6,單片機(jī)通過(guò)檢測(cè)這個(gè)變量的數(shù)值,對(duì)應(yīng)跳轉(zhuǎn)到不同的二級(jí)子界面,以此顯示商品詳細(xì)的信息。
5.4 74HC595驅(qū)動(dòng)程序
外設(shè)通過(guò)74HC595與單片機(jī)連接。定義一個(gè)函數(shù)數(shù)組bs,通過(guò)74HC595輸出。bs數(shù)組共有24位數(shù),分別對(duì)應(yīng)3個(gè)74HC595的各8個(gè)輸出接口。這24位數(shù)從小到大對(duì)應(yīng):空、電子支付完成輸出、五元LED顯示、四元LED顯示、三元LED顯示、二元LED顯示、一元LED顯示、五角LED顯示、步進(jìn)電機(jī)A步、步進(jìn)電機(jī)B步、步進(jìn)電機(jī)C步、步進(jìn)電機(jī)D(未完,下一頁(yè))
|