433MHz Bantda Ucuz Kabelsiz Sensor Şəbəkəsi: 5 Adım (Şəkillərlə)
433MHz Bantda Ucuz Kabelsiz Sensor Şəbəkəsi: 5 Adım (Şəkillərlə)

Video: 433MHz Bantda Ucuz Kabelsiz Sensor Şəbəkəsi: 5 Adım (Şəkillərlə)

Video: 433MHz Bantda Ucuz Kabelsiz Sensor Şəbəkəsi: 5 Adım (Şəkillərlə)
Video: Китайский усил на rf2126 просто не работает на 2200 2025, Yanvar
Anonim
433MHz Bantda Az Qiymətli Simsiz Sensor Şəbəkəsi
433MHz Bantda Az Qiymətli Simsiz Sensor Şəbəkəsi

Bu məqalədəki nəşrlərindəki məlumatlardan istifadə etməyimi qəbul etdiyinə görə Teresa Rajbaya çox təşəkkür edirəm

* Yuxarıdakı şəkildə - test üçün istifadə etdiyim beş sensor göndərən qurğu

Simsiz sensor şəbəkələri nədir?

Sadə bir tərif belə olardı: simsiz sensor şəbəkələri, ətraf mühitin məlumatlarını izləmək və qeyd etmək üçün müəyyən bir ərazidə paylanmış, işlənmək və saxlanmaq üçün mərkəzi bir yerə simsiz olaraq ötürülən bir elektron cihaz qrupuna aiddir.

Hal -hazırda Simsiz Sensor Şəbəkələri bir neçə şəkildə istifadə edilə bilər, aşağıda yalnız bir neçə nümunə var:

  • Meşələrin, çayların, göllərin, dənizlərin və okeanların ekoloji nəzarət sahələri;
  • Terror, kimyəvi, bioloji, epidemiya hücumlarında xəbərdarlıq imkanı;
  • Uşaqlar, yaşlılar, xəstələr və ya xüsusi ehtiyacı olan insanlar üçün monitorinq sistemləri;
  • Kənd təsərrüfatında və istixanalarda müşahidə sistemləri;
  • Hava proqnozu monitorinq sistemi;
  • Şəhər trafikinə, məktəblərə, avtomobil dayanacaqlarına nəzarət;

Və bir çox başqa tətbiqlər.

Bu yazıda, yavaş və nisbətən proqnozlaşdırıla bilən bir dəyişiklik ilə temperatur və rütubət məlumatlarını izləmək üçün istifadə olunan simsiz sensor şəbəkələri ilə bir təcrübənin nəticələrini göstərmək istəyirəm. Bu təcrübə üçün əlverişli modullardan istifadə edərək özüm yaratdığım sensor göndəricilərdən istifadə etməyi seçdim. Alıcı da DIYdir, ünsiyyət bir yönlüdür (433 MHz radio diapazonunda), yəni sensorlar yalnız məlumat ötürür və mərkəzi yer yalnız qəbul edir. Sensorlar və alıcıdan sensorlar arasında heç bir əlaqə yoxdur.

Bəs niyə birdən çox verici və yalnız bir alıcı istifadə etməyi seçirsiniz? Aydındır ki, ilk səbəb "sadə etmək" olacaq. Quraşdırma nə qədər sadədirsə, uğursuz olma ehtimalı da o qədər azdır və arızalar halında tək komponentləri təmir etmək və dəyişdirmək daha asandır. Güc istehlakı da daha aşağıdır, batareyalar daha uzun müddət işləyəcək (sensorlar yalnız monitorinq və qəbul zamanı istehlak edəcək, qalan vaxt cihaz dərin yuxu rejimində olacaq). Sadə olması cihazı daha ucuz edir. Yadda saxlamaq lazım olan başqa bir cəhət əhatə dairəsidir. Niyə? Həssas bir alıcı qurmaq və istifadə etmək, həm sensorlarda, həm də mərkəzi modulda həssas bir alıcı və güclü bir vericiyə sahib olmaqdan daha asandır (bu, yaxşı ikitərəfli ünsiyyət üçün lazımdır). Həssas və keyfiyyətli bir qəbuledici ilə uzun məsafədən məlumat almaq mümkündür, ancaq eyni məsafədə olan məlumatların yayılması yüksək emissiya gücü tələb edir və bu, yüksək xərclər, elektrik istehlakı və (unutmayaq) 433 MHz diapazonunda qanuni maksimum ötürücü gücü. Ucuz, lakin keyfiyyətli antenna (hətta DIY) və keyfiyyətli antena malik ucuz vericilərlə, orta keyfiyyətli bir alıcıdan istifadə edərək, mövcud simsiz sensor şəbəkələrinin dəyərinin bir hissəsi ilə əla nəticələr əldə edə bilərik.

Addım 1: Nəzəri mülahizələr

İstixananın müxtəlif sahələrində havanın və torpağın temperaturu və rütubətini izləmək üçün simsiz sensor şəbəkəsi qurmaq fikri çoxdan, təxminən 10 il əvvəl ağlıma gəldi. 1 telli bir şəbəkə qurmaq və 1 telli temperatur və rütubət sensorlarından istifadə etmək istəyirdim. Təəssüf ki, 10 il əvvəl rütubət sensörləri nadir və bahalı idi (temperatur sensörləri geniş yayılsa da) və istixana boyunca tellərin yayılması bir seçim kimi görünmədiyi üçün fikrimdən tez imtina etdim.

Ancaq indi vəziyyət kökündən dəyişdi. Ucuz və keyfiyyətli sensorlar (temperatur və rütubət) tapa bilirik, həmçinin 433 MHz diapazonunda ucuz ötürücü və alıcılara çıxışımız var. Yalnız bir problem var: daha çox sensorumuz varsa (20 deyək) toqquşmaları necə həll edə bilərik (zəhmət olmasa unutmayın ki, bu birtərəfli ünsiyyətdir), yəni 2 və ya daha çox sensorun yayılmasını üst-üstə düşür? Mümkün bir həll axtararkən bu çox maraqlı sənədlərlə rastlaşdım:

Simsiz sensor təsadüfi əməliyyatlar proseduruna əsaslanaraq birləşir - RAJBA, T. və RAJBA, S.

Təsadüfi göndərmə ilə Simsiz Sensor Şəbəkəsində toqquşma ehtimalı - RAJBA S. və RAJBA tərəfindən. T

Əsasən, müəlliflər bizə göstərirlər ki, paketlər müəyyən bir zaman nöqtələrində poissoniyalı (eksponent) paylanmaya görə buraxılarsa, simsiz sensor şəbəkəsində toqquşma ehtimalını hesablamaq olar.

Yuxarıdakı sənəddən bir çıxarış, öyrənilən şəbəkənin xüsusiyyətlərini sadalayır.

  • kifayət qədər çox sayda N-sensor bölməsi;
  • sensor göndərən qurğular tamamilə müstəqil olaraq qalır və onları açmaq və ya söndürmək şəbəkənin işinə heç bir təsir göstərmir;
  • bütün sensor göndərən qurğular (və ya onların bir hissəsi) qəbuledici stansiyanın radio diapazonunda yerləşməsi şərti ilə mobil ola bilər;
  • yavaş -yavaş dəyişən fiziki parametrlər ölçülərə tabedir, bu da məlumatların çox tez -tez ötürülməsinə ehtiyac olmadığını göstərir (məsələn, hər bir neçə dəqiqədə və ya bir neçə on dəqiqədə);
  • ötürülmə bir tərəfli tipdədir, yəni sensör-göndərən qurğudan T nöqtəsinə qədər qəbul nöqtəsinə qədər. Məlumat t ünvanındakı protokolda verilirsəh müddəti;
  • hər hansı bir seçilmiş sensor təsadüfi olaraq Poisson vaxtında ötürməyə başlayır. PASTA (Poisson Arrivals See Time Averages), Poisson dövründə zondların göndərilməsini əsaslandırmaq üçün istifadə ediləcək;
  • bütün sensor göndərən qurğular təsadüfi olaraq müstəqil olaraq qalır və məlumatı təsadüfi olaraq seçilmiş t vaxtında ötürəcəklərsəh təkrarlanma müddəti və T orta müddəti;
  • t protokolu zamanı bir və ya daha çox sensorlar ötürməyə başlayırsasəh müddəti başqa bir sensordan ötürülür, belə bir vəziyyətə toqquşma deyilir. Toqquşma, mərkəzi baza stansiyasının məlumatı düzgün şəkildə almasını qeyri -mümkün edir.

Test etmək istədiyim sensor şəbəkəsinə demək olar ki, mükəmməl uyğun gəlir …

Təxminən.

Məqalədə riyaziyyatı tamamilə başa düşdüyümü demirəm, ancaq təqdim olunan məlumatlar və nəticələr əsasında bunun nə olduğunu bir az başa düşə bildim. Tək şey qəzetdə istifadə olunan bir dəyər məni bir az narahat etdi:). T dəyişənidirsəh - 3.2x10 olaraq qəbul edilən məlumatların ötürülmə müddəti-5 s. Beləliklə, toplanan məlumatların ötürülmə müddəti 3.2 bizi təşkil edəcək! Bu 433 MHz diapazonunda edilə bilməz. Verici sensorlarını proqramlaşdırmaq üçün ya rcswitch və ya radiohead istifadə etmək istəyirəm. İki kitabxananın kodlarını öyrənərək ən kiçik ötürmə müddətinin 20 ms olacağı qənaətinə gəldik ki, bu da 3,2 -dən çoxdur. 2.4 GHz tezlik ötürücüləri ilə mümkündürsəh vaxt çox kiçikdir … amma bu başqa bir hekayədir.

Bu yazının müəllifləri tərəfindən təklif olunan düsturu tətbiq etsək, nəticə belə olacaq:

İlkin məlumatlar (bir nümunə):

  • Sensorların sayı N = 20;
  • Məlumat ötürmə müddəti tsəh= 20x10-3 saniyə (0.020s)
  • Orta ötürmə intervalı T = 180s

Düstur:

T intervalında toqquşma ehtimalı

Şəkil
Şəkil

ilkin məlumatları nəzərə alsaq, T intervalında toqquşma ehtimalı 0.043519 olacaq

100 ölçüdə 4.35 toqquşma ehtimalını göstərən bu dəyər, mənim fikrimcə, olduqca yaxşıdır. Orta ötürmə müddətini artırsaq ehtimal yaxşılaşa bilər, buna görə də 300s dəyərində 0.026332 ehtimalımız olacaq, yəni 100 ölçüdə 2.6 toqquşma. Sistemin istismarı zamanı (məsələn, hava şəraitindən asılı olaraq) paket məlumat itkisini gözləyə biləcəyimizi düşünsək, bu rəqəm həqiqətən də əladır.

Bu tip bir şəbəkənin simulyasiyasını etmək istərdim, həm də bir növ dizayn köməkçisiyəm, buna görə də C -də kiçik bir proqram hazırladım, mənbə kodunu github -da tapa bilərsiniz (həm də Windows əmr satırında işləyən tərtib edilmiş ikili fayl - buraxın).

Giriş məlumatları:

  • sensor_number - şəbəkədəki sensorların sayı;
  • ölçmə_sayı - simulyasiya ediləcək ölçülərin sayı;
  • average_transmission_interval -ardıcıl məlumat ötürülməsi arasındakı orta vaxt;
  • ötürülmə vaxtı - məlumat ötürülməsinin effektiv müddəti.

Çıxış:

  • hesablanmış maksimum ölçmə müddəti;
  • iki sensor arasındakı toqquşmaların siyahısı;
  • toqquşma sayı;
  • toqquşmaların nəzəri ehtimalı.

Nəticələr olduqca maraqlıdır:)

Teoriya ilə kifayətlənsəm də, nəzəri hissədə daha çox israr etmək istəməzdim, məqalələr və mənbə kodu olduqca bəlağətlidir, buna görə də simsiz sensor şəbəkəsinin praktiki, effektiv tətbiqinə və test nəticələrinə getməyim daha yaxşıdır.

Addım 2: Praktiki Tətbiq - Avadanlıq

Verici sensorlar üçün aşağıdakı komponentlərə ehtiyacımız olacaq:

  • ATtiny85 mikro nəzarətçi 1.11 $;
  • Integrated circuit socket 8DIP 0.046 $;
  • İstilik/Nəmlik sensoru DHT11 0.74 $;
  • 433MHz H34A ötürücü modulu 0.73 $;
  • 1 x açarı olan 4xAA batareya tutacağı;

Cəmi 3.63 $;

Testlər üçün istifadə olunan alıcı Arduino UNO (yalnız sınaq üçün) və ucuz bir qövs antenasına (0.32 $) malik H3V4F qəbul moduludur (0.66 $).

Sensor göndərən sxemlər

Şəkil
Şəkil

Verici-sensor qurğuları 3xAA, 1.5v batareyalarla təchiz edilmişdir (batareya tutucusunun dördüncü bölməsində elektron qurğu var). Gördüyünüz kimi, ötürücünün enerji təchizatı və temperatur-rütubət sensoru mikro nəzarətçinin PB0 pininə bağlıdır (ötürücü və sensor pin YÜKSƏK olaraq təyin edildikdə işə düşür). Beləliklə, mikrokontrolör dərin yuxu rejimində olduqda, 4.7uA cərəyan istehlakına çata bilər. Verici-sensorun oyanma vaxtının təxminən 3s (ölçmə, ötürmə və s.) Və 180-ci illərdəki ötürmələr arasındakı orta vaxtın (əvvəlki fəsildə nümunə olaraq) olacağını nəzərə alsaq, batareyalar çox müqavimət göstərməlidir. Bəzi keyfiyyətli qələvi batareyalarla (yəni 2000 mAh), muxtariyyət omnicalculator.com saytında hesablandığı kimi 10 aydan çox ola bilər (burada cari istehlak: sensor - 1.5mA, ötürücü modulu - 3.5mA və ATtiny85 mikro nəzarət cihazı - 5mA, cəmi 10mA)).

Aşağıdakı fotoda, demək olar ki, bitmiş sensor-göndərici qurğusunu görə bilərsiniz.

Şəkil
Şəkil

Aşağıda test qəbuledici qurğunun fotoşəkili verilmişdir.

Şəkil
Şəkil

Addım 3: Praktiki Tətbiq - Proqram təminatı

Sensor göndərən qurğuların əsas komponenti olan attiny85 mikrokontrolörünə yüklənmiş proqram, sensor tərəfindən verilən məlumatları oxumaq, radio ilə ötürülmək üçün çevirmək və Poisson zaman aralığında (eksponent paylama və ya PASTA - Poisson Gələnlər Vaxt Ortalamalarına baxın). Ayrıca, sadə bir funksiyadan istifadə edərək batareyaların vəziyyətini izləyir və sensor üçün lazım olan gərginlik artıq təmin edilmədikdə xəbərdarlıq edir. Mənbə kodu github -da mövcuddur. Test alıcısının kodu çox sadədir, aşağıda yerləşdirirəm.

// https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// ünvanından rcswitch kitabxanası dəyişdirildi, kod orijinal rcswitch kitabxanasının nümunələrindən dəyişdirilmiş bir versiya #include RCSwitch mySwitch = RCSwitch (); imzasız uzun məlumatlar = 0; void setup () {Serial.begin (9600); mySwitch.enableReceive (0); // Alıcı kəsilmədə 0 => bu pin #2} void loop () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceivedValue (); // çıxış (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); int rütubət = bitExtracted (data, 7, 1); // 1 -ci mövqedən daha az əhəmiyyətli 7 bit - ən sağdakı ilk bit int temperaturu = bitExtracted (data, 7, 8); // sonrakı 7 bit 8 -ci mövqedən sağa və s int v_min = bitExtracted (data, 1, 15); int packet_id = bitExtracted (məlumatlar, 3, 16); // 3 bit - 0 -dan 7 -ə qədər 8 paket id -si int sensor_id = bitExtracted (data, 6, 19); // 64 sensor ID üçün 6bit - cəmi 24 bit Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (temperatur); Serial.çap (","); Serial.çap (rütubət); Serial.println (); mySwitch.resetAvailable (); }} // https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (işarəsiz uzun nömrə, int k, int p) {kodu (((1 (p- 1)));}

Bir şeyi başa düşməyi asanlaşdırmaq üçün mümkün qədər çox şərh yazmağa çalışdım.

Hata ayıklama üçün, proqram təminatı kitabxanasından və USBasp proqramçısı ilə attiny85 inkişaf etdirmə lövhəsindən istifadə etdim (bu barədə mənim göstərişlərimə də baxın). Serial keçid, inkişaf lövhəsinin əyilmiş sancaqlarına (3 və 4) qoşulmuş Serialdan TTL çeviricisiylə (PL2303 çipi ilə) hazırlanmışdır (aşağıdakı şəkilə baxın). Bütün bunlar kodun tamamlanmasında əvəzsiz kömək oldu.

Şəkil
Şəkil

Addım 4: Test Nəticələri

Test Nəticələri
Test Nəticələri
Test Nəticələri
Test Nəticələri

DHT11 sensorları ilə ölçülən dəyərləri toplayan və göndərən 5 sensor göndərən qurğu yaratdım. Ölçmələri test qəbuledicisinin və terminal emulyasiya proqramının (foxterm) köməyi ilə üç gün ərzində qeyd etdim və saxladım. Təhsil almaq üçün 48 saatlıq bir fasilə seçdim. Ölçülmüş dəyərlərlə (məsələn, sensor 2, mənə səhv dəyərlər göstərir) deyil, toqquşmaların sayı ilə maraqlandım. Bundan əlavə, paket itkisinin digər səbəblərini aradan qaldırmaq üçün sensorlar alıcı tərəfindən çox yaxın (4-5 m-də) yerləşdirilmişdir. Test nəticələri cvs faylında saxlanılır və yüklənir (aşağıdakı fayla baxın). Bu csv faylı əsasında bir excel faylı da yüklədim. Bir toqquşmanın necə olduğunu göstərmək üçün bəzi ekran görüntüləri çəkdim (əlbəttə testlərimdə), hər ekran görüntüsünə şərhlər də əlavə etdim.

Niyə ThingSpeak kimi bir məlumat yükləmə xidmətindən istifadə etmədiyimi düşünə bilərsiniz. Fakt budur ki, bir çox qeydlərim var, bir çox sensorlar və məlumatlar tez -tez qeyri -müntəzəm olaraq gəlir və onlayn IoT xidmətləri yalnız müəyyən sayda sensorlar və kifayət qədər böyük fasilələrlə məlumatlara icazə verir. Gələcəkdə öz IoT serverimi qurub konfiqurasiya etməyi düşünürəm.

Sonda, 5 sensor-göndərici vahidində (təxminən 920/sensor) 4598 ölçü 48 saat müddətində cəmi 5 toqquşma ilə nəticələndi (0.5435 toqquşma/100 ölçü). Bəzi riyazi işlərlə məşğul olmaq (ilkin məlumatlarla wsn_test proqramını istifadə etməklə: 5 sensör, ortalama 180s, ötürmə müddəti 110 ms) toqquşma ehtimalı 0.015185 (1.52 toqquşma/100 ölçmə) olardı. Praktik nəticələr nəzəri nəticələrdən daha yaxşıdır.:)

Şəkil
Şəkil

Hər halda, bu dövrdə itirilmiş 18 paket də var, buna görə də toqquşmaların bu baxımdan çox da əhəmiyyəti yoxdur. Əlbəttə ki, test ən qəti nəticələr əldə etmək üçün daha uzun müddət ərzində aparılmalıdır, amma fikrimcə, bu şəraitdə belə uğur qazanır və nəzəri fərziyyələri tam təsdiq edir.

Addım 5: Son Fikirlər

Dərhal tətbiq

Böyük bir istixanada bir neçə məhsul yetişdirilir. Suvarma heç bir iqlim monitorinqi olmadan, heç bir avtomatlaşdırma olmadan, məlumat qeydləri olmadan çox və ya çox suvarma riski varsa və su istehlakı yüksəkdirsə, su istehlakının optimallaşdırılmasına dair heç bir dəlil yoxdur, əkin üçün risk var. ümumi Bunun qarşısını almaq üçün simsiz sensor şəbəkəsindən istifadə edə bilərik:)

İstixana içərisində temperatur sensörleri, hava rütubəti sensorları, torpağın rütubət sensorları yerləşdirilə bilər və ötürülən məlumatların köməyi ilə bir neçə hərəkət edilə bilər: suyun lazım olduğu yerə axmasına icazə verən elektrikli klapanlar, start-stop elektrik fanatları. fərqli bölgələrdə istiliyi azaltmaq üçün, lazım olduqda qızdırıcıları işə salın və bütün məlumatlar gələcək analiz üçün arxivləşdirilə bilər. Ayrıca, sistem hər yerdə əldə edilə bilən bir veb interfeysi və anormal bir vəziyyətdə e -poçt və ya SMS siqnalları təmin edə bilər.

Sonrakı nədir?

  • Daha çox sayda sensorlar ilə sınaq;
  • Əhatə sahəsindəki uzaqdan sensorlar ilə real vaxt testi;
  • Yerli bir IoT serverinin qurulması və konfiqurasiyası (məsələn, Raspberry Pi -də);
  • 2.4Ghz-də ötürücü (qəbuledici) sensorlar ilə də testlər.

belə… davamı var …:)

DİQQƏT: Bölgənizdə 433MHz tezlik diapazonunun istifadəsi radio tezliyi qaydalarına tabe ola bilər. Bu layihəni sınamadan əvvəl qanuniliyinizi yoxlayın

Sensorlar Müsabiqəsi
Sensorlar Müsabiqəsi
Sensorlar Müsabiqəsi
Sensorlar Müsabiqəsi

Sensorlar yarışmasında ikinci yeri tutdu