《LINUX實(shí)操:如何用樹(shù)莓派控制 GOIO 引腳并操作繼電器》要點(diǎn):
本文介紹了LINUX實(shí)操:如何用樹(shù)莓派控制 GOIO 引腳并操作繼電器,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
學(xué)習(xí)如何用 PHP 和溫度傳感器實(shí)現(xiàn)樹(shù)莓派控制 GPIO 并操作繼電器,你是否曾經(jīng)想知道怎樣使用手機(jī)或者電腦在任何處所控制你的風(fēng)扇和燈等一些家用電器?
我現(xiàn)在想控制我的圣誕彩燈,是使用手機(jī)呢,還是使用平板電腦呢,或者是使用筆記本電腦呢?都不是,而是僅僅使用一個(gè)樹(shù)莓派.讓我來(lái)奉告你如何使用 PHP 和溫度傳感器實(shí)現(xiàn)樹(shù)莓派控制 GPIO 引腳并操作繼電器.我使用 AJAX 把它們整合在了一起.
?
?
?
1、 插入 SD 卡到樹(shù)莓派,然后使用以太網(wǎng)網(wǎng)線將它銜接到路由器;
2、 銜接 WiFi 適配器;
3、 使用 SSH 方式登錄到樹(shù)莓派,然后使用下面的命令編纂 interfaces
文件:
sudonano/etc/network/interfaces
這個(gè)命令會(huì)用一個(gè)叫做 nano
的編纂器打開(kāi)這個(gè)文件.它是一個(gè)非常簡(jiǎn)單又易于使用的文本編纂器.如果你不熟悉基 Linux 的操作系統(tǒng),可以使用鍵盤(pán)上的方向鍵來(lái)操作.
用 nano
打開(kāi)這個(gè)文件后,你會(huì)看到如許一個(gè)界面:
File editor nano
4、要配置你的無(wú)線網(wǎng)絡(luò),依照下面所示修改這個(gè)文件:
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "Your Network SSID"
wpa-psk "Your Password"
5、 按 CTRL+O
保留,然后按 CTRL+X
退出編輯器.
到目前為止,一切都已經(jīng)配置完成,接下來(lái)你必要做的就是使用命令重新加載網(wǎng)絡(luò):
sudo service networking reload
(警告:如果你是使用長(zhǎng)途連接的方式連接的樹(shù)莓派,連接將會(huì)中斷.)
?
?
Apache 是一個(gè)受歡迎的服務(wù)器應(yīng)用,你可以在樹(shù)莓派安裝這個(gè)法式讓它提供網(wǎng)頁(yè)服務(wù).Apache 原本就可以通過(guò) HTTP 方式提供 HTML 文件服務(wù),添加其他模塊后,Apache 還可以使用像 PHP 這樣的腳本語(yǔ)言來(lái)提供動(dòng)態(tài)網(wǎng)頁(yè)的服務(wù).
可以在敕令行輸入下面敕令安裝 Apache:
sudoapt-get install apache2 -y
安裝完成后,可以在瀏覽器地址欄輸入樹(shù)莓派的 IP 地址來(lái)測(cè)試 web 服務(wù)器.如果你可以獲得下面圖片的內(nèi)容,闡明你已經(jīng)成功地安裝并設(shè)置好了你的服務(wù)器.
Successful server setup
要改變這個(gè)默認(rèn)的頁(yè)面和添加你本身的 html 文件,進(jìn)入 var/www/html
目錄:
cd/var/www/html
添加一些文件來(lái)測(cè)試是否勝利.
?
PHP 是一個(gè)預(yù)處理器,這意味著它是當(dāng)服務(wù)器收到網(wǎng)頁(yè)哀求時(shí)才會(huì)運(yùn)行的一段代碼.它開(kāi)始運(yùn)行,處理網(wǎng)頁(yè)上需要被顯示的內(nèi)容,然后把網(wǎng)頁(yè)發(fā)送給瀏覽器.不像靜態(tài)的 HTML,PHP 在不同的環(huán)境下可以顯示不同的內(nèi)容.其他的語(yǔ)言也可以做到這一點(diǎn),但是由于 WordPress 是用 PHP 編寫(xiě)的,有些時(shí)候你需要使用它.PHP 是 web 上一種非常受歡迎的語(yǔ)言,像 Facebok 和 Wikipeadia 這樣的大型項(xiàng)目都是用 PHP 編寫(xiě)的.
使用下面的敕令安裝 PHP 和 Apache 軟件包:
sudoapt-get install php5 libapache2-mod-php5 -y
?
創(chuàng)立文件 index.php
:
sudonano index.php
在里面寫(xiě)入一些 PHP 內(nèi)容:
<?php echo"hello world";?>
保留文件,接下來(lái)刪除 index.html
,因?yàn)樗?index.php
的優(yōu)先級(jí)更高:
sudorm index.html
刷新你的瀏覽器,你會(huì)看到 “hello world”.這并不是動(dòng)態(tài)的,然則它仍然由 PHP 提供服務(wù).如果你在上面看到提原始的 PHP 文件而不是“hello world”,重新加載和重啟 Apahce(LCTT 譯注,重啟即可):
?
為了可以對(duì)代碼的變動(dòng)進(jìn)行跟蹤,WiringPi 的維護(hù)采用 git.但假如你因?yàn)槟承┰蚨鴽](méi)法使用 git,還有一種可以替代的方案.(通常你的防火墻會(huì)把你隔離開(kāi)來(lái),所以請(qǐng)先檢查一下你的防火墻的設(shè)置情況!)
如果你還沒(méi)有安裝 git,那么在 Debian 及其衍生版本中(好比 Raspbian),你可以這樣安裝它:
sudoapt-get install git-core
若是你遇到了一些差錯(cuò),請(qǐng)確保你的樹(shù)莓派是最新版本的 Raspbian 系統(tǒng):
sudoapt-get update sudoapt-get upgrade
使用 git 獲取最 WiringPi:
sudogitclonegit://git.drogon.net/wiringPi
如果你之前已經(jīng)使用過(guò) clone 操作,那么可以使用下面敕令:
cd wiringPi &&git pull origin
這個(gè)命令會(huì)將會(huì)獲取更新的版本,你然后可以重新運(yùn)行下面的構(gòu)建劇本.
有一個(gè)新的簡(jiǎn)化的腳原來(lái)構(gòu)建和安裝:
cd wiringPi &&./build
這個(gè)新的構(gòu)建腳本將會(huì)為你完成編譯和安裝 WiringPi.它曾一度必要使用 sudo
命令,所以在運(yùn)行這它之前你可能必要檢查一下這個(gè)腳本.
?
運(yùn)行 gpio
命令來(lái)檢查安裝勝利與否:
gpio -v gpio readall
這將給你一些信心,軟件運(yùn)行優(yōu)越.
?
黃線是 GPIO 線.
GPIO image
連線:
?
為了用 PHP 使用 DS18B20 溫度傳感器模塊,你必要執(zhí)行下面的命令來(lái)激活用于樹(shù)莓派上 GPIO 引腳和 DS18B20 的內(nèi)核模塊:
sudomodprobe w1-gpio
sudomodprobe w1-therm
你不想每次 Raspberry 重啟后都手動(dòng)執(zhí)行上述敕令,所以你想每次開(kāi)機(jī)能自動(dòng)啟動(dòng)這些模塊.可以在文件 /etc/modules
中添加下面的敕令行來(lái)做到:
sudonano/etc/modules/
添加下面的敕令行到它里面:
w1-gpio
w1-therm
為了測(cè)試,輸入:
cd/sys/bus/w1/devices/
如今輸入 ls
.
你會(huì)看到你的設(shè)備信息.在設(shè)備驅(qū)動(dòng)程序中,你的 DS18B20 傳感器應(yīng)該作為一串字母和數(shù)字被列出.在本例中,設(shè)備被記錄為 28-000005e2fdc3
.然后你需要使用 cd
命令來(lái)拜訪傳感器,用你自己的序列號(hào)替代我的:?cd 28-000005e2fdc3
.
DS18B20 會(huì)周期性的將數(shù)據(jù)寫(xiě)入文件 w1_slave
,所以你只必要使用命令 cat
來(lái)讀出數(shù)據(jù): cat w1_slave
.
這會(huì)生成下面的兩行文本,輸出中 t=
?表現(xiàn)攝氏單位的溫度.在前兩位數(shù)后面加上一個(gè)小數(shù)點(diǎn)(例如,我收到的溫度讀數(shù)是 30.125 攝氏度).
?
1、 取兩根跳線,把此中一根連接到樹(shù)莓派上的 GPIO24(18 號(hào)引腳),另一根連接 GND 引腳.你可以參考下面這張圖.
2、 現(xiàn)在將跳線的另一端銜接到繼電器板.GND 銜接到繼電器上的 GND,GPIO 輸出線銜接到繼電器的通道引腳號(hào),這取決于你正使用的繼電器型號(hào).記住,將樹(shù)莓派上的 GND 與繼電器上的 GND 銜接銜接起來(lái),樹(shù)莓派上的 GPIO 輸出銜接繼電器上的輸入引腳.
Headers
注意!將繼電器連接樹(shù)莓派的時(shí)候當(dāng)心一些,因?yàn)樗赡軙?huì)導(dǎo)致電流回流,這會(huì)造成短路.
3、 現(xiàn)在將電源銜接繼電器,可以使用 12V 的電源適配器,也可以將 VCC 引腳銜接到什么破上的 3.3V 或 5.5V 引腳.
?
讓我們先寫(xiě)一個(gè)借助于 WiringPi 軟件用來(lái)控制 Paspberry Pi 上 GPIO 引腳的 PHP 劇本.
1、在 Apache 服務(wù)器的網(wǎng)站根目錄下創(chuàng)立一個(gè)文件,使用下面命令切換到該目錄:
cd/var/www/html
2、 新建一個(gè)叫 Home
的文件夾:
sudomkdirHome
3、 新建一個(gè)叫 on.php
的劇本
sudonano on.php
4、 在腳本中參加下面的代碼:
<?php
system("gpio-g mode 24 out");
system("gpio-g write 24 1");
?>
5、 使用 CTRL+O
保留文件,CTRL+X
退出.
上面的代碼中,你在第一行使用敕令將 24 號(hào) GPIO引腳設(shè)置為 output 模式:
system("gpio-g mode 24 out");
在第二行,你使用 1
將 24 號(hào)引腳 GPIO 打開(kāi),在二進(jìn)制中"1"表現(xiàn)打開(kāi),"0"表現(xiàn)關(guān)閉.
6、 為了關(guān)閉繼電器,可以創(chuàng)立另外一個(gè) off.php
文件,并用 0
替換 1
.
<?php
system(" gpio-g mode 24 out ");
system(" gpio-g write 24 1 ");
?>
7、 如果你已經(jīng)將繼電器連接了樹(shù)莓派,可以在瀏覽器中輸入你的樹(shù)莓派的 IP 地址,并在后面加上目錄名和文件名來(lái)進(jìn)行拜訪:
http://{IPADDRESS}/home/on.php
這將會(huì)打開(kāi)繼電器.
8、 要關(guān)閉它,可以拜訪叫 off.php
的文件:
http://{IPADDRESS}/home/off.php
現(xiàn)在你需要能夠在一個(gè)單獨(dú)的頁(yè)面來(lái)控制這兩樣事情,而不用單獨(dú)的刷新或者拜訪這兩個(gè)頁(yè)面.你可以使用 AJAX 來(lái)完成.
9、 新建一個(gè) HTML 文件,并在其中參加下面代碼:
<html>
<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<scripttype="text/javascript">// <![CDATA[
$(document).ready(function(){
$('#on').click(function(){
var a=newXMLHttpRequest();
a.open("GET","on.php"); a.onreadystatechange=function(){
if(a.readyState==4){
if(a.status ==200){
}else alert ("http error");
}
}
a.send();
});
});
$(document).ready(function()
{
$('#Off').click(function(){
var a=newXMLHttpRequest();
a.open("GET","off.php");
a.onreadystatechange=function(){
if(a.readyState==4){
if(a.status ==200){
}else alert ("http error");
}
}
a.send();
});
});
</script>
<button id="on" type="button"``Switch Lights On </button>
<button id="off" type="button"``Switch Lights Off </button>
10、 保留文件,進(jìn)入你的 web 瀏覽器目錄,然后打開(kāi)那個(gè)網(wǎng)頁(yè).你會(huì)看到兩個(gè)按鈕,它們可以打開(kāi)和關(guān)閉燈泡.基于同樣的想法,你還可以使用 bootstrap 和 CSS 來(lái)創(chuàng)建一個(gè)更加漂亮的 web 界面.
?
1、 新建一個(gè) temperature.php
的文件:
sudonano temperature.php
2、 在文件中加入下面的代碼,用你本身的設(shè)備 ID 替換 10-000802292522
:
<?php
//File to read
$file ='/sys/devices/w1_bus_master1/10-000802292522/w1_slave';
//Read the file line by line
$lines =file($file);
//Get the temp from second line
$temp = explode('=', $lines[1]);
//Setup some nice formatting (i.e., 21,3)
$temp = number_format($temp[1]/1000,1,',','');
//And echo that temp
echo $temp ." °C";
?>
3、 打開(kāi)你剛剛創(chuàng)立的 HTML 文件,并創(chuàng)立一個(gè)新的帶有?id
?為 “screen” 的 <div>
標(biāo)簽
<divid="screen"></div>
4、 在這個(gè)標(biāo)簽后或者這個(gè)文檔的尾手下面的代碼:
<script>
$(document).ready(function(){
setInterval(function(){
$("#screen").load('temperature.php')
},1000);
});
</script>
此中,#screen
是標(biāo)簽 <div>
的 id
,你想在它里面顯示溫度.它會(huì)每隔 1000 毫秒加載一次 temperature.php
文件.
我使用了 bootstrap 框架來(lái)制作一個(gè)漂亮的面板來(lái)顯示溫度,你還可以參加多個(gè)圖標(biāo)和圖形讓網(wǎng)頁(yè)更有吸引力.
這只是一個(gè)控制繼電器板并顯示溫度的基礎(chǔ)的系統(tǒng),你可以通過(guò)創(chuàng)建基于定時(shí)和從恒溫器讀數(shù)等基于變亂觸發(fā)來(lái)進(jìn)一步地對(duì)系統(tǒng)進(jìn)行開(kāi)發(fā).
( 題圖:opensource.com)
作者簡(jiǎn)介:
Abdul Hannan Mustajab: 我 17 歲,生活在印度.我正在追求科學(xué),數(shù)學(xué)和計(jì)算機(jī)科學(xué)方面的教育.我在 spunkytechnology.com 上頒發(fā)關(guān)于我的項(xiàng)目的博客.我一直在對(duì)使用不同的微控制器和電路板的基于物聯(lián)網(wǎng)的 AI 進(jìn)行研究.
via: https://opensource.com/article/17/3/operate-relays-control-gpio-pins-raspberry-pi
作者:Abdul Hannan Mustajab 譯者:zhousiyu325 校對(duì):wxy
本文由 LCTT 原創(chuàng)編譯,Linux中國(guó) 榮譽(yù)推出
本文永遠(yuǎn)更新鏈接地址:
維易PHP培訓(xùn)學(xué)院每天發(fā)布《LINUX實(shí)操:如何用樹(shù)莓派控制 GOIO 引腳并操作繼電器》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/12081.html