2赞

1回答

2收藏

通过Raspberry Pi实现低成本家庭物联网系统

Raspberry Pi Raspberry Pi 5512 人阅读 | 1 人回复 | 2013-12-17

转自博古先生博客http://bogu.me



视频中的Raspberry Pi已经设置并连接到家中的无线网络上,我们可以通过WEB控制页面发送一个指令脚本到树莓派上,树莓派连接了家里的的百叶窗和空调控制系统。到控制页面发送指令“打开百叶窗”后,树莓派驱动外置电源的步进机使得百叶穿缓缓开启,马达是通过树莓派上的GPIO针脚编程后发出的。控制空调的原理也差不多,通过WEB控制页面发送指令,通过树莓派上的LIRC库发送和记录红外线信号来控制空调。



需要用到哪些零件:

  一个能正常运行的Raspberry Pi
  WIFI加密狗(可选:用于安全考虑)
  5V 1.5A电源(用于给树莓派和步进机提供电源驱动)
  步进机
  EasyDriver V4.4步进机驱动主板
  红外线接收器
  红外线二极管
  NPN晶体管

文件资料:
files_roomautomation.zip (160.38 KB, 下载次数: 11)


相关资料链接:

GPIO Guide: https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/
LIRC Guide: http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/
Raspberry Pi Pins: http://gallery.kulish.com/main.php?g2_view=core.DownloadItem&g2_itemId=5469&g2_serialNumber=1

实现步骤:

  将系统镜像烧录至SD卡:
  1. sudo dd if=path_of_your_image.img of=/dev/diskn bs=1m
  2. # Where n is the disk number as per disk utility. Ensure card is unmounted.
复制代码
链接进入无线局域网,准备相关软件,你可以执行下面的命令:
  1. sudo apt-get update
  2. sudo apt-get install vim
  3. sudo apt-get install wicd wicd-curses
复制代码
  1. sudo vim /etc/network/interfaces

  2. ……

  3. auto lo

  4.     iface lo inet loopback
  5.     iface eth0 inet dhcp

  6.     allow-hotplug wlan0
  7.     iface wlan0 inet static
  8.             address 192.168.1.18
  9.             network 255.255.255.0
  10.             gateway 192.168.1.0  

  11.     wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

  12.     iface default inet dhcp
复制代码
  1. sudo vim /etc/wpa_supplicant/wpa_supplicant.conf

  2. ……

  3. ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
  4.     update_config=1

  5.     network={
  6.             ssid="<strong>HomeWireless-N</strong>"
  7.             proto=RSN
  8.             key_mgmt=WPA-PSK
  9.             pairwise=CCMP TKIP
  10.             psk=“<strong>YourPassword</strong>”
  11.     }

  12.     network={
  13.             ssid="<strong>HomeWireless</strong>"
  14.             proto=RSN
  15.             key_mgmt=WPA-PSK
  16.             pairwise=CCMP TKIP
  17.             psk=“<strong>YourPassword</strong>”
  18.     }
复制代码
准备完成后,下面需要安装GPIO针脚的驱动“wiringPi”,用来控制步进机等设备。这些驱动包都在上面的链接中给出,你可以去 相关页面下载,下面简单说下过程:
  1. cd /tmp
  2. sudo apt-get install libi2c-dev
  3. wget http://project-downloads.drogon.net/files/wiringPi.tgz
  4. tar xfz wiringPi.tgz
  5. cd wiringPi/wiringPi
  6. make
  7. sudo make install
  8. cd ../gpio
  9. make
  10. sudo make install
复制代码
上面的步骤完成后,我们还需要配置一下WEB控制页面的环境,所以Nginx和PHP是必须要安装的,你也可以选择Apache服务,个人喜好而已,因为Nginx服务器相对来说耗能较低,因此配件用这个,下面是安装过程和环境配置的命令:
  1. sudo apt-get install nginx
  2. sudo apt-get install php5 php5-fpm php5-cgi php5-cli php5-common
  3. sudo mkdir /var/www
  4. sudo chmod 775 /var/www -R
  5. sudo chown www-data:www-data /var/www
  6. sudo mkdir /var/www/local
  7. sudo chown www-data:www-data /var/www/local

  8. sudo nano /etc/nginx/sites-available/local

  9. ……

  10. server
  11. {
  12.     access_log /var/log/nginx/local.access.log;
  13.     error_log /var/log/nginx/local.error.log;

  14.     #Error Redirect
  15.     error_page 404 /404.html;

  16.     ### Default location
  17.     root /var/www/local;
  18.     index index.php index.html index.htm;

  19.     ### Static content passed through
  20.     location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
  21.         expires 5d;
  22.         access_log off;
  23.     }

  24.     if (-f .php) {
  25.         rewrite ^(.*)$ /.php;
  26.     }

  27.     # use fastcgi for all php files
  28.     location ~ \.php
  29.     {
  30.         try_files  =404;
  31.         include /etc/nginx/fastcgi_params;
  32.         keepalive_timeout 0;
  33.         fastcgi_param   SCRIPT_FILENAME  ;
  34.         fastcgi_pass    127.0.0.1:9000;
  35.     }

  36.     # deny access to apache .htaccess files
  37.     location ~ /\.ht
  38.     {
  39.         deny all;
  40.     }
  41. }
复制代码
  1. sudo ln -s /etc/nginx/sites-available/local /etc/nginx/sites-enabled/local
  2. sudo service nginx restart
复制代码
将步进机链接到GPIO引脚上并在默认情况下为关闭状态,这样可以确保不会耗费太多的电力,这个步进机是用来驱动百叶窗自动打开的或关闭的,所以我们需要添加一个脚本启动文件:
  1. gpio -g mode 11 out
  2. gpio -g write 11 11
复制代码
创建一个CRON计划任务,启动用来控制设备的脚本:
  1. sudo touch /etc/cron.d/blinds
  2. sudo chmod a+w /etc/cron.d/blinds
复制代码
现在,将下载好的WEB控制页面文件复制到Ngine文件夹中,然后设置权限为可执行:
  1. sudo chmod +x /var/www/local/controller.sh
复制代码
控制空调,用LIRC库来控制红外LED,首先需要先复制空调遥控器所发出的单元信号。设置LIRC的指南可以在上面的链接表里面找到。
  1. sudo apt-get install lirc
  2. lirc_dev
  3. lirc_rpi gpio_in_pin=23 gpio_out_pin=22
复制代码
将lircd.conf和hardware.conf文件复制到/etc/lirc文件夹中,
  1. sudo service lirc restart
复制代码
为了保证红外信号的正常收发,我们需要设置一下软件:
  1. sudo service lirc stop
  2. mode2 -d /dev/lirc0 >> ~/temp.conf
复制代码
为了得到数据放入到正确的格式,删除第一行中刚刚创建的temp.conf文件,它是在记录开始,你开始按下按钮之间仅仅是'空间'。然后使用下面的命令在VIM正确地格式化代码。
  1. vim ~/temp.conf
  2. :%s/^.\{5}
  3. :%s!^!    !
  4. :%s/\n/
复制代码
完成之后,您可以插入代码到配置文件中。您可以参考附件中lird.conf比较如何布局数据。现在,添加代码以irrecord在原始模式下创建的原始文件。 LIRC似乎不兼容的选项卡中的lidcd.conf文件,所以记得要使用空格。最后,重新启动LIRC过程,并检查您的遥控器确认:
  1. irsend LIST "" ""
  2. irsend LIST DAIKIN ""
复制代码
系统会发送出一组信号:
  1. irsend SEND_ONCE DAIKIN KEY_POWER
复制代码
所包含的conroller.sh脚本会自动从网页时收到处理这些命令的信息,并生成运行日志文件,你可以查看日志文件查看系统记录。

分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

haothree

发表于 2013-12-18 09:21:04 | 只看该作者

wudianjun2001 发表于 2013-12-17 10:58
搞物联网会很火的

物联网名头很大,不过貌似噱头比较多,实际没怎么搞起来吧
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条