在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5202|回复: 1

[原创] 大炮报警器(随时用钉钉接收警报消息)

[复制链接]
发表于 2021-8-20 15:47:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

钉钉:有个软件名叫钉钉,直播上课我很震惊。评论一看都是好评,应用商店只有一星。在家学习再也不愁,但我不能关摄像头。老师提问我就装卡,再也不能愉快玩耍。

Ucb9eb6809f6546f89f2e6813a448b71aT.jpg

今天给大家带来一款狂拽炫酷屌炸天的手办,啊不,一款物联网警报装置。这款警报装置,内置人体红外感应传感器,用ESP32-E搭配钉钉进行远程信息传输。有了它,当家中无人却检测到有人闯入时,装置会立即触发蜂鸣器劝退小偷,随即会发送警报信息到手机钉钉群,你可以邀请你们小区的物业保安进群,当装置报警时,物业保安将小偷立即拿下,减少你的损失。


来吧,展示:


一.准备材料







二.组装大炮

图1.大炮的3D模型


图2.双色大炮内部视图

图3.双色大炮元器件组装完成图


图4.打开你的手机进入热点配置(AP频段必须为2.4GHZ)
U6fd572ae940f45d3993145643c5618d4n.jpg


三.阿里云IOT平台

3.1 注册并登录阿里云


图5.点击阿里云IOT进入首页:[md][阿里云IOT](https://www.aliyun.com/)[/md]

图6.选择支付宝快捷注册或账号注册界面



3.2 开通物联网服务

图7.点击物联网应用


图8.点击立即开通



3.3 创建项目


图9.新建一个项目


图10.新建一个产品,定义产品功能定义,发布上线


图11.为产品添加设备


图12.查看重要的产品三连 这三个信息都是非常重要的 等下代码里面要用到
Uc333b7fe6c57452989ae49ca8946cf90D.jpg

图13.在产品信息里面查看post请求 等下代码里面要用到



3.4 创建业务逻辑
图14.点击进入业务逻辑开发
U59df00d716084c5ea8d0c10259436844J.jpg

图15.创建你的业务逻辑名称并进入
Ubed41d70c3f8466aa2ab942c42f14a13Z.jpg

图16.进入业务逻辑编辑页面 选择两个如图设备到中央
Uec78c67c4c454809bac66f905273017aS.jpg

图17设置设备触发的选项


图18.万恶之源钉钉,我相信大家都有吧,没有的去问小学生,让他发给你。没有人能比小学生更懂它。
U31263c9b407847ccb5c58b3e52c0df62n.jpg

图19.拥有一个属于自己的钉钉机器人 你可以让多人都能接收到你钉钉机器人发的信息 。复制钉钉机器人的Webhook


图20.设置钉钉机器人选项,用刚才复制的Webhook,在依次选择,部署,启动,发布



四.烧录程序

4.1 Arduino IDE 编译环境配置

配置URL网址到Arduino IDE 打开Arduino IDE,点击File->Preferences,如下图所示:
图21.在新打开的界面中,点击如下图红色圆圈中的按钮


图22.将如下链接地址复制到新弹出的对话框中:



  1. http://download.dfrobot.top/FireBeetle/package_DFRobot_index.json


复制代码



图23.点击OK



4.3更新板卡

图24.打开Tools->Board:->Boards Manager...



图25.Boards Manager会自动更新板卡,如下图所示:



图26.更新完成后,会在列表中看到FireBeetle-ESP32主板(现已更新至0.0.8版本),点击安装:


图27.安装完成后,列表会显示已经安装FireBeetle-ESP32主板




4.4 下载库文件

该例程需要使用该例程需要下载ArduinoJson库
图28.进入加载库文件


图29.下载ArduinoJosn5版本 如果网络不好 下面提供了压缩包内含有ArduinoJosn5库文件


安装DFRobot_Aliyun库文件和pubsubclient库文件解压后把库文件拖入arduinolibraries文件目录下。如何安装库文件?


4.2 代码烧录

来吧,展示!




  1. #include <WiFi.h>
  2. #include <PubSubClient.h>
  3. #include <ArduinoJson.h>
  4. #include "DFRobot_Aliyun.h"

  5. #define MOTION_SENSOR_PIN  D3 //人体红外传感器接入D3引脚
  6. #define LED_PIN D9 //LED_PIN灯接入D9引脚
  7. #define BUZZER_PIN D6 //蜂鸣器接入D6引脚

  8. bool sensorSign = false;//判断人体红外传感器标记的
  9. uint16_t sensorState = 0;//人体红外传感器状态变量1为有人 0为无人

  10. /*配置WIFI名和密码*/
  11. const char * WIFI_SSID     = "zjf";//输入自己家的wifi及密码
  12. const char * WIFI_PASSWORD = "123456789.";

  13. /*配置设备证书信息*/
  14. String ProductKey = "a16seZxWRxD";
  15. String ClientId = "12345";//这个不用管
  16. String DeviceName = "flash";
  17. String DeviceSecret = "5ae31a7b63ec3c3a5660c8d39f160918";

  18. /*配置域名和端口号*/
  19. String ALIYUN_SERVER = "iot-as-mqtt.cn-shanghai.aliyuncs.com";
  20. uint16_t PORT = 1883;

  21. /*需要操作的产品标识符*/
  22. String Identifier = "123456";

  23. /*需要上报的TOPIC*/
  24. const char * pubTopic = "/sys/a16seZxWRxD/flash/thing/event/property/post";//******post

  25. DFRobot_Aliyun myAliyun;
  26. WiFiClient espClient;
  27. PubSubClient client(espClient);


  28. void connectWiFi(){
  29. Serial.print("Connecting to ");
  30. Serial.println(WIFI_SSID);
  31. WiFi.begin(WIFI_SSID,WIFI_PASSWORD);
  32. while(WiFi.status() != WL_CONNECTED){
  33.    delay(500);
  34.    Serial.print(".");
  35. }
  36. Serial.println();
  37. Serial.println("WiFi connected");
  38. Serial.print("IP Adderss: ");
  39. Serial.println(WiFi.localIP());
  40. }

  41. void callback(char * topic, byte * payload, unsigned int len){
  42. Serial.print("Recevice [");
  43. Serial.print(topic);
  44. Serial.print("] ");
  45. for (int i = 0; i < len; i++){
  46.    Serial.print((char)payload[i]);
  47. }
  48. Serial.println();
  49. }

  50. void ConnectAliyun(){
  51. while(!client.connected()){
  52.    Serial.print("Attempting MQTT connection...");
  53.    /*根据自动计算的用户名和密码连接到Alinyun的设备,不需要更改*/
  54.    if(client.connect(myAliyun.client_id,myAliyun.username,myAliyun.password)){
  55.      Serial.println("connected");
  56.    }else{
  57.      Serial.print("faiLED_PIN, rc=");
  58.      Serial.print(client.state());
  59.      Serial.println(" try again in 5 seconds");
  60.      delay(5000);
  61.    }
  62. }
  63. }
  64. void setup(){
  65. Serial.begin(115200);
  66. pinMode(MOTION_SENSOR_PIN,INPUT);//设置人体红外传感器为输入模式
  67. pinMode(LED_PIN,OUTPUT);//设置LED灯为输出模式
  68. pinMode(BUZZER_PIN,OUTPUT);//设置蜂鸣器为输出模式
  69. /*连接WIFI*/
  70. connectWiFi();

  71. /*初始化Alinyun的配置,可自动计算用户名和密码*/
  72. myAliyun.init(ALIYUN_SERVER,ProductKey,ClientId,DeviceName,DeviceSecret);

  73. client.setServer(myAliyun.mqtt_server,PORT);

  74. /*设置回调函数,当收到订阅信息时会执行回调函数*/
  75. client.setCallback(callback);

  76. /*连接到Aliyun*/
  77. ConnectAliyun();
  78. }

  79. void loop(){
  80. if(!client.connected()){
  81.    ConnectAliyun();
  82. }
  83. sensorState =digitalRead(MOTION_SENSOR_PIN);//把人体红外传感器接收到的值赋值给sensorState
  84. if((sensorState==1)&&(sensorSign==false)){
  85.    /*上报防盗警告*/
  86.    client.publish(pubTopic,("{"id":"+ClientId+","params":{""+Identifier+"":1},"method":"thing.event.property.post"}").c_str());
  87.    digitalWrite(LED_PIN,HIGH);//LED_PIN灯打开
  88.    digitalWrite(BUZZER_PIN,HIGH);//蜂鸣器打开
  89.    delay(3000);//延长3秒   
  90.    sensorSign = true;//把传感器标记变为true 防止重复发送信息
  91. }
  92. else if((sensorState==0)&&(sensorSign==true)){
  93.    digitalWrite(LED_PIN,LOW);//LED_PIN灯关闭
  94.    digitalWrite(BUZZER_PIN,LOW);//蜂鸣器关闭
  95.    sensorSign = false;//把传感器标记变为false
  96. }
  97.    
  98. client.loop();
  99. }


复制代码

把我的代码变为你的代码,我的就是你的,别说话,吻我。

图30.在产品,设备里面点击相应的信息,并复制下来填进对应的选项中。



一切准备就绪之后就上传程序,上传成功之后就可以看到你的钉钉群消息了。

图31.钉钉机器人报警消息显示


好了,这一篇教程下来,你应该已经学会怎样去制作你的双色大炮了吧,闻西。


发表于 2021-8-21 12:49:22 | 显示全部楼层
好的,闻西。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 23:22 , Processed in 0.020436 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表