Devreler

Arduino ile Hareket Algılama Sistemi Nasıl Kurulur: 7 Adım

Arduino Projeleri | PIR – Hareket Sensörü ile Hırsız Alarm Sistemi #pir

Arduino Projeleri | PIR – Hareket Sensörü ile Hırsız Alarm Sistemi #pir

İçindekiler:

Anonim

Arduino ile programlanan ve Ubidots tarafından desteklenen bir Tüy HUZZAH kullanarak bir hareket ve varlık üretme sayacı oluşturun.

Akıllı Evler ve Akıllı Üretim'deki etkili fiziksel hareket ve varlık tespiti, yaşlı Ortam Destekli Yaşam (AAL) çözümlerinden veya daha büyük bir MES'i besleyen Üretim Sayma Sisteminden farklı uygulamalarda çok yararlı olabilir. Hareket ve Durum Tespiti için diğer uygulamalar şunları içerir, ancak bunlarla sınırlı değildir:

  1. Kapı ve kapı otomasyonu
  2. Serbest noktaları belirleyen park sensörleri
  3. Uzaktan tank seviyesi izleme
  4. Aydınlatma ve güvenlik için akıllı evler ve olanaklar
  5. Konveyör hatlarında birim algılama ve sayma
  6. Basılı materyallerde marka tespiti
  7. Karton, plastik ve kağıt içinde sıvı tespiti
  8. Mesafe algılama
  9. Kişi sayaçlar

Varlık ve hareket için birçok uygulama olsa da, kapasitif, endüktif, fotoelektrik ve ultrasonik sensörler gibi veri toplamak için eşit sayıda sensör vardır. Maliyetlere, çevresel koşullara ve doğruluk gereksinimlerine bağlı olarak, çevre ve uygulama gereksinimleri için en uygun donanımı seçmelisiniz.

Bu eğitim için gerçek zamanlı bir üretim sayacı oluşturmaya odaklanacağız; Uygulama, bir taşıma bandından geçen her birimi sayar. Uygulamamızı geliştirmek ve IoT panomuzu görüntülemek için Tüy HUZZAH ESP8266, ultrasonik bir sensör ve Ubidot programlamak için Arduino IDE'yi kullanacağız.

Gereçler:

1. Adım: Gereksinimler

  1. ESP8266MB7389-100 ile tüy HUZZAH
  2. Ultrasonik sensör
  3. Arduino IDE 1.8.2 veya daha yüksek
  4. Ubidots hesabı -veya- Eğitim Lisansı

Adım 2: Kurulum

  • Ben donanım kurulum
  • II. Firmware Kurulumu
  • III. Ubidots Uygulama Geliştirme (olaylar, değişkenler ve gösterge panoları)

Adım 3: Donanım Kurulumu

Ultrasonik Sensör MB7389-100, IPv67 derecesi sayesinde zorlu hava koşullarında geniş ve düşük güç tüketimi gerektiren endüstriyel uygulamalar için düşük maliyetli bir seçenektir.

Başlamak için, ultrasonik sensörü takmak üzere aşağıdaki şemayı yansıtın. Tüy HUZZAH ESP8266.

NOT: Sensör okuma, analog okumalar veya PWM olarak alınabilir; Aşağıda PWM okuma ayarını açıklayacağız, ek bilgi için lütfen yukarıda gösterilen örneklere bakınız.

İsteğe Tozdan, sudan ve diğer tehdit edici çevresel faktörlerden korumak için mikro denetleyiciyi ve sensörleri IP67 kasasının içine yerleştirin. Standart kasa, yukarıdaki fotoğraflarda gösterilene benziyor.

Adım 4: Firmware Kurulumu

İlk önce, Feather Huzzah'ı Arduino IDE'ye kurmalı ve kodu derlemelisiniz. Basit bir yanıp sönme testi yaparak bu ayarı doğrulamayı unutmayın. Feather cihazınızı bağlama hakkında daha fazla bilgi için bu faydalı donanım kurulum kılavuzuna bakın.

Sensör verilerini Ubidots IoT Development Platform'a göndermek için aşağıdaki kodu kopyalayıp Arduino IDE'ye yapıştırın. Wi-Fi ağı adını, şifresini ve Ubidots hesap kodunuzu kodda belirtilen yere atamayı unutmayın.

/ *********************************** Kütüphaneler dahil **************** ****************/#Dahil etmek / *********************************** Sabitler ve nesneler *************** ***************** // // Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // SSID adınızı buraya yazın char * SSID_PASS = "xxxxxxxx"; // Buraya parolanızı yazın char * TOKEN = "Assig_your_ubidots_token"; // TOKENconst karakterinizi buraya koyun * DEVICE_LABEL = "motion-control"; // Cihazınız labelconst char * VARIABLE_LABEL = "distance"; // Değişken labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots İşletme kullanıcıları // const char * HTTPSERVER = " things.ubidots.com "; // Ubidots Eğitim kullanıcıları için HTTPPORT = 80; / * Ultrasonik Sensör * / const int pwPin1 = 5; // Sensörün bağlı olduğu PWM pimiWiFiClient clientUbi; / ********************************** Yardımcı İşlevler *** ******************************* // // ** Vücut @arg değişkeninin karakterini alır. değişkenin uzunluğu * / int dataLen (char * değişken) {uint8_t dataLen = 0; (int i = 0; i <= 250; i ++) {if (değişken i! = ' 0') {dataLen ++; } else {break; }} return dataLen;} / *********************************** Ana Fonksiyonlar ********* ************************ / geçersiz kurulum () {Seri.begin (115200); / * AP * / WiFi.begin'e (SSID_NAME, SSID_PASS) bağlanır; while (WiFi.status ()! = WL_CONNECTED) {gecikme (500); Serial.print ( ""); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (doğru); Seri.println (F ("WiFi bağlı")); Seri.println (F ("IP adresi:")); Serial.println (WiFi.localIP ());} void loop () {/ * Sensör okuması milimetre cinsinden döndürülür, eğer dönüştürmek istiyorsanız * inç cinsinden bir değişken oluşturun -> mesafe / 25.4 * / kayan mesafe = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, mesafe); delay (1000);} void sendToUbidots (const char * device_label, const char * değişken_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (sizeof (char) * 300); / * Gönderilecek değerlerin kaydedileceği alan * / char str_val 10; / * ---- Sensörlerin değerlerini karakter tipine dönüştürür ----- * / / * 4 mininum genişlik, 2 hassasiyet; float değeri str_val * / dtostrf (sensor_value, 4, 2, str_val) üzerine kopyalanır; / * İsteğe gönderilecek gövdeyi oluşturur * / sprintf (gövde, "{"% s ":% s}", değişken_label, str_val); / * POST * / sprintf olacak HTTP isteğini oluşturur (veri, "POST /api/v1.6/devices/%s", device_label); sprintf (veri, "% s HTTP / 1.1 r n", veri); sprintf (veri, "% sHost: things.ubidots.com r n", veri); sprintf (veri, "% sUser-Agent:% s /% s r n", veri, USER_AGENT, VERSION); sprintf (veri, "% sX-Auth-Token:% s r n", veri, TOKEN); sprintf (veri, "% sConnection: close r n", veri); sprintf (veri, "% sContent-Type: uygulama / json r n", veri); sprintf (veri, "% sContent-Uzunluk:% d r n r n", veri, dataLen (gövde)); sprintf (veri, "% s% s r n r n", veri, gövde); / * İlk bağlantı * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * İstemci bağlantısını doğrulayın * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Değişkenlerinizin kaydedilmesi:")); Serial.println (veri); / * HTTP İsteğini Gönder * / clientUbi.print (data); } / * İstemci uygun olsa da sunucunun cevabını okuyun * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c) } / * Boş hafıza * / boş (veri); serbest gövde); / * İstemciyi durdur * / clientUbi.stop ();}

ProTip: Arduino IDE'deki seri monitörü açarak cihazınızın doğru bağlanıp bağlanmadığını kontrol edebilirsiniz.

Ubidots arka ucunda bir aygıtın hesabınızı Aygıt Yönetimi -> Aygıtlar'da görüntüleyerek oluşturulduğunu doğrulayabilirsiniz.

Cihazınızı tıklatarak, sensör okumalarının saklandığı "mesafe" adlı bir değişken bulacaksınız. Bu ad, Arduino IDE'ye az önce yapıştırdığınız kodda atandı. Otomatik değişkenlerinizi ayarlamak isterseniz, lütfen bunu Cihaz kartını düzenleyerek veya uygulamanız için doğru değişken nomenklatürü ile güncellenmiş bir kodu yanıp sönerek yapın.

Tüy HUZZAH ESP8266 ile Ubidots'a bağlı ve veri raporlama, şimdi dikkatlice tasarlanmış kodsuz uygulama yapılandırması ile Ubidots kullanarak uygulamayı oluşturma zamanı.

Adım 5: Ubidots Uygulama Geliştirme

Ubidots Olay Yapılandırması

Ubidots'a gönderdiğimiz güncel okumalar mesafe girişleridir. Bu okumaları istediğimiz çıktıya çevirmek için - sayılan birimler - şu adımları izleyerek bir etkinlik oluşturmalıyız:

  1. Mevcut cihazın içinde "hareket kontrolü", "yeni kutular" her sayıldığında 1 alacak, "kutu" adı verilen yeni bir varsayılan değişken oluşturun.
  2. Git Cihaz Yönetimi -> Olaylar, ve yeni bir etkinlik eklemek için sayfanın sağ üst köşesindeki mavi artı simgesine tıklayın.
  3. Etkinliğinizi "If tetikleyiciler" ile başlayarak yapılandırın:

  • Bir değişken seçin: "mesafe"
  • Değeri: değer (varsayılan)
  • Sensör ile * geçen kutuların arasındaki beklenen maksimum mesafe} değerinden daha düşük veya ona eşit * uygulamanız 500mm
  • İçin 0 dakika
  • Kayıt etmek

4. Tetikleyiciler uygulamanızın özelliklerine göre yapılandırıldıktan sonra, koşullu bir eylem eklemek için sağ üst köşedeki turuncu renkli "artı" simgesini tıklayın.

5. İşlem olarak “Değişken Ayarla” seçeneğini seçin.

6. Daha sonra, daha önce yaratılmış olan varsayılan "boxes" değişkenini ve "1" değerini seçin.

7. Değişiklikleri kaydedin. Eğer olay uygun şekilde ayarlanmışsa, sensör ve ünite arasındaki mesafenin belirtilen bir eşikten daha uzun olduğu her seferinde "1" gönderir, bu da yakınlarda hiçbir nesne olmadığını gösterir - ve yeni geçen bir birimi saymalıdır. .

Geçiş Yumuşatma özel Aygıt kartında, bir birimin varlığının algılandığı herhangi bir zamanda "1" gönderildiği "kutular" değişkenini göreceksiniz.

Özellikle endüstriyel konveyör bantları için yararlı olan ve bu prototipi sayan birim, kodlama veya uygulama geliştirmenizde farklı ortamlara veya donanıma uyacak şekilde özelleştirilebilir.

8. Algılanan birimlerin sayısını görselleştirin (veya bir nesnenin algılandığı zamanları)
Şimdi, "boxes" değişkenini kullanarak, "boxes" değişkeninden alınan toplam okuma miktarını tanımlanmış bir spam'da (dakika, saat, gün, hafta vb.) Toplamak için yeni bir haddeleme penceresi değişkeni oluşturacağız. Bu geliştirmeyi gerçekleştirmek için aşağıdaki basit adımları izleyin:

Aşağıdaki bilgileri yeni haddeleme penceresi değişkeninize atayın

Bir cihaz seçin: hareket kontrolü (veya verilerinizi gönderdiğiniz cihazın adı)

Bir değişken seçin: kutuları

Hesapla: toplam

Her: "1" saat (veya başvuru taleplerinize göre)

Şimdi, yeni değişkene bir saat içinde sayılan kutu (veya hareket sayısını) belirten bir ad verin, tıpkı "kutular / saat" veya "birimler / saatler gibi.

Adım 6: Pano Yapılandırmaları

Son olarak, algılanan birim sayısını görüntülemek için bir gösterge tablosu oluşturun.

Cihaz Yönetimi -> Panolara gidin ve yeni bir widget ekleyin. Bu widget, bugün sayılan kutuların miktarını saatlere göre ayrılmış olarak görüntüler.

Sayımınızı görselleştirmek için aşağıdaki bilgileri yeni widget'ınıza atayın.

Verilerinizi nasıl görmek istersiniz ?: Grafik

Bir widget türü seçin: çizgi grafik

Cihaz ekle: hareket kontrolü

Bir değişken ekleyin: kutuları / saat

Bitiş. Ve bu son gösterge panosu gelişimi ile - uygulamanız tamamlandı ve artık etkin ve etkili bir hareket ve varlık algılama sistemine sahipsiniz. İşte sonuçlarımıza son bir bakış.

7. Adım: