视频中的Raspberry Pi已经设置并连接到家中的无线网络上,我们可以通过WEB控制页面发送一个指令脚本到树莓派上,树莓派连接了家里的的百叶窗和空调控制系统。到控制页面发送指令“打开百叶窗”后,树莓派驱动外置电源的步进机使得百叶穿缓缓开启,马达是通过树莓派上的GPIO针脚编程后发出的。控制空调的原理也差不多,通过WEB控制页面发送指令,通过树莓派上的LIRC库发送和记录红外线信号来控制空调。
需要用到哪些零件:
- 一个能正常运行的Raspberry Pi
- WIFI加密狗(可选:用于安全考虑)
- 5V 1.5A电源(用于给树莓派和步进机提供电源驱动)
- 步进机
- EasyDriver V4.4步进机驱动主板
- 红外线接收器
- 红外线二极管
- NPN晶体管
文件资料:点击下载
相关资料:
- 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卡:
sudo dd if=path_of_your_image.img of=/dev/diskn bs=1m
# Where n is the disk number as per disk utility. Ensure card is unmounted.
接上WiFi并准备相关软件,你可以执行下面的命令:
sudo apt-get update
sudo apt-get install vim
sudo apt-get install wicd wicd-curses
sudo vim /etc/network/interfaces
……
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.18
network 255.255.255.0
gateway 192.168.1.0
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
sudo vim /etc/wpa_supplicant/wpa_supplicant.conf
……
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="HomeWireless-N"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
psk=“YourPassword”
}
network={
ssid="HomeWireless"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
psk=“YourPassword”
}
准备完成后,下面需要安装GPIO针脚的驱动“wiringPi”,用来控制步进机等设备。这些驱动包都在上面的链接中给出,你可以去相关页面下载,下面简单说下过程:
cd /tmp
sudo apt-get install libi2c-dev
wget http://project-downloads.drogon.net/files/wiringPi.tgz
tar xfz wiringPi.tgz
cd wiringPi/wiringPi
make
sudo make install
cd ../gpio
make
sudo make install
sudo apt-get install nginx
sudo apt-get install php5 php5-fpm php5-cgi php5-cli php5-common
sudo mkdir /var/www
sudo chmod 775 /var/www -R
sudo chown www-data:www-data /var/www
sudo mkdir /var/www/local
sudo chown www-data:www-data /var/www/local
sudo nano /etc/nginx/sites-available/local
……
server
{
access_log /var/log/nginx/local.access.log;
error_log /var/log/nginx/local.error.log;
#Error Redirect
error_page 404 /404.html;
### Default location
root /var/www/local;
index index.php index.html index.htm;
### Static content passed through
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
expires 5d;
access_log off;
}
if (-f .php) {
rewrite ^(.*)$ /.php;
}
# use fastcgi for all php files
location ~ .php
{
try_files =404;
include /etc/nginx/fastcgi_params;
keepalive_timeout 0;
fastcgi_param SCRIPT_FILENAME ;
fastcgi_pass 127.0.0.1:9000;
}
# deny access to apache .htaccess files
location ~ /.ht
{
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/local /etc/nginx/sites-enabled/local
sudo service nginx restart
将步进机链接到GPIO引脚上并在默认情况下为关闭状态,这样可以确保不会耗费太多的电力,这个步进机是用来驱动百叶窗自动打开的或关闭的,所以我们需要添加一个脚本启动文件:
gpio -g mode 11 out
gpio -g write 11 11
创建一个CRON计划任务,启动用来控制设备的脚本:
sudo touch /etc/cron.d/blinds
sudo chmod a+w /etc/cron.d/blinds
现在,将下载好的WEB控制页面文件复制到Ngine文件夹中,然后设置权限为可执行:
sudo chmod +x /var/www/local/controller.sh
控制空调,用LIRC库来控制红外LED,首先需要先复制空调遥控器所发出的单元信号。设置LIRC的指南可以在上面的链接表里面找到。
sudo apt-get install lirc
lirc_dev
lirc_rpi gpio_in_pin=23 gpio_out_pin=22
将lircd.conf和hardware.conf文件复制到/etc/lirc文件夹中,
sudo service lirc restart
为了保证红外信号的正常收发,我们需要设置一下软件:
sudo service lirc stop
mode2 -d /dev/lirc0 >> ~/temp.conf
为了得到数据放入到正确的格式,删除第一行中刚刚创建的temp.conf文件,它是在记录开始,你开始按下按钮之间仅仅是’空间’。然后使用下面的命令在VIM正确地格式化代码。
vim ~/temp.conf
:%s/^.{5}
:%s!^! !
:%s/n/
完成之后,您可以插入代码到配置文件中。您可以参考附件中lird.conf比较如何布局数据。现在,添加代码以irrecord在原始模式下创建的原始文件。 LIRC似乎不兼容的选项卡中的lidcd.conf文件,所以记得要使用空格。最后,重新启动LIRC过程,并检查您的遥控器确认:
irsend LIST "" ""
irsend LIST DAIKIN ""
系统会发送出一组信号:
irsend SEND_ONCE DAIKIN KEY_POWER
所包含的conroller.sh脚本会自动从网页时收到处理这些命令的信息,并生成运行日志文件,你可以查看日志文件查看系统记录。