在这篇文章中,我将向您展示如何使用小型M5Stamp PICO控制器和Qubitro构建DIY物联网门锁监控系统。
背景
这个项目的灵感还源于我一个可爱的小表弟。他经常会在每个人都在工作的时候自己打开冰箱吃一些零食或一些不该吃太多的东西。所以,我想在他开门的时候抓住他。我还添加了 Qubitro 来记录数据并通过互联网对其进行监控。
组件要求:
1. M5Stamp PICO。
3.一些电线。
电路连接:
编码部分:
请使用您的网络凭据配置代码,我在下面提供了这些凭据:
更改设备 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);
}
上传脚本后检查串行监视器结果。
数据可视化:
之后,转到 Qubitro 门户并检查传入的数据。获得数据后,您可以开始可视化过程。
这是时间线的详细信息,每当门打开时,它就为0,当门关闭时,它就为100。
结论:
这就是这个项目的全部内容;我已经用我的门测试过了这个项目,希望你们喜欢。
-
控制器
+关注
关注
112文章
16064浏览量
176919 -
物联网
+关注
关注
2900文章
43949浏览量
369720 -
监控系统
+关注
关注
21文章
3831浏览量
173328
发布评论请先 登录
相关推荐
评论