大連云動(dòng)力科技有限公司 遼寧大連 116023
ESP32 是一款性能穩(wěn)定的物聯(lián)網(wǎng)芯片,只需要極少的外圍器件,就可以實(shí)現(xiàn)強(qiáng)大的處理性能、WI-FI 和藍(lán)牙功能,滿足本設(shè)計(jì)電路控制需求和WI-FI 無(wú)線收發(fā)需求。NCL30161DC-DC LED 驅(qū)動(dòng)芯片是一款平均電流滯環(huán)控制模式高亮度LED 降壓控制器,支持脈寬調(diào)制或者模擬調(diào)光,可以滿足本設(shè)計(jì)中恒流驅(qū)動(dòng)20V28W 黃白共陽(yáng)極LED 燈,并實(shí)現(xiàn)亮度控制的需求。使用EEPROM AT24C08 存儲(chǔ)芯片存儲(chǔ)設(shè)備序列號(hào)和其他配置信息。使用CH340C 實(shí)現(xiàn)USB 轉(zhuǎn)串口或者USB 轉(zhuǎn)串口打印。此外電源采用220V 轉(zhuǎn)24V50W 的電源模塊,24V 作為NCL30161 輸入電壓,同時(shí)對(duì)24V 進(jìn)行24V 轉(zhuǎn)3.3V 的降壓,滿足主控芯片、串口芯片、EEPROM 芯片的供電需求[1-2]。
以ESP32 為主芯片的設(shè)備燒錄序列號(hào)的同時(shí),平臺(tái)添加此序列號(hào),通過(guò)藍(lán)牙配網(wǎng)使設(shè)備連接WI-FI,激活此設(shè)備。平臺(tái)發(fā)送控制指令給設(shè)備,設(shè)備完成指令后將結(jié)果反饋到平臺(tái),平臺(tái)收到反饋后更新LED 狀態(tài),完成遠(yuǎn)程控制LED 燈。
首先是電源設(shè)計(jì),24V 作為輸入電壓,通過(guò)兩個(gè)NCL30161進(jìn)行降壓后,分別給黃燈和白燈供電。使用AOZ1284 這款DCDC芯片進(jìn)行24V 轉(zhuǎn)3.3V,為主控芯片ESP32、存儲(chǔ)芯片EEPROM和串口芯片CH340C 供電。然后是控制電路設(shè)計(jì),根據(jù)ESP32 規(guī)格書,IO16、IO17、IO18、IO19 等均為PWM 引腳,本設(shè)計(jì)使用IO16 和IO17 分別連接到兩個(gè)NCL30161 芯片的DIM/EN 引腳,實(shí)現(xiàn)通過(guò)改變占空比對(duì)黃燈和白燈進(jìn)行亮度控制。EEPROM 與主芯片之間是IIC 通訊,使用ESP32 的IO32 和IO33 分別作為SDA和SCL。CH340C 是一款USB 總線的轉(zhuǎn)接芯片,可以實(shí)現(xiàn)USB轉(zhuǎn)串口或者USB 轉(zhuǎn)打印口,其TX 和RX 引腳分別接在ESP32 的RXD0 和TXD0 上[3]。
WINDOWS 下安裝VM 再安裝Linux 環(huán)境,然后獲取ESPIDF,設(shè)置工具和環(huán)境變量,安裝VSCODE 等。環(huán)境搭建好之后,連接電路板就可以進(jìn)行燒錄和串口打印。
用戶在app 上輸入WI-FI 名和密碼等配置信息,這些配置信息用JSON 格式通過(guò)藍(lán)牙發(fā)送給ESP32,ESP32 把a(bǔ)pp 傳來(lái)的JSON 消息進(jìn)行解析并通過(guò)EEPROM 存儲(chǔ)。設(shè)備激活入網(wǎng)后,平臺(tái)顯示激活時(shí)間和設(shè)備在線情況,用戶將想要的燈的亮度百分比輸入平臺(tái),平臺(tái)通過(guò)mqtt 協(xié)議發(fā)送包含用戶輸入的亮度百分比數(shù)值的JSON 消息給ESP32,ESP32 接收消息后進(jìn)行JSON 解析,將亮度百分比賦值給target_duty,進(jìn)而將燈的亮度更改為用戶指定亮度,完成指令后,ESP32 通過(guò)HTTP 協(xié)議將更改結(jié)果反饋給平臺(tái),完成遠(yuǎn)程控制[4]。
PCB 板焊接完成后,分模塊進(jìn)行測(cè)試。首先測(cè)試供電情況,24V 進(jìn)線電壓測(cè)試良好之后,測(cè)量3.3V 是否穩(wěn)定,加入電容去耦使電源紋波穩(wěn)定在5%以內(nèi)。電源測(cè)試合格后,接入黃燈和白燈,根據(jù)ESP32 編程指南中API 參考中的LED Control,本設(shè)計(jì)首先通過(guò)配置定時(shí)器指定PWM 信號(hào)的頻率為3.5KHz,占空比個(gè)數(shù)為0-8000,然后綁定計(jì)時(shí)器,配置IO16 和IO17 這兩個(gè)GPIO 輸出PWM 信號(hào),使用ledc_set_fade_time_and_start(ledc_mode_tspeed_mode,ledc_channel_tchannel,uint32_t target_duty,uint32_t max_fade_time_ms,ledc_fade_mode_tfade_mode)函數(shù)漸變改變PWM 占空比。燒錄PWM 測(cè)試程序(占空比在0-100循環(huán)),黃燈和白燈亮度可以進(jìn)行循環(huán),說(shuō)明PWM 底層程序基本可以。用E2prom_Write 函數(shù)隨意寫入一組字符串并用E2prom_Read 讀出并打印出來(lái),說(shuō)明EEPROM 部分底層程序沒(méi)有問(wèn)題。硬件部分測(cè)試合格后,調(diào)試通信程序。主要是初始化藍(lán)牙、WIFI、HTTP、MQTT,用手機(jī)app 進(jìn)行藍(lán)牙配網(wǎng),建立基于HTTP協(xié)議和MQTT 協(xié)議的通信任務(wù),創(chuàng)建JSON 格式的消息和JSON解析等?;緦?shí)現(xiàn)遠(yuǎn)程控制燈的亮度。
從元器件選型、原理圖繪制和PCB 圖繪制等硬件設(shè)計(jì),到C 語(yǔ)言程序編寫、燒錄和調(diào)試等軟件設(shè)計(jì),每個(gè)細(xì)節(jié)出問(wèn)題都會(huì)導(dǎo)致功能出現(xiàn)問(wèn)題。前期需要仔細(xì)閱讀所選芯片的規(guī)格書,查找ESP32 官方例程,梳理每一步操作的邏輯關(guān)系,以免后續(xù)更改浪費(fèi)時(shí)間。