亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino - Web 模式解锁

组件和用品

Arduino UNO
× 1
适用于 Arduino 的 PHPoC WiFi 扩展板
× 1
Seeed Servo Motor SG92R
× 1
跳线
× 1

关于这个项目

简介

如果您是初学者,我建议您阅读以下教程:

  • Arduino - 电机
  • Arduino - 伺服电机
  • Arduino - 无线网络

访问手机时,您可能对解锁图案很熟悉。现在这个功能在 Arduino 上可用。它可以防止未经授权的人控制/监视 Arduino。

用户可以自由地将本项目中的代码重用于其他应用程序。为简单起见,我以伺服电机控制为例。

这个想法来源于两个为PHPoC平台编写的项目:

  • https://www.hackster.io/iot_lover/web-based-pattern-unlock-for-iot-device-aeaf44。
  • https://forum.phpoc.com/articles/tutorials/350-servo-motor-controlling-servo-motor-via-websocket-with-graphic-ui

我将它们改编为 Arduino。

在这个项目中,我使用 PHPoC WiFi Shield 将 Arduino 连接到互联网,因为:

  • PHPoC Shield 支持 websocket,方便本项目使用。
  • PHPoC Shield 有一个专用的嵌入式 Web 服务器,允许在Shield 上存储嵌入式 Web 应用程序。

PHPoC Shield 有一些内置的 Web 应用程序,允许用户使用嵌入式 Web 应用程序来控制/监控 Arduino,而无需任何 Web 编程知识。

此外,PHPoC shield 允许可以编写 Web 应用程序的用户开发自己的 Web 应用程序并将其存储在 PHPoC Shield 上。

演示

数据流

Web 浏览器 <---> PHPoC WiFi Shield <---> Arduino

工作原理

当用户在 Web 浏览器上绘制他们的图案时,图案被映射到一个字符串。此模式字符串通过 WebSocket(通过 PHPoC Shield)发送到 Arduino。

当 Arduino 接收到输入的模式字符串时,它会将接收到的字符串与 Arduino 中的硬编码模式字符串进行比较。如果它们匹配,Arduino 将 ACCEPTED 代码发送回客户端(Web 浏览器)并设置 认证变量 为真。否则,Arduino 将 DENIED 代码发送到客户端并设置 已验证变量 为假。

当Arduino收到用户的控制命令时,它会检查认证变量的值 第一的。如果值为真,则执行与命令对应的任务。如果值为 false,则向客户端发送 DENIED 代码。

模式映射

模式将被映射到一个字符串。例如,在上图中,模式字符串为“1, 4, 8, 6, 3”。

设置了超时。一段时间后,如果用户没有任何活动,则验证已过期,用户需要重新输入图案才能解锁Arduino。

源代码包括两个文件:

  • ArduinoUnlockExample.ino:通过Arduino IDE编译并上传到Arduino
  • unlock.php:这是网络应用程序代码,通过 PHPoC Debugger 上传到 PHPoC shield。

我们需要做什么

  • 为 PHPoC shield 设置 Wifi 信息(SSID 和密码)
  • 将新 UI 上传到 PHPoC shield
  • 编写 Arduino 代码

为 PHPoC Shield 设置 Wifi 信息

请参阅此说明。

将新的 Web UI 上传到 PHPoC Shield

  • 下载 PHPoC 源代码 unlock.php(在代码部分)。
  • 下载下面两张控制伺服电机的图片
  • 根据此说明使用 PHPoC 调试器将其上传到 PHPoC shield(注意不要删除 PHPoC Shield 上的现有文件)

编写 Arduino 代码

  • 在 Arduino IDE 上为 Arduino 安装 PHPoC 库(请参阅说明)
  • 在代码部分查看源代码。
  • 通过Arduino IDE编译并上传到Arduino

试试吧

  • 单击 Arduino IDE 上的串行按钮以查看 IP 地址。
  • 打开网页浏览器,输入http:// replace_ip_address /unlock.php
  • 点击连接按钮并进行测试。

适合初学者的最佳 Arduino 入门套件

如果您正在寻找 Arduino 套件,请参阅适合初学者的最佳 Arduino 套件

函数参考

  • Arduino - 伺服库
  • Servo.attach()
  • Servo.write()
  • Servo.writeMicroseconds()
  • Servo.read()
  • Servo.attached()
  • Servo.detach()
  • Serial.begin()
  • Serial.println()
  • 延迟()
  • millis()
  • for 循环
  • while 循环
  • 否则
  • 循环()
  • 设置()
  • String.toInt()
  • String.substring()
  • String.indexOf()
  • String.remove()
  • String.equals()

代码

  • unlock.php
  • ArduinoUnlock 示例
unlock.phpPHP
这是 Web 用户界面
Arduino - PHPoC Shield

Arduino - Web 模式解锁

WebSocket:null

ArduinoUnlockExampleArduino
/* arduino web server - 模式解锁 */#include "SPI.h"#include "Phpoc.h"#include #define CMD_AUTH 0#define CMD_CTRL 1#define ACCEPTED "202"#define未经授权的“401”PhpocServer服务器(80);伺服伺服;字符串模式;布尔认证;无符号长超时;无符号长lastActiveTime;无效设置(){Serial.begin(9600);而(!串行); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); //Phpoc.begin(); server.beginWebSocket("web_pattern"); Serial.print("WebSocket 服务器地址:"); Serial.println(Phpoc.localIP());伺服.attach(8); // 将引脚 8 上的伺服器连接到伺服器对象servo.write(90); pattern =String("1,4,8,6,3");认证=假;超时 =10000; // 10000 毫秒 lastActiveTime =0;}void loop() { // 等待新客户端:PhpocClient client =server.available(); if (client) { String data =client.readLine(); if(data) { int pos =data.indexOf(':'); int cmd =data.substring(0, pos).toInt(); if(cmd ==CMD_AUTH) { String reqPattern =data.substring(pos+1); reqPattern.remove(reqPattern.indexOf(13)); reqPattern.remove(reqPattern.indexOf(10)); if(pattern.equals(reqPattern)) { 认证 =真;发送响应(接受,3); lastActiveTime =毫秒(); } else { //Serial.print(reqPattern);认证=假;发送响应(未授权,3); } } else if(cmd ==CMD_CTRL) { if(authenticated) { int angle =data.substring(pos+1).toInt(); //angle =map(angle, -90, 90, 0, 180);角度 =地图(角度,90,-90,0,180);伺服.写(角度); lastActiveTime =毫秒(); Serial.println(角度); } else { sendResponse(UNAUTHORIZED, 3); } } } } if (authenticated &&((millis() - lastActiveTime)> timeout)){authenticated =false;发送响应(未授权,3); }}void sendResponse(char *data, int len) { server.write(data, len); }

示意图


制造工艺

  1. 服装图案
  2. Web 操作的 DMX 控制器
  3. Arduino Spybot
  4. FlickMote
  5. 自制电视 B-Gone
  6. 主时钟
  7. 找到我
  8. Arduino Power
  9. Tech-TicTacToe
  10. Arduino Quadruped
  11. Arduino - 通过串口向 Web 发送温度
  12. Arduino Joystick