99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

物聯網IOT之云端WIFI

剛進入大學的黃毛小子心高氣傲,都不知道自己被親朋好友的吹捧飄到哪里去了,轉眼間從學校的大門溜出來了,發現天空藍藍的,白云一飄一飄,而對自己的工作卻迷迷茫茫,高不成低不就,無奈之下跑到了深圳富士康做一線員工,當時正好趕上鄭州港區富士康的建廠,都說從這工作后直接回到鄭州富士康都是管理、技術、質檢等不錯的職位,我卻不屑,猶如每天“機器人”的工作,三個月就又回到老地方了。

作為電子信息工程畢業的我,一沒人脈,二沒技術,一個研發也找不到,只能從維修售后做起,慢慢到了小小電源研發,中間磕磕碰碰,摸爬滾打,寫過多少筆記,去過多少縣城,走過多少鄉鎮,下過多少煤礦,堪稱電源人生的“一帶一路”。

電源也慢慢做到了控制這塊,從STC89C52開始的入門和STC12C5A60S2的系統學習,到今天STM32的嵌入式研發,“一幕幕、一路路”,后續的ARM-linux更期待。

進入正題,隨著物聯網的興起,使傳感器網絡、感知中國、RFID無線射頻識別、無線短距離通訊、云計算等技術的應用走向熱潮。

我們來看看云端wifi的具體原理:

其實就是一鍵配置功能,簡單的說就是:當設備還沒有連上WiFi的時候,此時通過手機App可以將WiFi的SSID及密碼一鍵配置到智能插座上去。

看看具體怎么工作:

1. 設備進入初始化狀態,開始收聽附近的 WiFi 數據包。

2. 手機/平板設置 WiFi 名字和密碼后,發送 UDP 廣播包。

3. 設備通過 UDP 包(長度)獲取配置信息,切換網絡模式,連接上家里 WiFi,配置完成。

看實物咋樣。

我們現在開始看看8266是怎么實現遠程控制的?

以智能插座為例,看看云端wifi是怎么控制的。

首先,我們先要設置與創建自己的產品。

選擇第一個云端wifi。

點擊保存后 點擊添加數據點。

點擊新建數據點。

選擇MCU開發,SOC 8266-32M 剛才生成的序列號。

點擊生成代碼后。

這個時候可以搭建開發環境來更改代碼。

我們先用windows的開發環境,用安信可 ESP 系列一體化開發環境,是安信可科技為方便廣大用戶而推出的基于 Windows + Cygwin + Eclipse + GCC 的綜合 IDE 環境。

下載地址http://pan.baidu.com/s/1skRvR1j

軟件的安裝。

打開軟件簡單配置一下。

這是打開的軟件界面。

我們主要改的是APP文件。

我們現在根據模塊的硬件電路來改程序。

我們上面的圖片中工作模式選擇就是紅圈中的定義,接地和高電平 都是針對GPIO0,正常工作就是從FLASH啟動,寫固件時就是串口下載程序。

我們開始搭建硬件電路按鍵S1長按就是進入airlink配網模式了,按鍵S1是配置按鍵,按鍵S2按下接通時候就是串口下載了, LED是接在GPIO12和VCC之間的。

我們需要改的程序的地方不多,第一處修改。

我們把按鍵改一下,我們用了一個按鍵接的是GPIO4來配置。

第二處修改,把與第二個按鍵有關的程序刪除。

第三處修改,我們用GPIO12來做開關用,在主函數添加初始化程序。

第四處修改我們的8266收到指令后做出的動作,看看怎么修改程序。

修改后。

這個就是一個開燈和關燈的0x01和0x00。

再看看整體的SOC方案通訊原理圖。

這是MCU通過燒錄好GAgent固件的WIFI模組與服務器交互的邏輯。

“機智云”是一個面向開發者的免費開放的互聯網服務平臺,通過這個服務器將以單片機為主的智能硬件與智能手機聯系起來,實現三者之間的通信,這就是所謂的“物聯網”技術(IOT)。

而單片機+互聯網+手機APP開發,這三種都需要學習。

說說互聯網TCP/IP協議(面向網絡傳輸層的通信協議,解決數據如何傳輸的問題),UDP協議,DHCP(動態主機配置協議,IP地址動態分配),HTTP協議(面向應用層的文本傳輸協議,解決數據怎么用的問題) ;TCP服務端(sever)和客戶端(client),就如同打電話一樣需要一個主叫和被叫一樣,端口號就如同電話的分機。TCP或者UDP通信必須有TCP服務端(sever)和客戶端(client)這二者,作為TCP服務端(sever)時無需配置IP地址和端口號,但是作為客戶端(client)時就必須知道通信對方的IP地址和端口號。ARP地址解析協議,URL(統一資源地址,針對服務器而言)等等這些概念必須學習了解。

對于互聯網的鏈接有三種方式

1.硬件網口

2.WIFI

3.GPRS

通過互聯網這塊最終還是TCP/UDP協議,在59樓一個簡單的介紹,硬件網口就不多說了,wifi的通信前面已經說過了,過幾天用APP控制看看效果咋樣。

而gprs聯網的話,這是簡單的原理。

對于目前的4G模塊都是利用手機SIM卡和運營商GPRS網絡提供無線網絡數據通信,目前的共享單車就是這種方案。

具體的通信原理

1、TCP連接

TCP(Transmission Control Protocol) 傳輸控制協議。TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,采用三次握確認建立一個連接。位碼即tcp標志位,有6種 標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)Sequence number(順序號碼) Acknowledge number(確認號碼)。手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網絡建立TCP連接。TCP協議可以對上層網絡提供接口,使上層網絡數據的傳輸建立在“無差別”的網絡之上。

建立起一個TCP連接需要經過“三次握手”:

第一次握手:客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;

第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。握手完成后,兩臺主機開始傳輸數據了。

2、HTTP連接

HTTP協議即超文本傳送協議(Hypertext Transfer Protocol ),是Web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。HTTP連接最顯著的特點是客戶端發送的每次請求都需要服務器回送響應,在請求結束后,會主動釋放連接。從建立連接到關閉連接的過程稱為“一次連接”。

1)在HTTP 1.0中,客戶端的每次請求都要求建立一次單獨的連接,在處理完本次請求后,就自動釋放連接。

2)在HTTP 1.1中則可以在一次連接中處理多個請求,并且多個請求可以重疊進行,不需要等待一個請求結束后再發送下一個請求。

由于HTTP在每次請求結束后都會主動釋放連接,因此HTTP連接是一種“短連接”,要保持客戶端程序的在線狀態,需要不斷地向服務器發起連接請求。通常的做法是即時不需要獲得任何數據,客戶端也保持每隔一段固定的時間向服務器發送一次“保持連接”的請求,服務器在收到該請求后對客戶端進行回復,表明知道 客戶端“在線”。若服務器長時間無法收到客戶端的請求,則認為客戶端“下線”,若客戶端長時間無法收到服務器的回復,則認為網絡已經斷開。

而目前的4G通信采用SOCKET鏈接。

1.套接字(socket)是通信的基石,是支持TCP/IP協議的網絡通信的基本操作單元。它是網絡通信過程中端點的抽象表示,包含進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議口。

應用層通過傳輸層進行數據通信時,TCP會遇到同時為多個應用程序進程提供并發服務的問題。多個TCP連接或多個應用程序進程可能需要通過同一個 TCP協議端口傳輸數據。為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與TCP/IP協議交互提供了套接字(Socket)接口。應用層可以和傳輸層通過Socket接口,區分來自不同應用程序進程或網絡連接的通信,實現數據傳輸的并發服務。

這是SOCKET的連接過程。

2. 建立socket連接建立Socket連接至少需要一對套接字,其中一個運行于客戶端,稱為ClientSocket ,另一個運行于服務器端,稱為ServerSocket 。套接字之間的連接過程分為三個步驟:服務器監聽,客戶端請求,連接確認。服務器監聽:服務器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態,實時監控網絡狀態,等待客戶端的連接請求。客戶端請求:指客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。為此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號,然后就向服務器端套接字提出連接請求。連接確認:當服務器端套接字監聽到或者說接收到客戶端套接字的連接請求時,就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發 給客戶端,一旦客戶端確認了此描述,雙方就正式建立連接。而服務器端套接字繼續處于監聽狀態,繼續接收其他客戶端套接字的連接請求。

在TCP中我們常用長連接實現通信。

當網絡通信時采用TCP協議時,在真正的讀寫操作之前,server與client之間必須建立一個連接,當讀寫操作完成后,雙方不再需要這個連接 時它們可以釋放這個連接,連接的建立是需要3次握手的,而釋放則需要4次握手,所以說每個連接的建立都是需要資源消耗和時間消耗的。

這是短鏈接和長連接的區別。

目前物聯網系統共由四部分組成:

  • 物聯網設備端
  • 物聯網設備云平臺端
  • 物聯網WEB后臺服務器
  • 用戶端

這是一個接入系統框架。

具體的微信掃描原理。

服務器通過GPRS/3G流量來完成數據交互,過程如下:

一、手機掃描自行車,獲得自行車唯一的ID標志,手機接著會向服務器提交一個請求(提交信息里包含:用戶信息,請求動作,車輛ID);

二、服務器收到用戶開鎖請求,此時會根據請求信息,接著向指定ID的自行車發出開鎖指令;

三、自行車收到服務器指令,會執行相應的開鎖動作。

前面我們主要講的是ESP8266wifi模塊是怎么控制設備。

下面結合實例講一下esp8266wifi模塊通過MCU來控制設備。

創建數據點就不介紹了,和SOC方案一樣。

主要區別是這里。

我們選擇獨立MCU方案的103。

在這里可以生成工程源碼。

我們再看看MCU方案的的整體原理。

這個體系包含設備、APP、M2M服務、業務服務、以及云對接等各種環節。

這是下載的源碼。

板子回來了。

其實生成的MCU代碼只是一個框架,沒有加任何外設功能,需要我們根據協議來執行不同的功能。

這是相關協議文件的介紹。

程序實現原理

協議實現機制:

協議解析后,將P0數據區的有效數據點生成對應的數據點事件,再按事件處理數據點。

數據點轉換事件的說明:

根據協議P0數據區的attr_flags位判斷出有效數據點,并將其轉化成對應的數據點事件,然后在事件處理函數中(gizwitsEventProcess)完成事件的處理。

其實上面介紹的云平臺的API接口就是設備MCU和wifi模塊之間的一個橋梁,我們就是通過這個橋梁并根據代碼框架來實現開發,在這基礎之上去實現不同的功能,需要我們在串口接受函數里實現不同的功能。

上面是程序的簡單介紹,后續詳細分析,下面我們來看一下GAgent固件。

GAgent是運行在各種通訊模組上的一款應用程序(固件),可以提供上層應用(手機APP等控制端、云端)到產品設備的雙向數據通訊,此外,還提供對設備的配置入網、發現綁定、程序升級等功能。

產品開發者使用GAgent后,只需要關心產品的業務邏輯開發,不用關心數據的通訊功能開發,大大降低了開發的難度。該固件遵循以下協議《機智云平臺標準接入協議之MCU與WiFi模組通訊》、《機智云平臺標準接入協議之設備與云端通訊》、《機智云平臺標準接入協議之App與設備通訊》。

目前機智云提供由機智云移植的WiFi模組對應固件有:漢楓 LPB100/ LPB120/ LPT120/ LPT220、樂鑫8266、高通4004 、RealTek 8711AM 、聯盛德 TLN13SP01、銳凌微 TinyCon3350-M26、慶科3162等;GPRS模組對應固件有:廣和通G510等。

看看整個配置流程。

這是怎們綁定設備的,最關鍵的。

我們了解了上面的功能后進行平臺移植。

開發者在移植前要確保被移植平臺的硬件參數滿足以下的要求:

A. 平臺支持兩個串口接口(至少一個),一個負責與wifi模組間的數據收發(必須),一個用于調試信息打印(可復用數據收發串口)。

B.平臺支持定時器功能(1ms精確定時)。

C.平臺支持至少2K的RAM空間(可調整環形緩沖區大小來解決此問題,但易導致數據協議的處理異常)。

注:環形緩沖區修改位置: Gizwits\gizwits_protocol.h

原代碼中MAX_PACKAGE_LEN = 950,即環形緩沖區所占RAM空間大小為950*2 = 1900 字節,開發者可以此來調整程序所占RAM空間的大小。

上面的基本原理了解后,我們來建立微信智能寵物屋,就是RGB控制,紅外對射,電機控制 ,溫濕度上傳。

第一步

下載gagent固件到wifi模塊。

下載好的燒錄到ESP8266即可,這里不做詳細介紹。

第二步

建立數據點生成STM32工程。

如何生成工程在91樓,需要添加相關驅動文件。

第三步

添加驅動文件并下載程序帶MCU。

并添加好文件和編譯路徑。

編譯沒有問題。

第四步

下載機智云的APP。

登陸賬號并綁定設備就可以開啟智能控制了。

看看是怎么控制的。

RGB顏色控制,電機,紅外對射,溫濕度上傳都可以實現。

這是視頻鏈接鏈接: https://pan.baidu.com/s/1o8VGFQ6 密碼: 4b4c

現在我們講一下具體怎么移植工程。

把下載的驅動文件復制到工程中去。

添加文件。

在MCU_STM32F103C8x_source\User\main.c 文件中添加各驅動庫的頭文件

然后我們在添加傳感器驅動的初始化文件和頭文件。

具體不再講解了。

下面我們簡單說一下數據結構:

在這里用到了環形隊列。

隊列:一種特殊的線性表,包含隊列頭、隊列尾,只允許在隊列頭進行刪除操作,在隊列尾進行刪除操作可以分為順序隊列和環形隊列。

順序隊列: 在內存中是一段連續的存儲空間,并有隊列頭指針和隊列尾指針,打個比喻吧: 順序隊列就像在排隊買車票,排在最前面(第一個人)的就是隊頭,排在最后的就是隊尾,第一個買完票,離開(FIFO,先進先出,先排隊的先走),第二個人變成了隊頭,整體隊列前進,每走一個人,整個隊列都要前進,可見整體性能不會多么的好。

環形隊列: 可以將隊列空間想象成一個環形空間,這能使隊列空間重復使用:無論插入還是刪除,front(隊頭)指針增1或front(隊尾)指針加1時超出所分配的空間,就讓它指向這片連續空間的起始地址FIFO(先進先出)取元素時先從隊列頭開始,取完后,下一個元素就成了隊列頭,依次循環只有一個元素時,既是隊列頭,也是隊列尾。

這個就是對串口接受數據的處理。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 16
收藏 11
關注 210
成為作者 賺取收益
全部留言
0/200
  • 光科技 2022-12-27 14:44
    有沒有熟悉RS485通訊的朋友
    回復
  • 小董 2021-04-17 10:12
    8266功能強大啊
    回復
  • dy-blNlwnWV 2021-02-21 21:20
    不亞于看了一篇高質量論文
    回復
  • 喂,你好 2020-12-16 12:20
    學習了
    回復
  • 米修兒 2020-12-01 12:54
    大開眼界,真是好文
    回復
  • lihui710884923 2020-08-17 13:58
    源碼免費分享
    回復 1條回復
主站蜘蛛池模板: 久久久二 | 九色新网址 | 久久国产精品视频 | 亚洲精品有限公司 | 欧美日韩亚洲中文字幕二区 | 久久精品网址 | 青青草视频4| 在线观看青青草 | 国产丝袜一区视频在线观看 | 欧美老妇视频热 | 国产成人久久久精品二区三区 | 无码爆乳护士让我爽 | 亚洲色在线无码国产精品不卡 | 99精品黄色 | 精品人妻中文字幕有码在线 | 国产一区久久 | 日本JAPANESE丰满多毛 | japanese国产打屁股网站 | 蜜桃臀av | 激情亚洲AV无码日韩色 | 日本黄色片在线免费观看 | jjzzjjzz亚洲 | 任你操在线精品 | 五月婷中文字幕 | 国产成人精品免费视频大全办公室 | 黑人狂躁日本妞一区二区三区 | 婷婷九月综合 | 一级片xxxx| 黄色av影视 | 人成在线免费网站 | 欧美日韩不卡一区二区 | 亚洲成人av免费观看 | 波多野结衣伦理在线观看 | 国产精品夜间视频香蕉 | 人人妻人人澡人人爽精品日 | 熟妇人妻无乱码中文字幕真矢织江 | 亚洲成a人片777777久久 | 国产精品乱码精品久久久 | 精品成人免费 | 天天爱天天做天天添天天欢 | 国产欧美一区二区在线 |