极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17256|回复: 2

WisCam + arduino可视门铃(开源)

[复制链接]
发表于 2017-7-6 10:30:05 | 显示全部楼层 |阅读模式
本帖最后由 fwy丶lucifer 于 2017-7-7 18:13 编辑

1、基本原理
    闻声识人”再次升级“眼见为实”!!!为了提高小区楼宇安全性,可视化门铃应需出现了。传统门铃只是输入房间号,房间的话机应答,主人闻声识人,决定是否开门。现在的门铃在传统的门铃基础上加上了视频这一块,果然还是需要眼见为实。WisCam工作在AP或STA模式,在AP模式下,上位机连接WisCam的热点;在STA模式下,WisCam和上位机要连接同一个路由器。Wiscam透传串口与Arduino串口连接,Arduino外接一个矩阵键盘、LCD1602、10K电位器和一个发光二极光。下位机Arduino 通过矩阵键盘输入房间号并在液晶同步显示,上位机收到并打开摄像头,再根据具体情况再决定是否开门(用LED亮灭表示门的开关)

2、实验设备
(1)arduino R3开发板一块
(2)WisCam视频开发板一块
(3)4*4的矩阵键盘一个
(4)LCD1602液晶显示屏
(5)一个发光二极管
(6)10K电位器
(7)5V 电源供电
(8)杜邦线若14根
主模块介绍
arduino:更多资料去官网:https://www.arduino.cc/
arduino它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。WisCam IoT WiFi开源硬件模块:视频链接:http://www.soku.com/search_video/q_wiscam?spm=a2hww.20023042.#qheader_search~10
WisCam是一款超低成本物联网WIFI视频评估套件,集成强大的ARM9处理器,Nabto P2P云服务器实现视频远程播放,2.4G WI-FI模组,硬件兼容Arduino等。WisCam可以通过Wi-Fi传输视频到APP,APP源码,硬件设计资料源文件,软件代码均已上传到Github。因此可快速帮助开发人员使用Linux操作系统设计Wi-Fi视频产品。
WisCam支持YUV RAW DATA,开发人员可以进行视频缩放(1〜8倍缩放),视频裁剪,视频层叠,更改CMOS图像传感器等。更多资料去官网:http://www.rakwireless.com/cn/

3、硬件连接
Wiscam5VArduino5VGNDGNDWiscam TXDArduino RXDWiscam RXDArduino TXD,如图2所示矩阵键盘4个引脚接Arduino PIN 4-PIN 7(可自定义),液晶部分的连接:VSS接Arduino GND、VDD接Arduino 5V VCC、VO 接电位器第二引脚、RS接PIN 8、RW接GND、E接PIN 9、D4接PIN 10、D5接PIN 11、D6接PIN 12、D7接PIN 13、A通个10K电阻接VCC、K接GND,LED正极接Arduino PIN 3(可自定义)、负极接Arduino GND。组合之后单独给Wiscam供电即可(5V)或给Arduino 供电(5V)。
  4、测试代码
4、上位机软件(源代码)
   1)控制界面
2)下载地址(上位机源代码)
https://github.com/RAKWireless/wiscam-visual-doorbell.git
5、下位机(Arduino程序
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
const int analogOutPin = 3; //  模拟输出引脚
int flase = 0;
int x = 9;
int outputValue = 0;
char rec[7];
const int numR = 2;//定义2行
const int numC = 2;//定义2列
const int debounceTime = 20;//去抖动时间长度
const char keymap[numR][numC]= {
  { '2','3' },
  {'5','6'},
};
const int rowPins[numR] = {4,5};//设置硬件对应的引脚
const int colPins[numC] = {6,7};
//初始化功能
void setup(){
Serial.begin(115200);
lcd.begin(16, 2);
  // 打印字符串
  lcd.print("hello,WisCam!");
   lcd.setCursor(0,1);
   lcd.print("room num:");
   lcd.blink();
for(int row = 0; row < numR; row++){
   pinMode(rowPins[row],INPUT);
   digitalWrite(rowPins[row],HIGH);
}
for(int column = 0;column < numC; column++){
    pinMode(colPins[column],OUTPUT);
    digitalWrite(colPins[column],HIGH);
}
}
//主循环
void loop() {
      char key = getkey();
      if(key !=0){
       lcd.setCursor(x,1);
       lcd.print(key);
      Serial.write(key);
      x++;
      if(x==13)x=9;
      }
      if (Serial.available() > 0)
  {
    flase = 1;
    for (int i = 0; i < 7; i++)
    {
      rec = Serial.read();
      Serial.print(rec ); // 打印结果到串口监视器
    }
    // 读取模拟量值Pin);
    outputValue = rec[5];
  }
  analogWrite(analogOutPin, outputValue);
  delay(20);
}
//读取键值程序
char getkey(){
    char key = 0;
    for(int column = 0;column < numC; column++){
      digitalWrite(colPins[column],LOW);
      for(int row = 0 ;row < numR; row++){
        if(digitalRead(rowPins[row]) == LOW){ //是否有按键按下
          delay(debounceTime);
          while(digitalRead(rowPins[row]) == LOW)  //等待按键释放
            ;
          key = keymap[row][column];   
        }
      }
      digitalWrite(colPins[column],HIGH); //De-active the current column
    }
    return key;
  }


本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2017-7-6 10:33:06 | 显示全部楼层
走过路过,进来给点建议
回复 支持 1 反对 0

使用道具 举报

发表于 2017-11-4 01:31:59 | 显示全部楼层
问下楼主,上位机怎么用啊?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-18 12:57 , Processed in 0.041845 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表