İçindekiler:
- Adım 1: Veritabanı Kurulumu
- 2. Adım: API
- Adım 3: GPS/Python Uygulaması
- Adım 4: Proje için Web Sayfası
Video: EAL - Rc Car'da Industry 4.0 GPS Veri Toplama: 4 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bu Eğitilebilir Kitapta, bir RC arabaya bir GPS modülünü nasıl kurduğumuz ve kolay izleme için toplanan verileri bir web sayfasına nasıl yayınladığımız hakkında konuşacağız. Daha önce burada bulabileceğiniz RC arabamızı nasıl yaptığımıza dair bir talimat hazırladık. Bu, aynı yapıyı kullanıyor, ancak ultrason sensörlerini hurdaya çıkarmaya karar verdik ve bunun yerine GPS modülünü uyguladık. Projede, GPS verilerini içeren bir veritabanı oluşturduk ve verilerin bulunabileceği bir web sayfası oluşturduk ve bir haritaya uyguladık, böylece arabanın nerede olduğunu görebilirsiniz. Web sayfasını görüntülemek için Joerha.dk adresini ziyaret edin.
En üstteki akış şemasında, bu projede kullanılan teknolojilerin bir özetini görebilirsiniz. Bu Eğitilebilir Kitaptan en iyi şekilde yararlanmak için, kullanılan teknolojilerin tümü olmasa da bazılarına aşina olmanız gerekir. Kullanıma göre bağlanır. Github depolarımıza bağladığımız için Github'ı anlamak da yardımcı olacaktır.
Yardımcı programlar listesi:
- Github
-
Ahududu PI/Raspbian
piton
-
Node.js
- Express.js
- Sequelize.js
- MySQL
-
HTML, CSS, JS
Önyükleme
Adım 1: Veritabanı Kurulumu
Bu bölümde GPS verilerimizin çekildiği veritabanı sistemini nasıl kurduğumuz hakkında konuşacağız. Veritabanı, yukarıdaki resme göre MySQL'de oluşturulmuştur, burada iki tablomuz vardır - “Kullanıcılar” ve “GPSEntries”. Kullanıcılarda birincil anahtarımız olarak “Id” var. Benzersiz bir tanımlayıcı olarak kullanılır. "Ad", oturum açmış olan kullanıcının adıdır. "Apikey", API'ye erişmek için kullanıcıya verilen benzersiz anahtardır. “Aktif”, kullanıcının aktif olup olmadığını kontrol etmektir, kullanıcıyı devre dışı bırakabiliriz, böylece veritabanına erişemez. “CreatedAt” ve “UpdatedAt”, veritabanını oluşturmak için kullandığımız süreç tarafından yapılır.
“GPSEntries” tablosunda, GPS modülünden gelen verileri içeren tüm niteliklere sahibiz. “Zaman”, GPS modülünün mevcut zamanıdır, onu gönderme zamanını göstermek için kullanırız. Sonra koordinatlarda konumuz var, ayrıca "hız" ve "yön". Ayrıca GPS, fx koordinatlarından gelen verilerde bir hata olup olmadığını gösteren birçok hata özniteliğimiz var. Bunları veritabanına ekledik, ancak web sayfasında göstermiyoruz. "UserId", Kullanıcılar tablosundaki "id"yi içeren yabancı bir anahtardır. Bu, hangi kullanıcının verileri gönderdiğini göstermek için kullanılır.
2. Adım: API
Bu bölümde, veritabanını kontrol eden ve verileri ona yapıştıran API'den bahsedeceğiz. Web API, Express.js ve Sequalize.js kullanan Node.js ile oluşturulmuştur.
Node.js, JavaScript sunucu tarafını çalıştırmak için kullanılır, burada normalde esas olarak bir web sayfasında istemci tarafı komut dosyası oluşturmak için kullanılır.
Express.js, API'yi oluşturmak için kullandığımız çerçevedir.
Sequalize.js, Gps verileri ile veritabanı öznitelikleri arasındaki bağlantıları kurmak için kullanılır. Bunu yapmak için ORM (Object-Relational Mapping) adlı bir yöntem kullanır. Burası ayrıca "CreatedAt" ve "UpdatedAt" öğelerinin oluşturulduğu yerdir (1. adımda gösterilmiştir).
API, api.joerha.dk ziyaret edilerek kullanılabilir. Ardından, veritabanındaki tüm verileri JSON biçiminde gösterecek olan url'ye /gps ekleyin. Kaç giriş istediğinizi kontrol etmek için url'ye /2 (Kullanıcı) ve /x (giriş sayısı) ekleyebilirsiniz. Fx api.joerha.dk/gps/2/10 en son 10 girişi gösterecektir. Biçimlendirilmiş verilerin bir çıkışı yukarıdaki resimde gösterilmektedir.
Kod burada bulunabilir: Github
Adım 3: GPS/Python Uygulaması
Bu bölümde ahududu üzerinde çalışan ve GPS verilerini toplayıp API'ye gönderen scriptten bahsedeceğiz.
GPS'den veri toplamak için gpsd adlı bir arka plan programı kullanıyoruz (Resim 1). Burası, veritabanına gönderdiğimiz verileri ve GPSEntries tablomuzun temelini topladığımız yerdir. Verileri gpsd'den alıp API'ye gönderen komut dosyası python ile yazılmıştır.
Uygulama bir iş parçacığı başlatır, böylece hem gpsd'yi hem de programımızı aynı anda çalıştırabilir. GPS aktifken Gpsd verileri sürekli olarak aktarılır (Resim 2).
Ardından, yükünü sürekli olarak GPS verilerini içeren API'ye gönderen bir süre döngüsü yaparız. Veriler JSON olarak biçimlendirilir. Yük, GPSD'de görülen niteliklerden oluşur..fix etiketi, geçerli verilerin anlık görüntüsü gibi davranır ve bunu API'ye gönderir. Bu, request.post tarafından yapılır ve url ile API anahtarını kullanır. Print (r.status_code) çıktısı, verinin doğru bir şekilde geçip geçmediğini bilmek için kullanıcıya gönderilir. Time.sleep (0,5) verilerin ne sıklıkta yayınlandığıdır (Resim 3)
Kod burada bulunabilir: Github
Adım 4: Proje için Web Sayfası
Bu bölümde proje ile ilgili verileri ve diğer bilgileri gösteren web sayfamızı nasıl yaptığımızdan bahsedeceğiz. Site HTML, css ve JS ile oluşturulmuştur. Başlangıç olarak HTML, css ve JS için bir kütüphane olan Bootstrap 4.0'ı kullandık. Web sitenizi oluşturmanıza yardımcı olacak birçok işlevle birlikte gelir. Bunu, sitenin oluşturulduğu satır ve sütun kurulumunun yanı sıra üstteki gezinme çubuğu için kullandık. Ardından, arka planın ve başlıkların renklerini kontrol eden başka bir küçük css betikimiz var. Bunun yanı sıra lightbox adlı bir kitaplıktan faydalandık, böylece resimlere tıklarsanız açılırlar. Sitenin içeriği bir google haritası, bir veri tablosu, hareket halindeki bir araba videosu ve bu sayfaya bir bağlantı içerir.
Google haritası en ilginç olanıdır. Harita, çalışması için benzersiz bir API anahtarının eklendiği bir google API aracılığıyla yüklenir. Veriler haritaya 500 ms aralıklarla aktarılır. Aracın nerede olduğunu takip edebilmeniz için veritabanındaki son 100 veri noktasının işaretçi olarak gösterildiği bir fonksiyon yaptık. Bu, AJAX çağrısı denen şey aracılığıyla yapılır.
GPS veri tablosundaki veri setleri de aynı şekilde istenir. Tabloda, GPS aktifken gerçek zamanlı olarak güncellenen son 10 girişi görebilirsiniz. Veritabanından 500 ms aralıklarla veri alıyoruz.
Kod burada bulunabilir: Github
Önerilen:
EKG Kaydedici - Uzun Süreli Veri Toplama ve Analizi için Giyilebilir Kardiyak Monitör: 3 Adım
EKG Kaydedici - Uzun Süreli Veri Toplama ve Analizi için Giyilebilir Kardiyak Monitör: İlk sürüm: Ekim 2017Son sürüm: 1.6.0Durum: KararlıZorluk: YüksekÖnkoşul: Arduino, Programlama, Donanım oluşturmaBenzersiz depo: SF (aşağıdaki bağlantılara bakın)Destek: Yalnızca forum, hiçbir PMECG Logger, Uzun Süreli Giyilebilir Kardiyak Monitör değildir
MotoStudent Elektrikli Yarış Bisikleti için Veri Toplama ve Veri Görselleştirme Sistemi: 23 Adım
MotoStudent Elektrikli Yarış Bisikleti için Veri Toplama ve Veri Görselleştirme Sistemi: Veri toplama sistemi, harici sensörlerden veri toplamak, depolamak ve daha sonra işlemek için birlikte çalışan bir donanım ve yazılım topluluğudur, böylece grafiksel olarak görselleştirilip analiz edilebilir, mühendislerin yapmasına izin vermek
Cambus - Kentsel Otobüste Veri Toplama Sistemi: 8 Adım
Cambus - Şehir içi Otobüslerde Veri Toplama Sistemi: Toplu taşımada bilinen sorun ve zorluklar arasında, nüfusun gerçek zamanlı bilgi eksikliği ve en az iddialı olması. Toplu taşıma otobüslerinin aşırı kalabalık olması, kendi araçlarını kullanmayı tercih eden kullanıcıları dahi uzaklaştırıyor
Arduino İle Sıcaklık ve Nem Göstergesi ve Veri Toplama ve İşleme: 13 Adım (Resimli)
Arduino ve İşleme ile Sıcaklık ve Nem Görüntüleme ve Veri Toplama: Giriş: Bu, bir Arduino kartı, bir Sensör (DHT11), bir Windows bilgisayar ve Sıcaklık, Nem verilerini dijital olarak görüntülemek için bir İşleme (ücretsiz indirilebilir) programı kullanan bir projedir. çubuk grafik formu, saati ve tarihi görüntüleyin ve bir sayım süresi çalıştırın
ESP8266 ve PubNub ile IoT Etkin Sensör Veri Toplama Merkezi: 9 Adım (Resimlerle)
ESP8266 ve PubNub ile IoT Etkin Sensör Veri Toplama Merkezi: ESP8266'daki eğitimlerin çoğu ya acemi seviyesinde (uzaktan bir led yanıp sönüyor) ya da led yanıp sönme becerilerini geliştirmek ve yükseltmek için bir şeyler arayan biri için çok karmaşık. Instructable, bu boşluğu oluşturmak için köprülemeyi amaçlıyor