是否曾经想过如何在任何地方使用手机或计算机来控制风扇,灯光等物品?
我一直想使用任何一部手机,平板电脑,笔记本电脑来控制我的圣诞灯,只需使用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中 打开文件后,您将看到如下屏幕:
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地址以测试服务器。 如果获得下一个映像,则说明您已成功安装并设置服务器。
要更改此默认页面并添加您自己的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线
连接&#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输出转到继电器输入引脚。
警告&#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;
div>。
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 错误,表示请求的对象未找到。通过详细分析发现,该问题可能由以下原因引起:1. `httpd-vhosts.conf` 文件中的配置路径错误;2. `public` 目录下缺少 `.htaccess` 文件。建议检查并修正这些配置,以确保服务器能够正确识别和访问所需的文件路径。 ...
[详细]
蜡笔小新 2024-11-11 18:20:00
在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ...
[详细]
蜡笔小新 2024-11-11 17:28:29
PHP自学必备:从零开始的准备工作与工具选择 ...
[详细]
蜡笔小新 2024-11-07 15:13:09
在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ...
[详细]
蜡笔小新 2024-11-11 18:21:47
在 LeetCode 的“有效回文串 II”问题中,给定一个非空字符串 `s`,允许删除最多一个字符。本篇深入解析了如何判断删除一个字符后,字符串是否能成为回文串,并提出了高效的优化算法。通过详细的分析和代码实现,本文提供了多种解决方案,帮助读者更好地理解和应用这一算法。 ...
[详细]
蜡笔小新 2024-11-11 17:40:42
如何在Windows内置的Ubuntu系统中更改SSH服务的端口号设置 ...
[详细]
蜡笔小新 2024-11-11 17:01:31
在使用MVC和EF框架进行数据保存时,遇到了 `System.Data.Entity.Validation.DbEntityValidationException` 错误,表明存在一个或多个实体验证失败的情况。本文详细分析了该错误的成因,并提出了有效的处理方法,包括检查实体属性的约束条件、调试日志的使用以及优化数据验证逻辑,以确保数据的一致性和完整性。 ...
[详细]
蜡笔小新 2024-11-11 16:54:45
装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ...
[详细]
蜡笔小新 2024-11-11 16:36:53
DVWA学习笔记系列:深入理解CSRF攻击机制 ...
[详细]
蜡笔小新 2024-11-11 13:19:51
在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ...
[详细]
蜡笔小新 2024-11-11 09:31:14
在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ...
[详细]
蜡笔小新 2024-11-09 17:50:30
本指南详细介绍了如何在CentOS 6.6 64位系统上以root用户身份部署Tomcat 8服务器。系统环境为CentOS 6.6 64位,采用源码安装方式。所需软件为apache-tomcat-8.0.23.tar.gz,建议将软件下载至/root/opt目录。具体下载地址请参见官方资源。本指南涵盖了从环境准备到服务启动的完整步骤,适用于需要在该系统环境下搭建高性能Web应用服务器的技术人员。 ...
[详细]
蜡笔小新 2024-11-08 21:38:15
`chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ...
[详细]
蜡笔小新 2024-11-07 17:20:54
CTF竞赛中文件上传技巧与安全绕过方法深入解析 ...
[详细]
蜡笔小新 2024-11-07 15:41:52
本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ...
[详细]
蜡笔小新 2024-11-07 06:06:15
Opera2502898747
这个家伙很懒,什么也没留下!