Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Arduino - разблокировка веб-шаблона

Компоненты и расходные материалы

Arduino UNO
× 1
PHPoC WiFi Shield для Arduino
× 1
Серводвигатель Seeed SG92R
× 1
Перемычки
× 1

Об этом проекте

Введение

Если вы новичок, рекомендую прочитать следующие уроки:

  • Arduino - Мотор
  • Arduino - сервомотор
  • Arduino - Wi-Fi

Вы можете быть знакомы с комбинацией разблокировки, когда получаете доступ к своему телефону. Теперь эта функция доступна на 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 поддерживает веб-сокет, что удобно для этого проекта.
  • PHPoC Shield имеет выделенный встроенный веб-сервер, позволяющий хранить встроенное веб-приложение на щите.

PHPoC Shield имеет несколько встроенных веб-приложений, которые позволяют пользователю использовать встроенное веб-приложение для управления / мониторинга Arduino, не требуя каких-либо знаний в области веб-программирования.

Кроме того, PHPoC Shield позволяет пользователям, которые могут программировать веб-приложение, разрабатывать собственное веб-приложение и хранить его на PHPoC Shield.

Демонстрация

Поток данных

Веб-браузер <---> PHPoC WiFi Shield <---> Arduino

Как это работает

Когда пользователь рисует свой шаблон в веб-браузере, шаблон сопоставляется со строкой. Эта строка шаблона отправляется в Arduino через WebSocket (через PHPoC Shield).

Когда Arduino получает строку входного шаблона, он сравнивает полученную строку с жестко закодированной строкой шаблона в Arduino. Если они совпадают, Arduino отправляет ПРИНЯТЫЙ код обратно клиенту (веб-браузеру) и устанавливает аутентифицированную переменную к истине. В противном случае Arduino отправляет клиенту ОТКАЗАННЫЙ код и устанавливает аутентифицированную переменную . на ложь.

Когда Arduino получает команду управления от пользователя, она проверяет значение аутентифицированной переменной . первый. Если значение истинно, он выполняет задачу, соответствующую команде. Если значение ложно, он отправляет ОТКАЗАННЫЙ код клиенту.

Сопоставление паттернов

Шаблон будет сопоставлен со строкой. Например, на изображении выше строка шаблона - «1, 4, 8, 6, 3».

Установлен тайм-аут. По прошествии определенного периода времени, если пользователь не выполняет никаких действий, срок аутентификации истекает, и пользователю необходимо снова ввести шаблон, чтобы разблокировать Arduino.

Исходный код включает два файла:

  • ArduinoUnlockExample.ino:компилируется и загружается в Arduino через Arduino IDE.
  • unlock.php:это код веб-приложения, он загружается на экран PHPoC через отладчик PHPoC.

Что нам нужно делать

  • Установить информацию о Wi-Fi для экрана PHPoC (SSID и пароль)
  • Загрузить новый интерфейс на PHPoC Shield
  • Напишите код Arduino

Настройка информации о Wi-Fi для PHPoC Shield

См. Эту инструкцию.

Загрузить новый веб-интерфейс в PHPoC Shield

  • Загрузите исходный код PHPoC unlock.php (в разделе кода).
  • Загрузите два следующих изображения для управления серводвигателем.
  • Загрузите его в PHPoC Shield с помощью отладчика PHPoC в соответствии с этой инструкцией (обратите внимание, что НЕ удаляйте существующий файл в PHPoC Shield)

Напишите код Arduino

  • Установите библиотеку PHPoC для Arduino в Arduino IDE (см. инструкцию)
  • См. исходный код в разделе кода.
  • Скомпилируйте и загрузите в Arduino через Arduino IDE.

Попробуйте

  • Нажмите кнопку последовательного порта в среде 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 ()
  • delay ()
  • миллис ()
  • цикл для
  • цикл while
  • если еще
  • цикл ()
  • setup ()
  • String.toInt ()
  • String.substring ()
  • String.indexOf ()
  • String.remove ()
  • String.equals ()

Код

  • unlock.php
  • ArduinoUnlockExample
unlock.php PHP
Это веб-интерфейс пользователя
     Arduino - PHPoC Shield        

Arduino - разблокировка веб-шаблона

Угол: 0

WebSocket: null

ArduinoUnlockExample Arduino
 / * веб-сервер arduino - разблокировка по шаблону * / # include "SPI.h" #include "Phpoc.h" #include  #define CMD_AUTH 0 # define CMD_CTRL 1 #define ACCEPTED "202" #define НЕАВТОРИЗОВАННЫЙ "401" сервер PhpocServer (80); сервопривод; шаблон строки; аутентификация bool; длительный тайм-аут без знака; длительный срок без знака lastActiveTime; void setup () {Serial.begin (9600); в то время как (! серийный); Phpoc.begin (PF_LOG_SPI | PF_LOG_NET); //Phpoc.begin (); server.beginWebSocket ("веб-шаблон"); Serial.print ("Адрес сервера WebSocket:"); Serial.println (Phpoc.localIP ()); сервопривод (8); // подключает сервопривод на выводе 8 к сервообъекту servo.write (90); шаблон =Строка ("1,4,8,6,3"); Authenticated =false; таймаут =10000; // 10000 миллисекунд lastActiveTime =0;} void loop () {// ждать нового клиента:PhpocClient client =server.available (); если (клиент) {Строковые данные =client.readLine (); если (данные) {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)); если (шаблон.equals (reqPattern)) {аутентифицированный =истина; sendResponse (ПРИНЯТО, 3); lastActiveTime =миллис (); } else {//Serial.print(reqPattern); Authenticated =false; sendResponse (НЕСАНКЦИОНИРОВАНО, 3); }} else if (cmd ==CMD_CTRL) {if (аутентифицировано) {int angle =data.substring (pos + 1) .toInt (); // угол =карта (угол, -90, 90, 0, 180); угол =карта (угол, 90, -90, 0, 180); servo.write (угол); lastActiveTime =миллис (); Serial.println (угол); } else {sendResponse (НЕСАНКЦИОНИРОВАНО, 3); }}}} если (аутентифицированный &&((millis () - lastActiveTime)> тайм-аут)) {аутентифицированный =false; sendResponse (НЕСАНКЦИОНИРОВАНО, 3); }} void sendResponse (char * data, int len) {server.write (данные, len); } 

Схема


Производственный процесс

  1. Выкройка одежды
  2. Веб-контроллер DMX
  3. Arduino Spybot
  4. FlickMote
  5. Самодельный телевизор B-Gone
  6. Основные часы
  7. Найди меня
  8. Arduino Power
  9. Tech-TicTacToe
  10. Четвероногий Arduino