Mündəricat:

Görülmüş IoTea LoRa Həll (Yeniləmə 1811): 5 addım
Görülmüş IoTea LoRa Həll (Yeniləmə 1811): 5 addım

Video: Görülmüş IoTea LoRa Həll (Yeniləmə 1811): 5 addım

Video: Görülmüş IoTea LoRa Həll (Yeniləmə 1811): 5 addım
Video: Настоящая капсула времени! - Заброшенный особняк американской семьи остался нетронутым 2024, Noyabr
Anonim
Görülmüş IoTea LoRa Həll (Yeniləmə 1811)
Görülmüş IoTea LoRa Həll (Yeniləmə 1811)

İnternet+ indi populyar bir anlayışdır. Çay bağı İnternet Çayını böyütmək üçün bu dəfə İnternet və kənd təsərrüfatını sınadıq.

Addım 1: Bu Layihədə İstifadə Edilən Şeylər

Avadanlıq komponentləri

  • Grove - Karbon Dioksid Sensoru (MH -Z16)
  • Grove - Rəqəmsal İşıq Sensoru
  • Grove - Toz Sensoru (PPD42NS)
  • Grove-Oksigen Sensoru (ME2-O2-Ф20)
  • Torpaq Nəmliyi və Temperatur Sensoru
  • LoRa LoRaWAN Gateway - Raspberry Pi 3 ilə 868MHz dəsti
  • Grove - Temp & Humi və Barometr Sensoru (BME280)

Proqram proqramları və onlayn xidmətlər

Microsoft Visual Studio 2015

Addım 2: Hekayə

Sichuan, Yaan'ın şimal -şərqindəki Mengding dağında, dağ silsiləsi yaşıl dənizdə qərbdən şərqə doğru axır. Dəniz səviyyəsindən 1100 m yüksəklikdə yerləşən 50mu (= 3.3 hektar) əkin sahəsinə malik olan, çox az sayda Mengding çay istehsalçılarından biri olan 36 yaşlı Denq üçün ən tanış mənzərədir. Deng çayçı ailəsindən gəlir, lakin ailə mirasını davam etdirmək asan məsələ deyil. Çaylarımız əla keyfiyyətini təmin etmək üçün üzvi bir mühitdə yüksək yüksəkliklərdə yetişdirilir. Ancaq eyni zamanda, böyümə sıxlığı aşağıdır, dəyəri yüksəkdir və qönçələnmə qeyri -bərabərdir, bu da çayın yığılmasını çətinləşdirir. Bu səbəbdən yüksək dağ çayları adətən kiçik məhsullardır və dəyərləri bazara əks olunmur.”Son iki ildə Deng, dəyərini tanıtmaq üçün istehlakçıların yüksək dağ çayı haqqında məlumatlılığını artırmağa çalışır. Və Seeed -in IoTea texnologiyasını tətbiq etmək üçün bir plantasiya axtaran Fanla tanış olanda bir həll üçün mükəmməl bir uyğunluq tapıldı.

Addım 3: Avadanlıq Bağlantısı

Bu layihənin aparatı 4 hissəyə bölünə bilər: Güc, Sensorlar, Node və Ağ Geçidi. Növbəti məqalə bunu addım -addım necə tamamlayacağınızı göstərəcəkdir.

Güc hissəsi

Güc hissəsində əsasən Günəş Paneli və Lityum Batareya var, sadəcə bu layihəni nümayiş üçün qurarsanız, onları görməzdən gələ bilərsiniz. Və ya düyün gücünü quraşdırmaq üçün Əvvəlki təlimatı izləyə bilərsiniz.

Sensorlar hissəsi

Sensorlar hissəsində, çox sayda sensora görə bir hava stansiyasından istifadə etdik və onları quraşdırmaq üçün akril mötərizə də düzəltdik.

Şəkil
Şəkil

Yuxarıdakı şəkildə gördüyünüz kimi, Rəqəmsal İşıq Sensoru hər zaman yuxarıdadır ki, işıqlandırma məlumatlarını toplaya bilsin. İstilik istehsal edəcək sensorlar, O2 Sensor, Toz Sensoru və CO2 Sensoru kimi Akril mötərizənin ortasına quraşdırılmışdır. Nəhayət, Akril mötərizənin altındakı İstilik və Nəmlik Sensoru.

Bundan əlavə, Torpaq İstiliyi və Nəmlik Sensoru torpağa tək quraşdırılır. Düyün hissəsi

Şəkil
Şəkil

Node Part, Su keçirməyən bir qutuya quraşdırılmış bir Seeeduino LoRaWan -dır, su birləşmələri vasitəsilə gücə və sensorlara qoşulur. Bunlardan Toz Sensoru LoRaWanın rəqəmsal pin D3 -ə, CO2 Sensoru D4 və D5 pininə, Torpaq Sensoru D6 və D7 pininə, O2 Sensoru analog pin A1 -ə və İşıq Sensoru və Barometr Sensoru I2C portuna qoşulur.

QEYD: Torpaq Sensorunun Mavi (Məlumat) kabeli ilə Qırmızı (Vcc) kabeli arasına 10k rezistor əlavə edilməlidir.

Seeeduino LoRaWan, sensorlar dəyərini birdəfəlik toplayır və LoRa vasitəsilə Gateway -ə göndərir. Məlumat formatı aşağıdakı kimidir:

{

[0], /* Hava istiliyi (℃)* /[1], /* Hava rütubəti (%)* /[2], /* Yüksəklik (m) yüksək bayt* /[3], /* Yüksəklik (m) aşağı bayt */[4],/ * CO2 konsentrasiyası (PPM) yüksək bayt */[5],/ * CO2 konsentrasiyası (PPM) aşağı bayt */[6],/ * Toz konsentrasiyası (ədəd/0.01cf) yüksək bayt */[7],/ *Toz konsentrasiyası (ədəd/0.01cf) aşağı bayt */[8],/ *İşıq intensivliyi (lüks) yüksək bayt */[9],/ *İşıq intensivliyi (lüks) aşağı bayt */ [10], /* O2 konsentrasiyası (%)* /[11], /* Torpağın temperaturu (℃)* /[12], /* Torpağın rütubəti (%)* /[13], /* Batareya gərginliyi (V) */ [14]/ *Sensor səhv kodu */}

Sensor Hata Kodu baytındakı hər bir bit, aşağıda olduğu kimi bir fərq mənasına malikdir:

{

bit0: 1; / * Barometr Sensor xətası */ bit1: 1; / * CO2 Sensor Hatası */ bit2: 1; / * Toz Sensor xətası */ bit3: 1; / * İşıq Sensor xətası */ bit4: 1; / * O2 Sensor Hatası */ bit5: 1; / * Torpaq Sensor xətası */ qorunur: 2; / * Rezerv edilmiş */}

Ağ geçidi hissəsi

Şəkil
Şəkil

Gateway Part, RHF0M301-8868 Gateway modulunu və PRI 2 Bridge RHF4T002 -ni bağlayan, Suya davamlı bir qutuya quraşdırılmış və Su Bağlantıları vasitəsilə güc və USB Kameraya qoşulan bir Raspberry Pi -dir. Xüsusi bir firmware istifadə etdiyindən, konfiqurasiya etmək üçün Seeed Wiki -ni izləyin.

Addım 4: Proqramlaşdırma

Hardware Connection olaraq, Software Programming də bölünə bilər, 3 hissəyə bölünə bilər: Node, Gateway və Website.

Düyün hissəsi

Düyün hissəsinin tələb etdiyi əksər sürücülər artıq orig_driver qovluğundadır. Aşağıdakı kitabxanalar əl ilə quraşdırılmalıdır:

Adafruit_ASFcore

Layihə çətin olduğu üçün Arduino IDE yerinə Microsoft Visual Studio istifadə etməyinizi məsləhət görürük. Visual Micro adlı bir plugin, Visual Studio istifadə edərək bir Arduino layihəsini həyata keçirməyinizə kömək edə bilər, daha çox məlumat üçün bura vurun.

Daha yaxşı oxunması və davam etdirilməsi üçün bu dəfə Obyekt yönümlü proqramlaşdırmadan istifadə edirik. Bu layihənin sinif diaqramı aşağıdakı kimidir:

Şəkil
Şəkil

Artıq OOP sürücüsü olan bu sensorlar üçün, bu layihəni uyğunlaşdırmaq üçün yenidən qablaşdırdıq, digərləri üçün sürücülərini OOP istifadə edərək yenidən yazdıq. Orta proqram təbəqəsindəki Sensor sinfi, real sensorların interfeyslərini birləşdirmək üçün istifadə olunur, məsələn, barometr sensoru eyni zamanda temperaturu, rütubəti və yüksəkliyi toplaya bilir, buna görə də temperatur, rütubət və yüksəklik əldə etmək üçün 3 interfeysə malikdir. Ancaq sensorlar əldə etmək proqramını daha mürəkkəb hala gətirəcək fərq metodu adları var:

barometr-> getTemperature ();

barometr-> getHumidity (); barometr-> getAltitude (); //… başqa_sensor-> getSomeValue (); //…

Ancaq OOP istifadə edərək, belə görünür:

üçün (avtomatik i = 0; i getValue ();

}

Bir tətbiq sinifini də doldurduq, IApplication interfeysini tətbiq edir, IoTea.inoda quraşdırma () və loop () metodunu Application obyektində setup () və loop () metodlarına zəng edə bilərik.

DİQQƏT: USB Serial SADECƏ ayıklama üçün istifadə olunur. Hata ayıklandıqdan sonra, setup () metodunda kodu başlatdığını bildirin.

Ağ geçidi hissəsi

Gateway Partının ev qovluğundakı Python proqramı, hər saat fotoşəkil çəkmək və Amazon S3 Server -ə yükləmək üçün istifadə olunur. İstifadə etməzdən əvvəl, Raspberry Pi -də fswebcamın artıq quraşdırıldığından əmin olun:

sudo apt-get yeniləmə && sudo apt-get fswebcam quraşdırın

Fotoşəkillər yükləmək istəyirsinizsə, aşağıdakı adımlarla AWS -ni konfiqurasiya edin. Əvvəlcə bu əmrlərdən istifadə edərək AWS SDK və AWS CLI -ni Raspberry Pi -yə quraşdırın:

sudo pip boto3 quraşdırın

sudo pip install awscli

sonra AWS CLI -ni işə salın:

sudo aws konfiqurasiya edin

AWS Giriş Açar ID -nizi, AWS Gizli Giriş ID -nizi və Varsayılan bölgə adınızı konfiqurasiya edin.

Fotoşəkillərinizi yükləməyi sevmirsinizsə, photo.py -də yükləmə ilə əlaqədar AWS konfiqurasiya addımlarını və şərh kodlarını atlaya bilərsiniz. Hər dəfə Raspberry Pi açıldıqdan sonra bu proqramı işə salmaq üçün /etc/init.d -də bir fayl adı şəkli yarada və ona aşağıdakı kodu yaza bilərsiniz.

#!/bin/bash

# /etc/init.d/photo ### INIT MƏLUMATINA BAŞLAYIN # Təmin edir: seeed_photo # Tələb olunur-Başlat: $ remote_fs $ syslog # Tələb olunur-Stop: $ remote_fs $ syslog # Varsayılan-Başlat: 2 3 4 5 # Default-Stop: 0 1 6 # Qısa Təsvir: şəkil çəkmə initscript # Təsvir: Bu xidmət şəkil çəkilişini idarə etmək üçün istifadə olunur ### END INIT INFO halda "$ 1" halda) echo "Şəkil çəkməyə başla" /home/rxhf/photo.py &;; stop) echo "Şəkil çəkməyi dayandır" öldür $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "İstifadə: xidmətin foto başlanğıcı | dayan" çıxış 1;; esac çıxış 0

icra icazəsi təyin edin

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

və sınayın

sudo /etc/init.d/photo başlanğıcı

Heç bir problem yoxdursa, onu dayandırın və başlanğıc tətbiqinə əlavə edin

sudo /etc/init.d/photo stop

sudo update-rc.d fotoşəkilləri

QEYD: Raspberry Pi açılışından sonra ağ geçidini işə salmaq istəyirsinizsə, Seeet Wiki -də /etc/rc.local ünvanına keçid kodlarını əlavə edin, belə görünsün:

#!/bin/sh -e

# # rc.local # # Bu skript hər çox istifadəçi səviyyəsinin sonunda icra olunur. # Skriptin müvəffəqiyyətdə və ya səhvdə hər hansı digər # dəyərdən "0 çıxacağına" əmin olun. # # Bu skriptin işə salınması və ya söndürülməsi üçün # bitin icrasını dəyişmək kifayətdir. # # Varsayılan olaraq bu skript heç bir iş görmür. # IP ünvanını çap edin _IP = $ (hostname -I) || doğru olarsa ["$ _IP"]; sonra printf "IP ünvanım %s / n" "$ _IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -risinghf-r… -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io çıxış 0

Veb sayt

Veb saytı CentOS 7 -də yerləşdirdik. Aşağıdakı addımlar sizə necə yerləşdiriləcəyini göstərəcək.

Addım 1. Python3 qurun

sudo yum -y epel -release qurun

sudo yum -y python36 quraşdırın

Addım 2. Python pip və virtual mühit qurun

wget

sudo python36 get-pip.py sudo pip virtualenv quraşdırın

Setp 3. Veb saytımızı GitHub -dan klonlaşdırın

sudo yum -y yüklə

git klonu

Addım 4. Virtual mühit yaradın və aktivləşdirin

virtualenv -p python36 iotea -hb

cd iotea-hb mənbə bin/aktivləşdir

Addım 5. Asılı kitabxanaları quraşdırın

pip pymysql quraşdırın

pip install dbutils pip pip flask pip install websocket-client pip install cofigparser

Addım 6. Verilənlər bazası yaradın

sudo yum -y mariadb mariabd -server quraşdırın

sudo systemctl mariadb imkan verir sudo systemctl start mariadb mysql -uroot -p

və sonra bir masa yaratmaq üçün iotea_hb.sql istifadə edin.

Addım 7. db.ini yaradın və ona bu kodları yazın

[db]

db_port = 3306 db_user = kök db_host = localhost db_pass = db_name = iotea

db.py -də db.ini yolunu dəyişdirin

# db.py -də

#cf.read ("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read ("/home // iotea-hb/db.ini")

Addım 8. app.py -də portu dəyişdirin və veb saytı işə salın:

# app.py -də

#app.run (debug = True, port = 6000) app.run (debug = True, port = 8080)

# terminalda

pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app: app

İndi veb brauzerinizdə 127.0.0.1:8080 ziyarət edin, veb saytı görə bilərsiniz, ancaq real vaxt məlumatları göstərilmir.

Addım 9. Loriot məlumatlarını əldə edin

Başqa bir terminal açın, virtual mühitə yenidən daxil olun və loriot tətbiqinə başlayın:

cd iotea-hb

mənbə bin/gunicorn loriot aktivləşdirmək: app

Bir müddət gözləyin, veb saytında göstərilən məlumatları görəcəksiniz və ya loriot.py -də wss -i dəyişə bilərsiniz:

# loriot.py -də

#ws = create_connection ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

Addım 5: Əməliyyat

Real vaxt məlumatlarına baxmaq üçün veb saytlarımızı ziyarət edə bilərsiniz:

  • Yaanda
  • Nümayiş üçün

Tövsiyə: