Raspberry Pi和Node.js的RGB LED灯物联网入门

在本文中,我们将构建一个红色,绿色和蓝色LED灯的电路,可以使用express.js + socket.io Web套接字服务器从Web应用程序进行控制。

电路原理图

在下面的电路中,我们将红色,蓝色和绿色的三个LED分别连接到1k欧姆寄存器。这些LED的另一端接地。每个LED通过GPIO引脚的1k欧姆寄存器获取功率。

红色LED连接到GPIO引脚BCM 26,绿色LED连接到GPIO引脚BCM 19,蓝色LED连接到GPIO引脚BCM13。该电路非常基础,如果您已阅读上一篇文章,请控制这些LED 是小菜一碟。

项目设置

简而言之,该想法是使用Web应用程序控制每个LED灯。 该Web应用程序基本上是一个具有三个按钮的网站,每个按钮分别用于红色,绿色和蓝色LED指示灯。 在浏览器中打开该网站时,它会连接到Raspberry Pi上托管的WebSocket服务器。

当用户单击按钮(在Web应用程序上)时,此Web应用程序将消息(事件)发送到WebSocket服务器,并且服务器可以基于此事件中包含的信息来控制GPIO引脚的状态。

首先,我们需要创建一些项目文件并安装一些项目依赖项。让我们创建一个项目目录并安装一些npm软件包。

通过以上命令,我们已经初始化了package.json文件,以跟踪我们的项目依赖项。 onoff包提供了一个高级API,用于与Raspberry Pi的GPIO进行通信。

express软件包提供了一个高级API,用于在Node.js中创建HTTP服务器以服务我们的Web应用程序,其中包括.html,.css和.js文件。它还将用于设置WebSocket服务器。

socket.io包提供了用于在Node.js中创建WebSocket服务器的API。 该软件包在服务器端(Node.js)上使用。 但是,socket.io-client提供了一个JavaScript文件,供Web应用程序(在浏览器中)与WebSocket服务器通信。

让我们浏览一下应用程序目录结构。

  1. led-control.js文件包含用于控制LED灯的GPIO逻辑。该文件导出server.js的API函数,这样我们就不必使用GPIO逻辑来膨胀server.js。
  2. server.js文件包含用于托管我们的Web应用程序的Express服务器和一个与该Web应用程序连接以侦听Web应用程序发送的自定义事件(如按钮按下)的WebSocket服务器。
  3. web-app / direcory包含我们的Web应用程序的资产。当用户在浏览器中打开特定的URL时,默认情况下将提供index.html HTML文件。它将style.css样式表导入样式按钮。
  4. main.js包含连接到WebSocket服务器并侦听DOM按钮单击事件的逻辑。它是由index.html导入的。

应用逻辑

既然我们已经完成了项目设置,那么我们继续编写上面文件中包含的实际逻辑。

GPIO设置

从上面的电路图中,我们需要控制三个引脚,每个引脚用于红色,绿色和蓝色LED灯。使用onoff包,我们可以轻松实现这一目标。

如前文所述,onoff封装使用BCM引脚编号系统。根据电路图,我们为LED灯的每种颜色分配了相应的引脚号。

我们导出了一个切换函数,该函数为每种颜色的光采用布尔值。根据这些值,将0或1写入相应的GPIO,使其输出3.3V或0V。

服务器设置

我们需要的下一步是HTTP和WebSocket服务器。

在上面的server.js文件中,我们导入了express和socket.io库。由于我们要从此文件控制GPIO,因此我们还从led-control.js文件导入了切换功能。

首先,我们需要创建一个HTTP服务器,它只是一个快速应用程序。 express()函数返回此类应用程序。

然后,我们需要设置一些路由来提供.html和其他资产文件。 在行号13上使用app.get(‘/’,handler)设置。 使用/ URL路径访问我们的Web应用程序的任何人都将获得位于web-app目录内的index.html文件。 我们还应确保发送正确的标头。

我们需要配置的下一件事是设置资产交付。由于我们的index.html文件需要web-app目录中的main.js和style.css文件,因此我们使用标准的express.js设置来交付资产。

Web应用程序中还需要socket.io.js文件才能与我们正在构建的SocketServer通信。 该文件位于node_modules / socket.io-client / dist目录中。 在行号 23上,我们指示express.js,如果在web-app目录中找不到资产文件,请在此目录中查找。

正确配置了Express应用程序后,我们需要从该应用程序创建一个HTTP服务器实例。在行号26上使用app.listen()调用,HTTP服务器从Raspberry Pi的9000端口启动。

Web应用程序

HTML代码

CSS代码

JavaScript代码

启动Web应用程序服务器和套接字服务器

详情参阅 - 亚图跨际

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值