Съдържание:

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

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

Видео: Как да изградим система за откриване на движение с Arduino: 7 стъпки
Видео: Leap Motion SDK 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.

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

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

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

Настройка на фърмуера
Настройка на фърмуера
Настройка на фърмуера
Настройка на фърмуера

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

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

/******************************** Библиотеките са включени *************** **************** /#включи /****************************** ** Константи и обекти ******************************* //*Ubidots*/const char*SSID_NAME = "xxxxxxxx"; // Поставете тук вашето SSID име concon char* SSID_PASS = "xxxxxxxx"; // Поставете тук паролата си const char* TOKEN = "Assig_your_ubidots_token"; // Поставете тук вашия TOKENconst char* DEVICE_LABEL = "движение-контрол"; // Вашето устройство labelconst char* VARIABLE_LABEL = "разстояние"; // Вашата променлива 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 Образователни потребителиintTPTPPORT = 80;/ * Ултразвуков сензор */const int pwPin1 = 5; // PWM щифтът, където е свързан сензорът Wi -FiClient clientUbi;/******************************** Допълнителни функции *** **************************** // ** Получава дължината на тялото @arg променлива тялото на тип char @return data дължина на променливата*/int dataLen (char* променлива) {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 (данни, "%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); спринт 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 (данни); } / * Докато клиентът е достъпен, прочетете отговора на сървъра * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Свободна памет * / свободна (данни); безплатно (тяло); / * Спрете клиента */ clientUbi.stop ();}

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

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

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

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

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

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

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

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

  1. Вътре в текущото устройство "движение за управление" създайте нова променлива по подразбиране, наречена "кутии", която ще получава 1 всеки път, когато се брои нова единица.
  2. Отидете на Управление на устройства -> Събития и щракнете върху синята икона плюс в горния десен ъгъл на страницата, за да добавите ново събитие.
  3. Конфигурирайте вашето събитие, започващо с „Ако се задейства“:
  • Изберете променлива: "разстояние"
  • Стойност: стойност (по подразбиране)
  • Е по -малко или равно на [максималното очаквано разстояние] между сензора и кутиите, преминаващи покрай*нашето приложение изисква 500 мм
  • За 0 минути
  • Запазване

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

5. Изберете “Set Variable” като действие.

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

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

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

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

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

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

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

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

Изчислете: sum

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

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

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

Конфигурации на таблото за управление
Конфигурации на таблото за управление

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

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

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

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

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

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

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

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

Препоръчано: