玩转树莓派2017-07-17 18:59

软件与工具资源

毕业杂文

树莓派操作使用

  • 布署文件
    /boot/config.txt

  • ip地址配置文件
    /etc/network/interfaces

  • DHCP配置文件(倘使选用静态ip,要求动用下列命令清除)
    sudo rm /var/lib/dhcp/*

  • 网络名称配置文件
    /etc/hosts

  • 计划命令
    sudo raspi-config

  • 应用视频头拍照
    rapistill -o xxx.jpg

  • 选用视频头视频(ms)
    raspivid -o video.h264 -t 10000

  • 将树莓派作为网络存储服务器
    sudo apt-get install samba
    sudo apt-get install samba-common-bin
    为samba添加用户 sudo smbpasswd -a xxx
    修改 /etc/samba/smb.conf 第一行的工作组
    最下方添加

[USB]
path=/media/NAS
comment= NAS driver
valid users=xxx
writeable=yes
browseable=yes
create mask=0777
public=yes

samba restart

  • 网络打印服务器 CUPS
    sudo apt-get install cups
    sudo usermod -a -G lpadmin xxx
    //伸张一个浏览器用于界面管理,使用631端口
    sudo apt-get install iceweasel
    治本界面

  • 屏幕截图 scrot
    sudo apt-get install scrot

  • 延时截图
    scrot -d 5

  • 鼠标截屏
    scrot -s

  • I2C通信工具
    sudo apt-get install i2c-tools
    sudo i2cdetect -y 1//借使是旧版本的话把1改为0

  • 串口检测工具 minicom
    sudo apt-get install minicom
    minicom -b 9600 -o -D /dev/ttyAMA0
    第一要启用local echo功用才能看到反映,按Ctrl+A,Z,E

基于微型电脑的人脸识别门禁系统规划

树莓派硬件

  • 有惊无险规范
  • GPIO引脚上的电压不可以跨越3.3V
  • 每个输出电流不超越3mA
  • 电源不高于5V
  • 5V供电电源输出总电流不超过250mA
  • 最简便的电压转换办法,利用470欧和220欧电阻串联分压,也可以按百分比放大到47k,22k以减低电流损耗
    -GPIO输出能力汇总参考小说
  • 树莓派配件
  • Raspberry
    Squid
    ,内置了电阻的LED灯和按钮配件。有pyton
    squid库
  • 可以应用电机驱动装置RasPiBobot Board
    为树莓派供电,电机驱动板python库raspirobotboard
  • 传感器接口板[SenseHAT],python库为sense-hat或者SenseHAT pro,
    explorerhat
  • [计量模块](https://www.raspberrypi.org/blog/raspberry-pi-compute-module-new-product/)
  • Pi Plate原型版用于焊接元件以快速支付
  • 自行设计符合HAT标准的原型板,在config文件中启用
    dtparam=i2cvc=on,烧写EEPROM工具
  • 灌木丛派HAT标准硬件设计指南
  • 开关互换电配件 PowerSwitch Tail II(光隔加继电器模块)
  • 精确控制伺服电机,可以利用Servo
    Blaster库
  • 与此同时控制多台伺服电机,可以动用Adafruit的伺服电机HAT(hardware at
    top),Adafruit文档
  • 决定直流电动机,可以透过L293D类似芯片搭建H桥,或者使用SparkFun的H桥模块。
  • 决定步进电机可以行使RaspiRobot
  • 监测移动可以使用被动红外运动检测模块PIR
  • 测量电阻值可以因而连接电容通过测量电容充电时间的法子来已毕
  • 树莓派没有松开模拟量输入,采集模拟量能够通过MCP3008恍如的ADC模块完毕
  • 测量温度可以运用不精确的TMP36依然高精度的数字温度传感器DS18B20
  • 测量温湿度与气压的Sense
    HAT
  • aLaMode板(带GPIO接口的Arduino平台),由于aLaMode设计缺陷,要求在树莓派的以太网口缠一点绝缘胶带处理。
  • 树莓派控制硬件视频

亚洲必赢app官方下载 1

树莓派飞快利用

  • 传媒主旨,安装OpenELEC_Pi2系统,使用kodi
  • Office办公软件 abiword gnumeric
  • 浏览器 chromium-browser
  • 网络视频头服务器,安装motion
  • 配置

sudo vim /etc/motion/motion.conf
#将 daemon off改为on
#webcam_localhost=on改为off
sudo vim /etc/default/motion 
#将sart_motion_daemon=no 改为yes
  • 启动 service motion start

  • 运转老式模拟器游戏 安装 stella

  • 安装JDK,运行minecraft(在树莓派3中该软件已经设置了)

    sudo apt-get install openjdk7-jkd(版本可能需要更新到8)
    wget http://getspigot.org/spigot18/spigot_server.jar
    java -Xms512M -Xmx800M -jar spigot_server.jar nogui
    #sudo vim eula.txt 
    #修改版权文件eula=false 改为true
    
  • 运转游戏 Open
    Arena
    (很暴力)

  • 收音机发射器 安装pifm库,须要在GPIO引脚4上边接根短导线当天线

    mkdir pifm
    cd pifm
    wget http://www.icrobotics.co.uk/wiki/imagies/c/c3/Pifm.tar.gz
    tar -xzf Pifm.tar.gz
    sudo ./pifm sound.wav 103.0 (待播放文件和频率)
    
  • 图像处理 GIMP
    sudo apt-get install gimp

  • 听听互联网广播 vlc

  • gps模块 gpsd 和gpsd-clients ,命令,cgps -s,xgps

  • 与arduino通讯可以使用pyserial串口或者给arduino 安装 PyFirmata固件

亚洲必赢app官方下载 2

Linux命令参考

  • 查看ip地址
    ifconfig (书中这一个命令已经过期了)
    ip a

  • 在系统启动时自动执行脚本
    修改 /etc/rc.local
    在第一行添加例如
    /user/bin python /home/pi/my_program.py &
    ** & 符号用于提醒后台运行,否则将不能进去系统,格外主要**

  • 让脚本机关运行
    /etc/init.d/my_server(my_server为自定义的台本文件)

sudo chmod +x /etc/init.d/my_server (为文件添加运作权限)

  • 限期自动运行脚本 crontab -e

  • 找寻效果 find /home/pi (启动目录) -name abc.py

  • 翻开历史记录命令history !x(执行历史记录中第x条)

  • 列出usb设备 lsusb

  • 将指令输出到文本 ls ->abc.txt ->为重定向

  • 老是文件 cat a.txt b.txt->c.txt

  • 管道与正则表达式 ls *.py | grep Jun

  • 藏匿输出 ls -> /dev/null

  • 后台运行 abc.py &, 回到前台 fg

  • 别名 alias l=’ls -a’

  • 使文件马上生效 source .bashrc

  • 修改时间 sudo date 010203042031(MMDDHHMMYYYY)

  • 存储空间 df -h

亚洲必赢app官方下载 3

Python机器视觉

  • 安装SimpleCV

sudo apt-get update
sudo apt-get install ipython python-opencv python-scipy
sudo apt-get install python-numpy python-setuptools python-pip
sudo pip install svgwrite
sudo pip install https://github.com/sightmachine/SimpleCV/zipball/master
运行simpleCV
  • 动用python和树莓派录像头的主次示例

import picamera
from SimpleCV import *

def get_camera_image():
    with picamera.PiCamera() as camera:
        camera.resolution=(1024,768)
        camera.awb_mode='off'
        camera.capture('tmp.jpg')
    return Image('tmp.jpg')
  • python的picamera文档资料
  • 边缘检测,边缘和章程
    canny边缘,thresh确定边缘所需长度,distance圆形之间的相距

SimpleCV:1>c=Camera()
SimpleCV:2>i=c.getImage()
SimpleCV:3>i.show()
SimpleCV:4>i2=i.invert()
SimpleCV:5>i2.show()
SimpleCV:6>coins=i2.findCircle(canny=100,thresh=70,distance=15)
SimpleCV:7>coins
SimpleCV:8>coins.draw(width=4)
SimpleCV:9>coins.show()

from SimpleCV import *
c=Camera()
while True:
    i=c.getImage().invert()
    coins=i.findCircle(canny=100,thresh=70,distance=1)
    print(len(coins))

1. 课题意义及目的

python 控制树莓派硬件

  • 开闭LED,首先必要python有最佳用户权限以调用RPi.GPIO库,sudo python
    led_blink.py才能运行

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.OUT)
try:
    while(True):
        GPIO.output(18,True)
        time.sleep(0.5)
        GPIO.output(18,False)
        time.sleep(0.5)
finally:
    GPIO.cleanup() #安全模式,使GPIO端口处于输入状态以避免短路
  • **PWM输出 **

import RPi.GPIO as GPIO

led_pin=18
GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin,GPIO.OUT)

pwm_led=GPIO.PWM(led_pin,500)
pwm_led.start(100)

while True:
    duty_s=input("Brightness input (0-100):")
    duty=int(duty_s)
    pwm_led.ChangeDutyCycle(duty)
  • ** 带有GUI的PWM控制程序**

from tkinter import *
import RPi.GPIO as GPIO
import time

led_pin=18

GPIO.setmode(GPIO.BCM)
GPIO.setup(led_pin,GPIO.OUT)

class App:
    def __init__(self,master):
        frame=Frame(master)
        frame.pack()
        self.check_var=BooleanVar()
        check=Checkbutton(frame,text='Pin 18',
            command=self.update,variable=self.check_var,
            onvalue=True,offvalue=False)
        check.grid(row=1)
    def update(self):
        GPIO.output(led_pin,self.check_var.get())

root=Tk()
root.wm_title('On/Off Switch')
app=App(root)
root.geometry("200x50+0+0")
root.mainloop()
  • ** PWM输出**

import RPi.GPIO as GPIO
import time

led_pin=18

GPIO.setmode(GPIO.BCM)

#回调函数
def my_callback(channel):
    print('You pressed the button')

GPIO.setup(led_pin,GPIO.IN,pull_up_down=GPIO.PUD_UP)
#bounce time是GPIO库内置的防抖功能
GPIO.add_event_detect(led_pin,GPIO.FALLING,callback=my_callback,bouncetime=100)

i=0
while True:
    i=i+1
    print(i)
    time.sleep(1)

from rrb3 import *
import time

rr=RRB3(12.0,12.0) # battery,motor

try:
    while True:
        delay=input("Delay milliseconds between steps:")
        steps=input("How many steps forward?")
        rr.step_forward(int(delay)/1000.0,int(steps))
        steps=input("How many steps backward?")
        rr.step_reverse(int(delay)/1000.0,int(steps))
finally:
    GPIO.cleanup()
  • 运用pygame检测键盘和鼠标移动

import pygame
import sys
from pygame.locals import *

pygame.init()
screen=pygame.display.set_mode((640,480))
pygame.mouse.set_visible(0)

while True:
    for event in pygame.event.get():
        if event.type==QUIT:
            sys.exit()
        if event.type==KEYDOWN:
            if chr(event.key)=='q':
                sys.exit()
            else:
                print("Code: "+str(event.key)+ " Char: "+chr(event.key)+"\n")
        if event.type==MOUSEMOTION:
            print("Mouse:(%d,%d)"%event.pos)

随科技(science and technology)的不停进步,安全性的须求也不止加强,IC卡等历史观地位鉴别工具已无法满足社会急需。所以从通用性、安全性、成熟性和造价性等多位置综合考虑,琢磨新的辨别工具是一个一定的方向。基于人脸识其他门禁系统的规划,可以增强思想意识安保行业的安全性、方便性、直观性等,最为有效的杜绝了门禁管理中的人为因素,丰盛展现了门禁管理的人为智能性,幸免不须要的安全隐患和人员纠纷。因此本次完成学业设计选用了人脸识别门禁系统的钻研与落到实处,以保证门禁数据的真正,真正到位安全、方便和直观的门禁管理,从而进一步提升集团、仓库、家庭等地的安保程度和管理稳定性。

物联网与程序示例

这一次安顿将以小型电脑为着力,需采用恰当的电源模块、检测模块、、数据存储模块、键盘模块、展现模块和声光报警模块,完结人脸识别系统的检测并报警处理的统筹。必要可以将出入门禁系统的人口面部举行识别,能够在人脸数据匹配预存数据库资料时起步门禁系统中开门系统,当人脸数据不匹配预存数据库资料时启动门禁系统中闭门系统,完成防备防盗的法力,创建平安卓绝的生存工作环境。

2.重中之重任务

(1)查阅资料,精通人脸识别门禁系统的原理和主旨组成,提议系统总体设计方案。

(2)通过学习完毕的相继控制硬件电路设计(如检测模块,A/D转换模块,声光报警模块,系统电源模块等)。

(3)已毕人脸识别门禁系统的软件设计。

(4)完结人脸识别门禁系统的调试、仿真和钱物制作。

(5)落成设计表达书。

据悉微型电脑(树莓派)的人脸识别门禁系统

摘 要

随科学和技术的无休止升华,社会持续的发展,人们的我安全意识和必要也再持续增加,IC卡等历史观地位鉴别工具已不可能满意社会须要。所以从通用性、安全性、成熟性和造价性等多地点综合考虑,研讨新的鉴别工具是一个必然的动向。为可见加强思想意识安保行业的安全性、方便性、直观性和管事的堵塞了门禁管理中的人为因素,通过人工智能格局,防止不须要的安全隐患和人口纠纷。

提出一种基于微型电脑(树莓派)的人脸识别门禁系统,该系列经过使用人脸识别云服务可以实时对人士进行辨析鉴别,以担保门禁数据的真实性,真正完结安全、方便和直观的门禁管理,从而进一步升高集团、仓库、家庭等地的安保程度和管理稳定性。文中详细描述了该系统的搭建和促成进度,为有关制品提供了一套很好的缓解方案。对所设计的体系开展了模拟测试,其测试结果高达了设计目的。

根本词: 微型计算机(树莓派),人脸识别,云服务,Python

目录

第 1 章 绪 论

1.1 研商背景

趁着社会的升华,安全教育持续的加深,人们的巴中防备意识也日渐赠强,那中间不仅包含个人安全,还涉嫌到了财产和文化产权的保安,安检的急速,贸易的风调雨顺流通等方面的需求大增,那种生物

由此可设计出人脸识别门禁系统的总体结构框图,如图2-1所示:

亚洲必赢app官方下载 4

图2.1 人脸识别门禁系统的总布局框图

这一次安顿中测试及最终利用,平素利用Python2.7编程语言对袖珍电脑(树莓派)系统开展支付和设计,其中人脸识别调用了face++的API,
官网提供了基于Python的SDK,该语言的可读性高很符合本系统的支出。本系统全部协会图如上。本地终端为小型电脑(树莓派),云服务选取了FACE++人工智能开发平台。

2.2连串关键成效达成

本随笔中所设计的体系是对人脸图像举行拍卖识别并与门禁系统同盟起到平安防盗的基本功用。工作原理是第一将三张待检测人员的肖像存储到树莓派文件系统,执行此段程序时,调用face++的detectAPI将三张照片中的人脸音讯存储在开发者账号,然后实施search的API,对当今进展的人脸识别程序中拍摄的肖像进行拍卖,检测照片中的人脸音讯并与前边上传的人脸新闻比较,并赶回相似度最高的人脸音信。大家在程序中只领到confidence的值,即人形容似度。当触摸开关被按下,程序会生出警报LED闪烁,接着举办一张人脸的征集。并将此照片与已经上传的三张相片做比较。判断出一般的人脸。当相似度大于70%,则开门(电机正转开门
、甘休并发生警报声、电机反转关门)。

系统由小型电脑(树莓派),驱动模块,检测模块,彰显模块,报警模块,电源模块等整合。系统包括按键,用户可以透过按键触发人脸识别功效;系统有着采集和检测人脸功用,可以当进入人口同盟成功时,开启大门,同时报警装置启动;当进入人口合营战败时,大门不开启以维持平安。

在本规划中,系统第一模块各自的功能如下:

(1)主控模块。在本陈设中最首要起到集中分配的功力,不仅须要及时采集人脸图像,调用API处理图像,同时还要提供录像头检测、驱动芯片、屏幕等数字器件的干活信号。

(2)按键模块。系统的输入部分,已毕人机交互。通过接受触控按键的电平新闻,使得微型电脑(树莓派)得到要求的数据。

(3)驱动模块。厂门电极作为大门开闭的长河控制的控制元件,其驱动紧要由驱动芯片完成。通过决定大门电机正转和反转,达成对大门的开闭控制。

(4)显示模块。以一而再一台微机屏幕即可

(5)系统电源模块。系统电源模块主要担负给系统提供符合必要的电流与电压,由于微型电脑(树莓派)使用低压直流电压,就须要将两节AAA电池18650电源7V转换为符合必要的电压、电流。从而使整个系统有持续的供电保障。[4]

本系统的宏图具有自动门禁系统的性状。待检测人员须求用手按下触摸开关,进而触发人脸识别。系统将对其进行雕塑并将图像发送至云端服务开展处理,待处理完之后微型电脑(树莓派)对回到的比对数据结果开展判定。要是比较成功,则驱动步进电机开头转动。系统的实时性是用户体验的要紧因素,系统健康办事时待识其旁人口感觉到不到卡顿境况,实时性卓越。

第3章人脸识别门禁系统硬件设计

3.1主控模块

亚洲必赢app官方下载 5

图3.1 主控模板实物图

此次安插的主控模块是选取小型电脑──树莓派3代B型主板。树莓派3代B型主板,该主控板模块的优势是装有完美的正经模块伸张性,主板上预留的接口可周详衔接与之配套的树莓派500万像素专用录像头、7英寸液晶触摸屏、Sense
Hat传感器模块等。除了可以在爱好者论坛下载网民大神们做好的序列包之外,近日仍是可以直接购买预装了灌木丛派代3代B型主板专用NOOBs系统的MicroSDHC卡。说到此地就又促生了灌木丛派代3代B型主板的愈加优势,那便是与微软的结缘,微软为该产品生产了与之适配的Windows
10
IoT版操作系统,用户可以利用到进一步熟稔的UI,使得通过规范扩张模块和GPIO接口伸张模块操作变得简单,IP等商议的配置也变得进一步简明,同时驱动又在不断更新,不断完善,所以不要再去考虑重新开发Windows的驱动程序,以上那么些与树莓派代3代B型主板的结缘,对新入门的玩家以及互联网开发者来说是意义非同小可的。

关键包蕴以下几点:

【Raspberry Pi 3 Model B】

· BCM2837

· 64位的1.2GHz四核ARM Cortex-A53

· 1GB内存

· 10/100自适应网卡

· 802.11n WiFi有线网卡

· 低耗电蓝牙5.04.1 (BLE)

· HDMI接口

· USB 2.0接口 x 4

· MicroSD 卡插槽

· 3.5 mm 音频输出接口

· 40PIN GPIO接口

· CSI视频头接口

· DSI显示接口

· 升级后的电源管理序列,以便利用越来越多耗能的外设(须用2.5A以上电源供电)
树莓派3代B型是一款基于ARM的袖珍电脑主板,以SD/MicroSD内存卡举行仓储,该主板提供USB接口和以太网接口,可以再而三键盘、鼠标和网线,该主板具备所有PC的基本功效,例如:高清视频播放、电子表格书写、玩游戏等众多意义,还整合了摄像模拟信号的电视机输出接口和HDMI高清摄像输出接口。
树莓派将Python作为首要编程语言,帮助Java、BBC BASIC (通过 RISC OS
影象或者Linux的”Brandy Basic”克隆)、C
和Perl等编程语言。本规划使用的是最新树莓派官方系统。是基于debian的一种linux32位操作系统。本次布置使用系统中装置的python2.7周转程序。

3.2检测模块

3.2视频头模块实物图

本次安顿的检测模块是利用树莓派专用500W像素视频头。该录像头提供了四个应用程序,分别为:raspistill、raspivid、raspistillyuv。其中
raspistill 和 raspistillyuv 卓殊相像,并且都是用来捕捉图像,而 raspivid
用于捕捉视频。

应用程序使用了四个OpenMAX(mmal)组件:camera(视频)、preview(预览)、encoder(编码)、null_sink。所有应用程序均采纳了照相组件,raspistill
使用了图像编码组件,raspivid 使用了视频编码组件,raspistillyuv
没有应用编码组件,而是一向将 YUV 或 RGB
从雕塑组件输出到文件。所有应用程序均基于命令行方式运行,通过 OpenMAX 的
mmal API 进行编辑。大家在陈设中结合Opencv调用录像头举办录像操作。

视频头电路板与树莓派通过一条 15
芯的排线举办连接。具体连接操作如下:先将树莓派上接连座两端卡扣拉起,再把排线插入座中,并竖直,然后按下两端的卡扣。录像头电路板连接同上。

3.3 驱动模块

当输入信号相对而言相比薄弱时,相应功率较小不能正常工作。驱动模块实质是透过加大功率,从而知足负载额定功率使得负载可以正常工作,从而可以响应微弱的输入信号。微型电脑(树莓派)上有IN1,
IN2, IN3,
IN4三个接口,根据材料,设置为低电平就可以使得,用杜邦线分别将IN1,IN2,IN3,IN4和GPIO
21(Pin 40),GPIO 20(Pin 38), GPIO 16(Pin 36), GPIO 19(Pin
35)举办连接。每便将七个GPIO端口按下表依次安装好电平后,可以sleep几十皮秒来决定转速

图3.3 步进电机驱动原理

亚洲必赢app官方下载 6

图3.4 树莓派GPIO编码图

3.3.1 步进电机工作规律

在不超越额定负载时,脉冲信号的频率控制电机转动的快慢、脉冲数决定电机止步的职责,均不会因为负载变化而境遇其他的熏陶[8]。步进电机每走一步,就要加一个激磁信号,借使适当的信号,转子以一定的步数转动;无激磁信号输入时,转子保持自然的职位。步进电机工作的基本原理如下:

(1)换相顺序的控制

电机通电后,主要通过脉冲分配来落到实处工作相序的转变。以步进电机四相八拍工作方法为例,须要各相依据A-AB-B-BC-C-CD-D-DA的逐一来工作,控制脉冲就要依照该逐个来控制A、B、C、D相的通断。

(2)步进电机转向的变更

安分守纪既定工作方法正向转动的一一来给电机通电,电机就会正向转动;不过根据相反顺序来通电的话,电机会向相反方向转动。

(3)步进电机转动速度的改动

步进电机每一次接受到一个操纵脉冲,它就会相应转动一步,转动固定角度。由此步进电动机的团团转速度就由两脉冲的间隔长短来支配,即是两脉冲发送间隔越长,相应的步进电动机转动就越慢。如若要落到实处对步进电机转动速度调节,就要求改变单位时间内决定模块发出的脉冲个数。

步进电机驱动方法有四相四拍运行情势,即AB-BC-CD-DA-AB;四相八拍运行方式,即A-AB-B-BC-C-CD-D-DA-A。

四相步进电机,供电电源为5伏,5伏电源的正极性端连接电机公共端,而
5伏电源的接地端必要各自和电机剩余的四根控制线顺次接触,可以发现电源地线与电动机控制线每接触一下,步进电动机就会旋转一定角度,电机转动完整一圈的日子,恰好须要这么往返转悠的次数可以达标5次。因而可以测算出该步进电机的步进角度为

度。若四条控制线与电源地线接触的一一恰好相反,那么电机也就跟着向相反方向转动。

3.3.2 步进电机驱动电路

出于步进电动机的驱动电流的数值相对较高,所以单片机与步进电动机无法直接连接,平时使用专门的接口及驱动电路。驱动器可以应用功率相比高的复合管,如ULN2003,L298N,或者采购专用的步进电动机驱动器。驱动电路的行事景况是由控制信号来支配的,控制信号要求由主控模块,即单片机来发出。期望促成以下的步进电动机驱动必要:

(1)期望驱动电路提供的电流回涨和滑降速度可以相比快,那样可以使电流的波形尽可能的切近矩形波。

(2)期望驱动电路功率和频率相对相比较高,升高运行经济性。

单片机的输出电流太小,不可以直接连接步进电机,须求加驱动电路。对于电流小于0.5A的步进电动机,可以运用ULN2003类的驱动IC。驱动芯片ULN2003内部结构如图3.4所示。

亚洲必赢app官方下载 7

图3.4 ULN2003内部结构框图

ULN2003是由复合达林顿晶体管排列组合,使耐受电压比较高,允许通过电流较大。共有7对NPN达林顿管,分别为芯片7个控制单元,包含功率驱动单元、尊敬单元等。ULN2003用到DIP-16或者SOP-16双列16脚塑料包装,驱动单元可以与步进电动机直接耦合,连接方便,其数字逻辑电路为非门电路,取反控制。

选拔ULN2003作为电机驱动芯片,价格经济,且可以丰盛发挥作用,落成平稳使得。能够一贯通过电源来调节输出电压,可以直接用单片机的IO口提供信号,而且电路简单。芯片采纳单片机作为控制要旨,在先后相互调用的方面,越发的便宜灵活。

亚洲必赢app官方下载 8

图3.5 ULN2003引脚图

图3.5所示为驱动器引脚图,图左侧1~7引脚为输入端,有单片机直接决定,接单片机输出端,引脚8直接接地;左边10~16引脚为输出端,接步进电机,引脚9接电源+5V,要求时也足以什么都不接悬空而置,该驱动器可提供最高0.5A的电流。

ULN2003的首要性特征是:

(1)驱动ULN2003电流比较大。ULN2003可以较好的用于单片机控制的电路。

(2)ULN2003连接上拉电阻,在使得马达时可以增强其抵抗烦扰的力量。ULN2003的每多少个达林顿管视为一个单元,都会串联一定阻值的高值电阻可以一贯和TTL
或承载电压为5V的CMOS 装置连接 。

(3)ULN2003的输出采纳集电极开路,电流输出值比较大,可以直达500mA。由此可以用来驱动马达。

此外,ULN2003的极端参数分别如表3.1、3.2所列。

表3.1 ULN2003的终端参数

表3.2 ULN2003的顶点参数

接线时须求把步进电机电路图的青色线悬空,其他线接驱动板。要是驱动不起来,有可能接线不对或电压低。若是用单片机来支配此步进电机,则只需分别依次给各线自然时间的脉冲电流,电机便可连日来旋转起来。

ULN2003使得马达的电路图如下图3.6所示。由单片机P3.4—P3.7口经上拉电阻作为驱动芯片ULN2003的输入。COM端供电12V,输出端10至12引脚均接地。四相五线式步进电动机的A、B、C、D四相分别与ULN2003的输出端1C—4C三番五次,接收控制脉冲,完成控制。

图3.6 ULN2003使得马达的电路图

3.3.3 步进电机的选型

步进电机是一种越发用于地方与进程精确控制的卓越电机,即便同为电机件,步进电动机不一样于其余控制电机的最大特色是,它根本使用无反馈环节的开环控制,将微观的电脉冲信号转变为宏观电机转动的角位移或线位移。它通过数字来贯彻电机控制,控制信号以脉冲方式爆发,它所收受到的脉冲可以促使电机转动,即被转正为对应的角位移,所以固然给步进电动机一个卓殊的脉冲信号,它就接着动作一定角度,当使用单片机来控制步进电机相对简便易行易操作。绕在定子的圈子配置作为步进电动机相数分类的机要基于,主要可分为2相、4相、5等于;根据外部引线步进电机又被分为三线式、五线式、六线式等,但各体系型的马达其决定方式并没有爆发太大的变型,均运用脉冲信号举行驱动。

门禁系统的运动不必要加紧、减速进度,所需转速较低,所以步进电动机拔取自启动运行形式。自启动运行形式是指在使得马达旋转和终止时不经过加紧、减速阶段,而直白以使得脉冲速度启动和甘休的周转形式。同时,因为在起步、为止时存在一个始料不及的进程变化,所以那种办法须求较大的加、减速力矩。由于具体负载重量也会影响其是不是暴发过大的办事噪音,所以四相五线式步进电动机的载荷容量能够较好满意必要。别的,出于对电流、步距角、静转矩三大因素的设想,本安插选取四相五线式步进电动机来模拟门禁系统的操纵,可以直接插接方便使用。

3.4 报警模块

作为人脸识别门禁系统的设施,声光报警电路不可或缺。在系统办事中,每当人脸数据匹配成功时,便会触发蜂鸣器和发光二极管达成声光报警,使监督人士取得开启大门信号,反之则不报警。半导体二极管和一般性二极管都是是类似的PN结结构,具有单向导电性,可以将电能转化成光能。
在将电流通到发光二极管之后,电子从N区运动到P区,并且从P区移动到N区的空穴在PN结附近与孔中的电子复合,N区域暴发荧光发光提示。

声光报警设计有些包含蜂鸣器和LED报警提示灯。声音报警电路如图3.11所示,由于微控制器驱动能力的I
/
O端口较低,所以必要充实蜂鸣器PNP晶体管驱动,可以让那一个蜂鸣器的鸣响听起来更响,更好地表明警报成效。为了防止不当的报警添加了三极管基电路,蜂鸣器只有在输出低时才会发出声音。

亚洲必赢app官方下载 9

图3.8 声音报警电路原理图

3.5 突显模块

统筹中为从自然程度上减小操作人士的工作量,特用电脑显示屏作为突显模块,电脑屏幕就不做过多讲演了。

3.6电源模块

本模块的意义是用来决定电源是还是不是进入工作情景。电源模块一般分为以下几有些:滤波电路模块、全波整流电路模块、电源变压器模块等。一般电源提供的是220V沟通电,经过门禁系统的电源模块中变压器的变压,变为直接能够供门禁使用的电压,然后举行全波整流,获得有终点脉冲的直流电,然后在滤波电路将有沟通成分的电压滤除,最终收获可供系统应用的直流电。但大家的宏图不须要如此大电流,电源直接是用两节充电锂电池18650共7v举行供电,所以不需求用稳压芯片。工作原理图如图3.1。

图3.9 电源模块原理图

第4章人脸识别门禁系统软件设计

4.1安装系统

软件部分:win32 DiskImager、SDFormatter、树莓派镜像文件

硬件部分:CF卡、读卡器

准备工作

1.16G的SDHC卡一张(树莓派3B专用micro
SD读取卡)2.下载树莓派系统镜像文件3.Windows下安装镜像的工具:Win32DiskImager

设置实战

1.解压下载的系统镜像压缩文件,得到img镜像文件2.将TF内存卡使用卡托或者读卡器后,连上电脑3.解压并运行Win32DiskImager工具4.在软件中精选系统镜像的img文件,“Device”下抉择SD读取卡的盘符,然后点击“Write”然后就从头设置系统了,按照你的SD读取卡的速度,安装进度有快有慢5.装置收尾后会弹出成功对话框,表达安装就水到渠成了。

亚洲必赢app官方下载 10

图4.1 格式化软件工具

亚洲必赢app官方下载 11

图4.2连串烧录软件工具

先是把SDHC卡连接到电脑,打开SDFormatter.注意观看盘符不要误将其它SD闪存卡格式化。

接下去打开win32 diskimager.打开存放镜像的路径,点击“write” /“yes”
等待镜像烧录成功。

亚洲必赢app官方下载 12

图4.3 烧录成功唤醒界面

亚洲必赢app官方下载 13

图4.4 树莓派官方系统Pixel

4.2 配置汉语环境以及增加文件系统

树莓派3B默许是利用英文字库的,而且系统里没有预装中文字库,所以在locale司令员其改成汉语,也不会展示中文,只会显示一堆方块。因而须要手动来安装普通话字体。

ssh中输入以下命令:

设置进程中要是遇上(Y/n),都接纳y普通话字库安装到位之后,还亟需安装一个中文输入法。输入如下命令

同样的安装进度,安装完结后输入

然后选拔change_locale,在Default locale for the system
environment:中选择zh_CN.UTF-8,配置完毕将来,输入指令

重启完成好就足以在VNC连接上去后使用普通话显示和普通话输入法了,切换普通话输入法一样也是ctrl+space。

亚洲必赢app官方下载 14

图4.5 树莓派安装普通话

极端输入:sudo raspi-config 增加文件系统

亚洲必赢app官方下载 15

图4.6 树莓派增添文件系统

“Expand Filesystem”
回车后将SD空间扩大(重启后生效)。配置汉语环境如下所示。

亚洲必赢app官方下载 16

图4.7 树莓派设置汉语(一)

亚洲必赢app官方下载 17

图4.8 树莓派设置普通话(二)

亚洲必赢app官方下载 18

图4.9 树莓派设置汉语(三)

空格选中”zh_CN.UTF-8 “ 回车 “ok” 输入:sudo reboot 重启后生效

亚洲必赢app官方下载 19

图4.10 树莓派设置中文(四)

亚洲必赢app官方下载 20

图4.11 树莓派设置普通话(五)

4.3 RPI.GPIO搭建及使用介绍

本系统利用的是树莓派官方系统raspbian。系统预装了python和C编译器等软件。运行本次系统前须求对环境展开搭建。树莓派内核中一度编译自带GPIO的驱动,这次安插使用第三方编写好的库函数来形成具体的操作。python
GPIO 是一个小型的 python 库,可以协理用户达成 raspberry 相关 IO
口操作,不过 python GPIO 库还未曾接济 SPI、I2C 或者 1-wire
等总线接口。先安装 python-dev,输入以下指令。

sudo apt-get install python-dev

设置 RPi.GPIO,依次输入以下指令。

· 下载:$ wget

· 解压缩:$ tar xvzf RPi.GPIO-0.5.3a.tar.gz

· 进入解压之后的目录 :$ cd RPi.GPIO-0.5.3a

· 启动安装 :$ sudo python setup.py install

导入 RPi.GPIO 模块:

透过该操作,可以将模块名称映射为 GPIO,以便接下去你别的脚本举行利用。

导入模块并检查它是或不是导入成功,可以品尝:

针脚编号

眼下有三种格局得以由此 RPi.GPIO 对 Raspberry Pi 上的 IO 针脚进行编号。

首先种方法是应用 BOARD 编号系统。该办法参考 Raspberry Pi 主板上 P1
接线柱的针脚编号。使用该措施的亮点是无需考虑主板的校对版本,您硬件始终都是可用的事态。您将无需从新连接线路和转移您的代码。

其次种格局是运用 BCM 编号。那是一种较低层的行事格局 – 该办法参考
Broadcom SOC
的康庄大道编号。使用进程中,您一向要力保主板上的针脚与图片上标注的通道编号相呼应。您的台本可能在
Raspberry Pi 主板举办修订版本更新时不可能工作。

点名您所运用的法门(必须指定):

或者

Raspberry Pi 的 GPIO 上或者还要有多个本子/循环。由此,即使 RPi.GPIO
检测到某个针脚被装置为其余用途而非默许的情形(默许为输入),您会在品尝配置某脚本时收获警示音讯。禁用该警告音讯:

为每个用于输入或输出的针脚配置通道。配置为输入的坦途:

通道编号是根据您所利用的号码系统所指定的(BOARD 或
BC)。配置为出口的坦途:

大路编号是基于您所采取的数码系统所指定的(BOARD 或
BCM)。可以指定输出通道的初步值:

输入读取 GPIO 针脚的值:

大路编号是依据您所选拔的号子系统所指定的(BOARD 或 BCM)。)那将赶回 0 /
GPIO.LOW / False 或者 1 / GPIO.HIGH / True。

设置 GPIO 针脚的出口状态:

大路编号是基于您所拔取的号子系统所指定的(BOARD 或 BCM)。)

情形可以为 0 / GPIO.LOW / False 或者 1 / GPIO.HIGH /
True。在任何程序截至后,请养成清理用过的资源的好习惯。使用 RPi.GPIO
也同样需求这么。恢复生机所有应用过的通道状态为输入,您可以防止由于短路意外损坏您的
Raspberry Pi 针脚。注意,该操作仅会清理您的本子使用过的 GPIO 通道。

剧本截至后举行清理:

4.4 Opencv运行条件的搭建

率先进入Raspberry Pi系统,将树莓派连上网络,然后Ctrl + Alt
+t打开命令终端(直接点击终端图标可能会卡),要是终端窗口没有出现以来,从顶部职责栏可以找到,点开就好。首先是以下这几条创新命令,每趟单独实施:

sudo apt-get update

sudo apt-get upgrade

sudo rpi-update

下一场实施安装opencv的构建相关命令:

sudo apt-get install build-essential git cmake pkg-config

接下来是以下这几条命令安装图片工具包,每趟单独实施(网上有为数不少联名实施的,然而平日出现难点)

sudo apt-get install libjpeg8-dev

sudo apt-get install libtiff5-dev

sudo apt-get install libjasper-dev

sudo apt-get install libpng12-dev

接下来是视频I/O包:

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
libv4l-dev

下边安装GTK:

sudo apt-get install libgtk2.0-dev

然后安装优化函数的包:

sudo apt-get install libatlas-base-dev gfortran

接下来实施以下命令下载opencv3.0:

cd /home/pi

git clone https://github.com/opencv/opencv.git

cd opencv

git checkout 3.0.0

下一场安装opencv_contrib:

cd /home/pi

git clone https://github.com/opencv/opencv\_contrib.git

cd opencv_contrib

git checkout 3.0.0

接下来安装开发包:

sudo apt-get install python2.7-dev

下一场安装pip: SHAPE * MERGEFORMAT

wget https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py

然后安装virtualenv virtualenvwrapper:

sudo pip install virtualenv virtualenvwrapper

sudo rm -rf ~/.cache/pip

上边这么些手续不仅仅是命令了,打开~/.profile文件,我是运用vim打开的:

sudo nano ~/.profile(”~”符号树莓派键盘打不出来 用台式机SSH连上去)

开拓profile后,在那几个文件最终,添加以下内容后保存退出:

# virtualenv and virtualenvwrapper

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

然后实施上边那些命令:

source ~/.profile

接下来创立虚拟工作条件并跻身:

sudo mkvirtualenv LC

workon LC

肯定要力保进去刚刚成立的虚拟环境了,进入虚拟环境的标志是进入后命令的最前边(绿字后面)都会增添“(LC)”。

下边在虚拟环境中设置numpy:

pip install numpy

sudo rm -rf ~/.cache/pip/

pip install numpy

毫无疑问有限支撑在刚刚的虚拟环境下进行以下操作,如若新开了一个下令行窗口,那么就相继执行
source ~/.profile 命令和 workon LC 命令进入虚拟环境再实施以下操作。

推行以下命令来安装编译:

cd ~/opencv

mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE

-D CMAKE_INSTALL_PREFIX=/usr/local

-D INSTALL_C_EXAMPLES=ON

-D INSTALL_PYTHON_EXAMPLES=ON

-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules

-D BUILD_EXAMPLES=ON ..

施行以下命令开端正儿八经编译opencv3.0:

make -j4

编译完后开展设置:

sudo make install

安装后展开相关安插:

sudo ldconfig

配备完毕

此次布署重点选择opencv进行素描,确实是有点大材小用。可是经过opencv的行使,加深了对图形处理方面的概括认识和透亮。在统筹之余学会了opencv进行简短人脸识其他原理。

4.5 系统程序设计

主程序设计

流程图

触摸开关

流程图

摄像头

流程图

步进电机

流程图

第5章系统运行以及源代码分析

5.1 树莓派系统使用验证

树莓派系统:可以向来用屏幕进入系统桌面也可以远程桌面进入系统,或者putty软件SSH。本规划以远程桌面登陆为例。登陆路由器查询分配给树莓派的ip地址。打电脑的远程桌面软件。输入树莓派的IP地址,这一次布署中树莓派的IP是192.168.0.115。用户名为pi,密码:raspberry远程桌面进去系统后仍是可以再去老是本地wifi信号。

亚洲必赢app官方下载 21

亚洲必赢app官方下载 22

5.2 旷视FACE++ API使用验证

这一次安排对图像的拍卖是经过云服务来兑现的。紧假诺调用Face++的API来贯彻的相片中人脸的对峙统一。首先将三张相片上传树莓派或者用树莓派录像头采集三张照片。调用Detect
API进行人脸检测和脸部分析。识别出的人脸会给出face_token,用于后续的人脸比对等操作。当触摸开关出发实时拍照然后,调用Search
API在Faceset中找出与目的人脸最相似的一张或多张人脸。协理传入face_token或者直接传入图片展开人脸搜索。使用图片展开比对时会接纳图片中检测到人脸尺寸最大的一个人脸。

Sdk的facepp.py文件中包涵如下底层api接口提供大家采取。

_APIS = [

‘/detect’,

‘/detection/landmark’

‘/compare’,

‘/search’,

‘/faceset/create’,

‘/faceset/addface’,

‘/faceset/removeface’,

‘/faceset/update’,

‘/faceset/getdetail’,

‘/faceset/delete’,

‘/faceset/getfacesets’,

‘/face/analyze’,

‘/face/getdetail’,

‘/face/setuserid’

]

亚洲必赢app官方下载 23

图5.1 创建FACE++ API key

Detect API

亚洲必赢app官方下载,调用者提供图片文件或者图片URL,进行人脸检测和满脸分析。识别出的人脸会给出face_token,用于后续的人脸比对等操作。请小心,只对人脸包围盒面积最大的5个人脸举办分析,其余人脸可以行使Face
Analyze
API举办辨析。借使你须求动用检测出的人脸于继续操作,提出将对应face_token添加到FaceSet中。要是一个face_token三番五次72钟头没有存放在任意FaceSet中,则该face_token将会失效。借使对相同张图纸展开很多次人脸检测,同一个人脸得到的face_token是差其他。

Search API

在Faceset中找出与目的人脸最相似的一张或多张人脸。帮衬传入face_token或者直接传入图片进行人脸搜索。使用图片展开比对时会选拔图片中检测到人脸尺寸最大的一个人脸。

成功请求重回值示例:

亚洲必赢app官方下载 24

亚洲必赢app官方下载 25

5.3 系统调试及运行

完全流程:将三张待检测人士的肖像存储到程序所在目录,执行顺序时,调用face++的detectAPI将三张相片中的人脸音讯囤积在开发者账号,然后实施search的API对先后进度中拍摄的相片举办拍卖。检测照片中的人脸新闻与前边上传的人脸音信相比较,假使相似度达到百分之80之上再次回到相似度最高的人脸新闻。

亚洲必赢app官方下载 26

图5.2 程序目录

5.3.1顺序起首设置

首先将协调的照片上传到本文件夹并修改图片文件名,然后在代码上将三张待相比照片赋值给face_one、face_two、face_three多少个变量。并设置开展对照的相片名为customer.jpg。

face_one = ‘face_one.jpg’

face_two = ‘face_two.jpg’

face_three = ‘face_three.jpg’

face_search = ‘customer.jpg’

安装GPIO编码格局为board,GPIO13为输入方式,GPIO11,12,15,16,40为出口格局。

GPIO.setmode(GPIO.BOARD)

GPIO.setwarnings(False)

GPIO.setup(13,GPIO.IN)

GPIO.setup(11,GPIO.OUT)

GPIO.setup(12,GPIO.OUT)

GPIO.setup(15,GPIO.OUT)

GPIO.setup(16,GPIO.OUT)

GPIO.setup(40,GPIO.OUT)

在python程序中安装调用API的key和secret。

#http_url=’https://api-cn.faceplusplus.com/facepp/v3/detect

key = “xzFPqqR1q_fasM1D3s4yvUdcBoTovUMX”

secret = “4GXhLafqDOmnfQRxx-6ZlEVwQpOlZoW-“

api = facepp.API(key, secret)

5.3.2 各职能函数

#蜂鸣器,前面早已起来设置GPIO12为出口情势,此处bee()函数设置gpio12为干电平,延时0.5s前置为低。意味着当调用bee()函数时蜂鸣器鸣叫0.5s.

def bee():

GPIO.output(12, False)

time.sleep(0.5)

GPIO.output(12, True)

#步进电机,设置旋转角度为180°,closewise=1时,步进电动机顺时针旋转,closewise=0时,步进电动机逆时针旋转。步进电机驱动模块由树莓派的GPIO35、
GPIO36、 GPIO38 、GPIO40三个GPIO驱动。

def motor_open():

steps = 180;

clockwise = 1;

arr = [0,1,2,3];

if clockwise!=1:

arr = [3,2,1,0];

ports = [40,38,36,35] # GPIO 21(Pin 40) GPIO 20(Pin 38) GPIO
16(Pin 36) GPIO 19(Pin 35)

for p in ports:

GPIO.setup(p,GPIO.OUT)

for x in range(0,steps):

for j in arr:

time.sleep(0.002)

for i in range(0,4):

if i == j:

GPIO.output(ports[i],True)

else:

GPIO.output(ports[i],False)

#流水灯:开头设置已经将GPIO11、GPIO15、GPIO16为出口格局。分别把四个LED发光二极管的长引脚接到那三个GPIO上,短引脚接至负极。通过把相应的引脚置为高电平延时0.3s前置为低,循环点亮四个小灯。

def light():

GPIO.output(11, True)

time.sleep(0.3)

GPIO.output(11, False)

GPIO.output(15, True)

time.sleep(0.3)

GPIO.output(15, False)

GPIO.output(16, True)

time.sleep(0.3)

GPIO.output(16, False)

#升迁做好准备
,一段时间后开展视频。在终端窗口输出提醒新闻。并调用light()来完成LED发光二极管的流水灯效果。并调用bee()让蜂鸣器发出提醒声音。

def prep():

print(“欢迎使用人脸识别检测系列 请面对雕塑头 5分钟后开展人脸采集”)

light()

print(“************************5*********************”)

light()

print(“************************4*********************”)

light()

print(“************************3*********************”)

light()

print(“************************2*********************”)

light()

print(“************************1*********************”)

bee()

#调用拍照函数时流水灯点亮,然后使用opencv利用录像头采集一张照片,将照片保存为customer.jpg。

def take_photo():

light()

capture = cv2.VideoCapture(0)

if not capture.isOpened(): print(‘Capture failed because of camera’)

ret, img = capture.read()

cv2.imwrite(‘customer.jpg’, img)

print(“***********************肖像采集截止请稍等*************************”)

print ‘=’ * 60

#函数调用API将本地存储的相片举办人脸检测和脸部分析。识别出的人脸会给出face_token,用于后续的人脸比对等操作。然后调用searchAPI在Faceset中找出与目的人脸最相似的一张或多张人脸。举行比对时会选择图片中检测到人脸尺寸最大的一个人脸。

亚洲必赢app官方下载 27

接触检测的监测函数det(),程序运行时开首检测触摸开关是或不是被触发。当触摸开关被触发时会发送高电平信号给树莓派。当检测GPIO13为真时,在极端输出确定音信,并调用主函数举办相比操作。主程序运行停止后一连检测是还是不是被触发。一向循环引导程序退出。

def det():

while True:

if GPIO.input(13)==True:

print “confirm”

main()

else:

print “NO BODY”

time.sleep(2)

det()

领到API.search重回结果,并将赶回的音讯保存到s,并从中提取相似度的值。转换s[0][‘configdence’]为整形变量赋值给m。当m大于70时输出通过检测并调用步进电动机转动。

5.3.3百般处理

亚洲必赢app官方下载 28

当检测时由于没有拍摄到健康的人脸照片,程序则可能由于并未健康的人脸库而报错。此时须将下图中ret=api……注释掉,并将上一行的笺注符号“#”取消。

亚洲必赢app官方下载 29

图5.7 处理报错音信(一)

封存并上传后再度运行。清除无用的人脸库。

下一场再将代码修改为伊始代码,再度开展科学的人脸采集,程序才方可健康运作。

亚洲必赢app官方下载 30

图5.7 创造一个faceset

那种方法缓解报错是复杂的一个经过。由于目标只是删除无用的人脸库,所以新建了一个debug.py的python文件。当检测败北未来执行一回debug.py即可。

import facepp

#http_url=’https://api-cn.faceplusplus.com/facepp/v3/detect

key = “xzFPqqR1q_fasM1D3s4yvUdcBoTovUMX”

secret = “4GXhLafqDOmnfQRxx-6ZlEVwQpOlZoW-“

api = facepp.API(key, secret)

# 成立一个Faceset用来存储FaceToken

# create a Faceset to save FaceToken

def main():

api.faceset.delete(outer_id=’detect’, check_empty=0)

#ret = api.faceset.create(outer_id=’detect’)

#print_result(“faceset create”, ret)

main()

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图