arduino小车
本教程描述了如何实现IoT推送通知。 使用物联网推送通知,我们可以将通知发送到其他设备。 在这种情况下,我们希望将IoT推送通知从智能对象(如Arduino MKR1000)发送到移动智能手机(即Android智能手机)。 该项目集成了不同的生态系统:IoT和Android。 该项目可以有多种实现方式:例如,当发生警报时,我们可以向我们的智能手机发送推送通知:
- 气体泄漏
- 运动检测
- 更高或更低的温度
- 通用故障系统
例如,为了展示如何使用物联网通知,我们将使用运动检测传感器。 换句话说,有一个Arduino MKR1000连接到传感器(PIR传感器)。 当传感器触发事件时,MKR1000使用Firebase API调用Firebase服务器。 使用API,智能对象将IoT推送通知发送到Android智能手机。 我们可以使用相同的方式将通知发送到其他设备,例如iOS等。
该项目背后的想法如下所示:
如您所见,该项目以不同的方式使用Firebase API来混合不同的世界!
在上一篇文章中,我们描述了如何使用Firebase API创建推送通知,在本文中,我们希望对其进行扩展并与Arduino集成。
此外,我们已经在上一篇文章中看到了如何创建一个处理推送通知的Android应用程序以及如何在Firebase控制台中对其进行配置。 如果您是Firebase的新手,建议您阅读上一篇文章,以便您清楚了解工作原理。
作为Android应用程序,该项目使用了我们在上一篇文章中开发的应用程序。 如果要测试项目,可以下载它。
Arduino MKR1000 PIR项目
第一步是将Arduino MKR1000连接到PIR传感器。 下图显示了如何将传感器连接到MKR1000。
该模式非常简单。 要知道PIR传感器是否检测到运动,我们必须检查信号是否为1。草图非常简单:
int inputPin = 2;
int pirState = LOW;
void setup() {
pinMode(inputPin, INPUT);
Serial.begin(9600);
}
void loop() {
int val = digitalRead(inputPin);
if (val == HIGH) {
if (pirState == LOW) {
Serial.println("Motion detected");
pirState = HIGH;
// Motion detected
}
}
else {
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
// Motion ended
}
}
delay(5000);
}
如您所见,草图非常简单。 我们必须读取输入引脚上的信号,并检查其是否为1。如果为1,则表明已检测到运动,可以发送通知。
如何发送#IoT推送通知? 遵循本教程,了解如何集成#arduino… 单击鸣叫
MKR1000 WiFi连接
发送通知之前,我们必须使用WiFi将Arduino MKR1000连接到互联网。 我们可以稍微修改上面的代码并添加WiFi连接:
#include <SPI.h>
#include <WiFi101.h>
int inputPin = 2;
int pirState = LOW;
char ssid[] = "Vodafone-xxxxx"; // your network SSID (name)
char pass[] = "yyyyyyyy"; // your network password
int status = WL_IDLE_STATUS;
WiFiClient client;
void setup() {
pinMode(inputPin, INPUT);
Serial.begin(9600);
// attempt to connect to Wifi network:
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
// you're connected now, so print out the data:
Serial.println("You're connected to the network");
}
全做完了! 现在一切就绪,我们可以将精力集中在最有趣的部分:将物联网推送通知发送到智能手机。
发送物联网推送通知
要发送推送通知,我们使用Firebase API。 我们假定您已经在Firebase控制台中创建了一个项目,否则请返回上一篇文章并阅读如何配置Firebase项目。要使用Firebase发送推送通知,有必要:
- 验证我们的客户
- 在JSON中创建消息正文
- 发送信息到智能手机
为此,必须发送一些标头HTTP参数和JSON消息。 首先设置Firebase主机:
Host: fcm.googleapis.com
然后,为了验证我们的客户端,我们使用一个秘密密钥,您可以从Firebase控制台获取:
Authorization: key=AIzaSyC1mHfa_G89CDoNoq2zWhh1iL9---------
那么我们必须设置内容类型:
Content-Type: application/json
最后,我们指定HTTP方法和要调用的服务:
POST /fcm/send HTTP/1.1
主体采用JSON格式,非常简单:
{
"to":"your_phone_key",
"notification": {
"body": "test message",
"title" : "Title"
}
}
就这样!! 我们必须使用Arduino HTTP库发出此请求:
void sendDataToFirebase() {
String data = "{" ;
data = data + "\"to\": \"your_smartphone_id\"," ;
data = data + "\"notification\": {" ;
data = data + "\"body\": \"Motion detected\"," ;
data = data + "\"title\" : \"Alarm\" " ;
data = data + "} }" ;
Serial.println("Send data...");
if (client.connect(fcmServer, 80)) {
Serial.println("Connected to the server..");
client.println("POST /fcm/send HTTP/1.1");
client.println("Authorization: key=auth_key");
client.println("Content-Type: application/json");
client.println("Host: fcm.googleapis.com");
client.print("Content-Length: ");
client.println(data.length());
client.print("\n");
client.print(data);
}
Serial.println("Data sent...Reading response..");
while (client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.println("Finished!");
client.flush();
client.stop();
}
因此发送IoT推送通知非常简单,并且我们已经集成了两个不同的生态系统。 您将使用推送通知来构建什么? 在下面发表评论,让我知道您的经验。希望在本文结尾,您能获得有关发送IoT推送通知的新知识。
在本文的结尾,希望您获得了有关发送物联网推送通知的新知识。
翻译自: https://www.javacodegeeks.com/2016/09/iot-push-notifications-arduino-firebase-android.html
arduino小车