《《《《《正文》》》》》
《前言》
本文主要介紹開發一個基于單片機的wifi通信遠端燈控制的方法,單片機隻需支援UART通信即可,以實作最簡單的遠端控制開關、遠端控制亮度,配網後,隻需手機聯網就可控制聯網裝置;
本文的wifi子產品是基于塗鴉智能的wifi子產品,主晶片使用STM32F103C8T6;wifi子產品與主晶片使用最基本的UART序列槽實作通信;
《WIFI子產品申請》
1、登入塗鴉智能loT平台;
平台網址:https://www.tuya.com/cn/
2、建立産品;
3、方案選擇;
方案選擇wifi,點選建立産品。這裡有很多塗鴉自己定義的産品,我們先選這個;其他可根據自己的項目選擇;
4、功能定義;
第3步之後會跳出功能選擇;選擇自己需要的功能;
我定義了開關狀态值,bool類型表示開\關;以及亮度值,Value類型表示亮度,從0-1000;
5、選擇手機app面闆;
下載下傳手機塗鴉智能App,這裡我使用了塗鴉提供的界面,這個界面根據自己需求開發,或者有特殊要求也可以送出需求,塗鴉會幫你開發;
6、選擇wifi模組,并下單購買;
下面是我的子產品,你選擇一個子產品就行;
7、其他預設即可;等待子產品快遞寄到;
《硬體設計》
1、擷取模組封裝尺寸;
在硬體開發下,模組詳情下擷取封裝尺寸;
2、下面這個是我的封裝尺寸,塗鴉自家的子產品封裝尺寸都差不多;
3、畫子產品封裝pcblib;
這裡我自己畫的,帶3D;供參考;下載下傳位址:
https://pan.baidu.com/s/1hqxgKS46EaokUoN7utyw7g
提取碼:airX
4、原理圖設計:
按鍵是長按5s進入配網;燈是訓示wifi子產品工作狀态,常亮表示聯網正常,長滅表示未配網;快閃表示正在配網狀态;wifi模組與MCU使用usart序列槽連接配接;這裡的按鍵口A_14和燈口A_19注意,會在下面代碼配置裡使用到;
5、布闆
略。。。。就是拉拉線,沒什麼特殊要求;
我的部分pcb;
6、回來的闆子;
焊接後:這裡我把最初的原理圖端口和封裝端口左右鏡像弄反了,是以隻能這麼焊;上面分享的封裝資源是修改後ok的;
《軟體設計》
軟體其實主要是子產品與主晶片之間的UART通信;我這裡使用塗鴉的提供的WIFI的SDK進行移植;
1、擷取我上面文章的USART子產品代碼;
相關代碼擷取位址:
https://pan.baidu.com/s/1zyrOF18WxIq0H3_4qU7Evg
關注公衆号,發送1234,擷取提取碼;
2、擷取SDK:進入塗鴉平台,進入産品開發,在硬體開發的最下面下載下傳MCU_SDK,這裡有很多資料,都可以下載下傳看看;
3、打開下載下傳包,将裡面的mcu_sdk複制到usart工程檔案下,除了VERSION.md檔案,其他都加入工程;
3、下面開始移植,塗鴉有移植教學文檔;在網站的文檔中心搜尋移植就可以找到移植說明文檔,這裡你可以看他的文檔詳細些;下面是我的移植過程;
4、在檔案路徑中添加mcu_sdk檔案路徑;
把wifi.h頭檔案寫到main.h
把main.h頭檔案寫在wifi.h裡
這個時候編譯還有很多問題,不急;
5、我們子產品的方式使用子產品自處理模式,找到protocol.h下将這個功能宏定義打開;并根據硬體,訓示燈GPIO是A_19,就是19,按鍵GPIO是A_14,就是14,如下代碼:
6、在protocol.c添加位元組發送函數;
7、在USART序列槽接收中斷函數中添加uart_receive_input()函數;如下:
8、在protocol.c的all_data_update函數上傳自己初始化資料的;這個是用來上電更新所有資料的,我就預設上電關閉led,亮度值為1%,即10;如下代碼;
如果你本地改變了資料,就調用上面的各自的函數就能實作資料上傳了;
mcu_dp_bool_update(DPID_SWITCH_LED,0); //BOOL型資料上報;mcu_dp_value_update(DPID_BRIGHT_VALUE,100); //VALUE型資料上報;
9、在protocol.c裡有資料下傳的函數,隻要在這個函數裡添加自己的響應操作就就可以實作wifi控制了;我這個有2個功能,開關和亮度,就有下面2個函數,有多少資料下傳就有多少個函數;
10、在主函數main.c初始化調用wifi_protocol_init();usart波特率為9600;在死循環裡調用wifi_uart_service();必須放在while(1),不要加任何判斷;
int main(void){ NvicConfig(); USART_init(9600); wifi_protocol_init(); for(;;) { wifi_uart_service(); }}
11、最後編譯,把錯誤去掉,一般都是些中文。注釋掉就可以了;
12、下載下傳,長按按鍵5s,塗鴉wifi就會進入配網狀态,燈會快閃;打開手機塗鴉智能app進行配網;
這樣整個聯網就成功了;
《遠端燈執行個體》
下面是我的塗鴉智能App控制LED亮滅、亮度的執行個體視訊;也可使用4g,隻要手機聯網就可以遠端控制;
代碼位址:
https://pan.baidu.com/s/1ptGuLFsNW9MM5Xqv2Dmx6w