【毕业设计】基于单片机的家庭智能监控系统 - 物联网 stm32 嵌入式
文章目录
- 1 简介
- 2 主要器件
- 2.1 ESP32-CAM 模块
- 2.2 红外热释电传感器
- 3 实现效果
- 4 部分实现代码
- 5 最后
1 简介
Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目
基于单片机的家庭智能监控系统
大家可用于 课程设计 或 毕业设计
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052
2 主要器件
- 红外传感器-7m
- ESP32-CAM
- USB到TTL串行转换器5V
- 主控MCU(可选)
2.1 ESP32-CAM 模块
模块包含一块ESP32-CAM的MCU和一个OV2640的200W像素摄像头,ESP32-CAM除了支持OV2640外还支持OV7670摄像头,不过7670只有30W像素
2.2 红外热释电传感器
3 实现效果
当是房间内有人出现,摄像头自动打开,通过手机或者电脑浏览就可以访问摄像头
4 部分实现代码
部分关键代码:
/*
albino98
https://github.com/albino98/telegram_esp32.git
*/
#ifdef ESP32#include <WiFi.h>
#else#include <ESP8266WiFi.h>
#endif
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h> // Universal Telegram Bot Library written by Brian Lough: https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
#include <ArduinoJson.h>
#include "esp_camera.h"
#include "soc/soc.h"
#include "soc/rtc_cntl_reg.h"
#include "driver/rtc_io.h"
// Replace with your network credentials
const char* ssid = "NetworkName";
const char* password = "NetworkPW";
const int motionSensor = 13;int armed = 1;#define BOTtoken "xxxxxxx:xxxxxxxxxxxxxxxxxx" // your Bot Token (Get from Botfather)// Use @myidbot to find out the chat ID of an individual or a group
#define CHAT_ID "xxxxxxx"//Pin definition for CAMERA_MODEL_AI_THINKER
#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);// Checks for new messages every 1 second.
int botRequestDelay = 1000;
unsigned long lastTimeBotRan;const int ledPin = 4;
bool ledState = LOW;
camera_fb_t * fb;
uint8_t* fb_buffer;
size_t fb_length;
int currentByte;
boolean startTimer = false;
// Handle what happens when you receive new messages
void handleNewMessages(int numNewMessages) {Serial.println("handleNewMessages");Serial.println(String(numNewMessages));for (int i=0; i<numNewMessages; i++) {// Chat id of the requesterString chat_id = String(bot.messages[i].chat_id);if (chat_id != CHAT_ID){bot.sendMessage(chat_id, "Unauthorized user", "");continue;}// Print the received messageString text = bot.messages[i].text;Serial.println(text);String from_name = bot.messages[i].from_name;if (text == "/start") {String welcome = "Welcome, " + from_name + ".\n";welcome += "Use the following commands to control your outputs.\n\n";welcome += "/take_photo to take a picture \n";welcome += "/arm to arm the security system \n";welcome += "/disarm to disarm the security system \n";welcome += "/led_on to turn GPIO ON \n";welcome += "/led_off to turn GPIO OFF \n";welcome += "/state to request current GPIO state and security system state \n";bot.sendMessage(chat_id, welcome, "");}if (text == "/led_on") {bot.sendMessage(chat_id, "LED state set to ON", "");ledState = HIGH;digitalWrite(ledPin, ledState);}if (text == "/led_off") {bot.sendMessage(chat_id, "LED state set to OFF", "");ledState = LOW;digitalWrite(ledPin, ledState);}if (text == "/take_photo") {take_send_photo(CHAT_ID);}if (text == "/security_on") {armed = 1;bot.sendMessage(chat_id, "Security System is ON", "");}if (text == "/security_off") {armed = 0;bot.sendMessage(chat_id, "Security System is OFF", "");}if (text == "/state") {if (digitalRead(ledPin)){bot.sendMessage(chat_id, "LED is ON", "");}else{bot.sendMessage(chat_id, "LED is OFF", "");}if(armed == 1){bot.sendMessage(chat_id, "The security system is ON", "");}else {bot.sendMessage(chat_id, "The security system is OFF", ""); }}}
}bool isMoreDataAvailable() {return (fb_length - currentByte);
}uint8_t photoNextByte() {currentByte++;return (fb_buffer[currentByte - 1]);
}void take_send_photo(String chat_id)
{camera_fb_t * fb = NULL;fb = esp_camera_fb_get();currentByte = 0;fb_length = fb->len;fb_buffer = fb->buf;bot.sendPhotoByBinary(chat_id, "image/jpeg", fb->len, isMoreDataAvailable, photoNextByte, nullptr, nullptr);esp_camera_fb_return(fb);fb_length = NULL;fb_buffer = NULL;
}void setup() {armed = 1;WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG,0);//disable brownout detectorSerial.begin(115200);camera_config_t configg;configg.ledc_channel = LEDC_CHANNEL_0;configg.ledc_timer = LEDC_TIMER_0;configg.pin_d0 = Y2_GPIO_NUM;configg.pin_d1 = Y3_GPIO_NUM;configg.pin_d2 = Y4_GPIO_NUM;configg.pin_d3 = Y5_GPIO_NUM;configg.pin_d4 = Y6_GPIO_NUM;configg.pin_d5 = Y7_GPIO_NUM;configg.pin_d6 = Y8_GPIO_NUM;configg.pin_d7 = Y9_GPIO_NUM;configg.pin_xclk = XCLK_GPIO_NUM;configg.pin_pclk = PCLK_GPIO_NUM;configg.pin_vsync = VSYNC_GPIO_NUM;configg.pin_href = HREF_GPIO_NUM;configg.pin_sscb_sda = SIOD_GPIO_NUM;configg.pin_sscb_scl = SIOC_GPIO_NUM;configg.pin_pwdn = PWDN_GPIO_NUM;configg.pin_reset = RESET_GPIO_NUM;configg.xclk_freq_hz = 20000000;configg.pixel_format = PIXFORMAT_JPEG;pinMode(ledPin, OUTPUT);digitalWrite(ledPin, ledState);rtc_gpio_hold_dis(GPIO_NUM_4);pinMode(GPIO_NUM_13, INPUT_PULLUP);if(psramFound()){configg.frame_size = FRAMESIZE_UXGA;configg.jpeg_quality = 10;configg.fb_count = 2;}else{configg.frame_size = FRAMESIZE_SVGA;configg.jpeg_quality = 12;configg.fb_count = 1;}//Init Cameraesp_err_t err = esp_camera_init(&configg);if(err != ESP_OK){Serial.printf("Camera init failed with error"); return;}// Connect to Wi-FiWiFi.mode(WIFI_STA);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(1000);Serial.println("Connecting to WiFi..");}// Print ESP32 Local IP AddressSerial.println(WiFi.localIP());}void loop() {if(armed == 1){int isDetected = digitalRead(13);if(isDetected == 1){Serial.println("Presence detected");take_send_photo(CHAT_ID);delay(3000);}}//delay(1000);//if (millis() > lastTimeBotRan + botRequestDelay) {int numNewMessages = bot.getUpdates(bot.last_message_received + 1);while(numNewMessages) {Serial.println("got response");handleNewMessages(numNewMessages);numNewMessages = bot.getUpdates(bot.last_message_received + 1);}delay(1000);lastTimeBotRan = millis();// }
}
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052
5 最后
【毕业设计】基于单片机的家庭智能监控系统 - 物联网 stm32 嵌入式相关推荐
- 【毕业设计】基于单片机的智能衣柜系统设计 - 物联网 stm32 嵌入式
文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 硬件系部分 3.2 软件部分 3.1 系统架构 3.2 硬件设计 3.3 软件设计 主程序介绍 按键扫描程序设计流程 DHT ...
- 【毕业设计1】基于单片机的智能灌溉系统 - 物联网 嵌入式 stm32 c51
文章目录 1 简介 2 实现功能 3 主要器件 3.1 器件列表 3.2 器件连接 3.3 OLED 显示屏 4 实现效果 5 实现代码 6 最后 1 简介 Hi,大家好,这里是丹成学长,今天向大家介 ...
- 【毕业设计】基于单片机的智能水箱系统 - 物联网 嵌入式 stm32
文章目录 1 简介 2 概述 2.1 系统描述 2.2 系统目标 3 具体实现 3.1 系统组成架构 3.2 系统功能 3.3 系统特点 3.4 水位检测及自动供水实现 3.5 水箱盖监控实现 3.6 ...
- 计算机毕业设计基于asp.net家庭个人理财系统
随着计算机技术的飞速发展,计算机在系统管理中的应用越来越普及,利用计算机实现各个系统的管理显得越来越重要.随着人们销售水平的提高,消费量一直在加大 ,可是如何能够合理的管理和记录自己的消费方向是一个很 ...
- 毕业设计 基于单片机的智能窗户系统(源码+硬件+论文)
文章目录 0 前言 1 主要功能 2 硬件设计(原理图) 3 核心软件设计 4 实现效果 5 最后 0 前言
- 【毕业设计项目】基于ESP32的家庭气象站系统 - stm32 物联网 嵌入式 单片机
文章目录 1 简介 2 主要器件 引脚连接 3 实现效果 4 部分实现代码 5 最后 1 简介 Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目 基于ESP32的家庭气象站系统 大家 ...
- 【毕业设计】基于单片机的门禁系统 - 嵌入式 物联网
文章目录 1 简介 2 课题背景 3 详细设计 3.1 整体设计方案 3.2 功能模块 3.3 软件设计 4 实现效果 5 部分实现代码 6 最后 1 简介 Hi,大家好,这里是丹成学长,今天向大家介 ...
- 毕业设计 基于单片机的智能门禁系统
文章目录 1 简介 2 课题背景 3 详细设计 3.1 整体设计方案 3.2 功能模块 3.3 软件设计 4 实现效果 5 部分实现代码 6 最后 1 简介 Hi,大家好,学长今天向大家介绍一个学长做 ...
- 计算机应用深圳职业大三毕业设计,毕业设计(论文)文献综述-基于Web的家庭理财系统.docx...
)4事欷夭2噹母院 本科生毕业设计(论文)文献综述 设计(论文)题目 基于Web的家庭理财系统 设计与实现 作者所在院系 作者所在专业 作者所在班级 计算机与遥感信息技术学院 软件工程 作者姓名 作者 ...
最新文章
- 【转】线段树题目 汇总 讲解(by not only success)
- Inno Setup 5制作安装程序
- PHP脚本占用内存太多,解决方案
- word2vec, LSTM Speech Recognition实战, 图数据库
- 做一个中国式站长必须知道的五十个问题
- day15 java的抽象类
- spark学习-Spark的Core理解
- linux下Makefile学习--注释很好
- 在线多空行只保留一个工具
- 【数据结构(C语言)】数据结构-表
- 经典领导选举算法:Bully 算法
- JS9 -- switch
- SAP License:财务流程-新
- Graphics.DrawLine 方法
- Python:实现拓扑排序算法(附完整源码)
- 国际冠码与国际电话区号
- 不要时刻忘记保持微笑
- MQTT在线公共的MQTT服务器
- 矩阵快速幂(矩阵加速)
- CentOS7 云服务器(ECS)挂载磁盘教程(简明完整梳理版)