簡易物聯雲平台搭建原理
前排提醒:本人所有專欄文章均轉載自個人博客:
vvzero.com
轉載請註明作者和出處!
背景
沒什麼背景,純粹想玩。
需求分析
能夠在指定web頁面上查看我實驗室的溫濕度。
軟硬體資源準備
- Arduino Uno (用於處理感測器數據並控制網路擴展板)
- W5100網路擴展板(實際上任何兼容Arduino的網路模塊均可)
- 同一區域網的frp client主機一台(用於內網穿透)
- DHT11溫濕度模塊(或者其他感測器)
- 公網frp主機(用於搭建物聯雲及內網穿透)
- 公網Nginx主機(可與frp共用)
- 路由器(網關)
具體操作
感測器端搭建
將W5100網路擴展板插在Arduino Uno上,然後將DHT11模塊連接至Arduino,信號線接至數字2號口。
以下是本人的成品圖。
將網路模塊連接至路由器。
刷入以下代碼。
#include <SPI.h>#include <Ethernet.h> //網路模塊頭文件#include <dht11.h> //溫濕度模塊庫文件#define SENSORPIN 2 //定義感測器引腳//定義本機MAC地址和IP,IP子網必須與區域網一致byte mac[] = { 0xDE, 0xAD, 0xBE, 0xE8, 0xFE, 0xED };IPAddress ip(192, 168, 1, 30);dht11 sensor;EthernetServer server(80); //開啟80埠void setup() { Serial.begin(115200); //串口用於監控 Ethernet.begin(mac, ip); server.begin();}void loop() { EthernetClient client = server.available(); //當有連接傳入,即開始傳遞數據 if (client) { Serial.println("Incoming...
"); if (client.connected()) { //等待客戶端請求結束 while (client.available()) { char charget = client.read(); Serial.write(charget); } sensor.read(SENSORPIN); //讀取溫濕度數據 //返回html頁面 client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("Here is Villivateur Vons laboratory!"); client.println("<br />"); client.println("<br />"); client.println("<br />"); client.println("Humidity (%): "); client.println("<br />"); client.println((float)sensor.humidity, 2); client.println("<br />"); client.println("<br />"); client.println("Temperature (C): "); client.println("<br />"); client.println((float)sensor.temperature, 2); client.println("<br />"); client.println("</html>"); } delay(1); client.stop(); Serial.println("client disonnected"); }}
部分庫文件可能不屬於Arduino標準庫,可能需要手動下載。(淘寶賣家會提供)
同一區域網訪問http://192.168.1.30
,即可看到如下頁面:
frp客戶端設置
在同一內網內啟動一個frp客戶端,連接至已有的frp伺服器:
添加以下配置:
#frpc.ini[ardu_uno]type = tcplocal_port = 80local_ip = 192.168.1.30remote_port = 22222
$nohup ./frpc &
此時,已經可以通過<公網ip>:22222
訪問。
更多:配置專有域名(雲平台)
在公網伺服器Nginx中添加如下配置:
server { listen 80; server_name iot.vvzero.com; location / { proxy_pass http://frp.vvzero.com:22222; }}
即可。
下方是原文地址:
簡易物聯雲平台搭建原理同時歡迎關注公眾號:裂帛碎玉的想法
推薦閱讀:
※AP3216C 模塊
※【圖形化學習 Arduino】(四)蜂鳴器
※背誦,唐詩和MicroBit
※Arduino 的 Serial.write() 和 Serial.print() 的區別在哪裡?
※如何用processing做出如下圖案?