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

Otomasi Rumah Menggunakan Raspberry Pi 2 Dan Windows 10 IoT

Komponen dan persediaan

Arduino UNO
Untuk setiap ruangan yang ingin Anda otomatisasi, ambil Arduino UNO yang terpisah.
× 1
Raspberry Pi 2 Model B
× 1
Kabel jumper (generik)
× 1
Breadboard (generik)
× 1
LDR (Light Dependent Resistor)
LDR memberikan pembacaan voltase yang berbeda untuk intensitas cahaya yang berbeda.
× 1
Sensor Gerak PIR (generik)
IR Pasif mendeteksi keberadaan manusia.
× 1
Relai (umum)
Anda dapat menggunakan segala jenis modul relai. Jumlah relai akan bergantung pada jumlah perangkat yang ingin Anda kontrol.[NoOfDevices =NoOfRelay]
× 1
Kontaktor Siemens (3TF32 00-0AP0)
Kontaktor akan digunakan untuk mengontrol pompa air dengan rating maksimum AC3:16A 415VAC.Sebelumnya membeli kontaktor, harap periksa peringkat pompa air Anda dan dependensi contry Anda jika ada."3TF32 00-AP0" mampu menggerakkan pompa air hingga 16A dan 415VAC. Kontaktor ini beroperasi menggunakan kumparan built-in. Peringkat kumparan (khusus untuk 3TF32 00-0AP0) 250VAC.
× 1
Pemutus Sirkuit Miniatur (1P C16A)
MCB dipasang sebelum kontaktor untuk melindungi pompa air dari gangguan listrik dan kelebihan beban. Di sini MCB juga memiliki peringkat khusus. Kontaktor kami adalah 16A dan karenanya saya menggunakan MCB 16A. Anda dapat memodifikasi sesuai dengan kenyamanan Anda.
× 1

Aplikasi dan layanan online

Arduino IDE
Untuk menulis firmware Arduino. Sudah jelaskan di artikel.
Microsoft Visual Studio 2015
Edisi komunitas dipesan dan gratis untuk maksimal lima pengguna. Tetapi Anda dapat menggunakan yang lebih tinggi dari itu jika Anda telah membeli salinan berlisensi Visual Studio 2015.
Microsoft Windows 10 IoT Core
Sebagai OS utama, yang mengontrol perangkat melalui Arduino dan menyediakan konsol manajemen.

Tentang proyek ini

Di era sekarang ini, teknologi dapat meningkatkan kehidupan manusia. Teknologi berkembang dari dekade ke dekade. Otomasi adalah fiksi ilmiah sebelumnya tetapi tidak hari ini. Dengan menggabungkan teknologi terbaru dengan rumah, kita dapat membangun rumah yang mengagumkan. Dengan Raspberry Pi dan Windows 10, kita dapat membangun sistem otomatisasi rumah yang mampu mengoperasikan perangkat rumah secara otomatis.

Memulai

Sebelum memulai proyek, mari kita pahami dasar-dasarnya terlebih dahulu. Perhatikan gambar berikut (Konfigurasi Keseluruhan):

Konfigurasi untuk Ruang

Sekarang mempertimbangkan skenario ruangan, Arduino UNO akan mengontrol perangkat dan membaca data sensor. Secara berkala, Raspberry Pi meminta data sensor yang dikumpulkan oleh Arduino UNO. Gambar "Arsitektur Ruangan" menggambarkan bagaimana Arduino UNO akan terhubung dengan perangkat dan sensor. Setiap kamar memiliki beberapa perangkat yang dapat dikontrol (yaitu Lampu, Kipas Angin, Stopkontak, dll.), satu PassiveIR (untuk mendeteksi keberadaan manusia di dalam ruangan), satu sensor suhu (LM35 untuk mengumpulkan suhu kamar) dan LDR ( untuk mendeteksi intensitas cahaya di dekat jendela kamar).

Pemetaan Alamat Perangkat

Bagian terpenting adalah bagaimana kita akan mengidentifikasi perangkat? Itu mudah. Kami akan membuat alamat perangkat dengan menggabungkan nomor kamar dengan nomor perangkat.

Misalnya:

Jadi sampai sekarang kita tahu konfigurasi keseluruhan. Singkatnya, Raspberry Pi akan bertindak sebagai pengontrol utama. Setiap kamar memiliki satu Arduino UNO sendiri yang bertindak sebagai budak dari Raspberry Pi. Komunikasi antara Raspberry Pi dan Arduino UNO akan dilakukan menggunakan I2C.

Skema

Untuk membuatnya lebih mudah, mari kita mulai menerapkan untuk ruang pertama. Lihat skema untuk menghubungkan komponen dengan cara yang benar.

Jalur Bus I2C: Untuk memasang lebih dari satu Arduino Anda dapat menggunakan I2C Bus Stripe seperti yang ditunjukkan di bawah ini.

Bagaimana cara menghubungkan perangkat dengan papan relai?

Semua dilakukan di sisi perangkat keras. Sekarang waktunya membangun perangkat lunak.

Perangkat Lunak

Proyek kami terdiri dari Raspberry Pi 2 dan Arduino UNO. Perangkat lunak Raspberry Pi 2 dikembangkan di Visual Studio 2015. Saya berasumsi bahwa pembaca mengetahui pembuatan proyek untuk Raspberry Pi 2 di Visual Studio 2015. Saya juga berasumsi bahwa pengguna memiliki pengetahuan menengah tentang kerangka Arduino, Visual C# dan Windows Universal XAML.

Mari kita pahami software dalam formasi berikut:

  • Protokol (Bagaimana Raspberry Pi 2 dan Arduino berbicara)
  • Struktur Kelas (Bagaimana Raspberry Pi 2 memelihara perangkat dan ruangan yang rumit seperti itu)
  • Antarmuka Pengguna (Wire-frame)

Protokol (Bagaimana Raspberry Pi 2 dan Arduino Berbicara melalui I2C)

Sebelum melangkah lebih jauh, mari kita putuskan dulu bagaimana Raspberry Pi dan Arduino berbicara. Untuk membuat protokol yang andal, pertama-tama kita harus memiliki tujuan atau sasaran yang jelas untuk komunikasi. Dalam pertimbangan proyek ini, tujuannya adalah:

  • Membaca sensor
  • Baca status perangkat
  • Setel status perangkat

Mari kita mulai mendefinisikan protokol terlebih dahulu. Protokol mendefinisikan aturan untuk berkomunikasi melalui bus. Protokol tidak lebih dari urutan byte.

Saya telah menetapkan protokol untuk mengirim dan menerima byte. Mengirim byte tetap tiga sementara menerima array byte adalah empat belas byte.

Lihat skema berikut untuk memahami protokol yang ditentukan untuk proyek ini ('X' menunjukkan nilai acak atau '0', itu akan diabaikan saat berkomunikasi):

Kelas bernama 'I2C_Helper' berisi implementasi protokol dalam proyek aplikasi Universal PRi2. Kelas ini tersedia di Universal Windows Project. Untuk membukanya:Goto Solution Explorer> Library> Communication folder. Di sisi Arduino, perpustakaan I2C mudah dipahami.

Sekarang, kami telah menetapkan skema komunikasi yang tepat yang mampu memberikan status dan nilai sensor, perangkat, dan juga menyediakan aksesibilitas untuk menyetel status perangkat.

Struktur Kelas (Bagaimana Raspberry Pi 2 Memelihara Objek)

Seperti dibahas pertama, proyek ini dianggap seluruh rumah. Rumah terdiri dari beberapa kamar dan kamar terdiri dari beberapa perangkat. Dengan demikian struktur OOP dari konfigurasi tersebut ditunjukkan di bawah ini:

Kelas utama "Rumah" terdiri dari beberapa objek ruangan sebagai daftar umum ruangan (Daftar). Kelas rumah menyediakan metode statis untuk memuat dan menyimpan objek rumah di Pi untuk digunakan nanti.

Ruangan terdiri dari perangkat sebagai daftar perangkat generik (Daftar) dan struktur sensor untuk merangkum semua sensor menjadi satu.

Perangkat terdiri dari detailnya dan berfungsi untuk mengaktifkan dan menonaktifkannya menggunakan Mode protokol - 2. Kelas AmbientLight, PassiveIR, dan Suhu menyediakan akses ke data lingkungan ruangan. Objek ruangan memelihara data sensor dan memperbaruinya secara berkala menggunakan Mode protokol - 0.

Antarmuka Pengguna

Aplikasi apa pun harus ramah pengguna. Untuk membuat aplikasi yang user-friendly, mulailah dengan wire-frame. Asumsikan bahwa Anda akan menggunakan aplikasi Anda sendiri dan mencari tahu tujuan utama dan bagaimana mengintegrasikannya sedemikian rupa sehingga akan paling mudah bagi pengguna akhir.

Dalam skenario aplikasi ini, tujuan utama kami adalah:

  • Manajemen Kamar
  • Pengelolaan Perangkat
  • Layanan Eksternal seperti Komunikasi GSM, Komunikasi Internet, dll

Untuk melakukannya, saya telah membagi masalah menjadi:

  • Halaman Beranda:Menyediakan informasi status perangkat dasar, tanggal-waktu, dan kunci
  • Perangkat Favorit:Akses langsung ke perangkat favorit
  • Halaman Ruangan:Menyediakan akses ke ruangan yang dikonfigurasi dan perangkatnya
  • Perangkat Air Umum:Pompa air dan Geyser
  • Setelan/Konfigurasi:Menyediakan pengelolaan ruangan dan perangkatnya

Bingkai kawat:

Berdasarkan wire-frame, saya telah mengembangkan UI yang ditunjukkan selanjutnya. Anda dapat mengunduh kode sumber lengkap. Tautan ke unduhan disediakan di akhir artikel.

Jadi, sudah dikembangkan UI. Semoga Anda dapat memodifikasinya sesuai kebutuhan Anda. Jangan ragu untuk berkomentar untuk bantuannya.

Bagaimana cara mengkonfigurasi?

Saya telah mencoba membuat perangkat lunak ini semudah mungkin. Dengan konfigurasi minor, Anda dapat mengoperasikan perangkat secara langsung menggunakan Raspberry Pi 2. Konfigurasi langkah-demi-langkah ditunjukkan di bawah ini:

Bagaimana cara mengontrol pompa air dan geyser menggunakan aplikasi ini?

Anda dapat memasang pompa air dan geyser dengan cara yang sama seperti Anda menambahkan perangkat. Tetapi Anda tidak dapat memasang pompa air atau geyser langsung ke papan relai untuk menyalakannya. Ini akan meledakkan papan estafet serta berbahaya.

Untuk mengoperasikan pompa air atau geyser, sambungkan pompa air atau geyser dengan kontaktor dan hubungkan koil kontaktor dengan papan relai. Jadi sekarang, ketika Anda mengoperasikan perangkat, relai mengaktifkan koil kontaktor dan dengan demikian pompa atau geyser mulai/berhenti. Sebelum membeli kontaktor, pastikan peringkat koil dan peringkat kontaktornya. Kontaktor tersedia dalam banyak variasi. Jadi verifikasi dengan peringkat pompa air Anda. Disarankan untuk membeli kontaktor dengan rating yang sedikit lebih tinggi daripada rating pompa air Anda.

Bagaimana cara menyebarkan solusi ini ke Raspberry Pi 2?

Anda dapat merujuk link ini untuk memahami proses penerapan.

Bagaimana cara mendaftarkan aplikasi ini sebagai aplikasi startup?

Banyak penghobi ingin aplikasi mereka dimulai tepat setelah Raspberry Pi 2 boot. Untuk melakukannya, baca artikel saya: Windows 10 IoT Core :Mengatur Aplikasi Startup

Masalah Umum

Boot Arduino

Saat Arduino boot, pin D13 berkedip. Sebaiknya jangan sambungkan pin relai apa pun pada D13 karena saat Arduino melakukan boot atau reboot, D13 akan berkedip sekali dan jika ada perangkat yang terhubung dengan Relai (dikontrol melalui D13) juga akan berkedip.

Solusi: Ada dua opsi:yang pertama, jangan langsung terhubung dengan D13. Yang kedua agak rumit. Anda dapat menulis ulang firmware OptiBoot Aruino yang tidak menggunakan D13 saat melakukan booting dan membakar bootloader tersebut ke Arduino.

Masalah Jam

Raspberry Pi 2 tidak memiliki chip Real Time Clock on-board. Jadi tidak mungkin untuk mempertahankan waktu setelah kegagalan daya atau boot baru. Jadi RTC eksternal harus dilampirkan dan diprogram untuk mempertahankan waktu tanggal.

Solusi :NTP dapat digunakan tetapi membutuhkan koneksi Internet atau bahkan Arduino dapat menangani permintaan RTC dan Raspberry Pi untuk tanggal waktu saat boot. Juga baik untuk memasang RTC eksternal secara langsung dengan RPi 2.

Masalah Debug

Saya telah menghadapi banyak masalah saat mengembangkan Aplikasi Universal di C#. Aplikasi universal adalah superset dari WinRT dan dengan demikian banyak operasi asinkron yang perlu dilakukan. Jika terjadi kesalahan dalam operasi asinkron, pemecahannya menjadi sulit. Setiap kali ada pengecualian atau kesalahan terjadi, sebagian besar waktu saya menghadapi layar berikut:

Tidak ada titik rawan kesalahan, tidak ada pesan ramah pemrogram, tidak ada apa-apa. Saya harus menempatkan begitu banyak breakpoint untuk mengetahui penyebab kesalahan. Dalam debugging, terkadang aplikasi universal mati begitu saja tanpa pemberitahuan sebelumnya dan tiba-tiba jendela arloji saya menjadi tidak berguna. Penyebab perilaku dijelaskan di tautan ini.

Solusi :Tempatkan breakpoint sebelum garis rawan kesalahan yang diharapkan.

Singkatnya, pada saat ini (sementara artikel ini diterbitkan) aplikasi universal sangat bagus tetapi tidak memiliki fitur debugging seperti yang dimiliki aplikasi Windows konvensional.

Masa depan

Tidak ada batasan dalam hal fitur, ide baru atau bahkan untuk mengatasi keterbatasan yang ada. Tetapi tidak layak untuk menambahkan setiap fitur sekaligus. Pada rilis ini, artikel ini memungkinkan Anda memahami kekuatan sebenarnya dari Raspberry Pi 2 dan Windows IoT. Windows Universal XAML adalah kerangka kerja GUI yang bagus untuk Windows 10 IoT &Raspberry Pi 2 memiliki prosesor grafis yang bagus. Dengan menggabungkan keduanya, solusi GUI yang tampak luar biasa dapat dibuat. Selain itu, Raspberry Pi 2 memiliki CPU quad-core 900MHz, yang cukup mengagumkan untuk solusi multi-utas (dalam UWP, Tugas). Ini adalah proyek dasar hingga menengah bagi mereka yang ingin mempelajari dasar-dasar sistem perangkat lunak dan tertanam (yaitu komunikasi bus I2C, cara mengoperasikan peralatan, desain protokol kustom, desain OOP untuk aplikasi dunia nyata dan wire-frame).

Di masa depan, kami dapat menambahkan kemampuan untuk berkomunikasi melalui perangkat jarak jauh menggunakan RadioFrequency atau InfraRed daripada bus I2C. Portal manajemen web menggunakan Azure dapat diintegrasikan untuk perangkat seluler. Selanjutnya otomatisasi nyata akan terintegrasi seperti operasi berbasis peristiwa, operasi berjangka waktu dengan chip RTC. Misalnya, nyalakan lampu halaman belakang pada pukul 19.00. dan matikan kembali pada pukul 10:00 malam; contoh yang baik untuk event based adalah menyalakan lampu taman ketika intensitas cahaya ambient menurun di bawah intensitas tertentu dan seterusnya. Jadi tidak ada batasan untuk platform Windows 10 IoT Core baru ini untuk Raspberry Pi 2.

Semoga Sukses &Aman.

Jangan ragu untuk meminta bantuan atau pertanyaan.

Kode

  • Sketsa Arduino
Sketsa ArduinoC/C++
/* Arduino Sketch v0.4 Sketsa ini ditulis untuk "Home Automation using Raspberry Pi 2 and Window 10 IoT" Lihat tautan ini:https://www.hackster.io/AnuragVasanwala/home-automation Sketsa ini diuji di Atmega328p saja. Sketsa ini mempersiapkan perangkat Arduino sebagai perangkat slave pada bus I2C yang dioperasikan oleh Raspberry Pi 2 yang menjalankan Windows 10 IoT Core. Tujuan:+ Secara berkala mengumpulkan data sensor (Fungsi:loop) + OnRecevive, mengumpulkan instruksi mode 3-byte dan melakukan operasi berdasarkan itu. (Fungsi:ReceiveData) + OnRequest, mengirim larik respons 14-byte berdasarkan mode yang dipilih oleh OnReceive. (Fungsi:SendData) Sketsa ini disediakan apa adanya tanpa GARANSI. Anda dapat menggunakannya untuk penggunaan pribadi maupun komersial. Saya tidak bertanggung jawab atas kehilangan data atau cedera yang disebabkan oleh sketsa ini.*/#include  #define _DEBUG_/* Alamat Slave I2C Arduino */#define SLAVE_ADDRESS 0x40/* PERNYATAAN PIN */int Pin_AmbientLight_LDR =A0;int Pin_PassiveIR =2;int Pin_Temperature =A1;/* Variabel Global */volatile short Value_AmbientLight_LDR, Value_Temperature;volatile bool Value_PassiveIR;/* Variabel Protokol */byte Mode, Pin, Nilai;byte Response[14];void setup() { // Inisialisasi pin pinMode(Pin_AmbientLight_LDR, INPUT); pinMode(Pin_PassiveIR, INPUT); pinMode(Pin_Temperature, INPUT); pinMode(0, OUTPUT); pinMode(1, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); pinMode(A2, OUTPUT); pinMode(A3, OUTPUT);#ifdef _DEBUG_ Serial.begin(9600);#endif // Inisialisasi I2C Slave pada alamat 'SLAVE_ADDRESS' Wire.begin(SLAVE_ADDRESS); Wire.onRequest(KirimData); Wire.onReceive(ReceiveData);}void loop(){ // Baca LDR // Arduino mendukung Pembacaan Analog 10-bit. // Jadi kita perlu mengubahnya menjadi 8-bit. Nilai_AmbientLight_LDR =analogRead(Pin_AmbientLight_LDR); Nilai_AmbientLight_LDR =peta(Nilai_AmbientLight_LDR, 0, 1023, 0, 255); // Baca nilai PassiveIR Value_PassiveIR =(digitalRead(Pin_PassiveIR) ==HIGH) ? benar salah; // Membaca Sensor Suhu dan Mengubah Tegangan menjadi Celcius Nilai_Temperature =(pendek)((float)(analogRead(Pin_Temperature) * 0.48828125)); // Tunggu 100 ms delay(100);}// Callback untuk I2C Received Datavoid ReceiveData(int byteCount){ // Baca byte pertama yaitu Protocol Mode Mode =Wire.read(); // Baca byte kedua yaitu Pin. Hanya Berlaku untuk Mode 2 Pin =Wire.read(); // Baca byte ketiga yang merupakan Nilai Pin. Hanya Berlaku untuk Mode 2 Nilai =Wire.read(); // Sinyal pin yang ditentukan jika Mode 2 diterima jika (Mode ==2) { digitalWrite(Pin, Value); }#ifdef _DEBUG_ Serial.print(Mode); Serial.print(""); Serial.print(Pin); Serial.print(""); Serial.println(Nilai);#endif}void SendData(){ switch (Mode) { case 0:// Mode:Baca Respon Sensor[0] =(byte)Value_AmbientLight_LDR; // Value_PassiveIR adalah boolean sehingga kita perlu mengubahnya menjadi byte Response[1] =(byte)((Value_PassiveIR ==true) ? 1 :0); // Response[2] byte adalah Byte tanda untuk Temperatur // 0 - -ve Temperatur // 1 - +ve Temperatur Respon[2] =(byte)((Value_Temperature <0) ? 0 :1); Serial.println(Nilai_Suhu); // -ve Suhu tidak dapat dikirim dalam byte. Ubah menjadi +ve setara Response[3] =(byte)((Value_Temperature <0) ? (Value_Temperature*(-1)) :Value_Temperature); merusak; kasus 1:// Mode:Baca Respons Status Perangkat[0] =(digitalRead(0) ==HIGH) ? 1:0; Respon[1] =(digitalRead(1) ==TINGGI) ? 1:0; Respon[2] =(digitalRead(3) ==TINGGI) ? 1:0; Respon[3] =(digitalRead(4) ==TINGGI) ? 1:0; Respon[4] =(digitalRead(5) ==TINGGI) ? 1:0; Respon[5] =(digitalRead(6) ==TINGGI) ? 1:0; Respon[6] =(digitalRead(7) ==TINGGI) ? 1:0; Respon[7] =(DigitalBaca(8) ==TINGGI) ? 1:0; Respon[8] =(digitalRead(9) ==TINGGI) ? 1:0; Respon[9] =(digitalRead(10) ==TINGGI) ? 1:0; Respon[10] =(digitalRead(11) ==TINGGI) ? 1:0; Respon[11] =(digitalRead(12) ==TINGGI) ? 1:0; Respon[12] =(digitalRead(A2) ==TINGGI) ? 1:0; Respon[13] =(digitalRead(A3) ==TINGGI) ? 1:0; merusak; case 2:// Mode:Atur Respons Status Perangkat[0] =(digitalRead(Pin) ==HIGH) ? 1:0; merusak; default:istirahat; } // Kirim kembali respons Wire.write(Response, 14);}
Perangkat Lunak Raspberry Pi 2 (Aplikasi Menuju Windows)
https://github.com/AnuragVasanwala/Home-Automation--RPi2-WinIoT-

Skema

Anda dapat menambahkan beberapa ruangan dengan melampirkan Arduino individu dengan alamat budak I2C unik di bus. Fritzing file berisi skema lengkap. Beranda%20Automation%20Schematic%20-%20Anurag%20S%20Vasanwala.fzz

Proses manufaktur

  1. Sensor Suhu Python dan Raspberry Pi
  2. 433MHz Smart Home Controller dengan Sensorflare dan RaspberryPi
  3. Suara– dan SMS–Sensor Cahaya yang Diaktifkan Menggunakan Raspberry Pi dan Twilio
  4. Pantau suhu rumah Anda menggunakan Raspberry Pi
  5. RASPBERRY PI HOME AUTOMATION
  6. Windows 10 IoT Core pada Raspberry Pi 2 – Data Adafruit Sensor
  7. Windows 10 IoT Core dan SHT15
  8. Windows 10 IoT Core untuk Raspberry Pi 3 Model B+
  9. DETEKSI MANUSIA ROBOT SONBI MENGGUNAKAN KINECT DAN RASPBERRY PI
  10. Otomasi dan IoT dalam Rantai Pasokan:apa selanjutnya?