Оглавление:

Как создать систему обнаружения движения с помощью Arduino: 7 шагов
Как создать систему обнаружения движения с помощью Arduino: 7 шагов

Видео: Как создать систему обнаружения движения с помощью Arduino: 7 шагов

Видео: Как создать систему обнаружения движения с помощью Arduino: 7 шагов
Видео: Электронный замок с RFID на Arduino 2024, Июль
Anonim
Как создать систему обнаружения движения с помощью Arduino
Как создать систему обнаружения движения с помощью Arduino

Создайте счетчик движения и присутствия, используя Feather HUZZAH, запрограммированный с помощью Arduino и работающий на Ubidots.

Эффективное физическое обнаружение движения и присутствия в умных домах и умном производстве может быть очень полезным в самых разных приложениях, от решений для пожилых людей в условиях окружающей среды (AAL) до системы подсчета производства, которая питает более крупные MES. Другие приложения для обнаружения движения и присутствия включают, но не ограничиваются:

  1. Автоматика для дверей и ворот
  2. Датчики парковки для обозначения свободных мест
  3. Удаленный мониторинг уровня в резервуаре
  4. Умные дома и помещения для освещения и безопасности
  5. Обнаружение и подсчет единиц в конвейерных линиях
  6. Обнаружение меток на печатных материалах
  7. Обнаружение жидкости внутри картона, пластика и бумаги
  8. Обнаружение расстояния
  9. Счетчики посетителей

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

В этом руководстве мы сосредоточимся на создании счетчика производства в реальном времени; приложение будет считать каждую единицу, проходящую по конвейерной ленте. Мы будем использовать Arduino IDE для программирования ультразвукового датчика Feather HUZZAH ESP8266 и Ubidots для разработки нашего приложения и отображения информационной панели IoT.

Шаг 1. Требования

  1. Перо HUZZAH с ESP8266MB7389-100
  2. Ультразвуковой датчик
  3. Arduino IDE 1.8.2 или выше
  4. Учетная запись Ubidots -или-Лицензия STEM

Шаг 2: настройка

  • I Настройка оборудования
  • II. Установка прошивки
  • III. Разработка приложений Ubidots (события, переменные и информационные панели)

Шаг 3: Настройка оборудования

Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования

Ультразвуковой датчик MB7389-100 - это недорогой вариант для промышленных приложений с широким диапазоном требований и низким энергопотреблением в сложных погодных условиях благодаря классу IPv67.

Для начала скопируйте схему ниже, чтобы прикрепить ультразвуковой датчик к Feather HUZZAH ESP8266.

ПРИМЕЧАНИЕ. Показания датчика могут быть аналоговыми или ШИМ; ниже мы собираемся объяснить настройку для чтения ШИМ, для получения дополнительной информации см. примеры, показанные выше.

[Необязательно] поместите микроконтроллер и датчики в корпус со степенью защиты IP67, чтобы защитить их от пыли, воды и других опасных факторов окружающей среды. Стандартный корпус похож на тот, что изображен на фотографиях выше.

Шаг 4: установка прошивки

Установка прошивки
Установка прошивки
Установка прошивки
Установка прошивки

Во-первых, вы должны установить Feather Huzzah в IDE Arduino и скомпилировать код. Не забудьте проверить эту настройку, выполнив простой тест на мигание. Для получения дополнительной информации о подключении устройства Feather ознакомьтесь с этим полезным руководством по настройке оборудования.

Чтобы отправить данные датчика на платформу разработки Ubidots IoT, скопируйте и вставьте приведенный ниже код в IDE Arduino. Не забудьте назначить имя сети Wi-Fi, пароль и токен вашей учетной записи Ubidots, как указано в коде.

/ ******************************** Включенные библиотеки *************** ****************/#включают /****************************** ** Константы и объекты ****************************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Введите здесь ваше имя SSIDconst char * SSID_PASS = "xxxxxxxx"; // Поместите сюда свой парольconst char * TOKEN = "Assig_your_ubidots_token"; // Поместите сюда свой TOKENconst char * DEVICE_LABEL = "motion-control"; // Метка вашего устройстваconst char * VARIABLE_LABEL = "distance"; // Метка вашей переменнойconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Пользователи Ubidots Business // const char * HTTPSERVER = " things.ubidots.com "; // Пользователи Ubidots для образовательных учрежденийint HTTPPORT = 80; / * Ультразвуковой датчик * / const int pwPin1 = 5; // Вывод ШИМ, к которому подключен датчик Wi-FiClient clientUbi; / ******************************* Дополнительные функции *** *************************** // ** Получает длину тела @arg переменной тело типа char @return dataLen the длина переменной * / int dataLen (char * variable) {uint8_t dataLen = 0; for (int i = 0; i distance / 25.4 * / float distance = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, distance); delay (1000);} void sendToUbidots (const char * device_label, const char * variable_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (sizeof (char) * 300); / * Пространство для хранения значений для отправки * / char str_val [10]; / * ---- Преобразует значения датчиков в тип char ----- * / / * 4 - минимальная ширина, 2 - точность; значение с плавающей запятой копируется в str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Строит тело для отправки в запрос * / sprintf (body, "{"% s / ":% s}", variable_label, str_val); / * Строит HTTP запрос должен быть POST * / sprintf (данные, "POST /api/v1.6/devices/%s", device_label); sprintf (data, "% s HTTP / 1.1 / r / n", data); sprintf (data, "% sHost: things.ubidots.com / r / n", data); sprintf (data, "% sUser-Agent:% s /% s / r / n", data, USER_AGENT, VERSION); sprintf (data, "% sX-Auth-Token:% s / r / n", data, TOKEN); спринт f (данные, "% sConnection: close / r / n", данные); sprintf (данные, "% sContent-Type: application / json / r / n", данные); sprintf (данные, "% sContent-Length:% d / r / n / r / n", данные, dataLen (тело)); sprintf (данные, "% s% s / r / n / r / n", данные, тело); / * Первоначальное соединение * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Проверяем клиентское соединение * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Отправка ваших переменных:")); Serial.println (данные); / * Отправляем HTTP-запрос * / clientUbi.print (data); } / * Пока клиент доступен, прочтите ответ сервера * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Свободная память * / free (data); бесплатно (тело); / * Остановить клиента * / clientUbi.stop ();}

Совет: вы можете проверить, правильно ли подключено ваше устройство, открыв последовательный монитор в Arduino IDE.

Вы можете убедиться, что устройство создано в вашем бэкэнде Ubidots, просмотрев его в своей учетной записи «Управление устройствами» -> «Устройства».

Щелкнув свое устройство, вы найдете переменную под названием «расстояние», в которой хранятся показания датчика. Это имя было присвоено в коде, который вы только что вставили в IDE Arduino. Если вы хотите настроить автоматические переменные, сделайте это, отредактировав карту устройства или прошив обновленный код с правильной номенклатурой переменных для вашего приложения.

Когда Feather HUZZAH ESP8266 подключен и передает данные в Ubidots, пришло время создать приложение, используя тщательно разработанную Ubidots конфигурацию приложения без кода.

Шаг 5: Разработка приложения Ubidots

Разработка приложений Ubidots
Разработка приложений Ubidots
Разработка приложений Ubidots
Разработка приложений Ubidots
Разработка приложений Ubidots
Разработка приложений Ubidots

Конфигурация событий Ubidots

Текущие показания, которые мы отправляем в Ubidots, являются входными данными о расстоянии. Чтобы преобразовать эти показания в желаемый результат, который мы хотим - подсчитанные единицы - мы должны создать событие, выполнив следующие шаги:

  1. Внутри текущего устройства «motion-control» создайте новую переменную по умолчанию, названную «box», которая будет получать 1 каждый раз, когда подсчитывается новая единица.
  2. Перейдите в Управление устройством -> События и щелкните синий значок плюса в правом верхнем углу страницы, чтобы добавить новое событие.
  3. Настройте свое событие, начиная с «Если триггеры»:
  • Выберите переменную: "расстояние"
  • Значение: значение (по умолчанию)
  • Меньше или равно [максимальное ожидаемое расстояние} между датчиком и проходящими мимо коробками * наше приложение требует 500 мм
  • На 0 минут
  • Сохранить

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

5. Выберите действие «Установить переменную».

6. Затем выберите ранее созданную переменную по умолчанию «box» и значение «1».

7. Сохраните изменения. Если событие настроено правильно, оно будет посылать «1» каждый раз, когда расстояние между датчиком и устройством превышает указанный порог, что говорит о том, что поблизости нет объекта - и должно учитывать новый элемент, который только что прошел..

В карточке «Устройство для перьев» вы обнаружите, что переменная «box», где «1» отправляется каждый раз, когда обнаруживается присутствие юнита.

Этот прототип особенно полезен для промышленных конвейерных лент и подсчета единиц. Он может быть настроен для соответствия различным средам или аппаратным средствам просто в процессе кодирования или разработки приложений.

8. Визуализируйте количество обнаруженных единиц (или раз, когда объект был обнаружен). Теперь, используя переменную "коробки", мы собираемся создать новую переменную скользящего окна, чтобы суммировать общее количество показаний, полученных от переменной "коробки" в определенный спам (минуты, часы, дни, недели и т. д.). Чтобы выполнить эту разработку, выполните следующие простые шаги:

Назначьте следующие учетные данные вашей новой переменной скользящего окна

Выберите устройство: управление движением (или имя устройства, на которое вы отправляете данные)

Выберите переменную: коробки

Вычислить: sum

Каждые: «1» час (или в соответствии с запросами вашего приложения)

Теперь присвойте имя новой переменной, которая указывает количество ящиков (или перемещений), подсчитанных за час, точно так же, как «ящиков / час» или «единиц / часов».

Шаг 6: Конфигурация приборной панели

Конфигурации приборной панели
Конфигурации приборной панели

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

Перейдите в Управление устройством -> Панели мониторинга и добавьте новый виджет. Этот виджет будет отображать количество ящиков, подсчитанных сегодня, с разбивкой по часам.

Назначьте следующие учетные данные своему новому виджету, чтобы визуализировать свой счет.

Каким бы вы хотели видеть ваши данные ?: Диаграмма

Выберите тип виджета: линейный график

Добавить устройство: управление движением

Добавить переменную: ящиков / час

Заканчивать. И с этой последней разработкой приборной панели - ваше приложение готово, и теперь у вас есть эффективная и действенная система обнаружения движения и присутствия. Вот последний взгляд на наши результаты.

Рекомендуемые: