現今世代, 人們開始將生活事務推向網絡化. 因為這種想法, 現時開始產生了一種科技上的新思維叫做IOT. IOT的意思是把所有普通實品網上化,因此可以方便人們去管理. 感應品因通過以太網的TCP/IP協議和不同的雲端交換資訊成為此應用上一個相當重要的部分.
在文章中, 我會用W5500一個硬件TCP/IP協議棧跟一個雲端(Xively)溝通. 因為想把這個文章更有意思, 我會加上一個YwRobot Easy module
shield. 這個模塊內有溫度和濕度感應器, 因此把此數據通過W5500的TCP/IP協議放上雲端展現出來.
所需的設備:
1. W5500-EVB – W5500芯片
評估板
2. YwRobot Easy Module Shield – 包括一個DHT11溫度和濕度傳感器。
3. Xively個人賬戶
首先,我們需要一個
使我們能夠從傳感器接收數據的電路板,並通過W5500芯片提供這種信息給服務器。在這種情況下,我用了W5500-EVB做這個測試。它有STM32F103RCT6 MCU,並擁有董事會外部引腳,可以方便地與易模塊屏蔽線連接。
下圖是本文的W5500評估板
連接到服務器Xively:
我們開始談論該計劃為這個應用程序之前,我們需要創建一個
Xively
個人賬戶。
為了創建自己的帳戶,請訪問以下鏈接:
https://personal.xively.com/signup/
你已經創建的帳戶後,請按照下列步驟來創建你自己的服務器,可以與您的設備進行通信
步驟1:按”跳到添加設備”部分
步驟2:按”添加設備”創建自己的設備
步驟3:請設置為公共設備,讓您的設備可以訪問。
創建設備後,它允許你創建渠道接收數據,請創建2個通道用於接收濕度
和溫度值。
前往我們的程序之前
,我們需要收集一些信息。
1.設備ID號
2. API密鑰
3.2通道的ID名稱 – 在本應用筆記中,我將使用W5500_test_1和W5500_test_2接收這些值
4.服務器的域名和IP地址
下圖顯示了,你可以從你的設備的Xively頁面找到所需的信息。
源代碼:
通過使用這些信息,我們可以把它提供給W5500-EVB的HTTP客戶端參考源代碼。請查找以下鏈接下載修改後的源代碼。
https://drive.google.com/file/d/0B0GWlyVLRcvNRTl0ZUNZQzFSV28/view?usp=sharing/
Xively服務器使用HTTP請求的格式與服務器進行通信。有跡象表明,可以教你詳細了解如何通過使用HTTP請求格式與服務器通信API文檔。
https://personal.xively.com/dev/docs/api/
源代碼已被修改以Xively服務器格式進行通信。然而,此源代碼不包括DNS的功能。因此,請使用命令來ping Xively的API服務器並檢查IP地址。
下圖顯示了修改Xively服務器的IP地址在main.c文件的位置。
char *post[]={postH, postT} ;
uint8 xively_server_ip[4]={64, 94, 18,120}:// api.xively.com ip address
uint8 xively_server_port=80;
uint8 t=0;
下述圖顯示了使用HTTP PUT請求來同時更新2個通道的HTTP請求方法。
有關本例中的HTTP請求方法的詳細信息,請參考以下鏈接:
https://personal.xively.com/dev/docs/api/data/write/single_datapoint_to_each_datastream/
連接
YwRobot Easy Module Shield
和與Xively服務器進行通信:
對於這種應用,我用了YwRobot容易模塊盾的傳感器DHT11本文收集的溫度和濕度。
通過連接VCC和GND到屏蔽它提供電源到屏蔽正常激活。在那之後,我們需要W5500-EVB的PA12引腳顯示以下數字引腳連接。
下圖顯示了需要與W5500-EVB連接引腳
將要連接到Easy Module Shield
上W5500-EVB
引腳
。
這兩個引腳連接後,您可以使用W5500 EVB 上GPIO引腳上收集從DHT11傳感器上的讀數 。
以下源代碼是連接並收集來自DHT11傳感器的讀數。
該已對下述代碼值是 通道的更新值。保存這組字符串為字符上傳到雲端前,您應把這些值修改
。
下圖顯示了這個W5500-EVB的TCP/ IP通信方法的基礎。
你對修改傳感器的值之後,你可以用上面的方法使用TCP/ IP連接到Xively服務器發送更新的值。
結果:
從Xively服務器結果:
串行消息結果:
HTTP/1.1 200 OK
Date: Thu, 07 Apr 2016 03:44:01 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 0
Connection: keep-alive
X-Request-Id: ebd5af90501c53b20961de636cdc0a4a68e8460f
Cache-Control: max-age=0
Vary: Accept-Encoding