資料介紹
描述
概述
得益于創(chuàng)新技術(shù),我們的生活方式變得更加高效和智能。簡單的自動售貨機是現(xiàn)代的偉大發(fā)明之一。這是供應(yīng)商使用的一種高效且低成本的方法,可以 24/7 全天候向最終用戶交付產(chǎn)品。
本教程將向您展示如何基于涂鴉 LZ201 Cat.1 模塊和 MCU SDK 以低代碼方式制作自動售貨機原型。
腳步
第 1 步:硬件設(shè)計
硬件由電源單元、單片機單元(MCU)、電機驅(qū)動與控制單元、電機到位檢測單元、無線通信單元等外圍單元組成。框圖如下。
供電單元
三臺機組需要供電:
- 主電源:24V直流電源。將其連接到 MOSFET 為自動售貨機的電機供電。
- 無線通訊單元:4V直流電源。使用LM2576 DC-DC穩(wěn)壓IC將24V降壓至4V。LM2576 可以驅(qū)動 3A 負(fù)載,具有出色的線路和負(fù)載調(diào)整率。
- 單片機:3.3V供電。使用 S-1206B33-U3T1G 低壓差 (LDO) 穩(wěn)壓器 IC 將 4V 降壓至 3.3V。
單片機
STM32F103RET6 是一款 32 位高密度性能 MCU。它采用 ARM Cortex-M3 架構(gòu),工作頻率為 72 MHz。它具有 11 個定時器和一個內(nèi)部復(fù)位電路、電壓檢測器、電壓調(diào)節(jié)器和微調(diào) RC 振蕩器。有關(guān)產(chǎn)品和數(shù)據(jù)表的更多信息,請分別參見STM32F103RE 概述和STM32F103RE 數(shù)據(jù)表。
電機驅(qū)動和控制單元
元器件74HC595是一個8位串行輸入并行輸出移位寄存器,用于向電機輸出控制信號。( 74HC595 數(shù)據(jù)表)
將電機的每個端子分別連接到 FDS9945 n 溝道 MOSFET(FDS9945 數(shù)據(jù)表)和 FDS9958 p 溝道 MOSFET(FDS9958 數(shù)據(jù)表)。連接方法如下:
- 關(guān)于 FDS9945 MOSFET 的三個端子,源極接地,柵極連接信號線,漏極連接電機負(fù)極。
- 關(guān)于FDS9958 MOSFET的三個端子,源極接24V電源,柵極接信號線,漏極接電機正極。
當(dāng) FDS9945 和 FDS9958 都處于導(dǎo)通狀態(tài)時,電機可以旋轉(zhuǎn)。
元件數(shù)量
- 信號線:11根。我們設(shè)計了 10 個產(chǎn)品托盤,需要 10 個電機。通常,我們需要 20 根信號線。如果我們用一根信號線將 10 個電機的負(fù)極端子連接到 FDS9945 MOSFET 的漏極。只需要 11 根電線。
- 74HC595移位寄存器:兩片串聯(lián)。我們有 11 位數(shù)據(jù)要輸入和輸出,但一個移位寄存器只支持 8 位數(shù)據(jù)。因此,我們將兩個移位寄存器串聯(lián)起來,最多支持 16 位數(shù)據(jù)。
電機到位檢測單元
74HC165是一個8位并行輸入和串行輸出移位寄存器,用于確定電機旋轉(zhuǎn)方向。( 74HC165 數(shù)據(jù)表)
當(dāng)電機旋轉(zhuǎn)到指定位置時,限位開關(guān)向74HC165移位寄存器上的并行輸入引腳輸出一個低電平信號。MCU 可以從 74HC165 上的串行輸出引腳讀取數(shù)據(jù)。當(dāng)單片機檢測到某個位的低電平時,會停止相應(yīng)的電機。
由于我們沒有足夠的 I/O,10 個電機可以共享同一個限位開關(guān)。
無線通信單元
涂鴉專有的 LZ201-CN Cat.1 蜂窩模塊可以在自動售貨機和涂鴉 IoT Cloud 之間建立通信。有關(guān)詳細(xì)信息,請參閱LZ201-CN Cat.1 模塊數(shù)據(jù)表。
該模塊由高度集成的LTE Cat.1芯片UIS8910DM和外圍電路組成。它的特點:
- 內(nèi)置LTE Cat.1網(wǎng)絡(luò)通信協(xié)議棧和庫函數(shù)。
- 嵌入式 Cortex-A5 處理器和 Cat.1bis 調(diào)制解調(diào)器。
- 高達(dá) 64 MB 的閃存和高達(dá) 128 MB 的 SRAM。
- 支持的引腳包括 USB、UART、SDIO、SPI、I2C、I2S 和 ADC。
- 支持的外設(shè)包括顯示器、攝像頭、鍵盤矩陣、麥克風(fēng)、揚聲器、充電器、microSD 卡和 USIM 卡。
只需移植涂鴉MCU SDK,即可實現(xiàn)自動售貨機聯(lián)網(wǎng)云端,通過APP實現(xiàn)設(shè)備控制。您還可以選擇 WB3S Wi-Fi 模塊或其他通信協(xié)議的模塊。
其他外圍設(shè)備
下面列出了一些可選外設(shè):
- LED 指示網(wǎng)絡(luò)狀態(tài)。
- LED 指示電源狀態(tài)。
- 溫度傳感器檢測自動售貨機中的溫度。
- 跌落檢測器檢測產(chǎn)品跌落并返回操作結(jié)果。
- 多通道按鈕觸發(fā)特定的按鈕按下動作。
- RS-485 接口用于在自動售貨機和 RS-485 設(shè)備之間建立通信。
- LCD 用于人機交互。
完成硬件設(shè)計后,即可進行 PCB 布局、焊接和測試。下圖顯示了我們完成的PCB。
第二步:在涂鴉IoT平臺上創(chuàng)建產(chǎn)品
1.登錄涂鴉物聯(lián)網(wǎng)平臺,點擊創(chuàng)建。
2.找到標(biāo)準(zhǔn)品類,點擊戶外出行>智能電動車。
3. 單擊自定義解決方案選項卡上的智能電動汽車。
4.填寫基本信息,協(xié)議選擇LTE Cat.1 ,點擊創(chuàng)建。
5.根據(jù)需要添加標(biāo)準(zhǔn)功能。
6.(可選)如果沒有找到需要的功能,找到自定義功能,點擊+添加創(chuàng)建功能。我們創(chuàng)建兩個功能:一個是Item ,從云端獲取數(shù)據(jù),另一個是Inventory ,發(fā)送數(shù)據(jù)到云端.
7.單擊設(shè)備面板選項卡并選擇一個面板。為了方便測試,您可以選擇調(diào)試面板,稍后再更改。
8.單擊硬件開發(fā)選項卡。選擇涂鴉標(biāo)準(zhǔn)模組MCU SDK ,然后選擇LZ201-CN LTE Cat.1 Module 。
9.向下滾動頁面并找到下載文檔。單擊全部下載以獲取嵌入式編程的所有文件。
第 3 步:嵌入式編程
將 SDK 中的文件添加到您的項目中,并根據(jù)錯誤消息更正您的代碼。
您可能會使用不同的 MCU,因此以下驅(qū)動程序供您參考。完整示例代碼見tuya-iotos-embeded-mcu-demo-4g-vending-machine 。
配置串口
/***********************************************************
* Function: USART3_Init
* Input: uint32_t pclk2,uint32_t bound
* Output: none
* Return: none
* Notice: USART initialization
***********************************************************/
void USART3_Init(uint32_t pclk2,uint32_t bound)
{
float temp;
uint16_t mantissa;
uint16_t fraction;
temp=(float)(pclk2*1000000)/(bound*16);// Get USARTDIV.
mantissa=temp; // Get the integer part.
fraction=(temp-mantissa)*16; // Get the decimal part.
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<3; // Enable the clock for PORTB.
RCC->APB1ENR|=1<<18; // Enable the clock for USART3.
GPIOB->CRH&=~(0xf<<8|0xf<<12);
GPIOB->CRH|=0X0B<<8|8<<12;// // Configure GPIO state.
GPIOB->ODR|=1<<11;
RCC->APB1RSTR|=1<<18; // Reset USART3.
RCC->APB1RSTR&=~(1<<18);// Stop reset.
// Set baud rate.
USART3->BRR=mantissa; // Set baud rate.
USART3->CR1|=0X200C; // No parity, and 1 stop bit. USART3->CR1|=1<<8; // Enable PE interrupt.
USART3->CR1|=1<<5; // Enable the RXNE interrupt.
MY_NVIC_Init(1,2,USART3_IRQn,2);// Group 2
}
接收串行數(shù)據(jù)
/***********************************************************
* Function: USART3_IRQHandler
* Input: none
* Output: none
* Return: none
* Notice: USART interrupt handler function. Receive one byte of data in interrupt mode.
***********************************************************/
void USART3_IRQHandler(void)
{
if(USART3->SR&(1<<5))// Received data.
{
uart_receive_input((unsigned char)(USART3->DR));
}
}
發(fā)送串口數(shù)據(jù)
/***********************************************************
* Function: Uart3_PutChar
* Input: uint8_t
* Output: none
* Return: uint8_t
* Notice: Send one byte of data to check whether a timeout has happened.
***********************************************************/
uint8_t Uart3_PutChar(uint8_t data)
{
uint8_t ret=1;
uint16_t timeout=0x8000;
USART3->DR = data;
while((USART3->SR&1<<6)! =1<<6)// Wait until the transmission is completed.
{
timeout--;
if( 0 == timeout )
{
ret = 1;
break;
}
}
if( 0 != timeout )
{
ret = 0;
}
return ret;
}
/**
* @brief Send serial data
* @param[in] {value} The one byte of data to be sent by UART.
* @return Null
*/
void uart_transmit_output(u8 value)
{
//#error "Specify the UART transmission function and delete this line"
Uart3_PutChar(value);
/*
// Example:
extern void Uart_PutChar(u8 value);
Uart_PutChar(value); // UART transmission function
*/
}
通過74HC165移位寄存器讀取數(shù)據(jù)
/***********************************************************
* Function: HC165In
* Input: none
* Output: none
* Return: uint8_t
* Notice: Read values of the eight pins of 74HC165 and return 8-bit data.
***********************************************************/
uint8_t HC165In(void)
{
uint8_t i,dat=0;
CP_SET;
PL_RESET;
delay_us(10);
PL_SET;
delay_us(10);
for(i=0;i<8;i++)
{
dat=dat<<1;
if(ODATA==1)
{
dat=dat+1;
}
CP_RESET;
delay_us(10);
CP_SET;
delay_us(10);
}
CP_RESET;
return dat;
}
通過74HC595移位寄存器發(fā)送數(shù)據(jù)
該功能用于通過74HC595向n溝道MOSFET和p溝道MOSFET輸出不同電平的信號。這樣,我們可以控制電機旋轉(zhuǎn)。
/***********************************************************
* Function: HC595Send
* Input: uint16_t
* Output: none
* Return: none
* Notice: Output 16-bit data through pins of the two 74HC595 shift registers.
***********************************************************/
void HC595Send(uint16_t data)
{
uint8_t j;
LOCK_RESET;
delay_us(10);
for (j = 16; j > 0; j--)
{
SHIFT_RESET;
delay_us(10);
if(data & 0x8000)
{
INDATA_SET;
}
else
{
INDATA_RESET;
}
delay_us(10);
data <<= 1;
SHIFT_SET;
delay_us(10);
}
LOCK_SET;
delay_us(10);
}
例如,要旋轉(zhuǎn)第 X (0≤X≤9) 個電機來運送產(chǎn)品,我們可以調(diào)用
HC595Send(1<1||<<10);
1<表示高電平信號輸出到第 X 個 p 溝道 MOSFET。<>
注意:電路中的所有 n 溝道 MOSFET 使用相同的信號引腳,因此1<<10
是固定的。
要停止電機旋轉(zhuǎn),我們可以調(diào)用
HC595Send(0);
該功能的參數(shù)因電路設(shè)計而異。根據(jù)您的硬件調(diào)整它們。
處理來自云端的命令
來自云端的數(shù)據(jù)長度為 6 個字節(jié)。我們可以指定位 0 為產(chǎn)品托盤編號,位 1 為產(chǎn)品編號,位 2 至位 5 為訂單編號。
您可以根據(jù)需要指定通信協(xié)議。以下程序供您參考。
/*****************************************************************************
Function name: dp_download_m_num_handle
Feature description: a processing function for DPID_M_NUM.
Input parameters: value indicates the data source
: length: the length of the data
Return parameters: Return SUCCESS on success, and ERROR on failure
Instruction: For the send-only data point, the results must be sent to the cloud after the operation is completed.
*****************************************************************************/
static unsigned char dp_download_m_num_handle(const unsigned char value[], unsigned short length)
{
// Example: This is a data point of raw type.
unsigned char ret;
const unsigned char error[6]={"ERROR1"};
/*
// Process data of raw type.
*/
if((length==6)&&(value[0]<11)&&(value[1]<10))
{
IoT_receive[Q_U3.rear].data[0]=value[0];
IoT_receive[Q_U3.rear].data[1]=value[1];
IoT_receive[Q_U3.rear].data[2]=value[2];
IoT_receive[Q_U3.rear].data[3]=value[3];
IoT_receive[Q_U3.rear].data[4]=value[4];
IoT_receive[Q_U3.rear].data[5]=value[5];
F_TASK_MOTOR_OPEN++;
rear_inc(&Q_U3);
}
else
{
mcu_dp_raw_update(DPID_R_NUM,error,6);
}
// Return the result of the operation.
ret = mcu_dp_raw_update(DPID_M_NUM,value,length);
if(ret == SUCCESS)
return SUCCESS;
else
return ERROR;
}
編譯下載
編程完成后,如果出現(xiàn)任何錯誤,請單擊構(gòu)建并更正您的代碼。
然后,將程序下載到開發(fā)板上進行測試。
STM32 支持 ST-Link 和 J-Link 等調(diào)試器。建議使用 ST-Link。下表概述了要連接的引腳:
將 ST-Link 連接到您的開發(fā)板后,單擊下載。
第 4 步:演示
打開涂鴉智能應(yīng)用,點擊您為自動售貨機選擇的面板。找到創(chuàng)建的數(shù)據(jù)點Item ,輸入XXYYZZZZZZZZ格式的值進行測試。
-
XX
表示第 X 個產(chǎn)品托盤。 -
YY
表示托盤上的剩余產(chǎn)品。 -
ZZZZZZZZ
表示訂單號。它可以是任何值。
例如輸入
0104aabbccdd
,表示第一個托盤現(xiàn)在有四個產(chǎn)品,訂單號是aabbccdd
。
數(shù)據(jù)發(fā)送后,您會發(fā)現(xiàn)電機開始轉(zhuǎn)動,產(chǎn)品掉落后停止。
注意:庫存值必須與項目匹配。例如,如果第一個托盤有四個產(chǎn)品,則有效值為0104
。無效值如0105
和0103
不能使電機旋轉(zhuǎn)。
概括
涂鴉物聯(lián)網(wǎng)平臺提供便捷的物聯(lián)網(wǎng)開發(fā)工具和服務(wù),旨在讓您的物聯(lián)網(wǎng)項目更輕松、更高效。查看并發(fā)現(xiàn)更多很棒的想法。
?
- 自動售貨機MDB電源供電系統(tǒng)要求 0次下載
- 投幣個人自動售貨機的構(gòu)建
- 使用Arduino和1Sheeld DIY自動售貨機
- DIY自動售貨機開源項目
- 開源硬件自動售貨機
- 自動售貨機plc程序帶觸摸屏 53次下載
- 自動售貨機方案/設(shè)計/開發(fā)/項目
- 自動售貨機項目教程及文件下載 0次下載
- 基于Zigbee和物聯(lián)網(wǎng)的自動售貨機系統(tǒng) 25次下載
- 自動售貨機的VHDL程序與仿真資料免費下載 18次下載
- 使用FPGA實現(xiàn)自動售貨機的VHDL程序與仿真資料 24次下載
- 使用PLC實現(xiàn)自動售貨機的設(shè)計論文免費下載 19次下載
- 自動售貨機觸摸屏 5次下載
- 智能自動售貨機售貨 0次下載
- 自動售貨機短信報警系統(tǒng)
- 利爾達(dá)NB-IoT &amp;Cat.1 產(chǎn)測應(yīng)用指導(dǎo) 379次閱讀
- 什么是Cat.1? Cat.1的演進歷史和主要特點 1.1w次閱讀
- 什么是窄帶通信?窄帶通信與Cat.1的關(guān)系 淺談AIoTel下的Cat.1窄帶通信技術(shù) 2195次閱讀
- 基于STM32的自動售貨機控制系統(tǒng)設(shè)計 2851次閱讀
- 機智云推基于modbusRTU協(xié)議設(shè)備GC511 CAT.1 DTU無線數(shù)據(jù)中端 2178次閱讀
- 在智能HMI中如何實現(xiàn)良好的用戶體驗 2492次閱讀
- 智能售貨機系統(tǒng)架構(gòu)服務(wù)模式分析 3835次閱讀
- firefly自動售貨機概述 2121次閱讀
- 聯(lián)智通達(dá)科技自助售賣機產(chǎn)品介紹 1701次閱讀
- 液晶觸摸屏中的可編程控邏輯 1186次閱讀
- 簡單實用的6個PLC程序?qū)嵗治?/a> 9689次閱讀
- 自動售貨機為什么會知道你丟進去的是什么硬幣工作原理詳細(xì)介紹 8258次閱讀
- 互聯(lián)網(wǎng)和無線網(wǎng)絡(luò)平臺,對自動售貨機聯(lián)網(wǎng)實現(xiàn)遠(yuǎn)程控制 7419次閱讀
- 自動售貨機上的GPRS無線通信模塊設(shè)計 2377次閱讀
- 基于嵌入式的自動售貨機設(shè)計與實現(xiàn) 1.1w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多