树莓派常用设备使用

介绍

开发 Zero 一体相机的初衷是基于兴趣,还有就是树莓派 Zero相较于其它版本够便宜,且体积小巧,可以满足制作常规应用,比如:简易拍照相机,延时拍照相机,视频监控,遥控小车,等。唯一遗憾的就是上高级点的应用性能就不够用了,但如果性能上去了,功耗也就跟着上去了,就不适合用电池供电,所以也就没必要一味追求性能,够用就好。先说说树莓派 Zero W 和 Zero 这两个版本,带 W 的是带 WIFI 功能,不带 W,就是没有WIFI 功能,如果是用来做常规拍照相机或延时相机应用,树莓派 Zero 不带 WIFI的版本,会更加省电,使用电池待机时间就更长,如果需要联网,可以使用下面的方案,外接 USB网卡,需要插上,不需要拔下就好。Zero W 版本略过。

image

后续会开发和 Zero 一体相机 配套的小车底盘,安装上去就是一台 高清视频小车,更新中。。。。。。。

装配后正面效果图

image

装配后反面未安装电池效果图

image
  1. 连接摄像头座
  2. USB 电源接口.也是电池充电接口.给电池充电时.最好给树莓派关机
  3. 树莓派 USB 接口
  4. 树莓派 HDMI 接口
  5. 电池供电开关.往左拨动为关.往右拨动为开
  6. 电池充放电芯片
  7. 4 颗电池电量指示灯
  8. 连接在 GPIO23(BCM 编码)上的 LED 灯.可用作功能状态指示灯.比如按键按下拍照.指示灯亮起
  9. DS1307 RTC 时钟芯片
  10. 连接在 GPIO18(BCM 编码)上的按键.可用作摄像头拍照按键或树莓派关机按键.可自定义
  11. 电池接入座子
  12. 500 万高清 66 度视角摄像头
  13. GPIO 扩展连接器.通过此连接器把树莓派上的各接口引出.连接器的下方为序号 1.连接器的上方为序号 24.
image

装配安装有显示屏的正面效果图

image

安装电池和 500 万 120 度视角摄像头反面效果图

image

安装电池和 500 万 120 度视角摄像头反面效果图

image

树莓派 Pi Zero / W 一体相机安装小车底盘上的效果图

image

小车底盘功能介绍

带超声波测距模块,带 5 路循线传感器,带锂电池充放电电路,板载光耦隔离电路,预留 GPIO 扩展接口。可使用树莓派 Pi Zero/W一体相机的电源给小车供电,也可外接电池给小车供电。另外还可以用 1 台 Pi Zero / W 一体相机带显示屏,通过显示屏板上的按键,控制另一台 Pi Zero / W 一体相机小车,具体玩法,后续更新。。。。

关于系统,因树莓派 Pi Zero / W 的 CPU 性能不高,所以推荐刷树莓派的标准精简系统或者无桌面系统

设置网络方法

我们进入内存卡的 boot 分区内,新建一个名为 wpa_supplicant.conf 的文件,然后往里面写入如下内容后保存:进入系统后再设置网络也是输入以下内容 终端输入: sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

 network={
 ssid="WiFi-A"
 psk="12345678"
 key_mgmt=WPA-PSK
 priority=1
 }

提示:树莓派 Pi Zero 不带 WIFI 版本联网需要外接 USB 无线网卡

然后把 SD卡插上树莓派,连接好显示器和鼠标键盘打开电源开关开机,如果电池没电也可直接通过外部给树莓派供电如果安装的是树莓派有桌面系统,直接可以通过桌面右上角连接WIFI 上网,开启 SSH 就可以局域网通过 putty 控制 如果安装的是无桌面系统,开机后输入登陆用户名和密码,默认用户名:pi 密码:raspberry

进入命令终端:输入 sudo raspi-config 进行系统默认设置修改,选择第 5 项 Interfacing Options 进入

image

image

开启 P1-P8 所有功能,如果安装的是无桌面系统,P3 就选择默认关闭状态即可。完成设置后,重启树莓派 Pi Zero / W

常规设置

Change Timezone 设置中国时区
Asia
Shanghai
Advanced Options
Expand Filesystem 扩展 SD 卡
完成后保存,重启树莓派
如果树莓派重启后,连接上网络,可以做一下下列操作,比如更新,安装常用程序,设置一下 RTC,等操作。

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install -y gpac //包含MP4Box视频转化工具
sudo apt-get isntall -y mencoder //图片转视屏工具
sudo ape-get install -y fswebcam //Usb摄像头拍照
sudo apt-get install -y i2c-tools //管理I2C总线设备
i2cdetect 1 //查看I2C信息

RTC闹钟

/etc/modules写入

i2c-dev
i2c-bcm2708

/etc/rc.local写入

sudo modprobe i2c-dev
sudo modprobe i2c-bcm2708
echo "ds1307 0x68" | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -r #读入RTC时间
sudo hwclock -s #写入系统

sudo apt-get -y installl python #用python编程经常遇到代码缩近问题,安装这个工具会自动补全,避免一些格式错误
安装wiringPi 新版本已默认安装,可忽略。通过gpio -v查看是否安装

若无请安装

sudo apt-get -y install git
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull
./build

gpio- v #C查看GPIO版本信息
gpio readall #读取GPIO状态

显示器设置

官方地址参考参考安装

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar -zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60
sudo ./configure
sudo make
sudo make install

#python安装
sudo apt-get update
sudo apt-get install -y ttf-wqy-zenhei
sudo apt-get install -y python-pip
sudo pip install RPi.GPIO
sudo pip install spidev

/etc/modules添加一下内容

spi-bcm2835
flexfb
fbtft_device

新建/etc/modprobe.d/fbtft.cong写入内容

options fbtft_device name=flexfb gpios=reset:27,dc:25,cs:8,led:24 speed=40000000 bgr=1 fps=60 custom=1 height=240
width=240
options flexfb setaddrwin=0 width=240 height=240 init=-1,0x11,-2,120,-1,0x36,0x70,-1,0x3A,0x05,-1,0xB2,0x0C,0x0C,0x00,0x33,0x33,-1,0xB7,0x35,-1,0xBB,0x37,-1,0xC0,0x2C,-1,0xC2,0x01,-1,0xC3,0x12,-1,0xC4,0x20,-1,0xC6,0x0F,-1,0xD0,0xA4,0xA1,-1,0xE0,0xD0,0x04,0x0D,0x11,0x13,0x2B,0x3F,0x54,0x4C,0x18,0x0D,0x0B,0x1F,0x23,-1,0xE1,0xD0,0x04,0x0C,0x11,0x13,0x2C,0x3F,0x44,0x51,0x2F,0x1F,0x1F,0x20,0x23,-1,0x21,-1,0x29,-3

设置屏幕常亮。修改/etc/lightdm/lightdm.conf

# 找到一下内容
# xserver-command=X

# 修改为
xserver-command=X -s 0 -dpms

模拟鼠标

需要系统自带桌面

sudo apt-get install -y python-xlib sudo pip install PyMouse wget http://www.waveshare.net/w/upload/d/d3/Mouse.7z sudo apt-get install -i p7zip-full
7z x Mouse.7z

修改mouse.py文件

btn_up = 5
btn_down = 22
btn_left = 23
btn_right = 17
btn_key1 = 4
btn_key2 = 6

sudo python mouse.py 运行测试

开机自启

注意不要加到/etc/rc.local 中,因为 rc.local 在系统还没有进入桌面之前会执行,而 PyMouse模块在命令行界面运行的话会报错没有鼠标这个事件,所以我们需要执行如下:

cd .config/
mkdir autostart
cd autostart/

cat>local.desktop<<EOF
[Desktop Entry]
Type=Application
Exec=python /home/pi/mouse.py
EOF

重启即可查看效果

拍照应用

编写d.py文件

#!/usr/bin/env python
# coding=utf-8
# author:ksc

import RPi.GPIO as GPIO
import time
import os, sys
import serial

GPIO.setmode(GPIO.BCM)

#define GPIO pin
pin_btn = 18
pin_led = 23
pin_led2 = 22

GPIO.setup(pin_btn, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(pin_led, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(pin_led2, GPIO.OUT, initial=GPIO.LOW)

press_time = 0
count_down = 5
led_on = 1

def cleanup():
    '''释放资源,不然下次运行是可能会收到警告
    '''
    print('clean up')
    GPIO.cleanup()

def handleSIGTERM(signum, frame):
    #cleanup()
    sys.exit()  #raise an exception of type SystemExit

def onPress(channel):
    global press_time, count_down
    print('pressed')
    press_time += 1
    if press_time > 2:
        press_time = 1
    if press_time == 1:
        GPIO.output(pin_led, 1)
        GPIO.output(pin_led2, 1)
        print('system will restart in %s' % (count_down))

GPIO.add_event_detect(pin_btn, GPIO.FALLING, callback= onPress,bouncetime=500)

#signal.signal(signal.SIGTERM, handleSIGTERM)
try:
    while True:
        if press_time==1:
            press_time=0
            print "start restart"
            os.system("raspistill -o /home/pi/image/$(date +%Y%m%d%H%M%S).jpg -t 2000")
            #os.system("fswebcam -r 1280x720 --no-banner -S 50 /home/pi/camera/$(date +%Y%m%d%H%M%S).jpg")
            #USB camera
            #sys.exit()
            led_on=not led_on
            GPIO.output(pin_led, led_on)
            GPIO.output(pin_led2, led_on)
        GPIO.output(pin_led, 0)
        GPIO.output(pin_led2, 0)
        time.sleep(1)
except KeyboardInterrupt:
    print('User press Ctrl+C,exit;')
finally:
    cleanup()

命令行执行sudo python d.py
当按下开始键时LWD亮起,LED灭时拍照完成。上面代码保存在/home/pi/image下可以自修改

局域网视频监控

sudo apt-get install -y libjpeg8-dev
sudo apt-get install -y cmake
wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip
unzip master.zip
cd mjpg-streamer-master/mjpg-streamer-experimental
make clean all

cat>jk.sh<<EOF
#!/bin/sh
./mjpg_streamer -i "./input_raspicam.so -fps 30 -x 640 -y 480" -o "./output_http.so -w ./www"
EOF

sudo sh jk.sk

浏览器访问http://树莓派ip:8080/?action=stream即可实现监控

jk.sh中 fps 后面的30 是指帧率,320 指图像宽度,240 指图像高度,可以自行更改

延时拍照应用

编辑camera.sh文件

#!/bin/bash
DATE=$(date+"%Y-%m-%d_%H%M%S")
raspstill -o /home/pi/image/$DATE.jpg -t -2000

编辑genlapse.sh

#!/bin/bash
export PATH=/usr/local/bin:/usr/bin:/bin
cd /home/pi/image
ls *.jpg > stills.txt
DATE=$(date +"%Y-%m-%d_%H%M%S")
echo "========== Start mencoder =========="
mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o $DATE.avi -mf type=jpeg:fps=24 mf://@stills.txt
echo "========== mencoder finished, start MP4Box =========="
MP4Box -add $DATE.avi ../videos/$DATE.mp4
echo "==========MP4Box finishes =========="
$DATE.avi
if [ ! -z "$1" ];
then
    if [ $1 = "-r" ];
    then
        rm *.jpg
        echo "========== raw images removed =========="
    else
        echo "========== wrong arg, only support: -r =========="
    fi
else
    echo "========== raw images NOT removed. set -r if need to remove =========="
fi
cd ..

shell文件添加744权限,image文件夹添加777权限

sudo chmod 744 camera.sh
sudo chmod 744 genlapse.sh
sudo chmod -R 777 image/

添加定时任务,编辑/etc/crontab文件

*/1 * * * * root /home/pi/camera.sh 2>&1
*/1 * * * * root sleep 20; /home/pi/camera.sh 2>&1
*/1 * * * * root sleep 40;/home/pi/camera.sh 2>&1

50 23 * * * /home/pi/genlapse.sh

定时任务生效sudo /etc/init.d/cron restart
以上表示每隔20秒拍摄一次照片
晚上23:50分自动根据拍摄的照片合成mp4视频文件

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354