天天看點

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

《《《《《正文》》》》》

《前言》

本文主要介紹開發一個基于單片機的wifi通信遠端燈控制的方法,單片機隻需支援UART通信即可,以實作最簡單的遠端控制開關、遠端控制亮度,配網後,隻需手機聯網就可控制聯網裝置;

本文的wifi子產品是基于塗鴉智能的wifi子產品,主晶片使用STM32F103C8T6;wifi子產品與主晶片使用最基本的UART序列槽實作通信;

《WIFI子產品申請》

1、登入塗鴉智能loT平台;

    平台網址:https://www.tuya.com/cn/

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

2、建立産品;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

3、方案選擇;

方案選擇wifi,點選建立産品。這裡有很多塗鴉自己定義的産品,我們先選這個;其他可根據自己的項目選擇;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

4、功能定義;

第3步之後會跳出功能選擇;選擇自己需要的功能;

我定義了開關狀态值,bool類型表示開\關;以及亮度值,Value類型表示亮度,從0-1000;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

5、選擇手機app面闆;

下載下傳手機塗鴉智能App,這裡我使用了塗鴉提供的界面,這個界面根據自己需求開發,或者有特殊要求也可以送出需求,塗鴉會幫你開發;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

6、選擇wifi模組,并下單購買;

下面是我的子產品,你選擇一個子產品就行;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

7、其他預設即可;等待子產品快遞寄到;

《硬體設計》

1、擷取模組封裝尺寸;

在硬體開發下,模組詳情下擷取封裝尺寸;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

2、下面這個是我的封裝尺寸,塗鴉自家的子產品封裝尺寸都差不多;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

3、畫子產品封裝pcblib;

這裡我自己畫的,帶3D;供參考;下載下傳位址:

https://pan.baidu.com/s/1hqxgKS46EaokUoN7utyw7g

提取碼:airX

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

4、原理圖設計:

按鍵是長按5s進入配網;燈是訓示wifi子產品工作狀态,常亮表示聯網正常,長滅表示未配網;快閃表示正在配網狀态;wifi模組與MCU使用usart序列槽連接配接;這裡的按鍵口A_14和燈口A_19注意,會在下面代碼配置裡使用到;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

5、布闆

略。。。。就是拉拉線,沒什麼特殊要求;

我的部分pcb;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

6、回來的闆子;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

焊接後:這裡我把最初的原理圖端口和封裝端口左右鏡像弄反了,是以隻能這麼焊;上面分享的封裝資源是修改後ok的;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

《軟體設計》

軟體其實主要是子產品與主晶片之間的UART通信;我這裡使用塗鴉的提供的WIFI的SDK進行移植;

1、擷取我上面文章的USART子產品代碼;

相關代碼擷取位址:

https://pan.baidu.com/s/1zyrOF18WxIq0H3_4qU7Evg

關注公衆号,發送1234,擷取提取碼;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

2、擷取SDK:進入塗鴉平台,進入産品開發,在硬體開發的最下面下載下傳MCU_SDK,這裡有很多資料,都可以下載下傳看看;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

3、打開下載下傳包,将裡面的mcu_sdk複制到usart工程檔案下,除了VERSION.md檔案,其他都加入工程;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

3、下面開始移植,塗鴉有移植教學文檔;在網站的文檔中心搜尋移植就可以找到移植說明文檔,這裡你可以看他的文檔詳細些;下面是我的移植過程;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

4、在檔案路徑中添加mcu_sdk檔案路徑;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

把wifi.h頭檔案寫到main.h

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

把main.h頭檔案寫在wifi.h裡

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

這個時候編譯還有很多問題,不急;

5、我們子產品的方式使用子產品自處理模式,找到protocol.h下将這個功能宏定義打開;并根據硬體,訓示燈GPIO是A_19,就是19,按鍵GPIO是A_14,就是14,如下代碼:

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

6、在protocol.c添加位元組發送函數;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

7、在USART序列槽接收中斷函數中添加uart_receive_input()函數;如下:

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

8、在protocol.c的all_data_update函數上傳自己初始化資料的;這個是用來上電更新所有資料的,我就預設上電關閉led,亮度值為1%,即10;如下代碼;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

如果你本地改變了資料,就調用上面的各自的函數就能實作資料上傳了;

mcu_dp_bool_update(DPID_SWITCH_LED,0); //BOOL型資料上報;mcu_dp_value_update(DPID_BRIGHT_VALUE,100); //VALUE型資料上報;      

9、在protocol.c裡有資料下傳的函數,隻要在這個函數裡添加自己的響應操作就就可以實作wifi控制了;我這個有2個功能,開關和亮度,就有下面2個函數,有多少資料下傳就有多少個函數;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

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、最後編譯,把錯誤去掉,一般都是些中文。注釋掉就可以了;

手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)
手把手教你開發基于wifi通信的物聯網項目(遠端燈控制)

12、下載下傳,長按按鍵5s,塗鴉wifi就會進入配網狀态,燈會快閃;打開手機塗鴉智能app進行配網;

這樣整個聯網就成功了;

《遠端燈執行個體》

下面是我的塗鴉智能App控制LED亮滅、亮度的執行個體視訊;也可使用4g,隻要手機聯網就可以遠端控制;

代碼位址:

https://pan.baidu.com/s/1ptGuLFsNW9MM5Xqv2Dmx6w