久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4847|回復: 1
打印 上一主題 下一主題
收起左側

[資料分享] 人人都可以DIY的Arduino UNO智能燈(三)

[復制鏈接]
跳轉到指定樓層
樓主
ID:184786 發表于 2017-6-23 10:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本文出自機智云論壇,版權所有@bigfanofloT,轉載請注明出處
前面說到了設備聯網,接下來是進行MCU端的開發。本節詳細的描述了如何使用下載的MCU工程,如何根據自動生成的代碼提示去填充用戶業務相關的代碼。

關于MCU代碼自動生成的原理:
借助MCU代碼自動生成工具,自動生成的代碼已經根據用戶定義的產品數據點信息,并針對STM32esp8266等平臺,生成了對應的機智云串口協議層代碼,用戶只需要調用相應的API接口或添加相應的邏輯處理即可。代碼框架如下圖所示:




其原理是:自動生成的代碼實現了機智云通信協議的解析與封包、傳感器數據與通信數據的轉換邏輯,并封裝成了簡單的API,且提供了多種平臺的實例代碼。當設備收到云端或APP端的數據后,程序會將數據轉換成對應的事件并通知到應用層,開發者只需要在對應的事件處理邏輯中添加傳感器的控制函數,就可以完成產品的開發。


五、MCU端編程

Step1解壓下載的工程,找到Gizwits文件夾,把它復制/移動到arduinoIDE安裝目錄下的libraries文件夾下。例如我的是D:\Arduino\libraries


Step2:接下來找到工程目錄下的examples文件夾,里面有2個文件夾networkConfigsimpleTry,進去后有同名的Arduino文件,后綴名為.ino。


使用ArduinoIDE打開這2個文件:


simpleTry.ino是本次項目工程,里面有程序框架,以及告知了用戶在哪里填充接入機智云的代碼;networkConfig.ino是配置入網的例程,因為常見的智能硬件產品是沒有鍵盤和顯示屏的,因此需要一種技術來讓它獲取路由器的SSID和密碼,首選是通過手機APP輔助。這里簡單的介紹一下方法,通過一個按鍵來觸發設備進入配網模式,然后手機APP把SSID和密碼廣播給設備,原理如下圖:


這里需要說明的是,機智云開發的配網方案有2種,取名為AirLink和SoftAP,設備第一次聯網是要進行配置的,以后它就記住了這個路由器的SSID和密碼,無需配置,除非更改了SSID、密碼等情況發生,就需要重新進行配網操作。


Step3WS2812B是一個集控制電路與發光電路于一體的智能外控LED光源。其外型與一個5050LED燈珠相同,每個元件即為一個像素點,只需占用MCU一個IO即可驅動。我們先安裝WS2812B型RGBLED的驅動庫Adafruit_NeoPixel,下載地址為https://github.com/adafruit/Adafruit_NeoPixel,這個庫的使用說明可以參考https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library

把它解壓后拷貝到ArduinoIDE安裝目錄的\libraries文件夾下,例如我的目錄是D:\Arduino\libraries


先不用急著添加應用代碼,先在simpleTry.ino中添加一下硬件模塊底層驅動的測試代碼(可下載高清大圖查看):


RGB LED測試OK的話是這樣子的效果:


Step4我們把networkConfig.ino中的部分代碼(按鍵驅動等,處理配網問題)拷貝到本次項目的工程simpleTry.ino中,注意凡是串口打印調試的都要注釋掉,因為我們的Arduino UNO R3只有一個串口,要用來和WiFi模塊通信。然后需要根據注釋填充數據點代碼,1是手機端APP控制RGB LED亮滅,2是手機端APP單獨控制RGB LED的RGB顏色值,3是手機端APP一鍵控制RGB LED的組合顏色值,具體的接口都給出了詳細的注釋,我們直接填充就可以啦~

如下圖(下載高清大圖放大查看效果更好哦~),左邊為我們在開發者中心下載的工程文件simpleTry.ino,右邊為修改好后的,作為一個對比,可以清晰的知道需要添加的用戶代碼。


第30~149行藍色方框為與按鍵觸發配網有關的代碼。
第168~191行為WIFI狀態處理有關代碼,定義了2個按鍵key1、key2分別來觸發不同的配網方式,板載黃色LED連接到了管腳13,我們把它作為配網操作過程的狀態提示,本次采用的方式是:通過手機APP輔助,長按key2 5秒后板載LED亮起,WIFI模塊連接路由器成功后則熄滅,關于這些按鍵和WIFI狀態處理的代碼是從networkConfig.ino拷貝來的。
第11~16行代碼定義RGB LED使用的管腳和個數以及創建了piexls對象;
第20~28行是自己利用Adafruit_NeoPixel類方法編寫的一個能夠控制所有RGB LED的函數;
第154~162行初始化了RGB LED、板載LED、按鍵。

一個重要問題是,很多人會問,我生成了MCU工程后,要到哪里添加代碼呢?怎么修改呢?

第195~231行,黃色方框注釋內容就是自動生成的,用于幫助用戶填充業務代碼。
第232~256行代碼基本就是黃色方框代碼的拷貝,這就是我們在云端創建的用于描述產品功能的數據點在MCU代碼里的表達方式,因為對于控制LED,需要保持顏色變量值不被銷毀,所以我們把定義的數據點相關5個變量加了static關鍵字使之成為靜態變量,當然你也可以直接把它們放到函數外面作為全局變量。
第258~266行實現的是開啟/關閉紅色燈的功能。
第268~274行實現的是設定LED組合顏色的功能。
第276行實現的是設定LED紅色值、設定LED綠色值、設定LED藍色值的功能。

Step5:至此MCU端代碼修改完畢,編譯并燒錄代碼到Arduino UNO板卡;



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:266702 發表于 2018-6-6 09:40 | 只看該作者
高清大圖哪里下載啊...
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜视频在线 | 你懂的在线视频播放 | 亚洲欧美激情四射 | 国产农村一级片 | 中文字幕日韩一区 | 国产91精品久久久久久久网曝门 | 亚洲精品一区二区三区中文字幕 | 国产超碰人人爽人人做人人爱 | 亚洲精品久久久久中文字幕二区 | 日韩精品免费在线观看 | 成人在线亚洲 | 91精品国产91久久久久久 | 国产一区二区三区久久久久久久久 | 亚洲不卡视频 | 国产精品久久久久久久久久久久久 | 男人久久天堂 | 日韩精品在线播放 | 日本午夜视频 | 天天干天天操天天看 | 成人午夜免费在线视频 | 99re热精品视频国产免费 | 中文字幕一区二区三区精彩视频 | 免费一级欧美在线观看视频 | 国产又色又爽又黄又免费 | 精品1区2区 | 91资源在线 | 国产精品亚洲精品日韩已方 | 亚洲国产成人一区二区 | 欧美精品91 | 视频在线一区二区 | 午夜视频一区 | 嫩草视频在线免费观看 | 亚洲欧美日韩在线 | 草久久久 | 久久国产一区二区 | 国产精品免费一区二区三区四区 | 色综合美女 | 国产成年人小视频 | 国产午夜精品理论片a大结局 | 欧美一区二区综合 | 99国产精品久久久久久久 |