Membangun Jaringan Sensor Nirkabel Hemat Biaya untuk Rumah Anda
Tutorial ini akan mengajarkan Anda cara membuat jaringan modul sensor nirkabel hemat biaya. Banyak modul nirkabel siap pakai terlalu mahal untuk digunakan dalam banyak unit sensor. Meskipun modul Wi-Fi dan Zigbee populer dan mudah digunakan, biayanya dapat membuat penggunaannya dalam sekelompok sensor tidak praktis. Namun, ada modul RF hemat biaya tanpa semua fitur mahal yang akan berfungsi dengan baik untuk tujuan ini. Platform Arduino dapat menggunakan modul radio rendah untuk berkomunikasi dengan mudah dan andal.
Setelah hardware dirangkai, Anda akan memanfaatkan platform Raspberry Pi untuk memposting data ke layanan Internet of Things Xively di mana Anda dapat melacak nilai seiring waktu dan memicu berdasarkan kondisi ambang.
Kumpulkan Komponen dan Alat
Proyek ini akan mencakup tiga bagian, dua unit transmiter dan satu unit penerima. Unit transmiter terdiri dari papan Arduino, sensor, dan transmiter RF. Unit penerima terdiri dari papan Arduino, penerima RF, konverter level logika, dan Raspberry Pi.
Terdapat berbagai macam papan Arduino 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 kompatibel yang sesuai dengan kebutuhan biaya dan kesederhanaan untuk proyek ini.
Dalam tutorial ini saya telah menggunakan serangkaian papan Arduino Nano yang pas di breadboard dan mudah diprogram, Namun, versi 5V dari Arduino pro mini atau Trinket juga akan berfungsi baik dan pada titik harga yang jauh lebih rendah. Namun ini memerlukan sedikit lebih banyak pengalaman untuk memprogram dan menggunakan. Pilih dengan bijak.
Penerima
- Raspberry Pi—Model B dengan supply daya, casing, dan kartu SD—Pastikan pin GPIO dapat diakses dengan casing yang Anda pilih
- Adaptor Wi-Fi kompatibel Pi
- Arduino
- Kabel jumper breadboard
- Kabel jumper male to female
- Konverter level logika
- Penerima RF 434 MHz
- Half breadboard
Transmiter (dua unit)
- 2 x Arduino
- 2 x Sensor suhu / kelembaban
- 2 x Transmiter RF 434 MHz
- 2 x Half breadboard
- 2 x DC barrel jack 2.1mm ramah breadboard
- 2 x Power adapter 9V dengan 2.1mm x 5
- Kabel jumper breadboard
Alat
- PC/Mac dengan Arduino programming IDE terinstal
- Kabel USB untuk memprogram papan Arduino
- Keyboard dan Mouse USB. Keduanya terpisah atau dengan hub sehingga keduanya dapat digunakan dengan satu port USB.
- Paket sumber yang terkait dengan tutorial ini di workstation pemrograman Anda
Rangkit Transmiter
Transmiter itu sendiri adalah rangkaian 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 transmiter RF. Diagram breadboard ditunjukkan di bawah ini.
Supply daya 9V akan terhubung ke konektor barrel membuat rail bawah 9V. Regulator daya di Arduino akan menghasilkan 5V yang aman untuk digunakan untuk radio dan sensor, rail daya atas dalam diagram.
Sensor datang 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 ulang datasheet untuk sensor dan modul RF untuk memastikan bahwa komponen diposisikan di breadboard dengan benar dan pin daya, ground, dan sinyal terhubung ke pin yang tepat. Diagram fritzing disertakan dalam paket sumber untuk lebih banyak detail.
Anten adalah bagian penting dari papan karena modul RF tidak memiliki anten bawaan. Saya menggunakan kabel jumper female to male 6 inci yang dimasukkan ke breadboard dan berfungsi cukup baik untuk menerima dari semua bagian rumah saya dan sedikit di luar. Seperti yang ditunjukkan dalam diagram, 6,5 inci adalah optimal untuk anten ini jika Anda memerlukan jangkauan tambahan.
Catatan tentang penggunaan RF. Ada hukum dan aturan yang berbeda tentang penggunaan frekuensi di berbagai negara. Pastikan Anda mematuhi aturan ini sebelum menyiar. Itu dikatakan, sinyal dari modul ini hampir cukup kuat untuk melewati luar rumah Anda. Dalam kondisi ideal, meskipun, modul ini dapat menyiar hingga 500 kaki.
Unduh Pustaka untuk Komponen
Transmiter menggunakan dua pustaka yang tidak dibundel dengan Arduino IDE. Unduh pustaka seperti yang dijelaskan di bawah ini dan ekstrak mereka ke direktori sketsa Anda di subdirektori bernama Libraries.
- Unduh paket sumber VirtualWire untuk tutorial ini dan unzip folder sketsa wirelesstransmitter ke folder sketsa Arduino Anda
- Di folder wirelesstransmitter buat folder bernama Libraries
- Unduh versi terbaru kode VirtualWire, 1.23 pada saat tulisan ini, dari halaman proyek
- Ekstrak folder VirtualWire ke folder wirelesstransmitter/Libraries/ sehingga Anda memiliki subfolder bernama VirtualWire
- Unduh pustaka sensor DHT dari halaman github proyeknya
- Ekstrak folder DHT ke folder Libraries juga. Anda sekarang harus memiliki dua folder pustaka yang diperlukan DHT dan VirtualWire di folder wirelesstransmitter/Libraries Anda.
Program Papan Arduino
Tutorial ini mengasumsikan Anda memiliki beberapa pengalaman dengan Arduino dan cara memprogramnya menggunakan Arduino IDE. Jika tidak, ada instruksi yang sangat baik di situs resmi Arduino.
- Buka sketsa wirelesstransmitter dari arsip sumber di Arduino IDE dan simpan salinan secara lokal
- Pastikan Arduino TIDAK terhubung ke daya melalui konektor barrel
- Hubungkan papan ke workstation pemrograman Anda dengan kabel USB yang sesuai
- Atur tipe papan ke papan Arduino yang Anda pilih di menu Tools > Board
- Atur port serial ke port yang terdeteksi saat Anda menghubungkan papan Arduino di menu Tools > Port
- Pastikan define MYID diatur ke 1 dan TRANSPIN dan DHTPIN diatur dengan benar ke pin yang terhubung ke modul transmiter RF dan sensor DHT masing-masing. Jika Anda membangun papan Anda sesuai dengan diagram di atas ini seharusnya semua sudah diatur. Lihat contoh kode di bawah ini.
- Pastikan UNIT diatur dengan benar untuk preferensi Fahrenheit atau Celsius.
| 12345 |
#define MYID 1 //the ID number of this board. Change this for each board you flash.
#define TRANSPIN 3 //what pin to transmit on
#define DHTPIN 4 // what pin the DHT is connected to
#define UNIT 0 // 0 for Fahrenheit and 1 for Celsius
|
Define MYID adalah ID numerik yang digunakan transmiter untuk mengidentifikasi dirinya sendiri secara unik. Karena Anda akan memiliki beberapa transmiter di lokasi yang berbeda, penting untuk memiliki ID unik untuk setiap satuan. Angka ini akan digunakan lagi saat Anda menyiapkan skrip penerima.
- Verifikasi kode dengan menekan Control-R untuk memastikan pustaka disertakan dan dikompilasi dengan benar.
- Unggah kode ke papan dengan menekan tombol Upload di toolbar.
- Buka jendela Serial Monitor dengan menekan Control-Shift-M
Jendela Serial Monitor mereset Arduino jadi Anda seharusnya melihat baris kode di layar yang terlihat seperti:
| 12 |
Humidity: 44.00 % Temperature: 60.80 *FSending Message: ID:1:TS:23143:TF:60.79:RH:44.00
|
Pesan terdiri dari pasangan Name:Value yang akan ditangani oleh penerima. Transmiter akan membaca dan menyiar sinyalnya pada interval acak yang panjang. Sensor tidak berubah banyak atau sering, jadi menyiar lebih sering dari sekali setiap menit tidak menambah nilai. Waktu tunggu acak adalah untuk memungkinkan beberapa sensor untuk coexist.
Bahkan jika ada penggandaan dan sinyal dari kedua transmiter hilang, interval acak akan memastikan bahwa siaran berikutnya mereka tidak akan tumpang tindih. Benih acak untuk interval ini diatur dari analogRead pada port analog yang tidak terpakai yang akan mengembalikan nilai acak untuk memastikan tidak ada dua transmiter yang pada pola yang sama.
Contoh kode yang menghasilkan output di atas diatur untuk menggunakan Fahrenheit. Anda dapat melihat identifier TF:60.79 dalam string pesan yang menunjukkan bahwa lab saya memang sedikit di bawah 61 derajat. Namun kelembaban relatif RH:44.00 adalah 44 persen yang nyaman. Seseorang mungkin menyimpulkan dari lingkungan sejuk dan lembap bahwa lab saya berada di bawah tanah saya. Seseorang mungkin benar.
Transmiter diatur untuk menunggu 2 hingga 5 menit antara siaran secara default. Jika Anda ingin mempercepat ini untuk tujuan debugging maka modifikasi nilai delay() di akhir sketsa untuk lebih seperti 5000 (ms). Sangat direkomendasikan untuk mengubah ini kembali dan mengunggah ulang kode ke transmiter Anda saat Anda siap untuk penggunaan penuh waktu.
- Bangun papan transmiter kedua
- Modifikasi sketsa transmiter sehingga define MYID diatur ke 2
- Unggah kode ke papan kedua
- Buka jendela Serial Monitor dengan menekan Control-Shift-M dan verifikasi bahwa output terlihat seperti papan transmiter pertama dengan pengecualian bahwa pesan yang disiar dimulai dengan ID:2
Bangun Papan Penerima
Papan penerima akan bertanggung jawab untuk menerima pesan siaran pada komponen penerima RF-nya dan mengirim pesan tersebut melalui kabel serial ke Raspberry Pi. Papan Arduino digunakan untuk menerima sinyal untuk beberapa alasan yang sangat penting. Kode VirtualWire menggunakan sifat real-time Arduino untuk mengelola modulasi dan demodulasi sinyal.
Ini berarti unit penerima perlu beroperasi pada frekuensi yang sama. Selain itu, sangat sedikit ruang untuk jitter pada prosesor penerima, yang cenderung dialami Raspberry Pi, karena sistem operasi non real-time yang preemptive. Membandingkan biaya Arduino Pro Mini plus modul penerima RF dengan itu dari modul Zigbee yang dapat berbicara langsung ke Raspberry Pi terungkap bahwa menggunakan Arduino eksternal masih cukup ekonomis.
Pada titik ini JANGAN mencabut kabel 5V dan ground dari Pi ke breadboard. Simpan kabel jumper dalam genggaman, tetapi Anda tidak ingin menyala Arduino dari port USB dan Raspberry Pi.
Catat bahwa konverter level logika dalam daftar materi di atas tidak sama persis dengan yang ada di perpustakaan Fritzing, tetapi pin-outnya terlabel dengan baik, hanya pada tempat yang berbeda. Pastikan bahwa kabel yang benar terhubung ke pin yang benar pada konverter level logika sebenarnya.
Komponen ini diperlukan untuk mengonversi sinyal serial 5V Arduino menjadi sinyal serial 3.3V Raspberry Pi dan tidak merusak Pi. Lihat gambar di bawah ini untuk bantuan tambahan.
Untuk lebih banyak detail: Membangun Jaringan Sensor Nirkabel di Rumah Anda