在這篇文章中,我將向您展示如何使用小型M5Stamp PICO控制器和Qubitro構建DIY物聯(lián)網門鎖監(jiān)控系統(tǒng)。
背景
這個項目的靈感還源于我一個可愛的小表弟。他經常會在每個人都在工作的時候自己打開冰箱吃一些零食或一些不該吃太多的東西。所以,我想在他開門的時候抓住他。我還添加了 Qubitro 來記錄數(shù)據(jù)并通過互聯(lián)網對其進行監(jiān)控。
組件要求:
1. M5Stamp PICO。
3.一些電線。
電路連接:
編碼部分:
請使用您的網絡憑據(jù)配置代碼,我在下面提供了這些憑據(jù):
更改設備 ID 和設備令牌以匹配您的 Qubitro 云。如果您是 Qubitro 新手,請按照以下步驟了解有關 Qubitro 以及如何設置 Qubitro Cloud 的所有信息:
完成上述步驟后,使用 Arduino IDE 編譯腳本并將其上傳到您的 M5Stamp:
#include
#include
// WiFi Client
WiFiClient wifiClient;
// Qubitro Client
QubitroMqttClient mqttClient(wifiClient);
// Device Parameters
char deviceID[] = "62f53d7f-6f53-474a-897f-24c808629df9";
char deviceToken[] = "ardE7DqQFct2j3SrO2ApKbii1Dx6NkNx8EClSgKT";
// WiFi Parameters
const char* ssid = "ELDRADO";
const char* password = "amazon123";
int ledPin = 18; // choose pin for the LED/BUZ
int inputPin = 26; // choose input pin (for Infrared sensor)
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare Infrared sensor as input
// Initialize the serial port
serial_init();
// Initialize wireless connectivity
wifi_init();
// Initialize Qubitro
qubitro_init();
}
void loop() {
val = digitalRead(inputPin); // read input value
if (val == HIGH)
{ // check if the input is HIGH
digitalWrite(ledPin, LOW); // turn LED OFF
String Status = "Open";
int Rate = 100;
// Send telemetry
String payload = "{"status": "" + Status + "", "Rate": " + String(Rate) + "}";
mqttClient.poll();
mqttClient.beginMessage(deviceID);
mqttClient.print(payload);
mqttClient.endMessage();
Serial.println(payload);
}
else
{
digitalWrite(ledPin, HIGH); // turn LED ON
String Status = "Close";
int Rate = 0;
// Send telemetry
String payload = "{"status": "" + Status + "", "Rate": " + String(Rate) + "}";
mqttClient.poll();
mqttClient.beginMessage(deviceID);
mqttClient.print(payload);
mqttClient.endMessage();
Serial.println(payload);
}
delay(2000);
}
// Initialization code
void serial_init() {
// Initiate serial port connection
Serial.begin(115200);
// Delay for stabilization
delay(200);
}
void wifi_init() {
// Set WiFi mode
WiFi.mode(WIFI_STA);
// Disconnect WiFi
WiFi.disconnect();
delay(100);
// Initiate WiFi connection
WiFi.begin(ssid, password);
// Print connectivity status to the terminal
Serial.print("Connecting to WiFi...");
while (true)
{
delay(1000);
Serial.print(".");
if (WiFi.status() == WL_CONNECTED)
{
Serial.println("");
Serial.println("WiFi Connected.");
Serial.print("Local IP: ");
Serial.println(WiFi.localIP());
Serial.print("RSSI: ");
Serial.println(WiFi.RSSI());
break;
}
}
}
void qubitro_init() {
char host[] = "broker.qubitro.com";
int port = 1883;
mqttClient.setId(deviceID);
mqttClient.setDeviceIdToken(deviceID, deviceToken);
Serial.println("Connecting to Qubitro...");
if (!mqttClient.connect(host, port))
{
Serial.print("Connection failed. Error code: ");
Serial.println(mqttClient.connectError());
Serial.println("Visit docs.qubitro.com or create a new issue on github.com/qubitro");
}
Serial.println("Connected to Qubitro.");
mqttClient.subscribe(deviceID);
}
上傳腳本后檢查串行監(jiān)視器結果。
數(shù)據(jù)可視化:
之后,轉到 Qubitro 門戶并檢查傳入的數(shù)據(jù)。獲得數(shù)據(jù)后,您可以開始可視化過程。
這是時間線的詳細信息,每當門打開時,它就為0,當門關閉時,它就為100。
結論:
這就是這個項目的全部內容;我已經用我的門測試過了這個項目,希望你們喜歡。
-
控制器
+關注
關注
112文章
16332瀏覽量
177812 -
物聯(lián)網
+關注
關注
2909文章
44557瀏覽量
372791 -
監(jiān)控系統(tǒng)
+關注
關注
21文章
3904瀏覽量
174431
發(fā)布評論請先 登錄
相關推薦
評論