Схемы

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

Время и Стекло Так выпала Карта HD VKlipe Net

Время и Стекло Так выпала Карта HD VKlipe Net

Оглавление:

Anonim

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

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

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

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

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

Расходные материалы:

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

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

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

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

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

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

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

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

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

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

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

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

/ ******************************** Библиотеки включены *************** ****************/#включают / ******************************** Константы и объекты ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Поместите здесь ваш SSID nameconst char * SSID_PASS = "xxxxxxxx"; // Поместите здесь свой пароль const char * TOKEN = "Assig_your_ubidots_token"; // Поместите здесь свой TOKENconst char * DEVICE_LABEL = "motion-control"; // Ваше устройство labelconst char * VARIABLE_LABEL = "distance"; // Ваша переменная labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Бизнес-пользователи // 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 <= 250; i ++) {if (variable i! = ' 0') {dataLen ++; } else {перерыв; }} return dataLen;} / ******************************** Основные функции ********* ********************** / void setup () {Serial.begin (115200); / * Подключается к AP * / WiFi.begin (SSID_NAME, SSID_PASS); while (WiFi.status ()! = WL_CONNECTED) {задержка (500); Serial.print ( ""); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (истина); Serial.println (F («WiFi подключен»)); Serial.println (F («IP-адрес:»)); Serial.println (WiFi.localIP ());} void loop () {/ * Показание датчика возвращается в миллиметрах, если вы хотите преобразовать * в дюймы, просто создайте переменную, указывающую на -> distance / 25.4 * / float distance = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, расстояние); 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; / * ---- Преобразует значения датчиков в тип символа ----- * / / * 4 - минимальная ширина, 2 - точность; значение с плавающей точкой копируется в str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Создает тело для отправки в запросе * / sprintf (body, "{"% s ":% s}", variable_label, str_val); / * Создает HTTP-запрос POST * / sprintf (data, "POST /api/v1.6/devices/%s", device_label); sprintf (данные, "% s HTTP / 1.1 r n", данные); sprintf (данные, "% sHost: things.ubidots.com r n", данные); sprintf (данные, "% sUser-Agent:% s /% s r n", данные, USER_AGENT, VERSION); sprintf (данные, "% sX-Auth-Token:% s r n", данные, TOKEN); sprintf (данные, "% sConnection: закрыть r n", данные); sprintf (данные, "% sContent-Type: application / json r n", данные); sprintf (data, "% sContent-Length:% d r n r n", data, dataLen (body)); 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 (с); } / * Свободная память * / свободна (данные); бесплатно (тело); / * Остановить клиента * / clientUbi.stop ();}

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

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

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

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

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

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

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

  1. Внутри текущего устройства «motion-control» создайте новую переменную по умолчанию, называемую «коробки», которая будет получать 1 при каждом подсчете новой единицы.
  2. Идти к Управление устройством -> Событияи щелкните синий значок плюса в правом верхнем углу страницы, чтобы добавить новое событие.
  3. Настройте ваше событие, начиная с «Если триггеры»:

  • Выберите переменную: "расстояние"
  • Значение: значение (по умолчанию)
  • Меньше или равно максимальному ожидаемому расстоянию между датчиком и проходящими мимо коробками * наше приложение требует 500 мм
  • За 0 минут
  • Сохранить

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

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

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

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

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

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

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

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

Выберите устройство: motion-control (или название устройства, с которого вы отправляете свои данные)

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

Вычислить: сумма

Каждый: «1» час (или согласно вашим заявкам)

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

Шаг 6: Конфигурации панели мониторинга

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

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

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

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

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

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

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

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

Шаг 7: