Isi kandungan:

Rangkaian Sensor Tanpa Wayar Kos Rendah pada Jalur 433MHz: 5 Langkah (dengan Gambar)
Rangkaian Sensor Tanpa Wayar Kos Rendah pada Jalur 433MHz: 5 Langkah (dengan Gambar)

Video: Rangkaian Sensor Tanpa Wayar Kos Rendah pada Jalur 433MHz: 5 Langkah (dengan Gambar)

Video: Rangkaian Sensor Tanpa Wayar Kos Rendah pada Jalur 433MHz: 5 Langkah (dengan Gambar)
Video: Review Remote Control Wireless Relay Switch 1 Ch RF 433 MHZ 2024, November
Anonim
Rangkaian Sensor Tanpa Wayar Kos Rendah pada Jalur 433MHz
Rangkaian Sensor Tanpa Wayar Kos Rendah pada Jalur 433MHz

Terima kasih banyak kepada Teresa Rajba kerana telah memberikan saya penerimaannya untuk menggunakan data dari penerbitan mereka dalam artikel ini

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

Apakah rangkaian sensor tanpa wayar?

Definisi ringkas ialah: rangkaian sensor tanpa wayar merujuk kepada sekumpulan alat elektronik yang diedarkan di kawasan tertentu untuk memantau dan merekam data persekitaran, yang dihantar tanpa wayar ke lokasi pusat untuk diproses dan disimpan.

Rangkaian Sensor Tanpa Wayar kini boleh digunakan dalam beberapa cara, berikut adalah beberapa contoh:

  • Kawasan pengawasan ekologi terhadap hutan, sungai, tasik, laut dan lautan;
  • Kemungkinan untuk berjaga-jaga sekiranya berlaku serangan pengganas, kimia, biologi, wabak;
  • Sistem pemantauan untuk kanak-kanak, orang tua, pesakit atau orang berkeperluan khas;
  • Sistem pengawasan dalam pertanian dan rumah hijau;
  • Sistem pemantauan Ramalan Cuaca;
  • Pengawasan lalu lintas bandar, sekolah, tempat letak kereta;

Dan banyak, banyak aplikasi lain.

Dalam makalah ini saya ingin menunjukkan hasil eksperimen dengan rangkaian sensor tanpa wayar yang telah digunakan untuk memantau data suhu dan kelembapan, dengan variasi yang perlahan dan agak dapat diramalkan. Untuk percubaan ini, saya memilih untuk menggunakan sensor-penghantar yang saya bina sendiri menggunakan modul yang berpatutan. Penerima juga DIY, komunikasi tidak arah (pada jalur radio 433 MHz), yang bermaksud bahawa sensor hanya menghantar 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 sekali alasan pertama adalah "mempermudah". Yang lebih mudah ialah pemasangan, semakin kecil kemungkinannya gagal, dan pastinya lebih mudah untuk memperbaiki dan mengganti komponen tunggal sekiranya berlaku kerosakan. Penggunaan tenaga juga lebih rendah, bateri akan bertahan lebih lama (sensor hanya akan habis semasa pemantauan dan penerimaan, selebihnya masa peranti akan berada dalam mod tidur nyenyak). Fakta bahawa ia mudah menjadikan peranti ini juga murah. Aspek lain yang perlu diingat adalah kawasan liputan. Kenapa? Jauh lebih mudah untuk membina dan menggunakan penerima sensitif daripada mempunyai penerima sensitif dan pemancar yang kuat di kedua-dua sensor dan modul pusat (ini diperlukan untuk komunikasi dua arah yang baik). Dengan penerima yang sensitif dan berkualiti, adalah mungkin untuk menerima data dari jarak jauh, tetapi memancarkan data untuk jarak yang sama memerlukan daya pelepasan yang tinggi dan ini dilengkapi dengan kos tinggi, penggunaan elektrik dan (jangan lupa) kemungkinan untuk mengatasi kuasa pemancar maksimum yang sah pada jalur 433 MHz. Dengan menggunakan penerima berkualiti sederhana, murah tetapi dengan antena berkualiti tinggi (malah DIY) dan pemancar murah dengan antena berkualiti baik, kita dapat mencapai hasil yang sangat baik dengan sebahagian kecil dari kos rangkaian sensor tanpa wayar yang ada.

Langkah 1: Pertimbangan Teoritis

Idea untuk membina rangkaian sensor tanpa wayar untuk memantau suhu dan kelembapan udara dan tanah di pelbagai kawasan rumah hijau muncul dalam fikiran saya sejak dulu, hampir 10 tahun. Saya mahu membina rangkaian 1 wayar dan menggunakan sensor suhu dan kelembapan 1 wayar. Malangnya, 10 tahun yang lalu sensor kelembapan jarang dan mahal (walaupun sensor suhu tersebar luas) dan kerana penyebaran wayar di seluruh rumah hijau nampaknya tidak menjadi pilihan, saya melepaskan idea itu dengan cepat.

Namun, sekarang keadaan telah berubah secara radikal. Kami dapat mencari sensor berkualiti tinggi dan berkualiti (suhu dan kelembapan), dan kami juga mempunyai akses ke pemancar dan penerima murah pada jalur 433 MHz. Hanya ada satu masalah: jika kita mempunyai lebih banyak sensor (katakanlah 20) bagaimana kita menyelesaikan perlanggaran (harap diingat bahawa ini adalah komunikasi sehala), yang bermaksud, tumpang tindih pelepasan 2 atau lebih sensor? Semasa mencari jalan keluar yang mungkin, saya menemui kertas kerja yang sangat menarik ini:

Sensor tanpa wayar menyatukan cast berdasarkan prosedur operasi rawak - oleh RAJBA, T. dan RAJBA, S.

dan

Kebarangkalian perlanggaran dalam Rangkaian Sensor Tanpa Wayar dengan penghantaran rawak - oleh RAJBA S. dan RAJBA. T

Pada dasarnya, penulis menunjukkan kepada kita bahawa kebarangkalian perlanggaran dalam rangkaian sensor tanpa wayar dapat dikira jika paket dipancarkan pada titik waktu tertentu mengikut taburan poissonian (eksponensial).

Petikan dari kertas di atas menyenaraikan ciri-ciri rangkaian yang dikaji.

  • sebilangan besar unit sensor-penghantar N;
  • unit pengirim sensor kekal bebas dan menghidupkan atau mematikannya tidak mempengaruhi operasi rangkaian;
  • semua unit pengirim sensor (atau sebahagian daripadanya) boleh bergerak dengan syarat ia berada dalam jarak radio stesen penerima;
  • parameter fizikal yang perlahan-lahan berubah menjadi pengukuran yang bermaksud tidak perlu menghantar data dengan kerap (mis. setiap beberapa minit atau beberapa puluhan minit);
  • transmisi adalah jenis sehala, iaitu dari unit pengirim sensor hingga titik penerimaan pada selang waktu rata-rata T. Maklumat dihantar dalam protokol di thlm tempoh masa;
  • mana-mana sensor yang dipilih mula menghantar secara rawak pada waktu Poisson. PASTA (Poisson Arrivals See Purata Waktu) akan digunakan untuk membenarkan pengiriman siasatan di zaman Poisson;
  • semua unit sensor-pengirim tetap bebas secara rawak dan mereka akan menghantar maklumat pada masa yang dipilih secara rawak thlm jangka masa dan T purata masa pengulangan;
  • jika satu atau lebih sensor mula menghantar sementara protokol thlm jangka masa sedang dihantar dari sensor lain, keadaan seperti itu disebut perlanggaran. Perlanggaran menjadikan stesen pangkalan pusat tidak dapat menerima maklumat dengan cara yang betul.

Ia sangat sesuai dengan rangkaian sensor yang ingin saya uji …

Hampir.

Saya tidak mengatakan bahawa saya benar-benar memahami matematik dalam makalah, tetapi berdasarkan data yang dikemukakan dan berdasarkan kesimpulan saya dapat memahami sedikit tentang apa itu. Satu-satunya perkara adalah bahawa nilai yang digunakan dalam kertas membuat saya sedikit bimbang:). Ia adalah pemboleh ubah thlm - jangka masa penghantaran data yang dianggap 3.2x10-5 s. Jadi masa penghantaran data yang dikumpulkan adalah 3.2 kita! Ini tidak dapat dilakukan pada jalur 433 MHz. Saya mahu menggunakan rcswitch atau radiohead untuk memprogramkan sensor pemancar. Dengan mempelajari kod kedua perpustakaan, saya sampai pada kesimpulan bahawa masa penghantaran terkecil adalah 20ms, jauh di atas nilai 3.2 kita. Dengan pemancar 2.4 GHz, mungkin thlm masa sangat kecil … tapi itu cerita lain.

Sekiranya kita menggunakan formula yang dicadangkan oleh penulis makalah ini hasilnya akan:

Data awal (contoh):

  • Bilangan sensor N = 20;
  • Tempoh penghantaran data thlm= 20x10-3 s (0.020s)
  • Selang penghantaran purata T = 180s

Rumusannya:

Kebarangkalian perlanggaran pada selang T adalah

Imej
Imej

jika kita mengambil kira data awal kebarangkalian perlanggaran pada selang T adalah 0.043519

Nilai ini, yang menunjukkan kemungkinan berlakunya 4.35 perlanggaran per 100 ukuran, pada pendapat saya, cukup baik. Kebarangkalian dapat meningkat jika kita meningkatkan waktu transmisi rata-rata, jadi pada nilai 300-an kita akan mempunyai kebarangkalian 0.026332, iaitu 2.6 perlanggaran per 100 ukuran. Sekiranya kita menganggap bahawa kita boleh menjangkakan kehilangan data paket semasa operasi sistem (bergantung pada keadaan cuaca misalnya) maka jumlah ini sangat baik.

Saya ingin melakukan simulasi rangkaian jenis ini tetapi juga sejenis pembantu reka bentuk, jadi saya membuat program kecil di C, anda dapat mencari kod sumber di github (juga binari terkompilasi yang berjalan di baris perintah windows - pelepasan).

Data input:

  • sensor_number - bilangan sensor di rangkaian;
  • pengukuran_nombor - bilangan pengukuran untuk disimulasikan;
  • purata_transmisi_interval - masa purata antara penghantaran data berturut-turut;
  • transmisi_waktu - jangka masa penghantaran data yang berkesan.

Pengeluaran:

  • masa pengukuran maksimum yang dikira;
  • senarai perlanggaran antara dua sensor;
  • bilangan perlanggaran;
  • kebarangkalian teori perlanggaran.

Hasilnya cukup menarik:)

Cukup dengan teori, saya tidak mahu lebih menekankan bahagian teori, artikel dan kod sumbernya cukup fasih, jadi saya lebih baik pergi ke pelaksanaan praktikal dan rangkaian rangkaian sensor tanpa wayar dan hasil ujian.

Langkah 2: Pelaksanaan Praktikal - Perkakasan

Untuk sensor pemancar, kami memerlukan komponen berikut:

  • Mikrokontroler ATtiny85 1.11 $;
  • Soket litar bersepadu 8DIP 0.046 $;
  • Sensor suhu / kelembapan DHT11 0.74 $;
  • Modul pemancar 433MHz H34A 0.73 $;
  • Pemegang bateri 4xAA dengan suis 1 $;

Jumlah 3.63 $;

Penerima yang digunakan untuk ujian adalah Arduino UNO (hanya untuk ujian) dan modul penerima H3V4F (0.66 $) dengan antena busur yang murah ($ 0.32).

Skema penghantar sensor

Imej
Imej

Unit sensor pemancar dikuasakan dengan bateri 3xAA, 1.5v (di petak keempat pemegang bateri terdapat unit elektronik). Seperti yang anda lihat, bekalan kuasa pemancar dan sensor suhu-kelembapan disambungkan ke pin PB0 mikrokontroler (pemancar dan sensor dihidupkan ketika pin diatur ke TINGGI). Oleh itu, apabila mikrokontroler berada dalam mod tidur nyenyak, ia dapat mencapai penggunaan semasa 4.7uA. Memandangkan bahawa waktu bangun dari sensor pemancar adalah kira-kira 3 detik (pengukuran, penghantaran dll) dan masa rata-rata antara transmisi 180-an (seperti contoh dalam bab sebelumnya), bateri harus tahan cukup banyak. Dengan sebilangan bateri alkali berkualiti baik (iaitu 2000 mAh), autonomi boleh melebihi 10 bulan seperti yang dihitung di omnicalculator.com (di mana jumlah penggunaan semasa adalah: sensor - 1.5mA, modul pemancar - 3.5mA dan mikrokontroler ATtiny85 - 5mA, jumlah 10mA).

Dalam foto di bawah ini anda dapat melihat pemasangan pengirim sensor yang hampir selesai.

Imej
Imej

Berikut adalah gambar unit penerima ujian.

Imej
Imej

Langkah 3: Pelaksanaan Praktikal - Perisian

Perisian yang dimuatkan berjalan ke mikrokontroler attiny85, komponen utama unit sensor-pengirim, bertujuan untuk membaca data yang diberikan oleh sensor, mengubahnya untuk dikirim melalui radio, dan mengirimkannya dalam jangka waktu Poisson (pengedaran eksponensial atau PASTA - Ketibaan Poisson Lihat Purata Masa). Juga, dengan menggunakan fungsi sederhana, ia memantau status bateri dan memberi amaran jika voltan yang diperlukan untuk sensor tidak lagi diberikan. Kod sumber boleh didapati di github. Kod untuk penerima ujian sangat mudah, saya kirimkan di bawah.

// pustaka rcswitch yang diubah suai dari https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// kodnya adalah versi yang diubah suai dari contoh perpustakaan rcswitch yang asli #masuk RCSwitch mySwitch = RCSwitch (); data panjang yang tidak ditandatangani = 0; batal persediaan () {Serial.begin (9600); mySwitch.enableReceive (0); // Penerima pada gangguan 0 => iaitu pin # 2} gelung kosong () {if (mySwitch.available ()) {data panjang yang tidak ditandatangani = mySwitch.getReceivedValue (); // output (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); kelembapan int = bitExtracted (data, 7, 1); // kurang 7bits dari kedudukan 1 - suhu int bit paling kanan = bitExtracted (data, 7, 8); // seterusnya 7 bit dari kedudukan 8 ke kanan dan seterusnya int v_min = bitExtracted (data, 1, 15); int packet_id = bitExtracted (data, 3, 16); // 3bits - 8 ID paket dari 0 hingga 7 int sensor_id = bitExtracted (data, 6, 19); // 6bit untuk 64 ID sensor - jumlah 24 bit Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (suhu); Serial.print (","); Serial.print (kelembapan); Bersiri.println (); mySwitch.resetAvailable (); }} // kod dari https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (nombor panjang yang tidak ditandatangani, int k, int p) {return (((1 (p - 1)));}

Saya telah mencuba memasukkan sebanyak mungkin komen untuk menjadikan sesuatu lebih mudah difahami.

Untuk penyahpepijatan, saya menggunakan perpustakaan perisian lunak dan papan pengembangan attiny85 dengan pengaturcara USBasp (lihat juga arahan saya mengenai perkara ini). Pautan bersiri telah dibuat dengan penukar Serial ke TTL (dengan cip PL2303) yang disambungkan ke pin bengkok (3 dan 4) papan pengembangan (lihat gambar di bawah). Semua ini telah banyak membantu untuk menyelesaikan kod tersebut.

Imej
Imej

Langkah 4: Keputusan Ujian

Keputusan ujian
Keputusan ujian
Keputusan ujian
Keputusan ujian

Saya telah membuat 5 unit pengirim sensor yang mengumpulkan dan menghantar nilai yang diukur oleh sensor DHT11. Saya merakam dan menyimpan pengukuran, dengan bantuan penerima ujian dan program emulasi terminal (foxterm), selama tiga hari. Saya memilih selang 48 jam untuk belajar. Saya tidak semestinya berminat dengan nilai yang diukur (sensor 2, misalnya, ini menunjukkan nilai yang salah) tetapi jumlah perlanggaran. Sebagai tambahan, sensor diletakkan sangat dekat (pada jarak 4-5 m) oleh penerima untuk menghilangkan penyebab kehilangan paket yang lain. Hasil ujian telah disimpan dalam fail cvs dan dimuat naik (lihat fail di bawah). Saya juga memuat naik fail excel berdasarkan fail csv ini. Saya mengambil beberapa tangkapan skrin untuk menunjukkan kepada anda bagaimana perlanggaran (tentu saja dalam ujian saya), saya juga menambah komen pada setiap tangkapan skrin.

Anda mungkin tertanya-tanya mengapa saya tidak menggunakan perkhidmatan pemuat data misalnya ThingSpeak. Faktanya ialah saya mempunyai banyak rekod, banyak sensor dan data sering datang pada selang waktu yang tidak tetap, dan perkhidmatan IoT dalam talian hanya membenarkan data pada sebilangan sensor dan hanya pada selang waktu yang cukup besar. Saya berfikir pada masa akan datang untuk memasang dan mengkonfigurasi pelayan IoT saya sendiri.

Pada akhirnya, 4598 pengukuran pada 5 unit pengirim sensor (aproks. 920 / sensor) menghasilkan total 5 perlanggaran untuk jangka waktu 48 jam (0,5435 perlanggaran / 100 pengukuran). Melakukan beberapa matematik (menggunakan program wsn_test dengan data awal: 5 sensor, waktu rata-rata 180s, masa penghantaran 110 ms) kebarangkalian perlanggaran adalah 0.015185 (1.52 perlanggaran / 100 pengukuran). Hasil praktikal adalah lebih baik daripada hasil teori bukan?:)

Imej
Imej

Bagaimanapun, ada juga 18 paket yang hilang dalam tempoh ini, jadi perlanggaran tidak terlalu penting dalam hal ini. Sudah tentu ujian itu harus berlangsung dalam jangka masa yang lebih lama untuk mendapatkan keputusan yang paling muktamad tetapi pada pendapat saya adalah kejayaan walaupun dalam keadaan ini dan sepenuhnya mengesahkan andaian teori.

Langkah 5: Pemikiran Akhir

Permohonan segera

Di rumah hijau besar beberapa tanaman ditanam. Sekiranya pengairan dibuat secara manual tanpa pemantauan iklim, tanpa automasi, tanpa catatan data terdapat risiko pengairan berlebihan atau di bawah dan juga penggunaan airnya tinggi, tidak ada bukti pengoptimuman penggunaan air, ada risiko tanaman di umum. Untuk mengelakkan ini, kita boleh menggunakan rangkaian sensor tanpa wayar:)

Sensor suhu, sensor kelembapan udara, sensor kelembapan tanah dapat diletakkan di sekitar rumah hijau dan dengan bantuan data yang dihantar dapat dilakukan beberapa tindakan: injap elektrik start-stop untuk membiarkan aliran air di mana diperlukan, kipas elektrik start-stop untuk mengurangkan suhu di kawasan yang berbeza, pemanas berhenti-henti mengikut keperluan dan semua data dapat diarkibkan untuk analisis masa depan. Juga, sistem ini dapat menyediakan antara muka web yang dapat diakses di mana-mana sahaja dan penggera e-mel atau SMS sekiranya keadaan tidak normal.

Apa yang akan datang?

  • Menguji dengan sebilangan besar sensor;
  • Ujian masa nyata dengan sensor jauh di kawasan liputan;
  • Memasang dan mengkonfigurasi pelayan IoT tempatan (misalnya pada Raspberry Pi);
  • Uji juga dengan pemancar (transceiver) -sensor pada 2.4Ghz.

jadi… untuk diteruskan…:)

PENAFIAN: Menggunakan jalur frekuensi 433MHz di wilayah anda mungkin tertakluk pada peraturan frekuensi radio. Sila periksa kesahihan anda sebelum mencuba projek ini

Peraduan Sensor
Peraduan Sensor
Peraduan Sensor
Peraduan Sensor

Naib Johan dalam Peraduan Sensor

Disyorkan: