Spisu treści:

Jak zbudować system wykrywania ruchu za pomocą Arduino: 7 kroków
Jak zbudować system wykrywania ruchu za pomocą Arduino: 7 kroków

Wideo: Jak zbudować system wykrywania ruchu za pomocą Arduino: 7 kroków

Wideo: Jak zbudować system wykrywania ruchu za pomocą Arduino: 7 kroków
Wideo: Taśma LED - jak dociąć i lutować 2024, Lipiec
Anonim
Jak zbudować system wykrywania ruchu za pomocą Arduino?
Jak zbudować system wykrywania ruchu za pomocą Arduino?

Zbuduj licznik produkcji ruchu i obecności za pomocą Feather HUZZAH zaprogramowanego za pomocą Arduino i zasilanego przez Ubidots.

Skuteczne fizyczne wykrywanie ruchu i obecności w inteligentnych domach i inteligentnej produkcji może być bardzo przydatne w zastosowaniach, począwszy od rozwiązań w zakresie życia wspomaganego przez otoczenie (AAL) dla osób starszych lub systemu liczenia produkcji, który zasila większy MES. Inne aplikacje do wykrywania ruchu i obecności obejmują między innymi:

  1. Automatyka drzwi i bram
  2. Czujniki parkowania do wyznaczania wolnych miejsc
  3. Zdalne monitorowanie poziomu w zbiorniku
  4. Inteligentne domy i urządzenia do oświetlenia i bezpieczeństwa
  5. Wykrywanie i liczenie jednostek w liniach transportowych
  6. Wykrywanie znaków na materiałach drukowanych
  7. Wykrywanie cieczy wewnątrz kartonu, plastiku i papieru
  8. Wykrywanie odległości
  9. Liczniki osób

Chociaż istnieje wiele zastosowań do wykrywania obecności i ruchu, istnieje równie wiele czujników do zbierania danych, takich jak czujniki pojemnościowe, indukcyjne, fotoelektryczne i ultradźwiękowe. W zależności od kosztów, warunków środowiskowych i wymagań dotyczących dokładności należy dobrać sprzęt najlepiej dopasowany do środowiska i wymagań aplikacji.

W tym samouczku skupimy się na budowaniu licznika produkcji w czasie rzeczywistym; aplikacja zliczy każdą jednostkę przechodzącą na przenośniku taśmowym. Użyjemy Arduino IDE do zaprogramowania Feather HUZZAH ESP8266, czujnika ultradźwiękowego i Ubidots do opracowania naszej aplikacji i wyświetlenia naszego pulpitu nawigacyjnego IoT.

Krok 1: Wymagania

  1. Pióro HUZZAH z ESP8266MB7389-100
  2. Czujnik ultradźwiękowy
  3. Arduino IDE 1.8.2 lub nowszy
  4. Konto Ubidots -lub licencja STEM

Krok 2: Konfiguracja

  • I Konfiguracja sprzętu
  • II. Konfiguracja oprogramowania układowego
  • III. Tworzenie aplikacji Ubidots (zdarzenia, zmienne i pulpity nawigacyjne)

Krok 3: Konfiguracja sprzętu

Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu

Czujnik ultradźwiękowy MB7389-100 to niedroga opcja do zastosowań przemysłowych o szerokim zakresie i niskim zużyciu energii w trudnych warunkach pogodowych dzięki klasie IPv67.

Aby rozpocząć, odwzoruj poniższy schemat, aby podłączyć czujnik ultradźwiękowy do Feather HUZZAH ESP8266.

UWAGA: Odczyt czujnika może być przyjmowany jako odczyty analogowe lub PWM; poniżej wyjaśnimy konfigurację odczytu PWM, dodatkowe informacje można znaleźć w przykładach pokazanych powyżej.

[Opcjonalnie] umieść mikrokontroler i czujniki wewnątrz obudowy o stopniu ochrony IP67, aby chronić je przed kurzem, wodą i innymi niebezpiecznymi czynnikami środowiskowymi. Standardowa obudowa wygląda podobnie do tej pokazanej na powyższych zdjęciach.

Krok 4: Konfiguracja oprogramowania sprzętowego

Konfiguracja oprogramowania układowego
Konfiguracja oprogramowania układowego
Konfiguracja oprogramowania układowego
Konfiguracja oprogramowania układowego

Najpierw należy zainstalować Feather Huzzah w Arduino IDE i skompilować kod. Pamiętaj, aby zweryfikować tę konfigurację, wykonując prosty test migania. Aby uzyskać więcej informacji na temat podłączania urządzenia Feather, zapoznaj się z tym pomocnym przewodnikiem konfiguracji sprzętu.

Aby przesłać dane z czujnika do platformy programistycznej Ubidots IoT, skopiuj i wklej poniższy kod do Arduino IDE. Pamiętaj, aby przypisać nazwę sieci Wi-Fi, hasło i token konta Ubidots w miejscach wskazanych w kodzie.

/********************************* Biblioteki włączone *************** ****************/#włączać /****************************** ** Stałe i obiekty *******************************//* Ubidots */const char* SSID_NAME = "xxxxxxxx"; // Wstaw tutaj swój identyfikator SSID nameconst char* SSID_PASS = "xxxxxxxx"; // Wstaw tutaj swoje hasłoconst char* TOKEN = "Assig_your_ubidots_token"; // Umieść tutaj swój TOKENconst char* DEVICE_LABEL = "motion-control"; // Twoje urządzenie labelconst char* VARIABLE_LABEL = "odległość"; // Twoja zmienna labelconst char* USER_AGENT = "ESP8266";const char* VERSION = "1.0";const char* HTTPSERVER = "industrial.api.ubidots.com";// Użytkownicy Ubidots Business//const char* HTTPSERVER = " rzeczy.ubidots.com"; // Ubidots Educational usersint HTTPPORT = 80;/* Czujnik ultradźwiękowy */const int pwPin1 = 5; // Pin PWM, do którego podłączony jest czujnikWiFiClient clientUbi;/*********************************** Funkcje pomocnicze *** ****************************//** Pobiera długość ciała zmiennej @arg ciała typu char @return dataLen długość zmiennej*/int dataLen(char* variable) { uint8_t dataLen = 0; for (int i = 0; i odległość / 25,4 */ float odległość = 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); /* Spacja do przechowywania wartości do wysłania * / char str_val[10]; /*---- Przekształca wartości czujników na typ znaku -----*/ /* 4 to minimalna szerokość, 2 to precyzja; wartość zmiennoprzecinkowa jest kopiowana do str_val*/ dtostrf(sensor_value, 4, 2, str_val); /* Buduje treść do wysłania do żądania*/ sprintf(body, "{"%s\":%s}", variable_label, str_val); /* Buduje HTTP żądanie POST */ sprintf(data, "POST /api/v1.6/devices/%s", etykieta_urządzenia); 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", dane, TOKEN); sprint f(dane, "%sPołączenie: zamknij\r\n", dane); sprintf(dane, "%sContent-Type: application/json\r\n", dane); sprintf(data, "%sDługość treści: %d\r\n\r\n", data, dataLen(body)); sprintf(dane, "%s%s\r\n\r\n", dane, ciało); /* Początkowe połączenie */ clientUbi.connect(HTTPSERVER, HTTPPORT); /* Sprawdź połączenie klienta */ if (clientUbi.connect(HTTPSERVER, HTTPPORT)) { Serial.println(F("Wysyłanie zmiennych: ")); Serial.println(dane); /* Wyślij żądanie HTTP */ clientUbi.print(data); } /* Gdy klient jest dostępny, przeczytaj odpowiedź serwera */ while (clientUbi.available()) { char c = clientUbi.read(); Serial.zapis(c); } /* Zwolnij pamięć */ free(data); Wolne ciało); /* Zatrzymaj klienta */ clientUbi.stop();}

ProTip: możesz sprawdzić, czy Twoje urządzenie jest prawidłowo podłączone, otwierając monitor szeregowy w Arduino IDE.

Możesz sprawdzić, czy urządzenie zostało utworzone w Twoim zapleczu Ubidots, wyświetlając je na swoim koncie Zarządzanie urządzeniami -> Urządzenia.

Klikając swoje urządzenie, znajdziesz zmienną o nazwie „odległość”, w której przechowywane są odczyty czujnika. Ta nazwa została przypisana w kodzie, który właśnie wkleiłeś w Arduino IDE. Jeśli chcesz dostosować zmienne automatyczne, zrób to, edytując kartę urządzenia lub flashując zaktualizowany kod z poprawną nomenklaturą zmiennych dla swojej aplikacji.

Po podłączeniu Feather HUZZAH ESP8266 i raportowaniu danych do Ubidots, nadszedł czas na zbudowanie aplikacji przy użyciu starannie zaprojektowanej, bezkodowej konfiguracji aplikacji Ubidots.

Krok 5: Rozwój aplikacji Ubidots

Tworzenie aplikacji Ubidots
Tworzenie aplikacji Ubidots
Tworzenie aplikacji Ubidots
Tworzenie aplikacji Ubidots
Tworzenie aplikacji Ubidots
Tworzenie aplikacji Ubidots

Konfiguracja wydarzenia Ubidots

Bieżące odczyty, które wysyłamy do Ubidots, to dane dotyczące odległości. Aby przetłumaczyć te odczyty na pożądany wynik, który chcemy - liczone jednostki - powinniśmy utworzyć zdarzenie, wykonując następujące kroki:

  1. Wewnątrz bieżącego urządzenia "motion-control" utwórz nową domyślną zmienną o nazwie "boxes", która otrzyma 1 za każdym razem, gdy zliczana jest nowa jednostka.
  2. Przejdź do Zarządzanie urządzeniami -> Zdarzenia i kliknij niebieską ikonę plusa w prawym górnym rogu strony, aby dodać nowe zdarzenie.
  3. Skonfiguruj wydarzenie rozpoczynające się od „Jeśli wyzwalacze”:
  • Wybierz zmienną: „odległość”
  • Wartość: wartość (domyślna)
  • Jest mniejsza lub równa [maksymalnej oczekiwanej odległości} między czujnikiem a przechodzącymi obok pudełkami * nasza aplikacja wymaga 500 mm
  • Przez 0 minut
  • Zapisać

4. Po skonfigurowaniu wyzwalaczy zgodnie ze specyfikacją aplikacji kliknij pomarańczową ikonę „plus” w prawym górnym rogu, aby dodać akcję warunkową.

5. Wybierz „Ustaw zmienną” jako akcję.

6. Następnie wybierz wcześniej utworzoną zmienną domyślną „boxes” i wartość „1”.

7. Zapisz zmiany. Jeśli zdarzenie jest prawidłowo skonfigurowane, wyśle "1" za każdym razem, gdy odległość między czujnikiem a urządzeniem jest dłuższa niż wskazany próg, co sugeruje, że w pobliżu nie ma żadnego obiektu - i powinno liczyć nową jednostkę, która właśnie minęła.

Na karcie Feather specific Device znajdziesz zmienne "pudełka", w których "1" jest wysyłane za każdym razem, gdy wykryta zostanie obecność jednostki.

Szczególnie przydatny w przypadku przemysłowych przenośników taśmowych i liczenia jednostek, ten prototyp można dostosować do różnych środowisk lub sprzętu po prostu podczas kodowania lub opracowywania aplikacji.

8. Wizualizuj liczbę wykrytych jednostek (lub razy wykryto obiekt) Teraz, korzystając ze zmiennej „pudełka”, utworzymy nową zmienną ruchomego okna, aby zsumować łączną liczbę odczytów otrzymanych ze zmiennej „pudełka” w zdefiniowany spam (minuty, godziny, dni, tygodnie itp.). Aby wykonać to opracowanie, wykonaj następujące proste kroki:

Przypisz następujące poświadczenia do nowej zmiennej okna kroczącego

Wybierz urządzenie: sterowanie ruchem (lub nazwę urządzenia, do którego wysyłasz dane)

Wybierz zmienną: pola

Oblicz: sum

Co: „1” godzinę (lub zgodnie z Twoimi prośbami aplikacyjnymi)

Teraz przypisz nazwę nowej zmiennej, która wskazuje liczbę pudełek (lub ruchów) liczonych w ciągu godziny, podobnie jak "pudełka/godzinę" lub "jednostki/godzinę".

Krok 6: Konfiguracje pulpitu nawigacyjnego

Konfiguracje pulpitu nawigacyjnego
Konfiguracje pulpitu nawigacyjnego

Na koniec utwórz pulpit nawigacyjny, aby wyświetlić liczbę wykrytych jednostek.

Przejdź do Zarządzanie urządzeniami -> Pulpity nawigacyjne i dodaj nowy widżet. Ten widżet wyświetli liczbę zliczonych dzisiaj pudełek z podziałem na godziny.

Przypisz następujące dane uwierzytelniające do nowego widżetu, aby zwizualizować swoją liczbę.

Jak chciałbyś zobaczyć swoje dane?: Wykres

Wybierz typ widżetu: wykres liniowy

Dodaj urządzenie: sterowanie ruchem

Dodaj zmienną: pudełka/godzinę

Skończyć. A dzięki temu ostatecznemu opracowaniu deski rozdzielczej - Twoja aplikacja jest kompletna i masz teraz wydajny i skuteczny system wykrywania ruchu i obecności. Oto ostatnie spojrzenie na nasze wyniki.

Zalecana: