資料介紹
描述
概述
得益于創(chuàng)新技術(shù),我們的生活方式變得更加高效和智能。簡(jiǎn)單的自動(dòng)售貨機(jī)是現(xiàn)代的偉大發(fā)明之一。這是供應(yīng)商使用的一種高效且低成本的方法,可以 24/7 全天候向最終用戶交付產(chǎn)品。
本教程將向您展示如何基于涂鴉 LZ201 Cat.1 模塊和 MCU SDK 以低代碼方式制作自動(dòng)售貨機(jī)原型。
腳步
第 1 步:硬件設(shè)計(jì)
硬件由電源單元、單片機(jī)單元(MCU)、電機(jī)驅(qū)動(dòng)與控制單元、電機(jī)到位檢測(cè)單元、無(wú)線通信單元等外圍單元組成。框圖如下。
供電單元
三臺(tái)機(jī)組需要供電:
- 主電源:24V直流電源。將其連接到 MOSFET 為自動(dòng)售貨機(jī)的電機(jī)供電。
- 無(wú)線通訊單元:4V直流電源。使用LM2576 DC-DC穩(wěn)壓IC將24V降壓至4V。LM2576 可以驅(qū)動(dòng) 3A 負(fù)載,具有出色的線路和負(fù)載調(diào)整率。
- 單片機(jī):3.3V供電。使用 S-1206B33-U3T1G 低壓差 (LDO) 穩(wěn)壓器 IC 將 4V 降壓至 3.3V。
單片機(jī)
STM32F103RET6 是一款 32 位高密度性能 MCU。它采用 ARM Cortex-M3 架構(gòu),工作頻率為 72 MHz。它具有 11 個(gè)定時(shí)器和一個(gè)內(nèi)部復(fù)位電路、電壓檢測(cè)器、電壓調(diào)節(jié)器和微調(diào) RC 振蕩器。有關(guān)產(chǎn)品和數(shù)據(jù)表的更多信息,請(qǐng)分別參見STM32F103RE 概述和STM32F103RE 數(shù)據(jù)表。
電機(jī)驅(qū)動(dòng)和控制單元
元器件74HC595是一個(gè)8位串行輸入并行輸出移位寄存器,用于向電機(jī)輸出控制信號(hào)。( 74HC595 數(shù)據(jù)表)
將電機(jī)的每個(gè)端子分別連接到 FDS9945 n 溝道 MOSFET(FDS9945 數(shù)據(jù)表)和 FDS9958 p 溝道 MOSFET(FDS9958 數(shù)據(jù)表)。連接方法如下:
- 關(guān)于 FDS9945 MOSFET 的三個(gè)端子,源極接地,柵極連接信號(hào)線,漏極連接電機(jī)負(fù)極。
- 關(guān)于FDS9958 MOSFET的三個(gè)端子,源極接24V電源,柵極接信號(hào)線,漏極接電機(jī)正極。
當(dāng) FDS9945 和 FDS9958 都處于導(dǎo)通狀態(tài)時(shí),電機(jī)可以旋轉(zhuǎn)。
元件數(shù)量
- 信號(hào)線:11根。我們?cè)O(shè)計(jì)了 10 個(gè)產(chǎn)品托盤,需要 10 個(gè)電機(jī)。通常,我們需要 20 根信號(hào)線。如果我們用一根信號(hào)線將 10 個(gè)電機(jī)的負(fù)極端子連接到 FDS9945 MOSFET 的漏極。只需要 11 根電線。
- 74HC595移位寄存器:兩片串聯(lián)。我們有 11 位數(shù)據(jù)要輸入和輸出,但一個(gè)移位寄存器只支持 8 位數(shù)據(jù)。因此,我們將兩個(gè)移位寄存器串聯(lián)起來(lái),最多支持 16 位數(shù)據(jù)。
電機(jī)到位檢測(cè)單元
74HC165是一個(gè)8位并行輸入和串行輸出移位寄存器,用于確定電機(jī)旋轉(zhuǎn)方向。( 74HC165 數(shù)據(jù)表)
當(dāng)電機(jī)旋轉(zhuǎn)到指定位置時(shí),限位開關(guān)向74HC165移位寄存器上的并行輸入引腳輸出一個(gè)低電平信號(hào)。MCU 可以從 74HC165 上的串行輸出引腳讀取數(shù)據(jù)。當(dāng)單片機(jī)檢測(cè)到某個(gè)位的低電平時(shí),會(huì)停止相應(yīng)的電機(jī)。
由于我們沒有足夠的 I/O,10 個(gè)電機(jī)可以共享同一個(gè)限位開關(guān)。
無(wú)線通信單元
涂鴉專有的 LZ201-CN Cat.1 蜂窩模塊可以在自動(dòng)售貨機(jī)和涂鴉 IoT Cloud 之間建立通信。有關(guān)詳細(xì)信息,請(qǐng)參閱LZ201-CN Cat.1 模塊數(shù)據(jù)表。
該模塊由高度集成的LTE Cat.1芯片UIS8910DM和外圍電路組成。它的特點(diǎn):
- 內(nèi)置LTE Cat.1網(wǎng)絡(luò)通信協(xié)議棧和庫(kù)函數(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)、揚(yáng)聲器、充電器、microSD 卡和 USIM 卡。
只需移植涂鴉MCU SDK,即可實(shí)現(xiàn)自動(dòng)售貨機(jī)聯(lián)網(wǎng)云端,通過APP實(shí)現(xiàn)設(shè)備控制。您還可以選擇 WB3S Wi-Fi 模塊或其他通信協(xié)議的模塊。
其他外圍設(shè)備
下面列出了一些可選外設(shè):
- LED 指示網(wǎng)絡(luò)狀態(tài)。
- LED 指示電源狀態(tài)。
- 溫度傳感器檢測(cè)自動(dòng)售貨機(jī)中的溫度。
- 跌落檢測(cè)器檢測(cè)產(chǎn)品跌落并返回操作結(jié)果。
- 多通道按鈕觸發(fā)特定的按鈕按下動(dòng)作。
- RS-485 接口用于在自動(dòng)售貨機(jī)和 RS-485 設(shè)備之間建立通信。
- LCD 用于人機(jī)交互。
完成硬件設(shè)計(jì)后,即可進(jìn)行 PCB 布局、焊接和測(cè)試。下圖顯示了我們完成的PCB。
第二步:在涂鴉IoT平臺(tái)上創(chuàng)建產(chǎn)品
1.登錄涂鴉物聯(lián)網(wǎng)平臺(tái),點(diǎn)擊創(chuàng)建。
2.找到標(biāo)準(zhǔn)品類,點(diǎn)擊戶外出行>智能電動(dòng)車。
3. 單擊自定義解決方案選項(xiàng)卡上的智能電動(dòng)汽車。
4.填寫基本信息,協(xié)議選擇LTE Cat.1 ,點(diǎn)擊創(chuàng)建。
5.根據(jù)需要添加標(biāo)準(zhǔn)功能。
6.(可選)如果沒有找到需要的功能,找到自定義功能,點(diǎn)擊+添加創(chuàng)建功能。我們創(chuàng)建兩個(gè)功能:一個(gè)是Item ,從云端獲取數(shù)據(jù),另一個(gè)是Inventory ,發(fā)送數(shù)據(jù)到云端.
7.單擊設(shè)備面板選項(xiàng)卡并選擇一個(gè)面板。為了方便測(cè)試,您可以選擇調(diào)試面板,稍后再更改。
8.單擊硬件開發(fā)選項(xiàng)卡。選擇涂鴉標(biāo)準(zhǔn)模組MCU SDK ,然后選擇LZ201-CN LTE Cat.1 Module 。
9.向下滾動(dòng)頁(yè)面并找到下載文檔。單擊全部下載以獲取嵌入式編程的所有文件。
第 3 步:嵌入式編程
將 SDK 中的文件添加到您的項(xiàng)目中,并根據(jù)錯(cuò)誤消息更正您的代碼。
您可能會(huì)使用不同的 MCU,因此以下驅(qū)動(dòng)程序供您參考。完整示例代碼見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輸出不同電平的信號(hào)。這樣,我們可以控制電機(jī)旋轉(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) 個(gè)電機(jī)來(lái)運(yùn)送產(chǎn)品,我們可以調(diào)用
HC595Send(1<1||<<10);
1<表示高電平信號(hào)輸出到第 X 個(gè) p 溝道 MOSFET。<>
注意:電路中的所有 n 溝道 MOSFET 使用相同的信號(hào)引腳,因此1<<10
是固定的。
要停止電機(jī)旋轉(zhuǎn),我們可以調(diào)用
HC595Send(0);
該功能的參數(shù)因電路設(shè)計(jì)而異。根據(jù)您的硬件調(diào)整它們。
處理來(lái)自云端的命令
來(lái)自云端的數(shù)據(jù)長(zhǎng)度為 6 個(gè)字節(jié)。我們可以指定位 0 為產(chǎn)品托盤編號(hào),位 1 為產(chǎn)品編號(hào),位 2 至位 5 為訂單編號(hào)。
您可以根據(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)任何錯(cuò)誤,請(qǐng)單擊構(gòu)建并更正您的代碼。
然后,將程序下載到開發(fā)板上進(jìn)行測(cè)試。
STM32 支持 ST-Link 和 J-Link 等調(diào)試器。建議使用 ST-Link。下表概述了要連接的引腳:
將 ST-Link 連接到您的開發(fā)板后,單擊下載。
第 4 步:演示
打開涂鴉智能應(yīng)用,點(diǎn)擊您為自動(dòng)售貨機(jī)選擇的面板。找到創(chuàng)建的數(shù)據(jù)點(diǎn)Item ,輸入XXYYZZZZZZZZ格式的值進(jìn)行測(cè)試。
-
XX
表示第 X 個(gè)產(chǎn)品托盤。 -
YY
表示托盤上的剩余產(chǎn)品。 -
ZZZZZZZZ
表示訂單號(hào)。它可以是任何值。
例如輸入
0104aabbccdd
,表示第一個(gè)托盤現(xiàn)在有四個(gè)產(chǎn)品,訂單號(hào)是aabbccdd
。
數(shù)據(jù)發(fā)送后,您會(huì)發(fā)現(xiàn)電機(jī)開始轉(zhuǎn)動(dòng),產(chǎn)品掉落后停止。
注意:庫(kù)存值必須與項(xiàng)目匹配。例如,如果第一個(gè)托盤有四個(gè)產(chǎn)品,則有效值為0104
。無(wú)效值如0105
和0103
不能使電機(jī)旋轉(zhuǎn)。
概括
涂鴉物聯(lián)網(wǎng)平臺(tái)提供便捷的物聯(lián)網(wǎng)開發(fā)工具和服務(wù),旨在讓您的物聯(lián)網(wǎng)項(xiàng)目更輕松、更高效。查看并發(fā)現(xiàn)更多很棒的想法。
?
- 自動(dòng)售貨機(jī)MDB電源供電系統(tǒng)要求 0次下載
- 投幣個(gè)人自動(dòng)售貨機(jī)的構(gòu)建
- 使用Arduino和1Sheeld DIY自動(dòng)售貨機(jī)
- DIY自動(dòng)售貨機(jī)開源項(xiàng)目
- 開源硬件自動(dòng)售貨機(jī)
- 自動(dòng)售貨機(jī)plc程序帶觸摸屏 53次下載
- 自動(dòng)售貨機(jī)方案/設(shè)計(jì)/開發(fā)/項(xiàng)目
- 自動(dòng)售貨機(jī)項(xiàng)目教程及文件下載 0次下載
- 基于Zigbee和物聯(lián)網(wǎng)的自動(dòng)售貨機(jī)系統(tǒng) 25次下載
- 自動(dòng)售貨機(jī)的VHDL程序與仿真資料免費(fèi)下載 18次下載
- 使用FPGA實(shí)現(xiàn)自動(dòng)售貨機(jī)的VHDL程序與仿真資料 24次下載
- 使用PLC實(shí)現(xiàn)自動(dòng)售貨機(jī)的設(shè)計(jì)論文免費(fèi)下載 19次下載
- 自動(dòng)售貨機(jī)觸摸屏 5次下載
- 智能自動(dòng)售貨機(jī)售貨 0次下載
- 自動(dòng)售貨機(jī)短信報(bào)警系統(tǒng)
- 利爾達(dá)NB-IoT &amp;Cat.1 產(chǎn)測(cè)應(yīng)用指導(dǎo) 379次閱讀
- 什么是Cat.1? Cat.1的演進(jìn)歷史和主要特點(diǎn) 1.1w次閱讀
- 什么是窄帶通信?窄帶通信與Cat.1的關(guān)系 淺談AIoTel下的Cat.1窄帶通信技術(shù) 2195次閱讀
- 基于STM32的自動(dòng)售貨機(jī)控制系統(tǒng)設(shè)計(jì) 2851次閱讀
- 機(jī)智云推基于modbusRTU協(xié)議設(shè)備GC511 CAT.1 DTU無(wú)線數(shù)據(jù)中端 2178次閱讀
- 在智能HMI中如何實(shí)現(xiàn)良好的用戶體驗(yàn) 2492次閱讀
- 智能售貨機(jī)系統(tǒng)架構(gòu)服務(wù)模式分析 3835次閱讀
- firefly自動(dòng)售貨機(jī)概述 2121次閱讀
- 聯(lián)智通達(dá)科技自助售賣機(jī)產(chǎn)品介紹 1701次閱讀
- 液晶觸摸屏中的可編程控邏輯 1186次閱讀
- 簡(jiǎn)單實(shí)用的6個(gè)PLC程序?qū)嵗治?/a> 9689次閱讀
- 自動(dòng)售貨機(jī)為什么會(huì)知道你丟進(jìn)去的是什么硬幣工作原理詳細(xì)介紹 8258次閱讀
- 互聯(lián)網(wǎng)和無(wú)線網(wǎng)絡(luò)平臺(tái),對(duì)自動(dòng)售貨機(jī)聯(lián)網(wǎng)實(shí)現(xiàn)遠(yuǎn)程控制 7419次閱讀
- 自動(dòng)售貨機(jī)上的GPRS無(wú)線通信模塊設(shè)計(jì) 2377次閱讀
- 基于嵌入式的自動(dòng)售貨機(jī)設(shè)計(jì)與實(shí)現(xiàn) 1.1w次閱讀
下載排行
本周
- 1使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
- 2.96 MB | 44次下載 | 免費(fèi)
- 2聯(lián)想E46L DAOLL6筆記本電腦圖紙
- 1.10 MB | 2次下載 | 5 積分
- 3MATLAB繪圖合集
- 27.12 MB | 2次下載 | 5 積分
- 4PR735,使用UCC28060的600W交錯(cuò)式PFC轉(zhuǎn)換器
- 540.03KB | 1次下載 | 免費(fèi)
- 5UCC38C42 30W同步降壓轉(zhuǎn)換器參考設(shè)計(jì)
- 428.07KB | 1次下載 | 免費(fèi)
- 6DV2004S1/ES1/HS1快速充電開發(fā)系統(tǒng)
- 2.08MB | 1次下載 | 免費(fèi)
- 7模態(tài)分解合集matlab代碼
- 3.03 MB | 1次下載 | 2 積分
- 8美的電磁爐維修手冊(cè)大全
- 1.56 MB | 1次下載 | 5 積分
本月
- 1使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
- 2.96 MB | 44次下載 | 免費(fèi)
- 2UC3842/3/4/5電源管理芯片中文手冊(cè)
- 1.75 MB | 15次下載 | 免費(fèi)
- 3DMT0660數(shù)字萬(wàn)用表產(chǎn)品說(shuō)明書
- 0.70 MB | 13次下載 | 免費(fèi)
- 4TPS54202H降壓轉(zhuǎn)換器評(píng)估模塊用戶指南
- 1.02MB | 8次下載 | 免費(fèi)
- 5STM32F101x8/STM32F101xB手冊(cè)
- 1.69 MB | 8次下載 | 1 積分
- 6HY12P65/HY12P66數(shù)字萬(wàn)用表芯片規(guī)格書
- 0.69 MB | 6次下載 | 免費(fèi)
- 7華瑞昇CR216芯片數(shù)字萬(wàn)用表規(guī)格書附原理圖及校正流程方法
- 0.74 MB | 6次下載 | 3 積分
- 8華瑞昇CR215芯片數(shù)字萬(wàn)用表原理圖
- 0.21 MB | 5次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935119次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73807次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65987次下載 | 10 積分
評(píng)論
查看更多