Вериги

Как да се изгради система за откриване на движение с Arduino: 7 стъпки

"Ил-2 Штурмовик" нового поколения - "Битва за Сталинград" и "Битва за Москву" #14

"Ил-2 Штурмовик" нового поколения - "Битва за Сталинград" и "Битва за Москву" #14

Съдържание:

Anonim

Създайте брояч за движение и присъствие, използвайки перо HUZZAH, програмиран с Arduino и захранван от Ubidots.

Ефективното физическо разпознаване на движението и присъствието в Smart Homes и Smart Manufacturing може да бъде много полезно в приложения, вариращи от по-възрастни решения за околна среда с подпомагане на живот (AAL) или система за броене на производството, която захранва по-голям МОН. Други приложения за разпознаване на движение и присъствие включват, но не са ограничени до:

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

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

За този урок ще се съсредоточим върху изграждането на брояч на продукцията в реално време; приложението ще преброи всяка единица, минаваща през конвейерна лента. Ще използваме Arduino IDE, за да програмираме перо HUZZAH ESP8266, ултразвуков датчик и Ubidots, за да разработим нашето приложение и да покажем нашето табло за IoT.

градина:

Стъпка 1: Изисквания

  1. Перо HUZZAH с ESP8266MB7389-100
  2. Ултразвуков сензор
  3. Arduino IDE 1.8.2 или по-висока
  4. Ubidots акаунт - или - образователен лиценз

Стъпка 2: Настройка

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

Стъпка 3: Настройка на хардуера

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

За да започнете, огледайте диаграмата по-долу, за да прикрепите ултразвуковия сензор към Перо HUZZAH ESP8266.

ЗАБЕЛЕЖКА: Четенето на сензора може да бъде като аналогово отчитане или PWM; по-долу ще обясним настройката за четене на PWM, за допълнителна информация, моля вижте примерите, показани по-горе.

По желание поставете микроконтролера и сензорите вътре в корпуса на IP67, за да ги предпазите от прах, вода и други заплашителни фактори на околната среда. Стандартният калъф изглежда подобен на показания на снимките по-горе.

Стъпка 4: Настройка на фърмуера

Първо, трябва да инсталирате Feather Huzzah в Arduino IDE и да компилирате кода. Не забравяйте да проверите това, като направите прост мигащ тест. За допълнителна информация относно свързването на устройството Feather разгледайте това полезно ръководство за настройка на хардуера.

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

/ ******************************** Включени са библиотеки *************** **************** / # включват / ******************************** Константи и обекти ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Сложете тук вашето SSID nameconst char * SSID_PASS = "xxxxxxxx"; // Поставете тук вашата парола charst * TOKEN = "Assig_your_ubidots_token"; // Поставете тук своя TOKENconst символ * DEVICE_LABEL = "управление на движението"; // Вашето устройство labelconst char * VARIABLE_LABEL = "разстояние"; // Вашата променлива labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Business users // const char * HTTPSERVER = " things.ubidots.com "; // Ubidots Образователна потребителска HTTPPORT = 80; / * Ултразвуков сензор * / const int pwPin1 = 5; // PWM пин, където е свързан сензораWiFiClient клиентUbi; / ******************************** Auxiliar Функции *** **************************** // ** Получава дължината на променливата на тялото @arg тялото на типа char @return dataLen дължина на променливата * / int dataLen (char * променлива) {uint8_t dataLen = 0; за (int i = 0; i <= 250; i ++) {if (променлива 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 адрес:")); Сериен.печат (WiFi.localIP ());} void loop () {/ * Показанието на сензора се връща в милиметри, ако желаете да го конвертирате в инчове, просто създайте променлива, сочеща към -> разстояние / 25.4 * / разстояние от флотацията = импулс (pwPin1, HIGH); sendToUbidot (DEVICE_LABEL, VARIABLE_LABEL, разстояние); закъснение (1000);} невалидни 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); / * Space за съхраняване на стойности за изпращане * / char str_val 10; / * ---- Преобразува стойностите на сензорите до тип char ----- * / / * 4 е минимална ширина, 2 е точност; стойността на float се копира в str_val * / dtostrf (сензор_значение, 4, 2, str_val); / * Изгражда тялото да бъде изпратено в заявката * / sprintf (body, "{ _"% s _ ":% s}", variable_label, str_val); / * Изгражда HTTP заявката за POST * / sprintf (данни, "POST /api/v1.6/devices/%s", device_label); sprintf (данни, "% s HTTP / 1.1 r", данни); sprintf (данни, "% sHost: things.ubidots.com", данни); sprintf (data, "% sUser-Agent:% s /% s _", данни, USER_AGENT, VERSION); sprintf (данни, "% sX-Auth-Token:% s R", данни, TOKEN); sprintf (данни, "% sСвързване: затваряне", данни); sprintf (данни, "% sContent-Type: application / json r", данни); sprintf (data, "% sСъдържание-Дължина:% d r", данни, dataLen (тяло)); sprintf (данни, "% s% s" r, данни, тяло); / * Първоначална връзка * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Проверете клиентската връзка * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Публикуване на променливите:")); Serial.println (данни); / * Изпращане на HTTP заявка * / clientUbi.print (данни); } / * Докато клиентът е на разположение, прочетете отговора на сървъра * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (в); } / * Свободна памет * / свободна (данни); свободен (тяло); / * Спрете клиента * / clientUbi.stop ();}

ProTip: Можете да проверите дали вашето устройство е свързано правилно, като отворите серийния монитор в Arduino IDE.

Можете да проверите дали устройството е създадено в бекенда на Ubidots, като го прегледате в профила си Управление на устройствата -> Устройства.

Като щракнете върху вашето устройство, ще намерите променлива, наречена "дистанция", където се съхраняват показанията на сензора. Това име е зададено в кода, който току-що сте поставили в Arduino IDE. Ако желаете да регулирате вашите автоматични променливи, моля, направете го чрез редактиране на картата на устройството или чрез мигане на актуализиран код с правилната номенклатура на променливите за вашето приложение.

С перото HUZZAH ESP8266 свързано и докладване на данни на Ubidots, сега е време да се изгради приложението с помощта на Ubidots внимателно проектирана безкодийна конфигурация на приложението.

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

Конфигурация на събития в Ubidots

Текущите показания, които изпращаме на Ubidots, са входове от разстояние. За да преведем тези показания в желаните резултати, които искаме - изброени единици - трябва да създадем събитие, следвайки тези стъпки:

  1. Вътре в устройството "motion-control" се създава нова променлива по подразбиране, наречена "кутии", която ще получава 1 всеки път, когато се броят ново устройство.
  2. Отиди на Управление на устройства -> Събития, и кликнете върху иконата със синьо плюс в горния десен ъгъл на страницата, за да добавите ново събитие.
  3. Конфигурирайте събитието, като започнете с „Ако тригери“:

  • Изберете променлива: "Разстояние"
  • стойност: стойност (по подразбиране)
  • Е по-малка или равна на максималното очаквано разстояние между сензора и кутиите, минаващи покрай * нашата молба изисква 500 мм
  • За 0 минути
  • Запази

4. След като тригерите са конфигурирани в спецификациите на приложението ви, кликнете върху оранжевата икона „плюс“ в горния десен ъгъл, за да добавите условно действие.

5. Изберете „Задаване на променлива“ като действие.

6. След това изберете предварително създадената по подразбиране променлива "кутии" и стойност "1".

7. Запазете промените. Ако събитието е правилно настроено, то ще изпрати "1" всеки път, когато разстоянието между сензора и устройството е по-дълго от посочения праг, което подсказва, че няма обект в близост - и трябва да брои нов елемент, който току-що е преминал ,

В конкретната карта на устройството Feather ще откриете, че променливата "кутии", където "1" се изпраща по всяко време, когато се усети присъствието на единица.

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

8. Визуализирайте броя на разпознатите единици (или пъти, когато обектът е бил открит)
Сега, като използваме променливата "кутии", ще създадем нова променлива за подвижен прозорец, за да сумирам общото количество четения, получени от променливата "кутии" в определен спам (минути, часове, дни, седмици и т.н.). За да изпълните това развитие, изпълнете следните прости стъпки:

Задайте следните идентификационни данни на новата променлива за подвижен прозорец

Изберете устройство: контрол на движението (или името на устройството, което изпращате данните си)

Изберете променлива: кутии

Изчислете: сума

Всеки: "1" час (или според заявките ви за кандидатстване)

Сега задайте име на новата променлива, която показва броя на преброените в един час кутии (или движения), точно като "кутии / час" или "единици / часа".

Стъпка 6: Конфигурации на таблото

И накрая, създайте табло за управление, за да покажете броя на разпознатите единици.

Отидете на Device Management -> Dashboards и добавете нова джаджа. Тази джаджа ще покаже количеството преброени днес кутии, разбити по час.

Задайте следните идентификационни данни на новата джаджа, за да визуализирате броя си.

Как бихте искали да виждате данните си ?: диаграма

Изберете тип приспособление: линейна диаграма

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

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

Завършек. И с тази последна разработка на таблото - Вие сте заявка е пълна и вече имате ефективна и ефективна система за откриване на движение и присъствие. Ето един последен поглед върху нашите резултати.

Стъпка 7: