热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用RaspberryPi控制GPIO引脚和操作继电器

是否曾经想过如何在任何地方使用手机或计算机来控制风扇,灯光等物品?我一直想使用任何一部手机,平板电脑,笔记本电脑来控制我的圣

是否曾经想过如何在任何地方使用手机或计算机来控制风扇,灯光等物品?

我一直想使用任何一部手机,平板电脑,笔记本电脑来控制我的圣诞灯,只需使用Raspberry Pi。 让我向您展示如何使用PHP和温度传感器通过Pi操作继电器和控制GPIO引脚。 我使用AJAX将它们放在一起。

硬件要求

  • 树莓派
  • 已安装Raspbian的SD卡(可以使用任何SD卡,但我更喜欢使用32GB的Class 10卡)
  • 电源适配器
  • 跳线(母对母,公对母)
  • 中继板(我使用带继电器的12V中继板)
  • DS18B20温度探头
  • Raspberry Pi的Wi-Fi适配器
  • 路由器(对于Internet访问,您需要具有端口转发支持的路由器)
  • 10K欧姆电阻

软件需求

  • 在您的SD卡上下载并安装Raspbian
  • 正常的互联网连接
  • Apache Web服务器
  • PHP
  • 接线图
  • Mac或Windows客户端上的SSH客户端

常规配置和设置

1.将SD卡插入Raspberry Pi,然后使用以太网电缆将其连接到路由器

2.连接Wi-Fi适配器。

3.现在SSH到Pi,并使用以下命令编辑接口文件:

须藤nano / etc / network / interfaces

这将在名为nano的编辑器中打开文件。 这是一个非常简单的文本编辑器,易于使用和使用。 如果您不熟悉基于Linux的操作系统,请使用箭头键。

nano中打开文件后,您将看到如下屏幕:

File editor nano

4.要配置您的无线网络,请如下修改文件:

iface lo inet回送

iface eth0 inet dhcp

 

allow-hotplug wlan0

自动wlan0

 

iface wlan0 inet dhcp

wpa-ssid“您的网络SSID”

wpa-psk“您的密码”

5.按CTRL + O保存它,然后按CTRL + X退出编辑器。

至此,一切都已配置完毕,您需要做的就是通过运行以下命令重新加载网络接口:

sudo服务网络重新加载

(警告:如果使用远程连接进行连接,它将立即断开连接。)

软件配置

安装Apache Web服务器

Apache是​​一种流行的Web服务器应用程序,您可以将其安装在Raspberry Pi上以允许其提供网页服务。 Apache本身可以通过HTTP提供HTML文件,并且通过其他模块可以使用脚本语言(例如PHP)为动态网页提供服务。

在命令行上键入以下命令来安装Apache:

须藤apt-get install apache2 -y

安装完成后,键入您的Pi的IP地址以测试服务器。 如果获得下一个映像,则说明您已成功安装并设置服务器。

Successful server setup

要更改此默认页面并添加您自己的html文件,请转到var / www / html :

cd / var / www / html

要对此进行测试,请将任何文件添加到此文件夹。

安装PHP

PHP是预处理器,这意味着这是服务器接收到网页请求时运行的代码。 它运行,计算出需要在页面上显示的内容,然后将该页面发送到浏览器。 与静态HTML不同,PHP在不同情况下可以显示不同的内容。 其他语言也可以做到这一点,但是由于WordPress是用PHP编写的,因此这一次您需要使用它。 PHP是网络上非常流行的语言,其中编写了大型项目,例如Facebook和Wikipedia。

使用以下命令安装PHP和Apache软件包:

须藤apt-get install php5 libapache2-mod-php5 -y

测试PHP

创建文件index.php :

须藤nano index.php

在其中添加一些PHP内容:

<&#xff1f;php echo“你好世界”; &#xff1f;>

保存文件。 接下来&#xff0c;删除“ index.html”&#xff0c;因为它优先于“ index.php”&#xff1a;

须藤rm index.html

刷新浏览器。 您应该看到“ hello world”。 这不是动态的&#xff0c;但是PHP仍然可以使用。 如果您看到上面的原始PHP而不是“ hello world”&#xff0c;请使用以下命令重新加载并重新启动Apache&#xff1a;

须藤/etc/init.d/apache2重新加载

sudo /etc/init.d/apache2重新启动

安装WiringPi  

WiringPi保持在git下&#xff0c;以便于更改跟踪&#xff1b; 但是&#xff0c;如果由于某种原因无法使用git &#xff0c;则有一个计划B。 &#xff08;通常&#xff0c;您的防火墙将阻止您&#xff0c;因此请先检查一下&#xff01;&#xff09;

如果您尚未安装git &#xff0c;则在任何Debian版本&#xff08;例如Raspbian&#xff09;下&#xff0c;都可以使用以下命令进行安装&#xff1a;

须藤apt-get install git-core

如果您在此处遇到任何错误&#xff0c;请确保您的Pi是最新版本的Raspbian&#xff1a;

sudo apt-get更新sudo apt-get升级

要使用git获得WiringPi&#xff1a;

须藤git clone git&#xff1a;//git.drogon.net/wiringPi

如果您已经是第一次使用克隆操作&#xff0c;则&#xff1a;

CD接线Pi git pull原点

它将获取更新的版本&#xff0c;然后您可以重新运行下面的构建脚本。

要构建/安装&#xff0c;有一个新的简化脚本&#xff1a;

cdconnectionPi ./build

新的构建脚本将为您编译并安装所有内容。 它确实在某一时刻使用了sudo命令&#xff0c;因此您可能希望在运行脚本之前先对其进行检查。

测试WiringPi

运行gpio命令检查安装&#xff1a;

gpio -v gpio阅读全部

这应该使您确信它可以正常运行。

将DS18B20连接到Raspberry Pi

  • 探头上的黑线用于GND
  • 红线用于VCC
  • 黄色线是GPIO线

GPIO image

连接&#xff1a;

  • VCC至3V引脚1
  • GPIO线连接到引脚7&#xff08;GPIO 04&#xff09;
  • 接地线到任何GND引脚9

软件配置

要将DS18B20温度传感器模块与PHP一起使用&#xff0c;您需要通过执行以下命令来激活Raspberry Pi和DS18B20上GPIO引脚的内核模块&#xff1a;

须藤modprobe w1-gpio

须藤modprobe w1-therm

您不想每次重新启动Raspberry时都手动执行此操作&#xff0c;因此希望在每次引导时启用这些模块。 这是通过将以下行添加到文件/ etc / modules中来完成的 &#xff1a;

须藤nano / etc / modules /

向其添加以下行&#xff1a;

w1-gpio

w1-therm

要对此进行测试&#xff0c;请输入&#xff1a;

cd / sys / bus / w1 / devices /

现在键入ls。

您应该看到您的设备信息。 在设备驱动程序中&#xff0c;DS18B20传感器应以一系列数字和字母列出。 在这种情况下&#xff0c;设备注册为28-000005e2fdc3。 然后&#xff0c;您需要使用cd命令访问传感器&#xff0c;并用您自己的序列号替换我的序列号&#xff1a; cd 28-000005e2fdc3。

DS18B20传感器会定期写入w1_slave文件&#xff0c;因此您只需使用cat命令读取它&#xff1a;cat w1_slave。

这将产生以下两行文本&#xff0c;输出t &#61;显示摄氏温度。 在前两位数字后放置一个小数点&#xff08;例如&#xff0c;我收到的温度读数为30.125摄氏度&#xff09;。

连接继电器

1.取两根跳线&#xff0c;并将其中一根连接到Pi上的GPIO 24&#xff08;Pin18&#xff09;&#xff0c;另一根连接到GND引脚。 您可以参考下图。

2.现在&#xff0c;将电线的另一端连接到继电器板上。 将GND连接到继电器上的GND&#xff0c;并将GPIO输出线连接到继电器通道的引脚号&#xff0c;这取决于您使用的继电器。 记住 地线 转到继电器上的GND&#xff0c;GPIO输出转到继电器输入引脚。

Headers

警告&#xff01; 请特别注意与Pi的继电器连接&#xff0c;因为如果这会引起电流倒流&#xff0c;则可能会造成短路。

3.现在&#xff0c;使用12V电源适配器或将VCC引脚连接到Pi上的3.3V或5V&#xff0c;将电源连接到继电器。

使用PHP控制中继

让我们在WiringPi软件的帮助下创建一个PHP脚本来控制Raspberry Pi上的GPIO引脚。

1.在Apache服务器的根Web目录中创建一个文件。 导航使用&#xff1a;

cd ../../../

cd var / www / html /

2.创建一个名为Home的新文件夹&#xff1a;

sudo mkdir主页

3.创建一个名为on.php的新PHP文件&#xff1a;

须藤nano on.php

4.向其中添加以下代码&#xff1a;



system ( “ gpio - g mode 24 out “ ) ;
system ( “ gpio - g write 24 1) ;

?>

5.使用CTRL &#43; O保存文件&#xff0c;然后使用CTRL &#43; X退出

在上面的代码中&#xff0c;在第一行中&#xff0c;您已使用以下命令将GPIO引脚24设置为输出模式&#xff1a;


system ( “ gpio - g mode 24 out “ ) ;

在第二行中&#xff0c;使用“ 1”打开了GPIO引脚24&#xff0c;其中二进制“ 1”表示ON&#xff0c;“ 0”表示OFF。

6.要关闭继电器&#xff0c;请创建另一个名为off.php的文件&#xff0c;并将“ 1”替换为“ 0”。



system ( “ gpio - g mode 24 out “ ) ;
system ( “ gpio - g write 24 0) ;

?>

7.如果您已将中继连接到Pi&#xff0c;请访问Web浏览器并键入Pi的IP地址&#xff0c;然后输入目录名称和文件名&#xff1a;

http&#xff1a;// {IPADDRESS} /home/on.php

这将打开继电器。

8.要关闭它&#xff0c;请打开名为off.php的页面&#xff0c;

http&#xff1a;// {IPADDRESS} /home/off.php

现在&#xff0c;您需要从一个页面控制这两件事&#xff0c;而无需单独刷新或访问这些页面。 为此&#xff0c;您将使用AJAX。

9.创建一个新HTML文件并将此代码添加到其中。

[ html &#43; php &#43; ajax codeblock ]

< html >



< script src &#61; "https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js" >

< script type &#61; "text/Javascript" > //


$ ( document ) . ready ( function ( ) {


$ ( &#39;#on&#39; ) . click ( function ( ) {

var a &#61; new XMLHttpRequest ( ) ;


a . open ( "GET" , "on.php" ) ; a . onreadystatechange &#61; function ( ) {

if ( a . readyState &#61;&#61; 4 ) { if ( a . status &#61;&#61; 200 ) {

} else alert ( "http error" ) ; } }


a . send ( ) ;

} ) ;

} ) ;


$ ( document ) . ready ( function ( )

{ $ ( &#39;#Off&#39; ) . click ( function ( ) {

var a &#61; new XMLHttpRequest ( ) ;


a . open ( "GET" , "off.php" ) ;


a . onreadystatechange &#61; function ( ) {

if ( a . readyState &#61;&#61; 4 ) {

if ( a . status &#61;&#61; 200 ) {

} else alert ( "http error" ) ; } }


a . send ( ) ;

} ) ;

} ) ;



< button id &#61; "on" type &#61; "button" > Switch Lights On button >

< button id &#61; "off" type &#61; "button" > Switch Lights Off button >

10.保存文件&#xff0c;转到Web浏览器&#xff0c;然后打开该页面。 您会看到两个按钮&#xff0c;它们将打开和关闭灯。 基于相同的想法&#xff0c;您可以使用引导程序和CSS技能创建漂亮的Web界面。

在此网页上查看温度

1.创建一个名为temperature.php的文件&#xff1a;


sudo nano temperature . php

  2.向其中添加以下代码&#xff0c;将10-000802292522替换为您的设备ID&#xff1a;


//File to read
$file &#61; &#39;/sys/devices/w1_bus_master1/10-000802292522/w1_slave&#39; ;
//Read the file line by line
$lines &#61; file ( $file ) ;
//Get the temp from second line
$temp &#61; explode ( &#39;&#61;&#39; , $lines [ 1 ] ) ;
//Setup some nice formatting (i.e., 21,3)
$temp &#61; number_format ( $temp [ 1 ] / 1000 , 1 , &#39;,&#39; , &#39;&#39; ) ;
//And echo that temp
echo $temp . " °C" ;
?>

3.转到您刚创建HTML文件&#xff0c;然后创建一个ID为 “ screen”的新

&#xff1a;

4.在标记后或文档末尾添加以下代码&#xff1a;

< script >

$ ( document ) . ready ( function ( ) {

setInterval ( function ( ) {

$ ( "#screen" ) . load ( &#39;temperature.php&#39; )
} , 1000 ) ;
} ) ;
script >

在此&#xff0c; #screen是要在其中显示温度的

ID 。 它每1000毫秒加载一次temperature.php文件。

我使用引导程序制作了一个漂亮的面板来显示温度。 您还可以添加多个图标和字形&#xff0c;以使其更具吸引力。

这只是一个控制继电器板并显示温度的基本系统。 您可以通过基于时间&#xff0c;恒温器的温度读数等创建基于事件的触发器来进一步开发它。

翻译自: https://opensource.com/article/17/3/operate-relays-control-gpio-pins-raspberry-pi



推荐阅读
  • XAMPP 遇到 404 错误:无法找到请求的对象
    在使用 XAMPP 时遇到 404 错误,表示请求的对象未找到。通过详细分析发现,该问题可能由以下原因引起:1. `httpd-vhosts.conf` 文件中的配置路径错误;2. `public` 目录下缺少 `.htaccess` 文件。建议检查并修正这些配置,以确保服务器能够正确识别和访问所需的文件路径。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 在 LeetCode 的“有效回文串 II”问题中,给定一个非空字符串 `s`,允许删除最多一个字符。本篇深入解析了如何判断删除一个字符后,字符串是否能成为回文串,并提出了高效的优化算法。通过详细的分析和代码实现,本文提供了多种解决方案,帮助读者更好地理解和应用这一算法。 ... [详细]
  • 如何在Windows内置的Ubuntu系统中更改SSH服务的端口号设置
    如何在Windows内置的Ubuntu系统中更改SSH服务的端口号设置 ... [详细]
  • 系统数据实体验证异常:多个实体验证失败的错误处理与分析
    在使用MVC和EF框架进行数据保存时,遇到了 `System.Data.Entity.Validation.DbEntityValidationException` 错误,表明存在一个或多个实体验证失败的情况。本文详细分析了该错误的成因,并提出了有效的处理方法,包括检查实体属性的约束条件、调试日志的使用以及优化数据验证逻辑,以确保数据的一致性和完整性。 ... [详细]
  • 装饰者模式(Decorator):一种灵活的对象结构设计模式
    装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • FreeBSD环境下PHP GD库安装问题的详细解决方案
    在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ... [详细]
  • 本指南详细介绍了如何在CentOS 6.6 64位系统上以root用户身份部署Tomcat 8服务器。系统环境为CentOS 6.6 64位,采用源码安装方式。所需软件为apache-tomcat-8.0.23.tar.gz,建议将软件下载至/root/opt目录。具体下载地址请参见官方资源。本指南涵盖了从环境准备到服务启动的完整步骤,适用于需要在该系统环境下搭建高性能Web应用服务器的技术人员。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
author-avatar
Opera2502898747
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有