Mengelola dan Menemukan Komponen Raspberry Pi, Arduino, dan RFID Secara Efisien
Komponen dan Perlengkapan
Komponen
Jumlah
Raspberry Pi 2 Model B
1
Arduino UNO
1
JT2850 RFID module
1
JT606 RFID antenna
1
Alat dan Mesin yang Diperlukan
Alat
Microsoft PC running Windows10 with Visual studio 2015 installed
Android Phone
Aplikasi dan Layanan Online
Aplikasi
Microsoft Windows 10 IoT Core
Microsoft Azure
Microsoft Visual Studio 2015
Tentang Proyek
Latar Belakang
Apakah Anda pernah mendapatkan situasi dimana setiap kali Anda mencari sesuatu tetapi Anda menghabiskan waktu sangat lama untuk mencarinya dan masih tidak dapat menemukannya? Dengan memanfaatkan teknologi RFID, menggunakan pembaca RFID dan beberapa tag RFID yang ditempelkan pada item, kita dapat dengan mudah menemukan item yang disimpan. Kapan pun kita membeli item baru cukup tempelkan tag RFID padanya dan daftarkan detail item ke dalam sistem. Ketika kita perlu mencari item tetapi tidak ingat di mana itu, cukup cari di aplikasi seluler dan Anda akan tahu item tersebut saat ini ada di ruang mana di rumah Anda.
Ide Keseluruhan
Komponen proyek ini akan terdiri dari modul pembaca RFID UHF, antena RFID UHF, Arduino UNO, Raspberry Pi2 yang menjalankan Windows10 IoT core (Anda dapat merujuk ke sini https://ms-iot.github.io/content/en-US/GetStarted.htm jika Anda tidak yakin cara menginstal Windows10 IoT core), aplikasi seluler dan layanan web Azure untuk penyimpanan data. Ada beberapa modul RFID UHF di rumah, dan setiap modul RFID UHF akan terhubung ke Arduino UNO dengan Arduino kemudian terhubung ke Raspberry Pi2. Kapan pun item yang ingin dilacak oleh sistem, sebuah tag RFID akan ditempelkan. Detail item dan nilai RFID diperlukan untuk didaftarkan ke dalam sistem. Data setiap catatan akan disimpan ke dalam database SQL Azure melalui Azure Web API. Ketika pengguna ingin mencari item di rumah, tetapi dia tidak yakin item tersebut akan berada di ruang mana di rumahnya. Dia dapat menyalakan aplikasi seluler mereka. Aplikasi seluler akan mengirim permintaan pencarian ke Raspberry Pi2 melalui jaringan Wifi. Setelah Raspberry Pi2 menerima permintaan pencarian, itu akan mengirim permintaan ke semua Arduino Uno yang terhubung ke itu. Arduino UNO akan mengirim perintah baca ke modul UHF RFID. Setelah salah satu pembaca UHF RFID di lokasi berbeda berhasil menangkap RFID yang diperlukan, itu akan mengembalikan nilai kembali ke Arduino UNO. Arduino UNO akan mengembalikan lokasi pembaca RFID kembali ke Raspberry Pi2 dan RaspberryPi2 akan memproses hasil pencarian lebih lanjut dan mengembalikan ke aplikasi seluler.
Cara Melakukannya?
Saya akan mengembangkan aplikasi latar belakang yang berjalan pada Windows 10 IoT core, kita mungkin perlu mengetahui alamat IP dari Raspberry Pi 2. Tidak perlu untuk memiliki layar. Berkat Windows IoT Core Watcher yang hebat. Yang perlu Anda lakukan adalah menghubungkan Raspberry Pi2 model B Anda seperti yang ditunjukkan di bawah ini:
Dengan menghubungkan PC dan Raspberry PI2 melalui kabel jaringan, Windows IoT Core Watcher yang hebat akan dapat memberitahu alamat IP dari Raspberry Pi2 Anda:
Buat proyek di Visual Studio 2015
Lalu Anda dapat mulai mengembangkan menggunakan Visual studio 2015, cukup unduh kode yang saya bagikan di sini, dan jalankan menggunakan Visual studio 2015.
Unduh kode dari github dan Anda akan dapat menjalankan proyek langsung. Jika Anda mencoba untuk membuat proyek baru, Anda dapat mencoba cara ini:
1. Pergi ke File -> New->Project
2. Di bawah template Visual C#, cari "Background Application (IoT)". Masukkan nama proyek Anda dan proyek Anda dibuat.
3. Setelah proyek dibuat, selanjutnya adalah mengonfigurasi pengaturan debug. Klik kanan pada proyek dan pilih "Properties"
4. Di bawah jendela properti proyek, klik pada tab debug dan buat pengaturan berikut:
Platform : ARM
Target Device: Remote Machine
Remote machine: <alamat IP Anda yang ditampilkan di Iot Core Watcher>
Uncheck "Use authentication"
Simpan konfigurasi dan Anda sekarang dapat mulai memrogram ke dalam file StartupTask.cs di bawah proyek yang baru dibuat Anda.
Debugging di Visual Studio 2015
Setelah Anda menyelesaikan pemrograman dan ingin memulai debugging, Anda dapat mengikuti langkah-langkah dan tangkapan layar berikut:
1. Klik pada sisi kiri bar abu-abu untuk menetapkan breakpoint pada baris kode yang ingin Anda investigasi:
2. Selanjutnya klik tombol hijau "Remote machine" untuk memulai debug:
3. Setelah memasuki mode debug, tombol hijau "Remote Machine" akan berubah menjadi "Continue" pada saat yang bersamaan tombol langkah akan diaktifkan:
Next -- Tampilkan pernyataan berikutnya
Step Into -- Masuk ke dalam fungsi dan lihat kode di dalam fungsi
Step Over -- Lewati baris saat ini dan lihat baris kode berikutnya
Step Out -- Keluar dari fungsi dan lanjutkan debugging dengan kode sebelumnya.
Saat menjalankan debug, Anda dapat dengan mengarahkan kursor mouse untuk memeriksa nilai variabel tertentu atau menyorot dan klik kanan pada variabel dan pilih "Add Watch" untuk menambahkan variabel ke daftar pantau:
Buat Web API di Azure untuk melayani transaksi IoT dan aplikasi seluler
Buat Proyek Aplikasi Web Asp.NET
1. Buat sebuah ASP.NET Web Application, masukkan nama proyek dan klik tombol OK di bagian bawah
2. Di layar berikutnya klik Choose MVC di bawah template ASP.NET 4.5.2 (jika Anda berani, bebas mencoba Template ASP.NET 5 preview dengan framework MVC6. Langkahnya akan sama)
3. Selanjutnya tetapkan metode autentikasi ke "No authentication"
4. Juga perhatikan bahwa jika Anda ingin menghost Web API ini di server cloud, Anda dapat mencentang opsi "Host in the cloud" seperti yang ditunjukkan di bawah ini:
Jika Anda tidak memiliki akun microsoft azure, Anda dapat mendaftar untuk uji coba gratis dan menikmati kredit gratis $200. Cukup klik di sini: https://azure.microsoft.com/en-us/pricing/free-trial/
5. Jika Anda memilih untuk menghost web API Anda di Azure Web App, setelah "OK" diklik, layar berikutnya akan meminta Anda untuk login ke Microsoft Azure.
6. Setelah berhasil login, cukup masukkan nama web app Anda dan detail berikutnya seperti yang ditunjukkan dalam formulir:
setelah semua informasi diisi, klik OK dan Anda menunggu sebentar untuk VS2015 membuat web app dan database di akun Azure Anda.
Ketika baik lokal dan cloud Web App berhasil dibuat, selanjutnya Anda mungkin ingin membuat database untuk aplikasi Anda. Berkat Entity framework di MVC, kita sekarang dapat menyiapkan database untuk Web App kita dengan beberapa langkah sederhana.
Menggunakan Entity Framework
Saya akan menggunakan NuGet Package Manager Console untuk instalasi. Jadi pertama-tama Anda akan perlu meluncur Nuget Package Manager sebagai berikut: Tools->NuGet Package Manager->Package Manager Console
2. Selanjutnya ketik perintah "Install-Package EntityFramework" di Package manager console Anda di bawah ini:
3. Selanjutnya Anda akan perlu membuat Model class untuk mendeskripsikan tabel dan bidang database Anda. Cukup klik kanan pada folder Model dan klik "Add"->"Class.."
Setelah kelas baru dibuat, tambahkan baris-baris berikut:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
Setelah pembuatan model class, langkah selanjutnya adalah membuat WebAPI controllers bersama dengan action menggunakan Entity framework. Ikuti tangkapan layar di bawah ini, klik kanan pada folder Controllers dan pilih "Add"->"New Scaffolded Item":
Pilih "Web API 2 Controller with actions, using Entity Framework" di bawah kategori Web API di layar berikutnya:
Setelah tombol "Add" diklik, layar berikutnya akan ditampilkan:
Klik tombol '+' di kolom Data context class untuk membuat kelas data context baru:
Klik Add di layar berikutnya untuk membuat:
setelah semua kolom diisi, klik "Add" untuk menghasilkan item yang difoundationkan:
Setelah item yang difoundationkan berhasil dihasilkan, Anda akan dapat melihat controller dan kelas data context jatuh ke dalam folder Controllers dan Models:
Selanjutnya, jalankan perintah Enable-Migrations di Package Manager Console:
Setelah perintah Enable-Migrations, diikuti oleh perintah Add-Migration <Name>:
Terakhir perintah Update-Database akan membuat database berdasarkan skrip migrasi yang dihasilkan dari Models. Anda akan dapat menemukan database yang baru dibuat di bawah tabel Add_Data:
Publish your WEB API
Setelah database berhasil diatur, web api dianggap selesai (Scaffolded controller akan menghasilkan fungsi dasar untuk panggilan RESTful). Cukup untuk memastikan fungsi GetMything(GET), PostMything(POST), PutMything(PUT) dan Deletemything(DELETE) ada di MyThingsController.
Setelah proyek Web API selesai. Selanjutnya Anda dapat mempublish web API ke Azure Web APP dengan langkah-langkah berikut:
1. Pilih menu Build > Publish MyThingAPI seperti tangkapan layar berikut.:
2. Popup berikutnya akan muncul dan memungkinkan Anda untuk Select a publish target. Anda dapat memilih Microsoft Azure API Apps(Preview) jika Anda menggunakan template ASP.NET5 MVC 6 untuk Web API Anda:
3. Setelah Microsoft Azure Web Apps diklik, layar berikutnya akan muncul dan akan meminta Anda untuk login ke akun azure Anda:
Masukkan kredensial azure Anda dan login:
4. Setelah berhasil login, Anda akan dapat mengambil web app yang ada yang dihost di azure (harusnya telah dibuat sebelumnya saat membuat proyek ini di VS2015):
5. Setelah web Apps telah dipilih, dan klik "OK", layar berikutnya akan muncul:
Pengaturan koneksi akan dipropagasi, cukup klik next untuk melanjutkan
6. Di bawah tab setting Anda akan melihat string koneksi database, info lain akan diisi otomatis tetapi pastikan kedua checkbox "Use this connection string at runtime" dan "Execute Code First Migration" dicentang:
6. Setelah semua pengaturan diisi, klik Publish dan Visual studio akan meluncurkan Azure Web App segera setelah publish berhasil:
Setelah web api dipublish, Anda dapat menguji REST API. Saya menggunakan ekstensi Chrome "Advance REST Client" untuk pengujian:
Anda dapat mencoba string json di bawah ini untuk panggilan POST:
{
id:1,
status: "0",
rfid: "1009622005390623",
image: "",
name: "some tool",
type: "tool",
location: "bedroom",
createdAt: "2015-10-13T10:26:01.14",
lastUpdatedAt: "2015-10-13T10:26:01.14"
}
Create Windows Universal App
Karena Iot Background app dan REST API siap, selanjutnya adalah membangun Windows Universal App sebagai klien. Universal App memungkinkan kami untuk menggunakan satu set kode untuk beberapa perangkat. Saya membuat Universal App untuk Tablet sebagai contoh di sini (Anda dapat dengan mudah mengubah pengaturan tata letak untuk ponsel atau laptop).
Untuk membuat Universal App, cukup klik File>New>Project di Visual Studio 2015 Anda, lalu pilih universal app seperti berikut:
Setelah membuat solusi baru Anda dapat mengganti skrip cs dan file .xaml dengan MyThingApp yang saya bagikan di GitHub.
Debugging in Windows universal App:
Windows universal app menyediakan beberapa konfigurasi debug termasuk platform ARM, x64 dan x86. Jika Anda menjalankan debugging di PC lokal Anda yang menjalankan Windows 64 bit, Anda perlu memilih x64 dan klik tombol hijau (Pilih "local machine")
jika aplikasi Anda berjalan tanpa kesalahan, seharusnya terlihat seperti ini:
Setup Notification Hub dan UWP push notification
1. Setelah Web API dan Universal App selesai, Anda dapat login di sini
https://dev.windows.com/en-us/dashboard/Application/New untuk menyimpan nama App.
2. Setelah nama app dibuat, kembali ke MyThingApp dan klik kanan pada proyek Anda. Pilih Store>Associate App with the Store
untuk pembuatan notification hub silakan merujuk ke sini:
3. selanjutnya tambahkan fungsi berikut ke App.xaml.cs
private async void InitNotificationsAsync()
{
var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
var hub = new NotificationHub("notification", "Endpoint=sb://smartwardrobe.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=MlHoVfn1Ub/c2ThUha+Crn7hHSGmqofrW3cJ6IK89Ok=");
var result = await hub.RegisterNativeAsync(channel.Uri);
}
juga panggil fungsi baru ini di dalam OnLaunched function:
var toast = @"<toast launch=""" + rfid + @"""><visual><binding template=""ToastText01""><text id=""1"">New Mything need to update</text></binding></visual></toast>";//<param>/MainPage.xaml?value=test</param>
7.Windows on GitHub:- https://microsoft.github.io/windows/
8.Arduino Software Serial Example(using UART) :- https://www.arduino.cc/en/Tutorial/SoftwareSerialExample
9.SparkFun serial communication tutorial: - https://learn.sparkfun.com/tutorials/serial-communication
10.Get started with Azure Notification Hub:- https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-android-get-started/
11.Add push notifications to your Mobile Services app:- https://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-android-get-started-push/
12.Code First Migrations:- https://msdn.microsoft.com/en-sg/data/jj591621.aspx
13.Publish to an Azure Web App using Visual Studio:- https://docs.asp.net/en/latest/tutorials/publish-to-azure-webapp-using-vs.html
14.Publish the App to Azure Azure App Service:- https://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-10
Kode
Arduino Code for RFID reader module
Arduino Code for RFID reader moduleC/C++
/* read command will be sent over to RFID module once tag is read, it will return back to serial port */ #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } // set the data rate for the SoftwareSerial port mySerial.begin(9600); } void loop() { // run over and over if (mySerial.available()) { //send the read command over to RFID module byte message[] = {0xA0,0x06,0x80,0x00,0x01,0x02,0x01,0xD6}; mySerial.write(message, sizeof(message)); //send the data back to serial if(Serial.available()) Serial.write(mySerial.read()); } }
Where is my thing on GitHub
https://github.com/seeyouu87/where-is-my-thing
Custom parts and enclosures
UHF RFID reader module. it is used for reading RFID tag.uhf_reader_jt2850.svgUHF RFID reader module. it is used for reading RFID taguhf_reader_jt2850.svgUHF RFID reader module. it is used for reading RFID taguhf_reader_jt2850.svg
Skema Rangkaian
Where is my thing on Fritzing
Schematics on Fritzing.org The connection for Arduino to UHF RFID module.