跑在树莓派上智能家居雏形

标签: 树莓派 智能 | 发表时间:2015-04-19 23:37 | 作者:u010027419
出处:http://blog.csdn.net

跑在树莓派上智能家居雏形


简介

这里写图片描述
一个以微信为终端的好玩的小东西

可以实现的功能

可以实现以手机微信端对树莓派终端进行实时监控、摄像头云台操纵、闯入报警、温度检测、灯光控制、自动光线控制等功能

设备图片

这里写图片描述
这里写图片描述
这里写图片描述

运行截图

这里写图片描述
这里写图片描述
这里写图片描述

需要用到的所有硬件

  • 路由器
  • 树莓派主板
  • 树莓派电源(5V 2A)
  • 至少 8g tf卡 (推荐class 10,8g足矣)
  • 支持ouv的摄像头(罗技C170)
  • 花生棒及电源(或用 花生壳内网版代替)
  • 乐高积木(小颗粒)
  • 两根网线
  • 温度传感器(DHT11)
  • 光线传感器(光敏 电阻模块)
  • 人体红外传感器(HC-SR501)
  • 继电器(5V低电平触发)
  • 步进电机(28BYJ-48-5V)
  • 步进电机驱动板(UL2003型)
  • GPIO连接线若干

需要安装的所有软件

Windows端

  • Putty(0.63)
  • WinSCP(5.1.7)
  • Win32DiskImager(0.9.5)
  • Notepad++

Raspberry Pi端

配置过程

初始化树莓派

使用Putty登陆树莓派
Username:pi
Password:raspberry

获取root权限

sudo passwd root
(需要输入两次你想设置的root密码)
sudo passwd --unlock root
设置完成后重启Putty,以root身份登陆

释放空间及设置时区

以root身份登录后会自动弹出raspi-config设置工具,也可直接输入 raspi-config调出
1. 执行第一项,一直选择ok即可
2. 选择第四项,然后选择第二项,进入时区设置
3. 分别选择Asia——Shanghai,确定,即可改为+8时区

这里写图片描述
这里写图片描述

设置静态ip

sudo nano /etc/network/interfaces
把这一行
iface eth0 inet dhcp
替换为
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 114.114.114.114

修改resolv.config文件
sudo nano /etc/resolv.conf
修改为
nameserver 114.114.114.114
否则不能解析域名

更新软件源

nano /etc/apt/sources.list
删除原文件所有内容,用以下内容取代:
deb http://mirror.sysu.edu.cn/raspbian/raspbian/ wheezy main contrib non-free
deb-src http://mirror.sysu.edu.cn/raspbian/raspbian/ wheezy main contrib non-free

Ps:树莓派官方提供的软件源列表 http://www.raspbian.org/RaspbianMirrors
Ps2:国内的几个软件源

中山大学
http://mirror.sysu.edu.cn/raspbian/raspbian/
中国科学技术大学
http://mirrors.ustc.edu.cn/raspbian/raspbian/
清华大学
http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/
华中科技大学
http://mirrors.hustunique.com/raspbian/raspbian/
大连东软信息学院源(北方用户)
http://mirrors.neusoft.edu.cn/raspbian/raspbian/
重庆大学源(中西部用户)
http://mirrors.cqu.edu.cn/Raspbian/raspbian/

  • 更新缓存并升级软件
    sudo apt-get update && apt-get upgrade

安装及配置

安装所需要的所有软件,将必须的软件包安装完毕,并且调试成功
调试过程如果有问题可以参见本博客(附录)中的其他文章,或欢迎留言讨论

安装软件

  • webpy

    git clone git://github.com/webpy/webpy.git
    ln -s `pwd`/webpy/web
    cd /root/webpy
    sudo python setup.py install

  • RPI.GPIO
    (安装RPI.GPIO 首先需要安装RPi.GPIO所需的Python Development Toolkit)

    sudo apt-get install python-dev
    sudo apt-get install python-pip
    sudo pip install rpi.gpio

  • python-lxml

    sudo apt-get install python-lxml

  • python-memcache

    sudo apt-get install python-memcache

  • apache2

    sudo apt-get install apache2

  • mjpg-streamer
    (安装mjpg-streamer 首先需要安装一下几个依赖包)

    依赖包:
    sudo apt-get install subversion
    sudo apt-get install libv4l-dev
    sudo apt-get install libjpeg8-dev
    sudo apt-get install imagemagick
    (编译安装mjpg-steamer)
    wget http://sourceforge.net/code-snapshots/svn/m/mj/mjpg-streamer/code/mjpg-streamer-code-182.zip
    unzip mjpg-streamer-code-182.zip
    cd mjpg-streamer-code-182/mjpg-streamer
    make USE_LIBV4L2=true clean all
    make DESTDIR=/usr install

配置路由器

在路由器设置界面内,为树莓派设置好静态ip,或者在树莓派端设置静态ip,记住此ip

配置花生棒(或 花生壳内网版

如果网络环境拥有公网ip,则可以在路由器上设置ddns(ddns可以搜索其他相关文章),如果不具备此环境,则需要花生壳内网版(软件)或花生棒(硬件)来实现公网地址从而与微信公众平台对接。
首先申请一个花生壳域名,然后登陆花生棒管理端页面( http://hsk.oray.com/bang/
选择内网映射添加映射,填入树莓派静态ip,将树莓派的80端口映射到域名上,并且 勾选使用外网80端口(非常重要,否则无法完成对接)
申请另外一个花生壳域名,将此域名映射为树莓派的8080端口,依然 勾选使用外网80端口

Ps:关于花生壳内网版的获取,可以在
http://www.oray.com/activity/140902/?icn=oray_140902&ici=hsk_home-grid
中缴纳一元认证费开通免费级服务
花生壳内网版的设置与花生棒大同小异,需要注意的是需要如果使用花生壳内网版则在工作前需要确认花生壳内网版正常工作并能正常解析

配置apache2

因为我的80端口需要被微信公众平台占用,所以我不能让网页走80端口,需要更改端口
nano /etc/apache2/ports.conf
将Listen 80改为Listen 8080

调试摄像头

运行考入树莓派中的Git包目录中testcam文件夹中的“stream.sh”文件:
sudo chmod +x stream.sh(先编译脚本文件,才能用./filename 来运行)
sudo ./stream.sh
这里写图片描述

在运行程序时,如果发生错误,可能是之前由于运行过,进程仍然在工作,导致没法再运行,可以先运行ps -A,查看运行中的进程和进程ID号,再使用“ kill id号”杀掉进程

这里写图片描述

在pc上运行Git包中的“testcam.html”文件,右击编辑index.html,将 树莓派ip换成你的树莓派固定ip,保存,双击打开testcam.html

这里写图片描述

看到摄像头输出图像,说明摄像头工作正常。

申请及配置公众平台测试账号

  1. 打开页面 http://mp.weixin.qq.com/wiki/home/index.html 申请一个公共平台的测试账号
  2. 在左侧选择 测试号申请|在线调试选择接口测试号申请
  3. 申请成功后,进入管理界面
  4. 在接口配置信息的URL处输入你在花生壳申请的域名,后面加上 /weixin
    Token中填上你自己喜欢的一串字母,完成后不要点击提交
    (此时可以先下载我之前的微信公众平台基础模板进行对接,可以对接成功后在进行接下来的工作,以测试网络环境是否配置完毕
    文章地址: http://blog.csdn.net/u010027419/article/details/40835963

下载及配置主程序

  • 在此Github中下载完整代码包,解压后进行编辑
    (Git: https://github.com/329703622/wechatpi
  • 填入刚才自己设置的的Token以及测试号提供的appID和appsecret(yeekey稍后提到)
  • 填入自己的所有传感器对应的GPIO接口
    (传感器调试参考此博客(或附录)其他文章)
  • 设置完毕之后使用WinSCP放入树莓派文件目录
  • 使用Putty登录树莓派
  • 在刚在文件所在目录执行 chmod +x start.sh 更改文件权限
  • 执行 ./start.sh
  • 如果出现如图所示信息,则程序正确运行
  • 这里写图片描述

  • 此时在微信公众平台测试账号的网页上点击提交,如果提示成功,则整套系统基本配置成功

部署web页面

  1. 编辑Git包中的文件中的index.html,在 你的树莓派ip处改为树莓派的ip地址
  2. 将index.html上传到 /var/www目录下了,替换之前的index.html
  3. 在浏览器中输入 http://你的树莓派局域网ip:8080/尝试一下能否访问
    如果成功出现页面,则web页面部署成功

设置微信公众账号菜单

  1. 在微信公众平台管理测试账号下方选择 获取access token
  2. 在左侧菜单选择 * 基础接口 获取access token*
  3. 在右侧最下方选择 使用网页调试工具调试该接口
  4. 首先获得access token
    在appid和secret中填上之前管理测试账号页面提供的数据,点击检查问题
  5. 下方蓝色的 access_token就是一会提交菜单要用到的 access_token,复制此token
  6. 分别在接口类型选择 自定义菜单和在接口列表选择 自定义菜单创建接口。进入如下界面,填入刚才的 access_tokenaccess_token具有一定的时效性,时间过长后需重新获取)
  7. 在body中填入Git包中的menu.txt内的内容,点击检查问题
  8. 若显示 Request successful即为菜单创建成功。
    这里写图片描述

Ps:取消关注微信号重新关注即可直接查看效果。否则受限于微信限制,需要24小时后缓存刷新方可查看。
Ps2: 参数说明

参数 是否必须 说明
button 一级菜单数组,个数应为1~3个
sub_button 二级菜单数组,个数应为1~5个
type 菜单的响应动作类型
name 菜单标题,不超过16个字节,子菜单不超过40个字节
key click等点击类型必须 菜单KEY值,用于消息接口推送,不超过128字节
url view类型必须 网页链接,用户点击菜单可打开链接,不超过256字节

申请Yeelink物联网服务

  1. 打开 http://www.yeelink.net/ 注册账号
  2. 登陆后在管理首页上,您的API Key 即为yeekey
  3. 添加一个新设备
  4. 添加完毕后记住自己的设备ID
  5. 在程序中填入自己的设备id以及yeekey,并将附近 自己的yeelink页面改为自己的页面

结尾&心得

  • 接触了Python,一门非常棒的语言
  • 学会了MarkDown写博客,太方便了
  • 玩了树莓派
  • 过了买东西剁手的瘾
  • 无聊了有事情干

附录

作者:u010027419 发表于2015/4/19 15:37:06 原文链接
阅读:33 评论:0 查看评论

相关 [树莓派 智能] 推荐:

跑在树莓派上智能家居雏形

- - CSDN博客综合推荐文章
一个以微信为终端的好玩的小东西. 可以实现以手机微信端对树莓派终端进行实时监控、摄像头云台操纵、闯入报警、温度检测、灯光控制、自动光线控制等功能. 树莓派电源(5V 2A). 至少 8g tf卡 (推荐class 10,8g足矣). 支持ouv的摄像头(罗技C170). 花生棒及电源(或用 花生壳内网版代替).

用树莓派3制作智能镜子(MagicMirror)

- - 汉僧学报
根据前面的文章,树莓派3已经配置好了,我们拿它来做点什么呢. Michael Teeuw 项目地址: https://github.com/MichMich/MagicMirror. My Bathroom Mirror Is Smarter Than Yours (需要翻墙, 国内译文《Google 软件工程师自制智能镜》).

Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

- - 少数派
最近少数派掀起了一阵树莓派热潮,各色教程涌出水面. 将 Pi 接入智能家居控制系统并不新鲜,现有教程本身已经非常全面,但是由于 Homebridge 插件(下称「 HB」)的局限性,使其对智能家居设备的支持广度和深度不足,间接影响了用户使用 HomeKit 的体验. 例如,homebridge-aqara 插件并不支持小米网关 2 的自带灯光控制,白白浪费了设备的功能.

从零开始,教你用树莓派 + IFTTT 实现 HomeKit 智能家居自动化

- - 少数派
你可以现在设想一下:天气预报说要下雨了,网关灯变红. 如果爸爸回家,手机接入 Wi-Fi,赶紧推送告诉我不要看小视频了. 只要米家 + IFTTT + HomeAssistant 就可以做到. 上一章题目是《 入门智能家居,从米家到 HomeKit(一)》. 主要讲的是在「树莓派」上通过 HomeBridge 把米家智能家居接入到 iOS 的 HomeKit 中.

树莓派初级折腾

- - 极客范 - GeekFan.net
前些天在网上买了一个二手的树莓派 裸板子190包邮 (新品套装280 360什么的太贵了啊岂可修). 到手目测没有问题 主IC还有一个铜质散热片 不错. 电源就用买移动电源送的充电器(标称5v 1000mA输出 )和数据线. SD卡么… 把很久没玩的PSP掏出来 把马甲卡中的东西倒到记忆棒里 记忆棒插回PSP TF卡装到转接卡上 (话说还是个class10的呢).

安装树莓派 Raspberry PI

- - CSDN博客综合推荐文章
树莓派终于到货了,是这个样子的. 上面有一行日期是 Raspberry PI (c) 2011.12. 选择这个镜像: RASPBIAN Debian 2014-01-07. 780M的压缩包,很大的样子. 似乎还有个NOOBS的安装方式,完全无感. 顺便展示一下SD卡,通过查阅可用SD卡列表,似乎是支持个别的64G Class10的卡的,就像这个,编号是 Transcend SDXC 64G Class10 TS64GSDXC10.

树莓派 1602A显示屏

- - 编程语言 - ITeye博客
树莓派 1602A显示屏. 下面代码本人测试过没有问题,开始运行完屏幕上什么也没有显示出来,后来调整了下电位器可以了,所以大家如果按着下面的做出来之后运行什么也没有显示的话,记得调整下电位器. VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地. RS,寄存器选择,接GPIO14.

在树莓派上用python控制LED

- - 极客范 - GeekFan.net
初步学习RPi.GPIO模块的过程中写了一个控制8个LED的模块,基本上只是一个对RPi.GPIO的一个封装. 一个已经安装配置好了的树莓派. 连接控制树莓派所用的其他必须设备. 按照电路图所示,在面包板上进行连接. 首先得确定RPi.GPIO已安装. 最新的系统已经自带了,如果没有的可以使用命令.

PiLarm: 便携式树莓派警报器

- - 极客范 - GeekFan.net
我一直在寻找一些能给自己孩子带来教益的瞬间. 当我五岁的儿子来寻求我的帮助,别再让他的弟弟偷偷溜进他的房间的时候,我突然灵光一现,发现这是教他关于输入、输出和其他一些编程知识的绝佳时机. 而且让他在解决自己实际问题中学习这些也会相对容易. 我本来可以用很多不同的方法来建立一个简单的警报系统,但是我想要让这个系统是一体化的并且在功能上不止能满足我儿子最初的原始需求.

树莓派的10个最佳资源

- - 极客范 - GeekFan.net
如果还没有找到答案,你是时候要从线上或者线下的资源寻找一些想法和项目,来帮助你将树莓派的潜能完全发掘出来. 树莓派没有内置的操作系统,也经常甚至连存储设备都没有. 但树莓派已经被证明了是一个非常成功的小型计算设备. 而很多学校(树莓派的目标用户),狂热爱好者,和那些想要打造一个小型家庭影音中心(包括其他设备)的用户都将树莓派作为他们的一个选择.