Daftar Isi:

Jaringan Sensor Nirkabel Berbiaya Rendah pada Pita 433MHz: 5 Langkah (dengan Gambar)
Jaringan Sensor Nirkabel Berbiaya Rendah pada Pita 433MHz: 5 Langkah (dengan Gambar)

Video: Jaringan Sensor Nirkabel Berbiaya Rendah pada Pita 433MHz: 5 Langkah (dengan Gambar)

Video: Jaringan Sensor Nirkabel Berbiaya Rendah pada Pita 433MHz: 5 Langkah (dengan Gambar)
Video: Cognitive Radio Networking In The Ism Band 2024, Juli
Anonim
Jaringan Sensor Nirkabel Berbiaya Rendah pada Pita 433MHz
Jaringan Sensor Nirkabel Berbiaya Rendah pada Pita 433MHz

Terima kasih banyak kepada Teresa Rajba karena telah memberikan saya persetujuannya untuk menggunakan data dari publikasi mereka dalam artikel ini

* Pada gambar di atas - lima unit pengirim sensor yang saya gunakan untuk pengujian

Apa itu jaringan sensor nirkabel?

Definisi sederhananya adalah: jaringan sensor nirkabel mengacu pada sekelompok perangkat elektronik yang didistribusikan di area tertentu untuk memantau dan merekam data lingkungan, yang ditransmisikan secara nirkabel ke lokasi pusat untuk diproses dan disimpan.

Saat ini Jaringan Sensor Nirkabel dapat digunakan dalam beberapa cara, di bawah ini adalah beberapa contohnya:

  • Wilayah pengawasan ekologi hutan, sungai, danau, laut dan samudera;
  • Kemungkinan untuk waspada jika terjadi serangan teroris, kimia, biologi, epidemi;
  • Sistem pemantauan untuk anak-anak, orang tua, pasien atau orang dengan kebutuhan khusus;
  • Sistem pengawasan di bidang pertanian dan rumah kaca;
  • Sistem pemantauan Prakiraan Cuaca;
  • Pengawasan lalu lintas kota, sekolah, tempat parkir;

Dan masih banyak lagi aplikasi lainnya.

Dalam tulisan ini saya ingin menunjukkan hasil percobaan dengan jaringan sensor nirkabel yang telah digunakan untuk memantau data suhu dan kelembaban, dengan variasi yang lambat dan relatif dapat diprediksi. Untuk percobaan kali ini saya memilih menggunakan sensor-sender yang saya buat sendiri dengan menggunakan modul yang terjangkau. Penerima juga DIY, komunikasinya searah (pada pita radio 433 MHz), artinya sensor hanya mengirimkan data dan lokasi pusat hanya menerima. Tidak ada komunikasi antara sensor dan dari penerima ke sensor.

Tetapi mengapa memilih untuk menggunakan beberapa pemancar dan hanya satu penerima? Jelas alasan pertama adalah "membuatnya sederhana". Semakin sederhana perakitannya, semakin kecil kemungkinannya untuk gagal, dan pasti jauh lebih mudah untuk memperbaiki dan mengganti komponen tunggal jika terjadi malfungsi. Konsumsi daya juga lebih rendah, baterai akan bertahan lebih lama (sensor hanya akan mengkonsumsi saat memantau dan menerima, sisa waktu perangkat akan berada dalam mode tidur nyenyak). Fakta bahwa itu sederhana membuat perangkat ini juga murah. Aspek lain yang perlu diingat adalah cakupan area. Mengapa? Jauh lebih mudah untuk membangun dan menggunakan penerima yang sensitif daripada memiliki penerima yang sensitif dan pemancar yang kuat baik pada sensor maupun modul pusat (ini diperlukan untuk komunikasi dua arah yang baik). Dengan penerima yang sensitif dan berkualitas baik, dimungkinkan untuk menerima data dari jarak jauh, tetapi memancarkan data untuk jarak yang sama membutuhkan daya emisi yang tinggi dan ini disertai dengan biaya tinggi, konsumsi listrik dan (jangan lupa) kemungkinan untuk melampaui daya pemancar maksimum yang sah pada pita 433 MHz. Dengan menggunakan receiver berkualitas menengah, murah tetapi dengan antena berkualitas tinggi (bahkan DIY) dan pemancar murah dengan antena berkualitas baik, kami dapat mencapai hasil yang sangat baik dengan biaya yang sangat murah dari jaringan sensor nirkabel yang ada.

Langkah 1: Pertimbangan Teoretis

Ide membangun jaringan sensor nirkabel untuk memantau suhu dan kelembaban udara dan tanah di berbagai area rumah kaca muncul di benak saya sejak lama, hampir 10 tahun. Saya ingin membangun jaringan 1-kawat dan menggunakan sensor suhu dan kelembaban 1-kawat. Sayangnya, 10 tahun yang lalu sensor kelembaban langka dan mahal (walaupun sensor suhu tersebar luas) dan karena menyebarkan kabel ke seluruh rumah kaca sepertinya bukan pilihan, saya menyerah pada ide itu dengan cepat.

Namun, sekarang situasinya telah berubah secara radikal. Kami dapat menemukan sensor (suhu dan kelembaban) yang murah dan berkualitas baik, dan kami juga memiliki akses ke pemancar dan penerima murah pada pita 433 MHz. Hanya ada satu masalah: jika kita memiliki lebih banyak sensor (katakanlah 20) bagaimana kita menyelesaikan tabrakan (harap diingat bahwa ini adalah komunikasi satu arah), artinya, tumpang tindih emisi 2 atau lebih sensor? Saat mencari solusi yang mungkin, saya menemukan makalah yang sangat menarik ini:

Sensor nirkabel menyatukan cast berdasarkan prosedur operasi acak - oleh RAJBA, T. dan RAJBA, S.

dan

Probabilitas tabrakan di Jaringan Sensor Nirkabel dengan pengiriman acak - oleh RAJBA S. dan RAJBA. T

Pada dasarnya, penulis menunjukkan kepada kita bahwa kemungkinan tabrakan dalam jaringan sensor nirkabel dapat dihitung jika paket dipancarkan pada titik waktu tertentu menurut distribusi poissonian (eksponensial).

Kutipan dari makalah di atas mencantumkan karakteristik jaringan yang dipelajari.

  • cukup banyak unit sensor-pengirim N;
  • unit pengirim sensor tetap sepenuhnya independen dan menyalakan atau mematikannya tidak berpengaruh pada operasi jaringan;
  • semua unit pengirim sensor (atau sebagiannya) dapat bergerak asalkan unit tersebut berada dalam jangkauan radio stasiun penerima;
  • parameter fisik yang berubah perlahan menjadi sasaran pengukuran yang berarti tidak perlu mengirimkan data terlalu sering (misalnya setiap beberapa menit atau beberapa lusin menit);
  • transmisi adalah jenis satu arah, yaitu dari unit sensor-pengirim sampai ke titik penerima pada interval waktu rata-rata T. Informasi ditransmisikan dalam protokol di tP waktu durasi;
  • setiap sensor yang dipilih mulai mentransmisikan secara acak pada waktu Poisson. PASTA (Kedatangan Poisson Lihat Rata-Rata Waktu) akan digunakan untuk membenarkan pengiriman probe pada zaman Poisson;
  • semua unit sensor-pengirim tetap independen secara acak dan mereka akan mengirimkan informasi pada saat yang dipilih secara acak waktu tP durasi dan waktu rata-rata T pengulangan;
  • jika satu atau lebih sensor mulai mentransmisikan sementara protokol tP durasi sedang ditransmisikan dari sensor lain, situasi seperti ini disebut tumbukan. Tabrakan membuat stasiun pangkalan pusat tidak mungkin menerima informasi dengan cara yang benar.

Ini sangat cocok dengan jaringan sensor yang ingin saya uji …

Hampir.

Saya tidak mengatakan bahwa saya benar-benar memahami matematika dalam makalah, tetapi berdasarkan data yang disajikan dan kesimpulan saya telah dapat memahami sedikit tentang apa itu. Satu-satunya hal adalah nilai yang digunakan dalam kertas membuat saya sedikit khawatir:). Ini adalah variabel tP - durasi transmisi data yang diasumsikan 3,2x10-5 S. Jadi waktu transmisi data yang dikumpulkan akan menjadi 3,2 kami! Ini tidak dapat dilakukan pada pita 433 MHz. Saya ingin menggunakan rcswitch atau radiohead untuk memprogram sensor pemancar. Mempelajari kode dari dua perpustakaan, saya sampai pada kesimpulan bahwa waktu transmisi terkecil adalah 20ms, jauh di atas nilai 3,2 us. Dengan pemancar 2,4 GHz, dimungkinkan untukP waktu sangat kecil … tapi itu cerita lain.

Jika kita menerapkan rumus yang diajukan oleh penulis makalah ini maka hasilnya adalah:

Data awal (contoh):

  • Jumlah sensor N=20;
  • Durasi transmisi data tP=20x10-3 s (0,020 detik)
  • Interval transmisi rata-rata T=180s

Rumusnya:

Peluang tumbukan pada interval T adalah

Gambar
Gambar

jika kita memperhitungkan data awal probabilitas tabrakan pada interval T adalah 0,043519

Nilai ini, yang menunjukkan kemungkinan terjadinya 4,35 tumbukan per 100 pengukuran, menurut pendapat saya, cukup baik. Probabilitas dapat meningkat jika kita meningkatkan waktu transmisi rata-rata, sehingga pada nilai 300 kita akan memiliki probabilitas 0,026332, yaitu 2,6 tabrakan per 100 pengukuran. Jika kami menganggap bahwa kami dapat mengharapkan kehilangan data paket selama operasi sistem (tergantung pada kondisi cuaca misalnya) maka jumlah ini sangat bagus.

Saya ingin melakukan simulasi jaringan jenis ini tetapi juga semacam asisten desain, jadi saya membuat program kecil di C, Anda dapat menemukan kode sumber di github (juga biner terkompilasi yang berjalan di baris perintah windows - melepaskan).

Memasukan data:

  • sensor_number - jumlah sensor pada jaringan;
  • pengukuran_angka - jumlah pengukuran untuk disimulasikan;
  • average_transmission_interval -waktu rata-rata antara transmisi data yang berurutan;
  • transmission_time - durasi efektif transmisi data.

Keluaran:

  • waktu pengukuran maksimum yang dihitung;
  • daftar tabrakan antara dua sensor;
  • jumlah tabrakan;
  • probabilitas teoritis dari tabrakan.

Hasilnya cukup menarik:)

Cukup dengan teorinya, saya tidak ingin lebih menekankan pada bagian teoretis, artikel dan kode sumbernya cukup fasih, jadi saya lebih baik pergi ke implementasi jaringan sensor nirkabel yang praktis dan efektif dan ke hasil pengujian.

Langkah 2: Implementasi Praktis - Perangkat Keras

Untuk sensor pemancar kita akan membutuhkan komponen berikut:

  • Mikrokontroler ATtiny85 1,11 $;
  • Soket sirkuit terpadu 8DIP 0,046 $;
  • Sensor suhu/kelembaban DHT11 0.74 $;
  • Modul pemancar H34A 433MHz 0,73 $;
  • Tempat baterai 4xAA dengan sakelar 1$;

Total 3,63 $;

Penerima yang digunakan untuk pengujian adalah Arduino UNO (hanya untuk pengujian) dan modul penerima H3V4F (0,66$) dengan antena busur murah (0,32$).

Skema sensor-pengirim

Gambar
Gambar

Unit sensor pemancar ditenagai dengan baterai 3xAA, 1,5v (di kompartemen keempat dudukan baterai terdapat rakitan elektronik). Seperti yang Anda lihat, catu daya pemancar dan sensor suhu-kelembaban dihubungkan ke pin PB0 mikrokontroler (pemancar dan sensor diberi daya saat pin disetel ke TINGGI). Jadi ketika mikrokontroler dalam mode deep-sleep, dapat mencapai konsumsi arus 4,7uA. Mengingat bahwa waktu bangun sensor pemancar adalah sekitar 3 detik (pengukuran, transmisi, dll.) dan waktu rata-rata antara transmisi 180 detik (seperti contoh di bab sebelumnya), baterai harus menahan cukup banyak. Dengan beberapa baterai alkaline berkualitas baik (yaitu 2000 mAh), otonomi bisa lebih dari 10 bulan seperti yang dihitung di omnicalculator.com (di mana total konsumsi arus adalah: sensor - 1,5mA, modul pemancar - 3,5mA dan mikrokontroler ATtiny85 - 5mA, total 10mA).

Pada foto di bawah ini Anda dapat melihat perakitan sensor-pengirim yang hampir selesai.

Gambar
Gambar

Di bawah ini adalah foto unit penerima uji.

Gambar
Gambar

Langkah 3: Implementasi Praktis - Perangkat Lunak

Perangkat lunak yang diunggah berjalan ke mikrokontroler attiny85, komponen utama unit pengirim sensor, memiliki tujuan untuk membaca data yang diberikan oleh sensor, mengubahnya untuk ditransmisikan melalui radio, dan mengirimkannya dalam kerangka waktu Poisson (distribusi eksponensial atau PASTA - Kedatangan Poisson Lihat Rata-Rata Waktu). Selain itu, dengan menggunakan fungsi sederhana, ia memantau status baterai dan memberikan peringatan jika tegangan yang diperlukan untuk sensor tidak lagi tersedia. Kode sumber tersedia di github. Kode untuk penerima tes sangat sederhana saya posting di bawah ini.

//modifikasi pustaka rcswitch dari https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// kode ini adalah versi modifikasi dari contoh pustaka rcswitch asli #include RCSwitch mySwitch = RCSwitch(); data panjang yang tidak ditandatangani = 0; void setup() { Serial.begin(9600); mySwitch.enableReceive(0); // Penerima pada interupsi 0 => yaitu pin #2 } void loop() { if (mySwitch.available()) { unsigned long data = mySwitch.getReceivedValue(); //output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(), mySwitch.getReceivedProtocol()); int kelembaban = bitExtracted(data, 7, 1); //kurang signifikan 7bit dari posisi 1 - bit pertama paling kanan suhu int = bitExtracted(data, 7, 8); // 7 bit berikutnya dari posisi 8 ke kanan dan seterusnya int v_min = bitExtracted(data, 1, 15); int paket_id = bitExtracted(data, 3, 16); //3bits - 8 paket id dari 0 hingga 7 int sensor_id = bitExtracted(data, 6, 19); //6bit untuk 64 ID sensor - total 24 bit Serial.print(sensor_id);Serial.print(", ");Serial.print(packet_id);Serial.print(", ");Serial.print(temperature); Serial.print(", ");Serial.print(kelembaban); Serial.println(); mySwitch.resetAvailable(); } } //kode dari https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted(angka panjang yang tidak ditandatangani, int k, int p) { return (((1 (p - 1))); }

Saya sudah mencoba memasukkan komentar sebanyak mungkin untuk membuat semuanya lebih mudah dipahami.

Untuk debugging saya menggunakan perpustakaan softwareserial dan papan pengembangan attiny85 dengan programmer USBasp (lihat juga instruksi saya tentang ini). Tautan serial telah dibuat dengan konverter Serial ke TTL (dengan chip PL2303) yang terhubung ke pin bengkok (3 dan 4) papan pengembangan (lihat gambar di bawah). Semua ini merupakan bantuan yang sangat berharga untuk menyelesaikan kode.

Gambar
Gambar

Langkah 4: Hasil Tes

Hasil tes
Hasil tes
Hasil tes
Hasil tes

Saya telah membuat 5 unit pengirim sensor yang mengumpulkan dan mengirim nilai yang diukur oleh sensor DHT11. Saya merekam dan menyimpan pengukuran, dengan bantuan penerima tes dan program emulasi terminal (foxterm), selama tiga hari. Saya memilih interval 48 jam untuk belajar. Saya tidak tertarik pada nilai yang diukur (sensor 2, misalnya, menunjukkan nilai yang salah) tetapi pada jumlah tabrakan. Selain itu, sensor ditempatkan sangat dekat (pada 4-5 m) oleh penerima untuk menghilangkan penyebab lain hilangnya paket. Hasil tes telah disimpan dalam file cvs dan diunggah (lihat file di bawah). Saya juga mengunggah file excel berdasarkan file csv ini. Saya mengambil beberapa tangkapan layar untuk menunjukkan kepada Anda bagaimana tampilan tabrakan (tentu saja dalam pengujian saya), saya menambahkan komentar juga ke setiap tangkapan layar.

Anda mungkin bertanya-tanya mengapa saya tidak menggunakan layanan pemuat data misalnya ThingSpeak. Faktanya adalah saya memiliki banyak catatan, banyak sensor dan data yang sering datang pada interval yang tidak teratur, dan layanan IoT online hanya mengizinkan data pada sejumlah sensor tertentu dan hanya pada interval yang cukup besar. Saya berpikir di masa depan untuk menginstal dan mengkonfigurasi server IoT saya sendiri.

Pada akhirnya, 4598 pengukuran pada 5 unit pengirim sensor (sekitar 920/sensor) menghasilkan total 5 tabrakan selama 48 jam (0,5435 tabrakan/100 pengukuran). Melakukan beberapa matematika (menggunakan program wsn_test dengan data awal: 5 sensor, waktu rata-rata 180 detik, waktu transmisi 110 ms) probabilitas tabrakan akan menjadi 0,015185 (1,52 tabrakan/100 pengukuran). Hasil prakteknya lebih bagus dari hasil teorinya kan?:)

Gambar
Gambar

Bagaimanapun juga ada 18 paket yang hilang dalam periode ini, jadi tabrakan tidak terlalu menjadi masalah dalam hal ini. Tentu saja tes harus dilakukan dalam jangka waktu yang lebih lama untuk mendapatkan hasil yang paling konklusif, tetapi menurut saya itu berhasil bahkan dalam kondisi ini dan sepenuhnya menegaskan asumsi teoretis.

Langkah 5: Pikiran Terakhir

Aplikasi langsung

Di rumah kaca besar, beberapa tanaman ditanam. Jika pengairan dilakukan secara manual tanpa monitoring iklim, tanpa otomatisasi apapun, tanpa pencatatan data ada resiko over atau under irigasi dan juga konsumsi air tinggi, tidak ada bukti optimalisasi konsumsi air, ada resiko tanaman di umum. Untuk menghindarinya, kita bisa menggunakan jaringan sensor nirkabel:)

Sensor suhu, sensor kelembaban udara, sensor kelembaban tanah dapat ditempatkan di sekitar rumah kaca dan dengan bantuan data yang ditransmisikan, beberapa tindakan dapat dilakukan: katup listrik start-stop untuk membiarkan air mengalir di mana diperlukan, kipas listrik start-stop untuk mengurangi suhu di berbagai area, nyalakan pemanas sesuai kebutuhan dan semua data dapat diarsipkan untuk analisis di masa mendatang. Selain itu, sistem dapat menyediakan antarmuka web yang dapat diakses di mana-mana dan alarm email atau SMS jika terjadi kondisi tidak normal.

Apa berikutnya?

  • Pengujian dengan jumlah sensor yang lebih banyak;
  • Pengujian waktu nyata dengan sensor jarak jauh di area jangkauan;
  • Menginstal dan mengonfigurasi server IoT lokal (pada Raspberry Pi misalnya);
  • Tes juga dengan pemancar (transceiver) -sensor pada 2.4Ghz.

jadi… bersambung…:)

PENOLAKAN: Penggunaan pita frekuensi 433MHz di wilayah Anda mungkin tunduk pada peraturan frekuensi radio. Harap periksa legalitas Anda sebelum mencoba proyek ini

Kontes Sensor
Kontes Sensor
Kontes Sensor
Kontes Sensor

Runner Up dalam Kontes Sensor

Direkomendasikan: