Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pelacakan GPS Menggunakan Helium, Azure IoT Hub, dan Power BI

Komponen dan persediaan

Modul Pembuatan Prototipe Atom Helium
× 1
Arduino Zero
× 1
Adafruit Ultimate GPS Breakout
× 1
Breadboard (generik)
× 1

Aplikasi dan layanan online

Microsoft Azure
Arduino IDE

Tentang proyek ini

Tentang proyek ini

Helium hadir untuk membantu pengembang membangun perangkat berdaya rendah, aman, dan terhubung. Dalam proyek ini, kita akan menggunakan modul Helium Atom Prototyping dengan Arduino Zero dan Adafruit Ultimate GPS Breakout untuk mengirim data tanpa hambatan ke Azure IoT Hub dan kemudian ke laporan Power BI untuk memvisualisasikan data.

Anda dapat mempelajari lebih lanjut tentang daya rendah, aman, produk nirkabel jarak jauh Helium dan membeli semua perangkat keras yang diperlukan di helium.com/store.

Perangkat Keras

Hal pertama yang harus Anda lakukan adalah memasang modul Helium Atom Prototyping Anda ke adaptor Helium Atom Arduino, dan kemudian ke Arduino Anda. Kami menggunakan Arduino Zero untuk panduan ini, tetapi Anda dapat menggunakan Uno, Due, M0 atau Arduino lain yang Anda inginkan.

Setelah Anda menghubungkan Atom ke Arduino, Anda akan memiliki sesuatu yang terlihat seperti ini:

Selanjutnya, kita harus melampirkan Adafruit Ultimate GPS Breakout ke sandwich Arduino. Kami akan menggunakan papan tempat memotong roti di sini hanya untuk membuat segalanya lebih mudah dan lebih jelas, tetapi Anda dapat dengan mudah menghubungkan pelarian GPS langsung ke Arduino. Pengkabelan Anda harus dalam bentuk:

Arduino 5v -> GPS VIN

Arduino GND -> GPS GND

Arduino D12 -> GPS TX

Arduino D10-> GPS RX

Anda harus memiliki sesuatu yang terlihat seperti ini setelah selesai:

Ok, sekarang setelah kita memiliki sisi Arduino, kita perlu menghubungkan dan menyalakan Elemen Helium. Jika Anda memiliki Elemen Seluler, Anda hanya perlu menyalakannya dan menunggu lampu berubah warna menjadi teal. Itu dia. Jika Anda memiliki Elemen Ethernet, atau jika Anda lebih suka menggunakan koneksi Ethernet untuk Elemen Seluler Anda, colokkan port Ethernet Elemen Anda ke port berkemampuan DHCP seperti bagian belakang modem kabel atau router nirkabel. Setelah Anda menyalakan Elemen dan lampu di bagian depan Elemen berubah menjadi hijau, Anda siap melakukannya.

Sekarang setelah Anda memiliki pengaturan perangkat keras Arduino dan Atom, dan Elemen dihidupkan dan terhubung, saatnya untuk mengatur semuanya di Dasbor Helium.

Dasbor &Saluran Helium

Pertama, kita perlu menambahkan Atom dan Elemen ke akun pengguna kita di dasbor. Jika Anda tidak memiliki akun pengguna tetapi memiliki peralatan di tangan, silakan kirim email kepada kami di [email protected], jika tidak, masuk dengan kredensial yang Anda terima saat membeli perangkat keras dari Helium.

Setelah masuk, pertama-tama kita harus mengaktifkan Elemen kita. Mengklik Elemen di sebelah kiri, lalu Tambah Baru di kanan atas membawa Anda ke tempat yang tepat. Ketik 4 terakhir MAC alamat dan HVV dari label di bagian belakang Elemen, beri nama, dan secara opsional tambahkan beberapa tag. Klik Aktifkan Elemen untuk menjalankannya.

Kami kemudian perlu mengulangi proses yang sama untuk Atom. Sekali lagi, klik Atom di sebelah kiri, dan Tambah Baru , dan berikan MAC dan HVV dari label Atom, secara opsional tambahkan beberapa tag, dan klik Aktifkan Atom .

Selanjutnya, kita perlu membuat Azure IoT Hub untuk bertindak sebagai titik penyerapan ke Azure untuk semua perangkat Helium Atom Anda. Kami akan menganggap Anda sudah memiliki akun Azure, jika belum, Anda harus membuatnya.

Setelah Anda masuk ke Azure, kami akan membuat Hub IoT. Klik pada + di kiri atas, lalu Internet of Things , lalu IoT Hub :

Anda harus membuat beberapa pilihan tentang bagaimana Anda ingin mengatur IoT Hub Anda, lalu tekan Buat. Sebaiknya Anda memilih Sematkan ke Dasbor di bagian bawah agar lebih mudah ditemukan nanti:

Setelah Anda selesai dan hub selesai digunakan (ini mungkin memakan waktu beberapa menit), klik hub tersebut dari dasbor Anda. Untuk mengatur Saluran Helium, kita memerlukan satu informasi dari dalam hub. Dari dalam IoT Hub, pilih Kebijakan Akses Bersama di sebelah kiri, pilih RegistryReadWrite , lalu klik ikon salin di samping Connection string—primary key di kanan. Ini akan menyalin string koneksi ke clipboard yang akan kita gunakan kembali di Dasbor Helium. Berhati-hatilah untuk tidak membagikan string ini dengan siapa pun yang tidak Anda percayai. (Kami hanya menggunakan hub sementara dalam contoh ini.)

Kembali ke Dasbor Helium, sekarang kita perlu membuat Saluran yang memetakan ke Azure IoT Hub yang baru saja Anda buat. Pertama, klik Saluran di sebelah kiri, dan klik Azure IoT Hub di bawah Buat Saluran Baru . Kami akan menempelkan Connection String kami menyalin dari Azure untuk membuat Saluran di Helium:

Beri nama Kanal, lalu tekan Buat . Penting untuk mengingat namanya, karena Anda memerlukannya dalam kode Arduino untuk mengirim data ke Saluran ini.

Sketsa Arduino

Dengan pengaturan Azure IoT Hub dan Saluran Helium, kami sekarang memerlukan Sketsa Arduino yang sesuai yang menggunakan perpustakaan Helium Arduino dan GPS Adafruit untuk mengirim lokasi GPS ke Helium, dan kemudian ke saluran Azure kami yang baru dibuat.

Pertama, Anda memerlukan library Helium Arduino dan library Adafruit GPS yang terpasang di Arduino IDE Anda. Cara termudah untuk melakukannya adalah dengan membuka Sketsa -> Sertakan Perpustakaan -> Kelola Perpustakaan menu dari dalam IDE, dan cari keduanya Helium dan GPS Adafruit dan tekan Pasang .

Sketsa di bawah menginisialisasi Atom, membuat Saluran yang cocok dengan Azure IoT Hub Saluran yang kita buat pada langkah sebelumnya, mengumpulkan data GPS dari papan GPS Adafruit, memformatnya menjadi JSON, lalu mengirimkannya melalui jaringan Helium.

Ada lebih banyak detail dan panduan untuk perpustakaan Helium Atom Arduino di sini.

/* * Hak Cipta 2017, Helium Systems, Inc. * Semua Hak Dilindungi Undang-Undang. Lihat LICENCE.txt untuk informasi lisensi */ #include "Arduino.h" #include "avr/dtostrf.h" #include "Helium.h" #include  #include  #include "wiring_private .h" // pinPeripheral() function #define atom_serial Serial1//for GPS #define PIN_SERIAL2_RX (34ul) // Pin nomor deskripsi untuk PIO_SERCOM pada D12 #define PIN_SERIAL2_TX (36ul) // Pin nomor deskripsi untuk PIO_SERCOM pada D10 #define PAD_SERIAL2_ (UART_TX_PAD_2) // SERCOM pad 2 #menentukan PAD_SERIAL2_RX (SERCOM_RX_PAD_3) // SERCOM pad 3 Uart Serial2(&sercom1, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX);void SER() }Helium helium(&serial_atom); Channel channel(&helium);//GPS stuff #define gps_serial Serial2 Adafruit_GPS GPS(&gps_serial);void setup() { pinPeripheral(10, PIO_SERCOM); pinPeripheral(12, PIO_SERCOM); Serial.begin(115200); Serial.println("Mulai"); // Memulai komunikasi dengan Helium Atom // Kecepatan baud berbeda per board yang didukung // dan dikonfigurasi di Board.h helium.begin(helium_baud_b115200 ); // Hubungkan Atom ke Jaringan Helium Serial.print("Menghubungkan - "); int status =helium.koneksi(); while (status !=helium_status_OK) { status =helium.connect(); } Serial.println("Berhasil"); // Mulai berkomunikasi dengan saluran. Ini hanya perlu // dilakukan sekali. // // CATATAN:Pastikan Anda telah membuat saluran yang cocok di hasil Helium Dashbaord int8_t; Serial.print("Membuat Saluran - "); status =channel.begin("Panduan Hackster", &hasil); if (helium_status_OK ==status &&hasil ==0) { Serial.println("Berhasil"); } else { Serial.println("Gagal"); } penundaan(1000); //Init GPS GPS.begin(9600); GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); GPS.sendCommand(PGCMD_NOANTENNA); penundaan(2000); }uint32_t timer =milis(); void loop() { char c =GPS.read(); if (GPS.newNMEAreceived()) { if (!GPS.parse(GPS.lastNMEA())) kembali; } if (pengatur waktu> milis()) pengatur waktu =milis(); if (milis() - pengatur waktu> 2000) { pengatur waktu =milis(); // reset timer if (GPS.fix) { char lat[10]; char lon[10]; data karakter[100]; dtostrf(GPS.latitudeDegrees, 4, 4, lat); dtostrf(GPS.longitudeDegrees, 4, 4, lon); //format objek JSON lat/lon untuk dikirim ke Azure sprintf(data, "{\"lat\":\"%s\", \"lon\":\"%s\"}", lat, panjang); // Kirim data lokasi ke hasil saluran int8_t yang dikonfigurasi; //respon dari Helium Router Serial.print("Mengirim - "); int status =channel.send(data, strlen(data), &hasil); //status adalah respon dari koneksi serial Atom if (helium_status_OK ==status &&result ==0) { Serial.print("Berhasil terkirim "); Serial.println(data); } else { Serial.println("Gagal"); } } else { Serial.println("Tidak ada perbaikan GPS!"); } } }  

Dengan pustaka terinstal, buat sketsa baru (File -> Baru dari dalam Arduino IDE), dan rekatkan kode di atas. Hubungkan sandwich Arduino/Atom Anda melalui USB, dan tekan tombol Upload tombol yang terlihat seperti panah kanan.

Setelah beberapa detik Anda akan melihat lampu Atom mulai berkedip merah dan biru, dan kemudian berubah menjadi pola berkedip merah yang stabil. Ini berarti Atom sekarang terhubung ke jaringan Helium. GPS PERBAIKI lampu juga harus berkedip dengan pola merah lambat. Setelah ini berhenti, modul GPS telah memperbaiki lokasi Anda dan akan mulai mengirim data ke Helium. Ini membantu untuk mencoba dan menempatkan GPS di dekat jendela atau idealnya benar-benar di luar.

Anda dapat memeriksa Serial Monitor (Alat -> Monitor Serial ) dari dalam Arduino IDE untuk melihat output debug. Anda akan melihat pesan yang menunjukkan menghubungkan, membuat saluran, dan kemudian urutan Tidak ada perbaikan GPS! pesan sampai sinyal satelit diperoleh.

Memeriksa apakah data terkirim dengan benar

Sekarang setelah Arduino, Atom, dan GPS aktif dan berjalan, kita dapat kembali ke Dasbor Helium dan memastikan bahwa data masuk ke saluran Azure.

Mengeklik Saluran di sebelah kiri lalu pilih saluran Azure yang sudah Anda buat di Saluran Aktif bagian akan membawa Anda ke tampilan detail - menggulir ke bawah di sini akan menunjukkan kepada Anda Log Peristiwa, di mana Anda diharapkan akan melihat sesuatu seperti tangkapan layar di bawah ini. Ini menunjukkan stempel waktu dan ukuran data, serta melaporkan apakah data berhasil dirutekan ke Azure:

Jika Anda melihat Azure IoT Hub Anda di bawah Device Explorer navigasi Anda juga akan melihat perangkat Helium Atom Anda terdaftar di bawah alamat MAC-nya. Mengekliknya juga akan mengonfirmasi bahwa kami telah mengamankan perangkat ini secara otomatis, tanpa memerlukan konfigurasi apa pun, menggunakan sertifikat X509 yang ditandatangani perangkat keras.

Memasukkan data ke Power BI

Kami akan berasumsi bahwa Anda sudah memiliki akun Power BI, dan ruang kerja sudah dibuat. (Jika tidak, kunjungi www.powerbi.com dan siapkan.)

Dengan penyiapan akun Power BI Anda, sekarang kami harus membuat Pekerjaan Azure Stream Analytics untuk mengambil data dari Azure IoT Hub dan mengirimkannya ke Power BI.

Dari dalam dasbor Azure, klik Baru di kiri atas, dan cari Tugas Analisis Aliran , memilihnya setelah muncul. Klik Buat di kiri bawah, pilih opsi, dan tekan buat untuk menyiapkannya.

Setelah diterapkan, kita harus memberi tahu Tugas Streaming untuk menggunakan IoT Hub sebagai input, dan Power BI sebagai output. Dari dalam laman Tugas Streaming, klik Masukan dari menu sebelah kiri, lalu Tambah .

Berikan pekerjaan itu alias (nama), lalu pilih IoT Hub dari dropdown sumber. Pilih IoT Hub yang sesuai dari dropdown IoT Hub, dan biarkan yang lainnya sebagai default. Anda harus berakhir dengan sesuatu yang terlihat seperti ini:

Setelah input dibuat, kami akan membuat output yang terhubung ke Power BI. Dari laman Tugas Streaming, klik Keluaran dari menu sebelah kiri, lalu Tambah . Kami akan memilih Power BI dari Sink tarik-turun. Anda harus mengotorisasi akun Power BI Anda dan memilih Workspace yang ingin Anda gunakan. Buat nama untuk tabel. Anda akan berakhir dengan sesuatu seperti ini:

Langkah terakhir adalah membuat Query yang menghubungkan input ke output. Sekali lagi, klik Kueri dari menu kiri. Anda ingin kueri Anda pada dasarnya dalam bentuk yang cocok dengan tangkapan layar di bawah, tergantung pada apa yang Anda beri nama input dan output dari langkah sebelumnya. Ini akan memilih semua data yang berasal dari IoT Hub dan mengeluarkannya ke ruang kerja Power BI.

Tekan Simpan di kiri atas, dan dengan asumsi Anda menamai semuanya dengan benar, Anda hampir selesai. Sekarang kembali ke halaman Ikhtisar dan tekan Mulai di bilah navigasi atas, dan setelah beberapa menit Anda akan memiliki aliran data ke Power BI.

Memvisualisasikan di Power BI

Sekarang setelah data mengalir, kita dapat melakukan visualisasi cepat di Power BI untuk menunjukkan lokasi segala sesuatu di peta.

Buka Power BI Workspace Anda, dan klik + Buat di pojok kanan atas, dan pilih Laporkan . Anda kemudian akan memilih kumpulan data yang Anda buat di Azure Streaming Job dan tekan Buat .

Selanjutnya kita akan memilih visualisasi peta di panel sebelah kanan, terlihat seperti globe putih. Di paling kanan Anda akan melihat bidang data yang telah kami kirim dari Arduino. Seret lat ke Latitude dan lon ke Bujur di panel di sebelah kiri. Anda juga dapat menyeret EventProcessedUTCTime ke Tooltips jika Anda ingin melihat kapan itu dikirim dengan mouseover. Kemudian tekan Simpan di kanan atas. Itu dia! Sekarang Anda akan memiliki peta yang menunjukkan lokasi Atom Helium Anda yang terpasang pada Arduino.

Kode

  • Atom + Arduino + Adafruit GPS
Atom + Arduino + Adafruit GPSC/C++
/* * Hak Cipta 2017, Helium Systems, Inc. * Semua Hak Dilindungi Undang-Undang. Lihat LICENCE.txt untuk informasi lisensi*/#include "Arduino.h"#include "avr/dtostrf.h"#include "Helium.h"#include #include #include "wiring_private .h" // fungsi pinPeripheral()#menentukan atom_serial Serial1//untuk GPS#menentukan PIN_SERIAL2_RX (34ul) // Menyematkan nomor deskripsi untuk PIO_SERCOM pada D12#menentukan PIN_SERIAL2_TX (36ul) // Menyematkan nomor deskripsi untuk PIO_SERCOM pada D10#menentukan PAD_SERIAL2_ (UART_TX_PAD_2) // SERCOM pad 2#menentukan PAD_SERIAL2_RX (SERCOM_RX_PAD_3) // SERCOM pad 3Uart Serial2(&sercom1, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX{1_Hand SER); Channel channel(&helium);//GPS stuff#define gps_serial Serial2Adafruit_GPS GPS(&gps_serial);void setup() { pinPeripheral(10, PIO_SERCOM); pinPeripheral(12, PIO_SERCOM); Serial.begin(115200); Serial.println("Mulai"); // Memulai komunikasi dengan Helium Atom // Kecepatan baud berbeda per board yang didukung // dan dikonfigurasi di Board.h helium.begin(helium_baud_b115200); // Hubungkan Atom ke Jaringan Helium Serial.print("Menghubungkan - "); int status =helium.koneksi(); while (status !=helium_status_OK) { status =helium.connect(); } Serial.println("Berhasil"); // Mulai berkomunikasi dengan saluran. Ini hanya perlu // dilakukan sekali. // // CATATAN:Pastikan Anda telah membuat saluran yang cocok di hasil Helium Dashbaord int8_t; Serial.print("Membuat Saluran - "); status =channel.begin("Panduan Hackster", &hasil); if (helium_status_OK ==status &&hasil ==0) { Serial.println("Berhasil"); } else { Serial.println("Gagal"); } penundaan(1000); //Init GPS GPS.begin(9600); GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); GPS.sendCommand(PGCMD_NOANTENNA); delay(2000);}uint32_t timer =milis();void loop(){ char c =GPS.read(); if (GPS.newNMEAreceived()) { if (!GPS.parse(GPS.lastNMEA())) kembali; } if (pengatur waktu> milis()) pengatur waktu =milis(); if (milis() - pengatur waktu> 2000) { pengatur waktu =milis(); // reset timer if (GPS.fix) { char lat[10]; char lon[10]; data karakter[100]; dtostrf(GPS.latitudeDegrees, 4, 4, lat); dtostrf(GPS.longitudeDegrees, 4, 4, lon); //format objek JSON lat/lon untuk dikirim ke Azure sprintf(data, "{\"lat\":\"%s\", \"lon\":\"%s\"}", lat, panjang); // Kirim data lokasi ke hasil saluran int8_t yang dikonfigurasi; //respon dari Helium Router Serial.print("Mengirim - "); int status =channel.send(data, strlen(data), &hasil); //status adalah respon dari koneksi serial Atom if (helium_status_OK ==status &&result ==0) { Serial.print("Berhasil terkirim "); Serial.println(data); } else { Serial.println("Gagal"); } } else { Serial.println("Tidak ada perbaikan GPS!"); } }}

Proses manufaktur

  1. Sistem Kehadiran Menggunakan Arduino dan RFID dengan Python
  2. GPS Datalogger, Analisis Spasial, dan Azure IoT Hub.
  3. Kontrol Jarak Jauh Universal menggunakan Arduino, 1Sheeld, dan Android
  4. Voltmeter DIY Menggunakan Arduino dan Smartphone
  5. Pemantau Detak Jantung Menggunakan IoT
  6. Menggunakan IoT untuk Mengontrol Lengan Robot dari Jarak Jauh
  7. IOT - Smart Jar Menggunakan ESP8266, Arduino dan Sensor Ultrasonik
  8. Pengukuran Frekuensi dan Siklus Tugas Menggunakan Arduino
  9. Sonar menggunakan arduino dan ditampilkan pada pemrosesan IDE
  10. Kolam Renang Azure IoT