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

Счетчик автомобилей с использованием Arduino + Обработка + PHP

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

Arduino UNO
× 1
Датчик движения PIR (общий)
× 2
LED (общий)
× 1
Перемычки (общие)
× 1

Приложения и онлайн-сервисы

IDE Arduino
Samsung ARTIK Cloud для Интернета вещей
Обработка
PHP

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

Введение

Этот проект демонстрирует, как можно использовать Arduino . чтобы подсчитать количество автомобилей, которые входят в торговый центр и выезжать из него с помощью двух датчиков, отправить данные в облако с помощью обработки и PHP, а затем просмотреть количество доступных мест на парковке. Для этого проекта вам не нужен экран Ethernet или Wi-Fi!

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

Датчики необходимо разместить на въезде и выезде с парковки, чтобы это работало должным образом. Обычно вы увеличиваете счет каждый раз, когда заезжает машина, и уменьшаются, когда гаснет. Светодиод в системе просто указывает на то, что автомобиль считается правильно, поскольку он загорается каждый раз, когда автомобиль проезжает через датчик.

Обработка

Обработка является языком с открытым исходным кодом / инструментом разработки для написания программ на других компьютерах. Полезно, когда вы хотите, чтобы эти другие компьютеры «разговаривали» с Arduino, например, чтобы отображать или сохранять некоторые данные, собранные Arduino.

В этом проекте мы использовали Обработку для получения данных (количество автомобилей) отправляется Arduino через последовательный порт. Загрузите и установите Processing IDE на свой компьютер. В прилагаемом скетче Processing вы можете увидеть очень простые и понятные строки кода. Здесь мы вызываем файл PHP с помощью метода loadStrings () .

PHP

PHP-файл post-message.php - это тот же файл, что и в руководстве, которое можно найти здесь. Мы загрузили весь zip-файл со страницы Github и отредактировали несколько строк кода в исходном файле, чтобы мы могли использовать его, не входя в нашу учетную запись Samsung. Чтобы это сработало, вам нужно будет следовать приведенным здесь инструкциям по изменению порта вашего сервера WAMP или XAMP и установке сертификата CA для ARTIK Cloud. В качестве альтернативы вы можете использовать удаленный или размещенный сервер с установленным сертификатом SSL.

Скопируйте файлы в папку, скажем, acdemo чтобы к нему можно было получить доступ, используя URL-адрес http:// localhost:8000 / acdemo / post-message.php или https://www.yourwebsite.com/acdemo/post-message.php

В PHP SDK есть только два файла, которые вам нужно отредактировать: ArtikCloudProxy.php и post-message.php . Вы можете просмотреть свой идентификатор клиента и устройства здесь.

В post-message.php файла, вам необходимо получить токен доступа и идентификатор устройства. Самый простой способ получить токен - выполнить следующие действия. Обратите внимание, что единственные данные, которые мы отправляем в облако, - это количество автомобилей . который входит и выходит из торгового центра. Мы создали устройство в Artik Cloud и назвали его Car Counter . с полем счет который содержит это значение.

Теперь, когда все настроено, пора приступить к работе! Выполните следующие простые шаги:

Артик Клауд

  • 1. Войдите в свою учетную запись Artik Cloud и перейдите в Приложения .> Новое приложение
  • 2. Введите необходимые данные для своего приложения на следующем экране.
  • 3. Как только вы закончите создание своего приложения, на вашей панели управления отобразится значок if. Щелкните имя приложения и найдите Показать идентификатор и секрет клиента . . Эти коды нужны вам для файлов PHP.
  • 4. В боковом меню выберите свое приложение и нажмите Разрешения . . Добавить Счетчик автомобилей из списка типов устройств и установите флажок Читать & Написать разрешения.

Кодирование

  • 1. Загрузите скетч на ваш Arduino UNO. Если вы впервые используете Arduino, выполните следующие действия, чтобы понять, как выполнять эту процедуру.
  • 2. Запустите Обработку скетч в Processing IDE. Убедитесь, что ваш сервер WAMP включен . на этом этапе, если вы используете локальный компьютер вместо размещенного сервера.
  • 3. Если вы успешно соединили части для этой системы на основе схемы подключения выше, пройдите через датчик PIR, чтобы проверить, работает ли он.
  • 4. Войдите в свою учетную запись Artik Cloud, чтобы проверить, правильно ли отправляются данные.

Устранение неполадок

  • 1. Откройте ссылку ниже, чтобы узнать, правильно ли отправляются данные в Artik Cloud. Если ничего не пойдет не так, отобразится файл Json. Если вы не видите файл Json, возможно, вы не установили сертификат SSL, как описано выше. Попробуйте вернуться и убедитесь, что правильно следуете указаниям.

http:// localhost:8000 / acdemo / post-message.php? count =10

Что делать дальше

Основываясь на приведенных выше данных о количестве автомобилей, вы можете создать приложение для торгового центра, чтобы покупатели могли просматривать количество доступных мест на парковке перед тем, как отправиться в торговый центр. Вы также можете добавить еще один световой индикатор, который включается, когда парковка заполнена или нет.

Код

  • Код Arduino
  • Обработка эскиза
  • post-message.php
  • ArtikCloudProxy.php
Код Arduino Arduino
Это код, который отображает количество автомобилей в последовательном порту и включает светодиод, чтобы указать, что автомобиль проходит через датчик PIR.
 int pirPinIN =7; int pirPinOUT =10; int led =13; static long counter =0; void setup () {pinMode (pirPinIN, INPUT); pinMode (pirPinOUT, INPUT); pinMode (светодиод, ВЫХОД); digitalWrite (светодиод, НИЗКИЙ); Serial.begin (9600);} void loop () {long now =millis (); если (digitalRead (pirPinIN) ==HIGH) {counter ++; Serial.println (счетчик); digitalWrite (светодиод, ВЫСОКИЙ); задержка (500); digitalWrite (светодиод, НИЗКИЙ); } если (digitalRead (pirPinOUT) ==HIGH) {counter--; Serial.println (счетчик); digitalWrite (светодиод, ВЫСОКИЙ); задержка (500); digitalWrite (светодиод, НИЗКИЙ); }} 
Обработка эскиза Java
Этот скетч обработки считывает входящие значения на аналоговых портах, а затем использует функции последовательной связи для вывода значений.
 import processing.serial. *; Serial myPort; // Создание объекта из Serial classString val; // Данные, полученные от последовательного портаvoid setup () {// Я знаю, что первым портом в списке последовательных портов на моем Mac // является Serial.list () [0]. // На компьютерах с Windows это обычно открывает COM1. // Открываем тот порт, который вы используете. Строка portName =Serial.list () [0]; // измените 0 на 1 или 2 и т. д. в соответствии с вашим портом myPort =new Serial (this, portName, 9600);} void draw () {if (myPort.available ()> 0) {// Если данные доступно, val =myPort.readStringUntil ('\ n'); // прочитать и сохранить в val int count =parseInt (val); if (count> =0) {loadStrings ("http:// localhost:8000 / acdemo / post-message.php? count =" + val); }} println (val); // распечатываем в консоли} 
post-message.php PHP
Этот код ПОЛУЧАЕТ значение, переданное скетчем обработки, и POST счетчик в облако.
  setAccessToken ("YOUR_ACCESS_TOKEN"); $ data ='{"count":'. $ count. '}'; $ payload =array ("data" => $ data, "sdid" => "YOUR_DEVICE_ID", "type" => "message"); $ payload =json_encode ($ payload, JSON_HEX_QUOT | JSON_HEX_TAG); $ response =$ proxy-> sendMessage ($ payload); header ('Content-Type:application / json '); echo json_encode ($ response); 
ArtikCloudProxy.php PHP
Это класс ArtikCloudProxy, необходимый для подключения к облаку Artik. Сохраните его в той же папке, что и post-message.php, где-нибудь в Интернете. Внесите необходимые изменения в конфигурацию.
  &count ="; const API_MESSAGES_POST ="/ сообщения"; # Участники public $ token =null; общедоступный $ user =null; общедоступная функция __construct () {} / ** * Устанавливает токен доступа и ищет информацию профиля пользователя * / общедоступная функция setAccessToken ($ someToken) {$ this-> token =$ someToken; $ this-> user =$ this-> getUsersSelf (); } / ** * вызов API GET * / общедоступная функция getCall ($ url) {$ ch =curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_HTTPGET, истина); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, истина); curl_setopt ($ ch, CURLOPT_HEADER, ложь); curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('Content-Type:application / json', 'Authorization:bearer'. $ this-> token)); $ json =curl_exec ($ ch); $ status =curl_getinfo ($ ch, CURLINFO_HTTP_CODE); curl_close ($ ch); если ($ status ==200) {$ response =json_decode ($ json); } еще {var_dump ($ json); $ response =$ json; } return $ response; } / ** * API-вызов POST * / общедоступная функция postCall ($ url, $ payload) {$ ch =curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_POST, истина); curl_setopt ($ ch, CURLOPT_POSTFIELDS, (String) $ payload); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, истина); curl_setopt ($ ch, CURLOPT_HEADER, ложь); curl_setopt ($ ch, CURLOPT_HTTPHEADER, array ('Content-Type:application / json', 'Authorization:bearer'. $ this-> token)); $ json =curl_exec ($ ch); $ status =curl_getinfo ($ ch, CURLINFO_HTTP_CODE); curl_close ($ ch); если ($ status ==200) {$ response =json_decode ($ json); } еще {var_dump ($ json); $ response =$ json; } return $ response; } / ** * GET / users / self API * / общедоступная функция getUsersSelf () {return $ this-> getCall (ArtikCloudProxy ::API_URL. ArtikCloudProxy ::API_USERS_SELF); } / ** * POST / API сообщений * / общедоступная функция sendMessage ($ payload) {return $ this-> postCall (ArtikCloudProxy ::API_URL. ArtikCloudProxy ::API_MESSAGES_POST, $ payload); } / ** * ПОЛУЧИТЬ / исторический / нормализованный / сообщения / последний API * / общедоступная функция getMessagesLast ($ deviceCommaSeparatedList, $ countByDevice) {$ apiPath =ArtikCloudProxy ::API_MESSAGES_LAST; $ apiPath =str_replace ("<УСТРОЙСТВА>", $ deviceCommaSeparatedList, $ apiPath); $ apiPath =str_replace ("", $ countByDevice, $ apiPath); return $ this-> getCall (ArtikCloudProxy ::API_URL. $ apiPath); }} 

Схема

Схема подключения 2-х датчиков PIR и светодиода

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

  1. Затемнение света с ШИМ с помощью кнопки
  2. Ультразвуковой левитационный аппарат с использованием ARDUINO
  3. IOT - Smart Jar с использованием ESP8266, Arduino и ультразвукового датчика
  4. Железный человек
  5. Найди меня
  6. Как измерить массу Земли с помощью Arduino
  7. Управление увлажнителем Arduino
  8. Сонар с использованием Arduino и отображение при обработке IDE
  9. Идея ко Дню Святого Валентина - счетчик дней, проведенных вместе (фото)
  10. Как сделать компас с помощью Arduino и Processing IDE