Membangun Jaringan Sensor Nirkabel di Rumah Anda
Tutorial ini akan mengajarkan Anda cara membuat jaringan modul sensor nirkabel yang hemat biaya. Banyak modul nirkabel yang sudah jadi bisa jadi terlalu mahal untuk digunakan di beberapa unit sensor. Meskipun modul Wi-Fi dan Zigbee populer dan mudah digunakan, biayanya dapat membuat penggunaannya dalam berbagai sensor menjadi tidak praktis. Namun demikian, ada modul RF berbiaya rendah tanpa semua fitur mahal yang akan berfungsi dengan baik untuk tujuan ini. Platform Arduino dapat menggunakan modul radio kelas bawah untuk berkomunikasi dengan mudah dan andal.
Setelah perangkat keras dirakit, Anda akan memanfaatkan platform Raspberry Pi untuk memposting data ke layanan Internet of Things Xively tempat Anda dapat melacak nilai dari waktu ke waktu dan memicu pada kondisi ambang batas.
Kumpulkan Komponen dan Alat
Proyek ini akan mencakup tiga bagian, dua unit pemancar dan satu unit penerima. Pemancar terdiri dari papan Arduino, sensor, dan pemancar RF. Unit penerima terdiri dari papan Arduino, penerima RF, konverter level logika, dan Raspberry Pi.
Ada berbagai macam papan Arduino yang kompatibel yang dapat digunakan untuk proyek ini. Persyaratan minimum untuk papan untuk proyek ini adalah dua pin GPIO digital dan satu pin analog. Pilih papan Arduino yang kompatibel yang sesuai dengan kebutuhan biaya dan kesederhanaan untuk proyek ini.
Dalam tutorial ini saya telah menggunakan satu set papan Arduino Nano yang cocok dengan papan tempat memotong roti dan mudah diprogram, Namun, versi 5V dari Arduino pro mini atau Trinket juga akan berfungsi dengan baik dan dengan harga yang jauh lebih rendah. Namun ini membutuhkan sedikit lebih banyak pengalaman untuk diprogram dan digunakan. Pilih dengan bijak.
Penerima
- Raspberry Pi—Model B dengan catu daya, casing, dan kartu SD—Pastikan pin GPIO dapat diakses dengan casing yang Anda pilih
- Adaptor Wi-Fi yang kompatibel dengan Pi
- Arduino
- Kabel jumper papan tempat memotong roti
- Kabel jumper pria ke wanita
- Konverter tingkat logika
- Penerima RF 434 MHz
- Setengah papan tempat memotong roti
Pemancar (dua unit)
- 2 x Arduino
- 2 x Sensor suhu / kelembaban
- Pemancar RF 2 x 434 MHz
- 2 x Setengah papan tempat memotong roti
- 2 x Jack barel DC 2,1 mm yang cocok untuk papan tempat memotong roti
- Adaptor daya 2 x 9V dengan 2,1 mm x 5
- Kabel jumper papan tempat memotong roti
Alat
- PC/Mac dengan IDE pemrograman Arduino terpasang
- Kabel USB untuk memprogram papan Arduino
- Keyboard dan Mouse USB. Baik digabungkan atau dengan hub sehingga keduanya dapat digunakan dengan satu port USB.
- Paket sumber yang terkait dengan tutorial ini di stasiun kerja pemrograman Anda
Merakit Pemancar
Pemancar itu sendiri adalah sirkuit yang relatif sederhana. Hanya satu pin yang digunakan untuk mengambil informasi dari sensor suhu dan kelembaban dan satu pin digunakan untuk mengirim data tersebut ke pemancar RF. Diagram papan tempat memotong roti ditunjukkan di bawah ini.
Catu daya 9V akan dipasang ke konektor barel yang membuat rel bawah 9V. Pengatur daya di Arduino akan menghasilkan 5V yang aman digunakan untuk radio dan sensor, rel daya teratas dari diagram.
Sensor dilengkapi dengan resistor 10k ohm yang menghubungkan pin data ke daya sebagai resistor pull-up sementara kabel lain menghubungkannya ke GPIO D3.
Hati-hati untuk mengikuti pengaturan di bawah ini dan pastikan Anda memeriksa kembali lembar data untuk sensor dan modul RF untuk memastikan bahwa komponen diposisikan di papan tempat memotong roti dengan benar dan pin daya, arde, dan sinyal terhubung ke pin yang tepat. Diagram fritzing disertakan dalam paket sumber untuk detail lebih lanjut.
Antena adalah bagian penting dari papan karena modul RF tidak memiliki antena bawaan. Saya menggunakan kabel jumper wanita ke pria 6 inci yang dicolokkan ke papan tempat memotong roti dan itu bekerja cukup baik untuk memungkinkan penerimaan dari semua bagian rumah saya dan sedikit di luar. Seperti disebutkan dalam diagram, 6,5 inci optimal untuk antena ini jika Anda membutuhkan jangkauan tambahan.
Catatan tentang penggunaan RF. Ada hukum dan aturan yang berbeda tentang penggunaan frekuensi di berbagai negara. Harap pastikan Anda mematuhi aturan ini sebelum menyiarkan. Karena itu, sinyal dari modul ini hampir tidak cukup kuat untuk melewati luar rumah Anda. Namun, dalam kondisi sempurna, modul ini dapat menyiarkan hingga 500 kaki.
Unduh Pustaka untuk Komponen
Pemancar menggunakan dua perpustakaan yang tidak dibundel dengan Arduino IDE. Unduh perpustakaan seperti yang dijelaskan di bawah dan buka kompresinya ke direktori sketsa Anda di subdirektori bernama Perpustakaan.
- Unduh paket sumber VirtualWire untuk tutorial ini dan unzip folder sketsa pemancar nirkabel ke dalam folder sketsa Arduino Anda
- Dalam folder wirelesstransmitter buat folder bernama Libraries
- Unduh kode VirtualWire versi terbaru, 1,23 pada saat tulisan ini dibuat, dari halaman proyek
- Ekstrak folder VirtualWire ke dalam folder wirelesstransmitter/Libraries/ sehingga Anda memiliki subfolder lain bernama VirtualWire
- Unduh pustaka sensor DHT dari halaman github proyeknya
- Ekstrak folder DHT ke dalam folder Libraries juga. Anda sekarang harus memiliki dua folder perpustakaan yang diperlukan DHT dan VirtualWire di folder pemancar nirkabel/Perpustakaan Anda.
Program Papan Arduino
Tutorial ini mengasumsikan Anda memiliki beberapa pengalaman dengan Arduino dan bagaimana memprogramnya menggunakan Arduino IDE. Jika tidak, ada petunjuk yang sangat bagus di situs resmi Arduino.
- Buka sketsa pemancar nirkabel dari arsip sumber di Arduino IDE dan simpan salinannya secara lokal
- Pastikan Arduino TIDAK terhubung ke daya melalui konektor barel
- Hubungkan board ke stasiun kerja pemrograman Anda dengan kabel USB yang sesuai
- Setel jenis papan ke papan Arduino yang Anda pilih di bawah Alat> menu Papan
- Setel port serial ke port yang terdeteksi saat Anda menghubungkan papan Arduino di bawah menu Tools> Port
- Pastikan bahwa definisi MYID diatur ke 1 dan TRANSPIN dan DHTPIN diatur dengan benar ke masing-masing pin yang terhubung ke modul pemancar RF dan sensor DHT. Jika Anda membuat papan sesuai diagram di atas, ini semua harus sudah diatur. Lihat contoh kode di bawah ini.
- Pastikan UNIT disetel dengan benar untuk Fahrenheit atau Celsius preferensi Anda.
12345 | #define MYID 1 //nomor ID forum ini. Ubah ini untuk setiap papan yang Anda flash. #define TRANSPIN 3 //pin mana yang akan dikirim #define DHTPIN 4 // pin apa yang terhubung dengan DHT #define UNIT 0 // 0 untuk Fahrenheit dan 1 untuk Celsius |
Definisi MYID adalah ID numerik yang digunakan pemancar untuk mengidentifikasi dirinya secara unik. Karena Anda akan memiliki beberapa pemancar di lokasi yang berbeda, penting untuk memiliki ID unik untuk masing-masing pemancar. Nomor ini akan digunakan lagi saat Anda menyiapkan skrip penerima.
- Verifikasi kode dengan menekan Control-R untuk memastikan pustaka disertakan dan dikompilasi dengan benar.
- Dorong kode ke papan dengan mengeklik tombol Unggah pada bilah alat.
- Buka jendela Serial Monitor dengan menekan Control-Shift-M
Jendela Serial Monitor mengatur ulang Arduino sehingga Anda akan melihat baris kode di layar yang terlihat seperti:
12 | Kelembaban:44,00 % Suhu:60,80 *F Mengirim Pesan:ID:1:TS:23143:TF:60.79:RH:44.00 |
Pesan terdiri dari pasangan Nama:Nilai yang akan ditangani oleh penerima. Pemancar akan membaca dan menyiarkan sinyalnya pada interval acak yang panjang. Sensor tidak terlalu banyak atau sering berubah, jadi menyiarkan lebih dari sekali setiap menit tidak menambah nilai. Waktu tunggu acak adalah untuk memungkinkan beberapa sensor hidup berdampingan.
Bahkan jika ada penggandaan dan sinyal dari kedua pemancar hilang, interval acak akan memastikan bahwa siaran berikutnya tidak akan tumpang tindih. Benih acak untuk interval ini disetel dari analogRead pada port analog yang tidak digunakan yang akan mengembalikan nilai acak untuk memastikan tidak ada dua pemancar yang memiliki pola yang sama.
Contoh kode yang menghasilkan output di atas diatur untuk menggunakan Fahrenheit. Anda dapat melihat pengidentifikasi TF:60.79 di string pesan yang menunjukkan bahwa lab saya memang hanya sedikit di bawah 61 derajat. Namun kelembaban relatif RH:44.00 adalah 44% yang nyaman. Orang mungkin menyimpulkan dari lingkungan lembab yang sejuk bahwa lab saya ada di ruang bawah tanah saya. Seseorang mungkin benar.
Pemancar diatur untuk menunggu 2 hingga 5 menit di antara siaran secara default. Jika Anda ingin mempercepat ini untuk keperluan debugging, maka ubah nilai delay() di akhir sketsa menjadi lebih seperti 5000 (ms). Sangat disarankan agar Anda mengubahnya kembali dan mengunggah ulang kode ke pemancar Anda saat Anda siap untuk penggunaan penuh waktu.
- Buat papan pemancar kedua
- Ubah sketsa pemancar sehingga definisi MYID disetel ke 2
- Unggah kode ke papan kedua
- Buka jendela Serial Monitor dengan menekan Control-Shift-M dan verifikasi bahwa output terlihat seperti papan pemancar pertama dengan pengecualian bahwa pesan yang dikirimkan dimulai dengan ID:2
Membuat Papan Penerima
Papan penerima akan bertanggung jawab untuk menerima pesan siaran pada komponen Penerima RF dan mengirim pesan itu melalui kabel serial ke Raspberry Pi. Papan Arduino digunakan untuk menerima sinyal untuk beberapa alasan yang sangat penting. Kode VirtualWire menggunakan sifat waktu nyata dari Arduino untuk mengelola modulasi dan demodulasi sinyal.
Ini berarti bahwa unit penerima harus beroperasi pada frekuensi yang sama. Selain itu, ada sedikit ruang untuk jitter pada prosesor penerima, yang rentan terhadap Raspberry Pi, karena sistem operasinya yang non-real-time preemptive. Membandingkan biaya Arduino Pro Mini plus modul penerima RF dengan modul Zigbee yang dapat berbicara langsung dengan Raspberry Pi mengungkapkan bahwa menggunakan Arduino eksternal masih cukup ekonomis.
Pada titik ini JANGAN pasang kabel 5V dan ground dari Pi ke papan tempat memotong roti. Jauhkan kabel jumper, tetapi Anda tidak ingin menyalakan Arduino dari port USB dan Raspberry Pi.
Perhatikan bahwa konverter level logika dalam daftar bahan di atas tidak persis sama dengan yang ada di perpustakaan Fritzing, tetapi pin out diberi label dengan baik, hanya di tempat yang berbeda. Harap pastikan bahwa kabel yang benar terhubung ke pin yang benar pada konverter level logika yang sebenarnya.
Komponen ini diperlukan agar sinyal serial Arduino 5V menjadi sinyal serial Raspberry Pi 3.3V dan tidak merusak Pi. Lihat gambar di bawah untuk bantuan tambahan.
Untuk detail selengkapnya:Membangun Jaringan Sensor Nirkabel di Rumah Anda