İçindekiler:

Smart B.A.L (bağlı Posta Kutusu): 4 Adım
Smart B.A.L (bağlı Posta Kutusu): 4 Adım

Video: Smart B.A.L (bağlı Posta Kutusu): 4 Adım

Video: Smart B.A.L (bağlı Posta Kutusu): 4 Adım
Video: Led Işıklı Oda 😫🤤#Shorts 2024, Temmuz
Anonim
Smart B. A. L (bağlı Posta Kutusu)
Smart B. A. L (bağlı Posta Kutusu)

İçinde hiçbir şey yokken posta kutunuzu her seferinde kontrol etmekten bıktınız. Bir yolculuk sırasında posta veya koli alıp almadığınızı bilmek istiyorsunuz. Bu nedenle bağlı posta kutusu tam size göre. Fransa'da üretilen LORAWAN'ın en son teknolojileri sayesinde, postacının bir postayı veya paketi doğrudan akıllı telefonunuza e-posta yoluyla yatırıp yatırmadığını size bildirir. Bu talimat boyunca bir prototipin nasıl tasarlanacağını adım adım ilerliyoruz.

Adım 1: Ekipman

ekipman
ekipman

Kullanılan diller: C/C++

Dijital elektronikte temel bilgiler.

Donanım Gereksinimleri:

Grove - 3 Eksenli Dijital Gyro:

Antenli kit sigfox modülü:

Rastgele basma düğmesi (istediğinizi seçin).

Nucleo F030R8:

Yazılım gereksinimleri:

Mbed derleyicisi ile çalışmak için iyi bir tarayıcıya sahip bir bilgisayar.

2. Adım: Cihazınızı Hazırlayın

Cihazınızı Hazırlayın
Cihazınızı Hazırlayın

Öncelikle tüm modülleri çipe bağlamamız gerekiyor.

Sigfox modülüne ve jiroskopa 3,3 voltaj ile güç verin! Ardından UART kablolarını Sigfox modülüne (PA_9, PA_10) ve I2C kablolarını jiroskopa (PB_10; PB_11) bağlayın. Düğmeyi PB_3 pinleri ile bağlayın. bittiğinde, aşağıdaki kodu derleyin.

Gyro'yu bir posta kutusuna yerleştirerek prototipi test edebilir ve hareketle ilgili bazı değerleri alabilir ve böylece bırakılan bir paket mi yoksa bir mektup mu olduğunu kontrol edebilirsiniz.

#include "mbed.h" #include "ITG3200.h" //------------------------------------------------ -- // Hiper terminal yapılandırması // 9600 baud, 8 bit veri, eşlik yok //-------------------------------- ------ Seri bilgisayar(SERIAL_TX, SERIAL_RX); Seri sigfox(PA_9, PA_10, NULL, 9600); InterruptIn bouton(PB_3); ITG3200 cayro(PB_11, PB_10); uçucu int uygulaması; int faktör=0; Zamanlayıcı t; AnalogIn pil(A3); AnalogIn ref_batt(ADC_VREF); void lol() { pc.printf("appui\r\n"); uygulama=1; } /* void batt() { pc.printf("pil başarısız !\r\n"); }*/ int ana() { int x, y, z; //En yüksek bant genişliğini ayarla. gyro.setLpBandwidth(LPFBW_42HZ); karakter arabelleği[20]; bouton.fall(&lol); bouton.mode(PullDown); //batterie_faible.rise(&batt); //batterie_faible.mode(PullDown); pc.printf("başlangıç\r\n"); while(1) { uygulama=0; x = gyro.getGyroX(); y = gyro.getGyroY(); z = gyro.getGyroZ(); if(x > 5000) { t.start(); pc.printf("ilk dakika\r\n"); while(t.read() <10); pc.printf("son sıcaklık\r\n"); //pc.printf("uygulama= %d\r\n", uygulama); if(app == 0) { sigfox.printf("AT$SF=636f757272696572\r\n"); //colis: 636f6c69732e202020 sigfox.scanf("%s", arabellek); pc.printf("%s\r\n", arabellek); } pc.printf("fin if\r\n"); t.dur(); t.sıfırla(); } /* if(batterie.read() <= (2.8*ref_batt.read()/1.23)) pc.printf("baterie faible\r\n"); sigfox.printf("AT$SF=636f757272696572\r\n"); //colis: 636f6c69732e202020 bekle(10); sigfox.printf("AT$P=1"); bekle(10); sigfox.printf("AT$P=0\r\n");*/ } }

Adım 3: PCB Montajı

Önceki prototip, posta kutusuna koymak için çok büyük. İşte devrenizi yazdırmak ve bileşeninizi birleştirmek için bazı Gerber dosyaları.

4. Adım: Arka Uç Web Sitesi

Arka Uç Web Sitesi
Arka Uç Web Sitesi
Arka Uç Web Sitesi
Arka Uç Web Sitesi

Arka uç mimarimizi IBM Cloud (IBM IoT Watson Platform ve NodeRED) ve API REST isteklerine dayandırdık. IBM Cloud, sistemimizin farklı bölümleri arasındaki iletişimi yönetmek için kullanıldı. NodeRED akışımızda görebileceğiniz gibi, Sigfox API'sinden (cihazımızdan mesaj gönderen) ve Wix web sitemizden (yeni bir cihaz kaydettirmek için) gelen tüm istekleri kontrol ediyoruz. Ayrıca bulut, müşteriye bildirim e-postası göndermekten ve bilgileri bulut tabanlı veritabanımızda (MongoDB) depolanacak yeni bir müşteriyi kaydetmekten sorumludur. Böylece NodeRED, doğru bildirimin doğru istemciye zamanında gönderilmesini sağlamak için temel olarak API REST isteklerini ve veritabanı sorgularını (INSERT ve SELECT) yönetir.

Önerilen: