现如今智能手机更新换代太频繁,换下来的旧手机卖二手不值钱,丢弃又觉得可惜,而且产生电子垃圾污染环境。怎么办???在这里要推荐一个变废为宝的好办法,就是通过安装一个免费的“警猫眼”的App,把闲置旧手机变成专业网络摄像头,即经济又环保!!!

使用方法:
       第一步,在闲置的安卓手机上运行“警猫眼”摄像端程序,布防,如果能联网会自动分配一个摄像端ID并显示在标题栏。
       第二步,在另一台手机或电脑上运行“警猫眼”观看端程序,添加第一步的摄像端ID,即可连接。

警猫眼App下载:(大小超附件限制,只好给个下载链接)

点击打开链接

连接后摄像端手机的摄像头会被打开,你把它放置在你想监控的地方,只要有网络,无论距离有多远,你就可以在另外一台手机里看到实时画面,而且比QQ视频还要更流畅,此外它还提供包括动作监测、双向语音、以及24小时SD卡录像等其他功能。

摘录官方网页的介绍:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

“警猫眼”软件把闲置安卓手机变成智能网络摄像头,可通过WiFi/3G远程传输实时视频与音频至随身手机,好似千里眼、顺风耳。附加摄像头动作捕捉、入侵报警,以及24小时无间断录像。专为居家室内安全系统设计。

  ▶ 无需专业监控硬件,只要一台闲置安卓手机 + 免费的“警猫眼”软件!
  ▶ 可用随身手机和电脑远程观看,观看端有Android、iOS、PC电脑 三个版本!
  ▶ 无需路由器端口设置,P2P即插即用!
  ▶ 没有内网限制,只要上互联网就能远程监控!
  ▶ 支持H.263硬编码、H.264硬编码,最大程度利用你安卓手机的潜能!
  ▶ 摄像头图像移动侦测触发报警,声音侦测触发报警,手机被拿动触发报警!
  ▶ 不插手机卡时,可以电子邮件报警;插手机卡时,还可以短信、彩信、打电话报警!
++++++++++++++++++++++++++++++++++++++++++++

很明显,能看出来 “警猫眼”机底盒是 Arduino控制板为核心的,还有HC-06蓝牙模块,DHT11,MQ2,舵机,继电器,红外人体感应器,LED灯,等模块。。
“警猫眼”机底盒与上面的安卓手机 是通过蓝牙串口通信交互的。

Arduino程序分享出来,大家参考:

#include <Servo.h>
#include <dht.h>#define PIN_A_VOLTAGE  5
#define PIN_A_MQ2      4#define PIN_D_SERVO    9
#define PIN_D_DHT      8
#define PIN_D_RELAY    4
#define PIN_D_RED      5
#define PIN_D_LED      2
#define PIN_D_LEDA     7
#define PIN_D_LEDB     12//PT2272 Recv
#define PIN_D_2272VT   6
#define PIN_A_2272D0   0
#define PIN_A_2272D1   1
#define PIN_A_2272D2   2
#define PIN_A_2272D3   3//PT2262 Send
#define PIN_D_315SEND   10
#define PIN_D_433SEND   10#define ANALOG_HIGH_VALUE  560Servo servo;
dht   DHT;
int8_t relayVal;double readNumber()
{int8_t dotCount = 0;int n = 0;double p = 0.0f;char ch;while (1) {if (Serial.available() > 0) {ch = Serial.read();if (ch == '\r'){continue;}else if (ch == '\n'){return (double)n + p;}else if (ch == '.'){if (dotCount == 0) dotCount = 1;continue;}else {if (dotCount == 0) {n = n*10 + (ch - '0');}else {double tmp = 1.0f;int i = dotCount;while (i > 0){tmp *= 0.1f;i -= 1;}p += ((double)(ch - '0'))*tmp;dotCount += 1;}}}//if}//while
}uint16_t readWord()
{uint32_t ret = 0;char ch;while (1) {if (Serial.available() > 0) {ch = Serial.read();if (ch == '\r'){continue;}else if (ch == '\n'){return (uint16_t)ret;}else if (ch == ','){return (uint16_t)ret;}else {if (ret <= 65535) {ret = ret*10 + (ch - '0');}}}//if}//while
}// Return value:
// -1: Error
//  n: n > 0, number of bytes
int readWordArray(uint16_t buf[], int bufSize)
{uint16_t len = readWord();if (len > bufSize){return -1;}int i;for (i = 0; i < len; i++){buf[i] = readWord();}return len;
}///uint8_t  pt2262_pin;
uint16_t pt2262_count;void pt2262_foura(void)
{int i;for (i = 0; i < pt2262_count; i++){delayMicroseconds(10);}
}void ev1527_bit0(void)
{digitalWrite(pt2262_pin, HIGH);pt2262_foura();digitalWrite(pt2262_pin, LOW);pt2262_foura();pt2262_foura();pt2262_foura();
}void ev1527_bit1(void)
{digitalWrite(pt2262_pin, HIGH);pt2262_foura();pt2262_foura();pt2262_foura();digitalWrite(pt2262_pin, LOW);pt2262_foura();
}void pt2262_dama0(void)//BIT"0"
{digitalWrite(pt2262_pin, HIGH);pt2262_foura();digitalWrite(pt2262_pin, LOW);pt2262_foura();pt2262_foura();pt2262_foura();digitalWrite(pt2262_pin, HIGH);pt2262_foura();digitalWrite(pt2262_pin, LOW);pt2262_foura();pt2262_foura();pt2262_foura();
}void pt2262_dama1(void)//BIT"1"
{digitalWrite(pt2262_pin, HIGH);pt2262_foura();pt2262_foura();pt2262_foura();digitalWrite(pt2262_pin, LOW);pt2262_foura();digitalWrite(pt2262_pin, HIGH);pt2262_foura();pt2262_foura();pt2262_foura();digitalWrite(pt2262_pin, LOW);pt2262_foura();
}void pt2262_damaf(void)//BIT"f"
{digitalWrite(pt2262_pin, HIGH);pt2262_foura();digitalWrite(pt2262_pin, LOW);pt2262_foura();pt2262_foura();pt2262_foura();digitalWrite(pt2262_pin, HIGH);pt2262_foura();pt2262_foura();pt2262_foura();digitalWrite(pt2262_pin, LOW);pt2262_foura();
}void pt2262_syn(void)
{int i=31;digitalWrite(pt2262_pin, HIGH);pt2262_foura();digitalWrite(pt2262_pin, LOW);while(i--){pt2262_foura();}
}void pt2262_send(uint16_t addr, uint8_t data)
{uint16_t addr_bak = addr;uint8_t data_bak = data;uint8_t i;uint8_t j;uint8_t tmp;for (i = 0; i < 5; i++){addr = addr_bak;data = data_bak;pt2262_syn();for (j = 0; j < 8; j++){//A0 -> A7tmp = addr % 3;if (0 == tmp)       pt2262_dama0();else if  (1 == tmp) pt2262_dama1();else                pt2262_damaf();addr = addr / 3;}for (j = 0; j < 4; j++){//D0 -> D3tmp = data % 2;if (0 == tmp)       pt2262_dama0();else if  (1 == tmp) pt2262_dama1();data = data / 2;}}
}void ev1527_send(uint16_t addr, uint8_t data)
{uint16_t addr_bak = addr;uint8_t data_bak = data;uint8_t i;uint8_t j;uint8_t tmp;for (i = 0; i < 5; i++){addr = addr_bak;data = data_bak;pt2262_syn();for (j = 0; j < 8; j++){//A0 -> A7 (16bit)tmp = addr % 3;if (0 == tmp)       pt2262_dama0();else if  (1 == tmp) pt2262_dama1();else                pt2262_damaf();addr = addr / 3;}for (j = 0; j < 8; j++){//D0 -> D7 (8bit)tmp = data % 2;if (0 == tmp)       ev1527_bit0();else if  (1 == tmp) ev1527_bit1();data = data / 2;}}
}int8_t vtState = 0;void pt2272_func()
{uint8_t val2272;int val = digitalRead(PIN_D_2272VT);if (vtState == 0 &&  val == 1){val2272 = 0;if ((analogRead(PIN_A_2272D0) > ANALOG_HIGH_VALUE ? HIGH : LOW) == HIGH){val2272 |= 0x1;}if ((analogRead(PIN_A_2272D1) > ANALOG_HIGH_VALUE ? HIGH : LOW) == HIGH){val2272 |= 0x2;}if ((analogRead(PIN_A_2272D2) > ANALOG_HIGH_VALUE ? HIGH : LOW) == HIGH){val2272 |= 0x4;}if ((analogRead(PIN_A_2272D3) > ANALOG_HIGH_VALUE ? HIGH : LOW) == HIGH){val2272 |= 0x8;}Serial.print("M");Serial.println(val2272, DEC);}vtState = val;
}//void setup()
{pinMode(PIN_D_2272VT,   INPUT);//pinMode(PIN_D_2272D0,   INPUT);//pinMode(PIN_D_2272D1,   INPUT);//pinMode(PIN_D_2272D2,   INPUT);//pinMode(PIN_D_2272D3,   INPUT);pinMode(PIN_D_315SEND,   OUTPUT);pinMode(PIN_D_433SEND,   OUTPUT);digitalWrite(PIN_D_315SEND,  LOW);digitalWrite(PIN_D_433SEND,  LOW);pinMode(PIN_D_LED,  OUTPUT);pinMode(PIN_D_LEDA, OUTPUT);pinMode(PIN_D_LEDB, OUTPUT);pinMode(PIN_D_RELAY, OUTPUT);pinMode(PIN_D_RED,   INPUT);digitalWrite(PIN_D_RELAY, HIGH);relayVal = 0;digitalWrite(PIN_D_LED,  LOW);digitalWrite(PIN_D_LEDA, LOW);digitalWrite(PIN_D_LEDB, LOW);servo.attach(PIN_D_SERVO);servo.write(90);Serial.begin(9600);delay(500);int n;char ch;int val;double fVal;int i;for (i = 0; i < 1500; i++){while (Serial.available() > 0){ch = Serial.read();if(ch == 'd'){n = readNumber();//Serial.print("dn=");Serial.println(n, DEC);Debugservo.write(n);}else if(ch == 'j'){n = readNumber();//Serial.print("jn=");Serial.println(n, DEC);Debugif (n == 1) {digitalWrite(PIN_D_RELAY, LOW);relayVal = 1;}else if (n == 0) {digitalWrite(PIN_D_RELAY, HIGH);relayVal = 0;}}else if(ch == 'a'){n = readNumber();if (n == 1) {digitalWrite(PIN_D_LEDA, HIGH);}else if (n == 0) {digitalWrite(PIN_D_LEDA, LOW);}}else if(ch == 'b'){n = readNumber();if (n == 1) {digitalWrite(PIN_D_LEDB, HIGH);}else if (n == 0) {digitalWrite(PIN_D_LEDB, LOW);}}else if(ch == 'L'){n = readNumber();if (n == 1) {digitalWrite(PIN_D_LED, HIGH);}else if (n == 0) {digitalWrite(PIN_D_LED, LOW);}}else if(ch == 'm'){n = readWord();if (n == 315){pt2262_pin = PIN_D_315SEND;}else if (n == 433){pt2262_pin = PIN_D_433SEND;}pt2262_count = readWord();n = readWord();if (n == 2262){n = readWord();pt2262_send(n, readWord());}else if (n == 1527){n = readWord();ev1527_send(n, readWord());}}}//whileval = servo.read();Serial.print("d");Serial.println(val, DEC);val = relayVal;Serial.print("j");Serial.println(val, DEC);val = (digitalRead(PIN_D_RED) == HIGH ? 1 : 0);Serial.print("h");Serial.println(val, DEC);pt2272_func();delay(200);}
}#define VOLTAGE_ARRAY_SIZE  50
uint8_t voltageArray[VOLTAGE_ARRAY_SIZE];
uint32_t loop_count = 0;void loop()
{int n;char ch;while (Serial.available() > 0){ch = Serial.read();if(ch == 'd'){n = readNumber();//Serial.print("dn=");Serial.println(n, DEC);Debugservo.write(n);}else if(ch == 'j'){n = readNumber();//Serial.print("jn=");Serial.println(n, DEC);Debugif (n == 1) {digitalWrite(PIN_D_RELAY, LOW);relayVal = 1;}else if (n == 0) {digitalWrite(PIN_D_RELAY, HIGH);relayVal = 0;}}else if(ch == 'a'){n = readNumber();if (n == 1) {digitalWrite(PIN_D_LEDA, HIGH);}else if (n == 0) {digitalWrite(PIN_D_LEDA, LOW);}}else if(ch == 'b'){n = readNumber();if (n == 1) {digitalWrite(PIN_D_LEDB, HIGH);}else if (n == 0) {digitalWrite(PIN_D_LEDB, LOW);}}else if(ch == 'L'){n = readNumber();if (n == 1) {digitalWrite(PIN_D_LED, HIGH);}else if (n == 0) {digitalWrite(PIN_D_LED, LOW);}}else if(ch == 'm'){n = readWord();if (n == 315){pt2262_pin = PIN_D_315SEND;}else if (n == 433){pt2262_pin = PIN_D_433SEND;}pt2262_count = readWord();n = readWord();if (n == 2262){n = readWord();pt2262_send(n, readWord());}else if (n == 1527){n = readWord();ev1527_send(n, readWord());}}}//whileint val;double fVal;if ((loop_count % 10) == 0){val = analogRead(PIN_A_MQ2);Serial.print("y");Serial.println(val, DEC);val = servo.read();Serial.print("d");Serial.println(val, DEC);val = relayVal;Serial.print("j");Serial.println(val, DEC);val = (digitalRead(PIN_D_RED) == HIGH ? 1 : 0);Serial.print("h");Serial.println(val, DEC);if (0 == DHT.read11(PIN_D_DHT)){fVal = DHT.temperature;Serial.print("w");Serial.println(fVal, 3);fVal = DHT.humidity;Serial.print("s");Serial.println(fVal, 3);}}uint8_t index = loop_count % VOLTAGE_ARRAY_SIZE;voltageArray[index] = (uint8_t)round((double)(analogRead(PIN_A_VOLTAGE) - 3)/4.0f);if (index == (VOLTAGE_ARRAY_SIZE - 1)){uint8_t j;uint16_t arraySum = 0;for (j = 0; j < VOLTAGE_ARRAY_SIZE; j++){arraySum += voltageArray[j];}fVal = (double)(arraySum * 4) / (double)VOLTAGE_ARRAY_SIZE;fVal = fVal * 0.02444f;Serial.print("U");Serial.println(fVal, 3);}pt2272_func();delay(100);loop_count += 1;
}

警猫眼Arduino源码分享,把闲置手机变成安防监控摄像头!相关推荐

  1. ios开发学习-手势交互(Gesture)效果源码分享

    qianqianlianmeng ios开发学习-手势交互(Gesture)效果源码分享 All Around Pull View 介绍:实现视图四个方向(上下左右)都能够拖动更新(pull to r ...

  2. 《小印记》源码分享--极光推送服务器篇

    为什么80%的码农都做不了架构师?>>>    笔者这几天刚完成<小印记>的推送功能,今天特分享一下在做的过程中实际解决的问题.如果读者学到了有用的东西,希望能前往App ...

  3. 基于免费人脸识别的闸机开发及源码分享

    最近公司要开发一款人脸识别的闸机,就是在现有闸机上将一个小屏的识别装置,人脸识别成功后将闸机打开. 项目源码在 : https://gitee.com/panmingzhi/ArcSoftFace.g ...

  4. Android 亲测源码分享

    Android 亲测源码分享 一.优质视频教程 1.老罗Android开发视频教程(更多经典教程制作进行中) http://www.apkbus.com/android-94796-1-1.html ...

  5. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4-&g ...

  6. php会员系统源码_b2b2c商城系统会员预存款架构及源码分享

    业务需求 可以为预存款充值,在支付订单时使用预存款支付功能 当预存款余额>商品订单总金额时,完全抵扣商品订单金额: 当预存款余额 架构 一. 充值 二. 数据结构 1.会员钱包表(es_memb ...

  7. 插件一:JAVA微信砍价活动源码分享[商品帮砍到0元,免费领取奖品]

    插件一:微信砍价活动源码分享 [商品帮砍到0元,免费领取奖品] 活动描述: 砍价活动即公众号向粉丝推广的0价赠商品(或优惠价购商品)活动,用户通过分享好友帮其砍价,可将价格从原价一路砍到底价,并抢得名 ...

  8. JEECG社区 一个微信教育网站案例源码分享

    微信教育网站案例演示: http://t.cn/RvPgLcb 源码分享: http://pan.baidu.com/s/1cUImy 截图演示:

  9. 二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面

    介绍: PHP二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面 网盘下载地址: http://kekewl.net/RROyxgOkauW0 图片:

最新文章

  1. 辞职的时候才知道上司的工资是我的10倍,这些道理都在这些公众号中!
  2. 从洗牌算法谈起--Python的random.shuffle函数实现原理
  3. 纯PB9开发短文本加密
  4. CSS实现垂直居中的5种思路
  5. [BOOST] BOOST::Format
  6. swing 聊天气泡背景_Java Swing中的聊天气泡
  7. Redis+Twemproxy安装与使用
  8. Linux操作系统配置基础详解:GRUB入门 (转)
  9. Cisco 模拟器实现NAT案例
  10. [Qt笔记]设置VS2015下的应用工程图标
  11. 7-4 计算e的近似值 (10 分)
  12. 安装ruby1.9.3-p0及redmon来监控redis
  13. hdoj 4888 Redraw Beautiful Drawings 【最大流满流+唯一性判断】
  14. dlt645协议电表数据采集接入PLC或scada等组态软件系统(转modbus)实现内网监控技术方案
  15. 这几个 GitHub 项目真带劲
  16. python爬取上证股票的历史记录并画历史收盘图曲线
  17. 基于python,虹软sdk3.0实现的实时人脸识别
  18. (1.2)bark-ml
  19. 西安科技大学计算机院复试,2014年西安科技大学计算机学院考研复试细则
  20. 看图工具IrfanView

热门文章

  1. 888元新鲜全新二开版易支付新版彩虹易支付源码全开源10套模板带风控实名系
  2. 边缘计算招聘 :边缘不再「边缘」,计算无处不在
  3. maplesim matlab,MapleSim 2020
  4. Inserting Videos into Videos_论文阅读
  5. nanotime java_java – 为什么我会使用System.nanoTime()获得消极的时间?
  6. scanf 输入双精度浮点数
  7. window电脑访问Android照片,解决JPEG照片在windows无法打开
  8. 什么是 ArrayList
  9. 什么是JAVA?JAVA能做什么?
  10. HTML中的 a标签