树莓派研究学习记录

注意:这篇文章是一个技术记录,因为在网上搜索来的文章,往往存在一些纰漏或失误,所以我就把自己捣鼓的情况记录下来,作为备忘。
硬件:树莓派3B+ 2016年5月、移动硬盘、U盘、USB摄像头、GPIO接口等
软件:linux系统及相关软件、工具
已经实现的功能:
1:基于树莓派的家庭NAS(Samba服务);
2:基于树莓派的web服务器(LNMP系统);
3:基于树莓派的家庭监控并上传到百度云(fswebcam截图、crontab定时任务、百度云bypy工具);
4:外网访问树莓派(nat123服务或反向代理隧道)。
 
该篇通过本地的“为知笔记”客户端自动更新,内容也行凌乱,但是绝对有干货。
 
树莓派 (raspberry pi).jpg

 
—————————————————————————
树莓派是一款为孩子们设计的口袋电脑,实际上也就是一个运行linux(当然,现在也支持windows物联网版本)的开发板,这款产品的成功,应该说,除了价格低廉,很大程度上,还是宣传和运营的成功。

在2012年的时候,因为打算接大屏看电视的缘由,我了解的HTPC(客厅电脑),以及上升时期的安卓盒子,继而了解到了树莓派,虽然我本来是希望弄一台x86低能耗小型服务器。
2016年5月15日,在淘宝购入一个树莓派3 B。 230元

这个视频教程好好看下(如ssh登陆),入门用 http://www.boosj.com/6466237.html?fromvsogou 
raspberrypi_timeline.png
 
树莓派配置 4核 1g内存
VPS配置 2核 1g内存
 

1:烧录

2:配置

树莓派默认是采用英文字库的,而且系统里没有预装中文字库,所以即使你在locale中改成中文,也不会显示中文,只会显示一堆方块。因此需要我们手动来安装中文字体。好在有一个中文字体是免费开源使用的。ssh中输入以下命令

开启root账号,可由pi用户登录后,在命令行下执行

sudo passwd root

 

可能要先 apt-get update 更新下系统

1 sudo apt-get install ttf-wqy-zenhei
安装过程中如果碰到(Y/n),都选择y
中文字库安装完成之后,还需要安装一个中文输入法。输入如下命令
2 sudo apt-get install scim-pinyin
一样的安装过程,安装完毕后输入
3 sudo raspi-config
配置时区、语言选项、键盘布局等
4 sudo reboot
重启完成好就可以在VNC连接上去后使用中文显示和中文输入法了,切换中文输入法一样也是ctrl+space

 

下面简单说下更新软件源,更新软件源的目的是为了方便我们日后下载安装软件以及升级系
统,因为官方的软件源服务器在国外,下载速度非常慢,所以我们需要更新软件源。
在更新软件源之前,建议先备份下原来的官方软件源配置文件。该文件目录为
/etc/apt/sources.list。该文件内容如下图所示,官方给了两个软件源地址,在使用的时候用”#”
注释掉其他不用的软件源,修改软件源之后,需要使用命令”apt-get update”来使能该软件源。
 
这里我们使用中国科技大学的软件源http://mirrors.ustc.edu.cn/raspbian/raspbian/ 如下图
所示。

下面是通过ping命令得到的结果与百度做了对比,自己可以根据情况选择适合自己的国内
软件源,清华大学软件源为 http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/
这篇文章可以参考:http://blog.chinaunix.net/uid-21658993-id-4702322.html 
树莓派 Raspberry Pi 更换阿里云更新源方法 http://bbs.shumeipaiba.com/thread-5-1-1.html   这个源不支持安装视频播放软件 sudo apt-get install mplayer
尽量不要替换源,因为有些软件安装这个源恐怕没有呢
 
2.3 远程管理主机
a:安装xrdp,可用windows远程桌面访问
sudo apt-get install xrdp安装
查看ip ifconfig
在windows远程桌面到此IP访问
.Q:我不想用VNC,想用WINDOWS的远程桌面连接树莓派,如何实现?
   A:办法已经有了,需要在raspbian下面安装一个服务xdrp,输入如下命令

  1. sudo apt-get install xrdp

复制代码

然后就可以用win的远程桌面连接了,你的电脑和树莓派在一个局域网的时候没有问题,如果是想外网访问,跟需要做好端口3389的映射,具体见我另外一个帖 子http://www.eeboard.com/bbs/thread-5526-1-2.html

 

 
 
b:安装vnc,用vnc软件访问

VNC 是一款优秀的远程控制软件,开源的。在树莓派上安装VNC,就可以远程控制了。

一、首先,在树莓派上安装Tight VNC 包

sudo apt-get install tightvncserver

二、启动VNC服务器,命令如下

vncserver

当提示输入密码时,创建一个密码 (这个密码是远程用户访问时用的)

此时得到端口号1

三、在远程计算机上访问

下载 VNC Viewer,地址:http://www.tightvnc.com/download.php

运行 VNC-Viewer

 

在 VNC Server栏中,输入树莓派的IP地址,后面加上 :1 字样按 connect 连接,当提示输入密码时,输入之前定义的密码

 

 

 

 

树莓派反向SSH代理隧道实现外网访问内网树莓派

 
dd

无法解析主机

wget:无法解析主机地址。这就能看出是DNS解析的问题。

解决办法:

  1. 登入root(VPS)。
  2. 进入/etc/resolv.conf。
  3. 修改内容为下
    nameserver 8.8.8.8 #google域名服务器
    nameserver 8.8.4.4 #google域名服务器
 
 
 
 

没有公网IP,外网访问树莓派

 路由器怎么设置映射(有公网IP的情况) jingyan.baidu.com/article/ab0b5630d449f9c15afa7d39.html 
有vps的话也可以通过反向映射来远程ssh到家里的树莓派
树莓派反向SSH代理隧道实现外网访问内网树莓派 www.zhengyali.com/?p=169 
如何使一个树莓派的服务器端可以外网访问(小区宽带无外网IP,TP-Link路由器) https://www.zhihu.com/question/26096461 

摄像头

如何在树莓派上安装USB网络摄像头 http://www.linuxidc.com/Linux/2015-04/116490.htm  
 
极客学院 树莓派中摄像头的使用 1. 使用 OpenCV/V4L2 在树莓派上控制摄像头采集图像/视频2. 使用 OpenCV 在树莓派上进行运动检测(Motion Detection)
3. 使用 Face++ 云端服务在树莓派上进行人脸识别(Face Recognition)
4. 使用 OpenCV 及 Face++ 云端服务在树莓派上进行实时人脸识别
 
利用开源硬件树莓派+摄像头 让小米手机成为远程监控利器
1、通过摄像头获取图像
2、通过网络将图像上传到服务器
3、小米手机通过APP从服务器获取图像
 
http://www.yeelink.net/ swordfish / anum 
 
 教你用树莓派通过usb摄像头实现网络监控功能(安装网络监控软件网络监控软件motion) http://www.eeboard.com/bbs/thread-1511-1-1.html
 
USB摄像头安装、播放和截图 http://www.eeboard.com/bbs/thread-41533-4-3.html 
  luvcview  Linux USB Video Class View
       于是又找到了找个神器。

     1. 安装 
      首先安装这个东东

  1. # apt-get install luvcview

复制代码

   2.播放
       安装成功之后。
       执行下面的命令,即可看到播放的窗口

  1. # luvcview -s 640×480

复制代码

 
uvccapture
       从字面就可以理解是一个截图的软件。
       首先是安装:

  1. # apt-get install uvccapture

复制代码

然后就可以使用了。

  1. # uvccapture -B100 – C30 -S30 -x320 -y240 -o/home/pi/Desktop/demo.jpg

 

 

uvccapture -m -o/media/pi/UDISK/图片名称.jpg
一定要加-m 

其中 
               -B   Brightness       亮度 
               -C   Contrast          对比度
               -S   Saturation       饱和度

               -x  -y  分辨率
               -o   后面跟的是输出路径


   通过下面的指令查看信息。

  1. # uvccpture -v

复制代码

 

摄像头定时自动截图,保存到本地U盘,上传到百度云,U盘只保留最近7日的数据,保证空间

1:首先需安装 fswebcam
 
2:制作一个抓图脚本(fswebcam在我这边的抓图是倒着的,所以添加一个 –rotate 180的参数让抓的图垂直旋转一下)
  1. sudo fswebcam -d /dev/video0 -r 640×480 /media/pi/photos/camera/$(date -d "today" +"%Y%m%d_%H%M%S").jpg
如果不支持外接U盘,是U盘禁止写入的问题,可格式化换成ntfs格式,将文件夹的拥有者用户组更改为root,权限设置为anyone或777. chown [-R账号名称:用户组名称 文件目录
 
 
4:使用crontab(crontab -e,定时任务搜索有关教程)让linux定时执行shell脚本crontab -e 进入,添加如下代码
  1. #每天凌晨零点正创建一个以本日名称(年月日)命名的文件夹
  2. 0 0 * * * sh /home/pi/dir_today_add.sh
  3. #凌晨0点10分删除以前一天年月日命名的文件夹
  4. 10 0 * * * sh /home/pi/dir_yesterday_del.sh
  5. #摄像头截图上传百度云,全天任务,每半分钟执行脚本,截图并保存,通过bypy工具将文$
  6. */1 * * * * sh /home/pi/baiduyun.sh
  7. */1 * * * * sleep 30 && sh /home/pi/baiduyun.sh
  8. #每3分钟删除截图文件夹5分钟前的文件,+4代表大于等于5分钟前的文件
  9. */3 * * * * find /media/pi/UDISK/baiduyun/* -mmin +4 -exec rm -rf {} \;
  10. #摄像头截图保存到本地的任务,在早上7点到晚上24点每隔半分钟执行一次,在凌晨0点到$
  11. */1 7-23 * * * sh /home/pi/capturecam.sh
  12. */1 7-23 * * * sleep 30 && sh /home/pi/capturecam.sh
  13. */1 0-6 * * * sh /home/pi/capturecam.sh
  14. #每天凌晨五点删除截图文件夹下7天前的文件,+6代表大于等于7天前的文件
  15. * 5 * * * find /media/pi/UDISK/camera/* -mtime +6 -exec rm -rf {} \;
 
 dir_today_add.sh (创建以当日年月日为名称的文件夹)
  1. sudo mkdir 777 /media/pi/UDISK/baiduyun/$(date +"%Y%m%d")
dir_yesterday_del.sh (删除以年月日为名称的上一日的文件夹)
  1. sudo rm -rf /media/pi/UDISK/baiduyun/$(date -d "-1 day" +"%Y%m%d")
baiduyun.sh (抓图并上传到百度云)
  1. sudo fswebcam -d /dev/video0 -r 640×480 --rotate 180 /media/pi/UDISK/baiduyun/$(date +"%Y%m%d")/$(date -d "today" +"%Y%m%d_%H:%M:%S").jpg
  2. sudo python /home/bypy-master/bypy.py upload /media/pi/UDISK/baiduyun/
capturecam.sh (抓图并保存到本地)
  1. sudo fswebcam -d /dev/video0 -r 640×480 --rotate 180 /media/pi/UDISK/camera/$(date -d "today" +"%Y%m%d_%H:%M:%S").jpg
 
 
更新:好像不支持22-7这样的跨度,写成了晚上0-6,白天7-23
之前将文件夹下的全部文件都同步百度云,导致自动任务挂了(树莓派并没有司机,但很烫),后来通过自动执行删除5分钟之前的旧文件,边上传百度云,恢复正常。
 
效果:
 
知识点(网页教程有纰漏,仅供参考步奏):
bupy工具 :同步到百度网盘https://github.com/houtianze/bypy 
树莓派使用百度云盘自动上传存储监控照片 http://www.zhengyali.com/?p=126 未成功,
Linux下定时删除指定目下n天前的文件 http://blog.sina.com.cn/s/blog_6bde63fd0101mvaa.html

LINUX find命令查找指定时间内修改过的文件 www.centrue.me/2014/10/08/linux-find-2/

鸟哥linux私房菜190页find命令详解 -mtime +n -nxdx n的原理
鸟哥Linux私房菜基础篇498页crontab例行性工作原理

NAS

samba

这篇文章对参数说明的比较详细 树莓派通过filezilla,samba与PC文件共享 http://my.oschina.net/quanpower/blog/224927?fromerr=fSQkgumk 
   samba 是在Linux和UNIX系统上实现SMB协议的一个免费软件,通过他我们可以实现文件的共享。这是一个相当了不起的服务,功能很强大,值得好好研究。共享文件夹,打印之类都可以。甚至是linux-linux及linux-windows都没问题。先说简单应用,我们就想在树莓派上建个文件夹,然后方便windows上面编程调试后在树莓派只要运行就好了。
1:安装samba服务
  1. sudo apt-get install samba
  2. sudo apt-get install samba-common-bin
2.配置/etc/samba/smb.conf文件
 
 
3.保存后,重启samba服务。输入
  1. /etc/init.d/samba restart

4.接下来为共享添加用户。输入:

smbpasswd –a username,此处的用户名必须是树莓派里面的用户名。

如果还有权限问题,看看是不是需要chown或者chmod

sudo chmod -R 777 /mnt

速度还可以

 

WEB服务器

安装军哥LNMP一键包即可,lnmp1.2未成功,1.3成功。
树莓派摇身一变,就成了一台网站服务器。

VPN WIFI

openvpn加上wifi适配器,搭建具有翻墙功能的wifi热点。
自己的云空间:外接硬盘+syncthing 或 btsync
无线路由器:外接无线网卡,然后共享网络
个人blog:nginx + mkdocs
 

打印机

将树莓派变成网络打印机服务器(更新PC和手机端设置)原理是使用CUPS软件
打印机,只有usb接口没有网口,也不支持网络打印,就打算用树莓派来做一个打印机服务器  http://www.eeboard.com/bbs/thread-8818-1-1.html

家庭媒体中心

利用树莓派构建家庭媒体中心(XBMC) http://blog.bizsmooth.org/?p=1064 
莓派+XBMC=电视盒子 http://blog.csdn.net/quqi99/article/details/46656263
 

私有云

类dropbox的本地云备份服务(seafile服务)有树莓派版本的服务器版
Seafile – 自己动手搭建个人/团队/公司专属私有文件同步服务 (云存储网盘) www.iplaysoft.com/seafile.html 
 
 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据