İçindekiler:

Seeed LoRa IoTea Çözümü: 5 Adım
Seeed LoRa IoTea Çözümü: 5 Adım

Video: Seeed LoRa IoTea Çözümü: 5 Adım

Video: Seeed LoRa IoTea Çözümü: 5 Adım
Video: Seeed LoRa E5 Tutorial with ST programmer 2024, Kasım
Anonim
LoRa IoTea Çözümünü Gör
LoRa IoTea Çözümünü Gör

Çay ekimine uygulanan otomatik bilgi toplama sistemi. Akıllı tarımsal bilgi toplamanın bir parçasıdır.

Adım 1: Bu Projede Kullanılanlar

Donanım bileşenleri

  • Grove - Karbon Dioksit Sensörü(MH-Z16)
  • Grove - Dijital Işık Sensörü
  • Grove - Toz Sensörü(PPD42NS)
  • Grove - Oksijen Sensörü(ME2-O2-Ф20)
  • Toprak Nemi ve Sıcaklık Sensörü
  • LoRa LoRaWAN Ağ Geçidi - Raspberry Pi 3 ile 868MHz Kiti
  • Grove - Sıcaklık&Humi&Barometre Sensörü (BME280)

Yazılım uygulamaları ve çevrimiçi hizmetler

Microsoft Visual Studio 2015

2. Adım: Öykü

Akıllı tarım, tarım üretimini mobil veya bilgisayar platformları aracılığıyla kontrol etmek için sensörler ve yazılımlar kullanarak Nesnelerin İnterneti teknolojisini geleneksel tarıma uygulayarak geleneksel tarımı daha “akıllı” hale getirmektir.

Sichuan, Ya'an'ın kuzeydoğusundaki Mengding Dağı'nda, dağ sırtı yeşil bir denizde batıdan doğuya uzanır. Bu, deniz seviyesinden 1100 m yükseklikte yer alan 50mu (=3.3 hektar) plantasyonuyla neslinin çok az Mengding çay üreticisinden biri olan 36 yaşındaki Deng için en tanıdık manzara. Deng, çay üreticisi bir aileden geliyor, ancak aile mirasını sürdürmek kolay bir iş değil. “Çaylarımız, mükemmel kalitesini sağlamak için organik bir ortamda yüksek rakımda yetiştirilmektedir. Ancak aynı zamanda, büyüme yoğunluğu düşük, maliyet yüksek ve tomurcuklanma düzensiz, bu da çayı hasat etmeyi zorlaştırıyor. Bu nedenle yüksek dağ çayları normalde küçük hasatlardır ve değerleri piyasaya yansımaz.” Deng, son iki yıldır yüksek dağ çayının değerini yükseltmek için tüketici bilincini artırmaya çalışıyor. Ve Seeed'in IoTea teknolojisini uygulamak için bir plantasyon arayan Fan ile tanıştığında, bir çözüm için mükemmel bir eşleşme yapıldı. Seeed IoTea Çözümü, çay çiftçilerinin geleneksel çay yetiştirme uygulamalarını değiştirmeden tarlaları daha iyi yönetmelerine yardımcı olmayı ve açık bir platformda tarlalardan gerçek zamanlı çevresel verileri sunmayı amaçlıyor.

Sensörler, düğümler ve ağ geçitlerinden oluşan IoTea, sıcaklık ve nem, CO2, O2, PM ve ışığa maruz kalma dahil olmak üzere yetiştirme ve üretim süreçleri sırasında çayın kalitesini etkileyebilecek faktörlerin gerçek zamanlı verilerini toplar. Veriler sensörler tarafından toplanır, düğümler tarafından ağ geçidine ve nihayetinde buluta gönderilir ve bir web sayfasındaki son müşteriler tarafından erişilebilir hale getirilir.

3. Adım: Donanım Bağlantısı

Adım 1: Ağ Geçidi Bağlantısı

Ağ geçidi bir kutuya ayrı olarak kurulur. Isı dağılımı sorununu göz önünde bulundurarak 2 adet fan ekledik. Biri Raspberry Pi'nin ısı dağılımı için, diğeri ise iç ve dış hava sirkülasyonu içindir. Ağ geçidi kutusu bir çiftçinin evine yerleştirilmiştir, bu nedenle güç sorununu düşünmemize gerek yoktur.

resim
resim

Adım 2: Düğüm Bağlantısı

Düğüm, verilerin terminalidir ve tüm orijinal veriler buradan elde edilir. Düğüme bağlı 6 adet sensör bulunmaktadır. Toprak nem & sıcaklık sensörüne ek olarak panjur kutusunun içine başka sensörler yerleştiriyoruz.

resim
resim
resim
resim

Düğüm su geçirmez bir kutuya yerleştirilmiştir. Düğüme daha iyi bir bağlantı olması için bir adaptör kartı yapıyoruz. Son olarak, bu panonun şematik indirme bağlantısını sağlayacağız. Aşağıda gösterildiği gibi, sensörlerin kabloları klemensler aracılığıyla adaptör kartına takılır. Sensörlerin ve fanın açılıp kapanmasını kontrol etmek için anahtar devreleri oluşturmak için 3 MOS tüpü (SI2301) kullanıyoruz. Fan soğutmak için kullanılır. Kart üzerine monte edilmiş bir sıcaklık sensörümüz (DS18B20) var. Bize kutunun iç sıcaklığını söyleyebilir ve ardından mikro denetleyici fanı açıp açmamaya karar verir. Kurşun asit akü voltajını ölçmek için bir voltaj bölücü devre yapmak için birkaç direnç kullanıyoruz. Son olarak, daha sonra genişletme ve hata ayıklama için kartta 3 IIC arabirimi ve seri bağlantı noktası ayırdık.

resim
resim

Düğümün güç kaynağı probleminden bahsedelim. Düğüm çay plantasyonuna rastgele yerleştirilir, bu nedenle geleneksel güç kaynağı yöntemi artık geçerli değildir. Bir güneş enerjisi çözümü kullanmak iyi bir fikirdir. Şu anda piyasada sunulan birçok çözüm var. İhtiyaçlarımızı karşılayan birini seçebiliriz. Seçtiğimiz çözümde 3 parça var: güneş paneli, solar şarj kontrolörü ve kurşun asit batarya. Güneş enerjisini daha iyi yakalayabilmek için konsolun üst kısmına güneş paneli yerleştirip açısını güneşe bakacak şekilde ayarlıyoruz. Solar şarj kontrol cihazını node ile aynı kutuya yerleştirdik. Kutunun içinde fazladan boşluk olmadığı için kurşun asit bataryayı yerleştirmek için yeni bir su geçirmez kutu bulmamız gerekti.

resim
resim
resim
resim
resim
resim

Adım 4: Yazılım Yapılandırması

düğüm

Bu bölümde, düğümün temel yazılım yapılandırmasını tanıtacağız.

Veri formatı

Düğüm tarafından ağ geçidine yüklenen veriler:

unsigned char Lora_data[15] ={0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

Her veri bitinin anlamı:

Lora_data[0] :Hava sıcaklığı, ℃

Lora_data[1] :Hava nemi, %

Lora_data[2] :İrtifa yüksek sekiz, m

Lora_data[3] :Alçak irtifa sekiz

Lora_data[4] :CO2 konsantrasyonu yüksek sekiz, ppm

Lora_data[5] :CO2 konsantrasyonu düşük sekiz

Lora_data[6] :Toz konsantrasyonu yüksek sekiz, adet/0.01cf

Lora_data[7] :Toz konsantrasyonu düşük sekiz

Lora_data[8] :Işık yoğunluğu yüksek sekiz, lüks

Lora_data[9] :Işık yoğunluğu düşük sekiz

Lora_data[10] :O2 konsantrasyonu, % (ham veri bölü 1000)

Lora_data[11] :Toprak sıcaklığı, ℃

Lora_data[12] :Toprak nemi, %

Lora_data[13] :Akü voltajı, v

Lora_data[14] :Sensör hata kodu

Hata kodu:

Lora_data[14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]

Her bitin anlamı:

bit 0: 1----Sıcaklık ve Humi ve Barometre Sensörü (BME280) hatası

bit 1: 1---- Karbon Dioksit Sensörü(MH-Z16) hatası

bit 2: 1---- Toz Sensörü (PPD42NS) hatası

bit 3: 1---- Dijital Işık Sensörü hatası

bit 4: 1---- Oksijen Sensörü(ME2-O2-Ф20) hatası

bit 5: 1---- Toprak Nemi ve Sıcaklık Sensörü hatası

bit 6: Ayrılmış

bit 7: Ayrılmış

Bir Error_code_transform.exe yaptık, açın ve hata kodunu onaltılı olarak girin, hangi sensörün hatalı olduğunu hemen anlayacaksınız. İndirme bağlantısı bu makalenin sonundadır.

Parametre ayarı:a)Veri iletim döngüsü

// seeedtea.ino

#defineinterval_time 600 //saniye

Bu parametre, veri aktarım döngüsünü değiştirmek için değiştirilebilir. Her döngüde, veri toplama yaklaşık 1 dakika sürer. Bu nedenle bu değerin 60 saniyenin altına düşürülmesi önerilmez.

b)Toz sensörü ısınma süresi

//seeedtea.ino

#definePreheat_time 30000 //DustSensor ısınma süresi, milisaniye //Dust_other.cpp #definesampletime_ms 30000 //samplingtime30s

c) Gerilim katsayısı

//POWER_Ctrl.cpp

#defineBattery_coective 0,159864 //ADC değeri× Battery_katsayısı = pil_voltajı #defineSolar_katsayısı 0,22559 //ADC değeri × Solar_katsayı = solar_voltage

Bu iki parametre gerilim bölücü devresine göre hesaplanır.

d)Fan açma sıcaklığı eşiği

//POWER_Ctrl.cpp

#defineFan_start_temp 45 //sıcaklık eşiği #defineFan_start_light 500 //ışık yoğunluğu

Gerçek sıcaklık eşiği aştığında, fan soğumaya başlayacaktır.

e)O2 sensörü başlatma parametresi

//Oksijen.cpp

#defineO2_percentage 208.00 // %20.8

f) Makro anahtarı

//seeedtea.ino

#defineLORA_RUN //Yorumdan sonra Lora başlatma ve veri iletimi duracak #defineSENSOR_RUN //Yorumdan sonra harici sensörler çalışmayı durduracak //POWER_Ctrl.cpp #defineFAN_ON //Yalnızca test, Pratik uygulamanın yorumlanması gerekiyor /**** ***DS18B20 kontrol modu *************************/ #defineSlower_Mode // Sıcaklığı almak için yavaş mod. Yorum çıkışı hızlı moddur

g)Pin eşleme

D2: LED gösterge ve harici sıfırlama mikrodenetleyiciIIC: SCL ve SDA

//Dust_other.h

#defineDust_pin 3 //Toz sensörü //CO2.cpp #defineCO2_serial Seri1 //donanım seri portunu (D0 ve D1) kullan //seeedtea.ino #definedataPin 6 //Toprak veri pini #defineclockPin 7 //Toprak saat pini //POWER_Ctrl. h #defineDS18B20_pin 8 //DS18B20 #defineFan_pin 9 //Fan #defineAir_CtrlPin 10 // Panjur içine yerleştirilen sensörler için kontrol pini #defineSoil_CtrlPin 11 // Toprak Nem ve Sıcaklık Sensörü anahtar pini #defineBattery_pin A2 // Akü voltajını ölçün #defineSolar_pin A /Güneş paneli voltajını ölçün //Oxygen.h #defineO2_pin A1 //O2 sensörü

h) Watchdog zamanlayıcı

Watchdog zamanlayıcı, sistemin çalışma durumunu izlemek için kullanılır. Sistem anormal bir şekilde çalıştığında, düğüm sıfırlanacak ve böylece uzun süre sürekli çalışabilecektir.

Başvurulacak kütüphane:

  • Adafruit_SleepyDog.h projeye eklendi
  • Adafruit_ASFcore-master.zip proje klasöründe paketlenmiştir ve Arduino IDE'ye manuel olarak eklenmesi gerekir.

İlgili işlevler:

Watchdog'u etkinleştir

int WatchdogSAMD::enable(int maxPeriodMS, bool isForSleep)

Giriş parametreleri:

Int maxPeriodMS: Milisaniye cinsinden bekleme süresi. İzin verilen maksimum süre 16000 milisaniyedir.

geri dönüş değeri:

Int türü, gerçek bekleme süresini döndürür

Bekçi köpeğini sıfırla

void WatchdogSAMD::reset()

"Köpeği beslemek" olarak adlandırılan bekçi köpeği zamanlayıcısını sıfırlamak için bu işlevi çağırın. Reset olmadan bekleme süresinin aşılması, düğümün yeniden başlatılmasına neden olur.

bekçi köpeğini durdur

void WatchdogSAMD::disable()

geçit

Bu bölümde Loriot sunucusuna nasıl bağlanılacağını anlatacağız.

Adım 1: Loriot Sunucu Ağ Geçidi Kaydı

a) Yeni kullanıcının önce bir hesap açması gerekir, kayıt adresini tıklayın. Kayıt olmak için Kullanıcı Adı, Şifre ve e-posta adresini girin, kayıt olduktan sonra size bir e-posta gönderilecektir, etkinleştirmek için lütfen e-postadaki talimatları izleyin.

b) Başarılı aktivasyondan sonra oturum açmak için buraya tıklayın. Varsayılan katman “Community Network”tür, 1 Gateway(RHF2S001) ve 10 node'u destekler.

c) Dashboard -> Gateway girin, Gateway eklemek için Add Gateway start'a tıklayın.

d) Raspberry Pi 3'ü seçin

e) Aşağıdaki gibi ayarlayın:

  • Radyo ön uç -> RHF2S001 868/915 MHz (SX1257)
  • OTOBÜS -> SPI

f) RHF2S001'inizin MAC adresini girin, b8:27:eb:xx:xx:xx biçiminde olmalıdır. Ayrıca Ağ Geçidi Konumu bilgilerini girin.

g) Kaydı tamamlamak için “Raspberry Pi ağ geçidini kaydet”e tıklayın.

resim
resim

h) Yapılandırma sayfasına girmek için kayıtlı ağ geçidine tıklayın, “Frekans Planı”nı manuel olarak değiştirin, buradaki planınız RHF2S001 tipinizin türüne göre belirlenir, mevcut plan CN470,CN473, CN434,CN780,EU868, seçildikten sonra lütfen sayfayı yenileyin tam kanalı almak için. Bu wiki'de EU868'i seçiyoruz.

i) Putty terminalinde komutu çalıştırın:

cd /home/rxhf/loriot/1.0.2

sudo systemctl pktfwd'yi durdur sudo gwrst wget > -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io

j) Finish gateway registration. You will see the gateway is Connected now. Next is to register node.

resim
resim

Adım 2: Loriot Server Connect Node cihazı

a) Mevcut ağ geçidi kanallarını alın

Mevcut ağ geçidi kanalları Dashboard -> Gateway ->Your Gateway'den alınabilir, mevcut kanalları aşağıdaki resimde görebilirsiniz.

resim
resim

b) Seeeduino LoRAWAN GPS(RHF3M076) Yapılandırması

ArduinoIDE'nin seri monitörünü açın, aşağıdaki komuta dokunun.

+ch'de

Seeeduino_LoRAWAN GPS'inizin varsayılan kanalını onaylamak için 3 kanal alacaksınız. Eğer müsait kanal yoksa aşağıdaki komut ile Seeeduino_LoRAWAN'ın kanallarını değiştirebilirsiniz.

+ch=0'da, 868.1

+ch=1'de, 868.3'te+ch=2'de, 868.5

Ardından kontrol etmek için tekrar at+ch kullanabilirsiniz.

c) Seeeduino_LoRAWAN GPS'i Loriot sunucusunda ABP NodeLog olarak ekleyin, Kontrol Paneli -> Uygulamalar -> SimpleApp öğesine tıklayın. ABP'yi İçe Aktar'a tıklayın, aşağıdaki öğeleri girin

  • DevAddr: Seeeduino_LoRAWAN GPS "AT+ID" komutundan geçer (Not: Loriot iki nokta üst üste konektörünü desteklemez, manuel olarak kaldırmanız gerekir)
  • FCntUp:Set 1
  • FCntDn:Set 1
  • NWKSKEY:Varsayılan değer 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY:Varsayılan değer 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI:DEVEUI, Seeeduino_LoRAWAN GPS "AT+ID" komutundan geçer
resim
resim

Aygıtı içe aktarmayı bitirmek için Aygıtı Al düğmesini tıklayın. Şimdi Dashboard-> Applications -> SampleApp'i seçin, az önce eklediğiniz yeni ABP Düğümünü göreceksiniz.

resim
resim

d) Seeeduino_LoRAWAN'dan veri gönder

DİKKAT! Bu sadece bir test.

ArduinoIDE'nin seri monitörüne geri dönün, şu komutu gönderin:

AT+CMSGHEX="0a 0b 0c 0d 0e"

Ardından Dashboard -> Applications -> SampleApp -> Device öğesine gidin, Node Device EUI veya DevAddr öğesine tıklayın, az önce gönderdiğiniz verileri burada bulacaksınız.

resim
resim

Ayrıntılar için lütfen bu wiki'ye bakın.

Adım 5: Web Sitesi Yapımı

İlgili Araçlar

  • sanal ortam
  • Python3
  • gunicorn
  • süpervizör
  • Nginx
  • MySQL

Test dağıtım ortamı olarak CentOS7 kullanıyoruz

sanal ortam

Bağımsız bir python3 üretim ortamı oluşturmak için virtualenv kullanın

a) kurmak

pip sanalenv yükleyin

b) bir python3 sanal ortamı oluşturun

virtualenv -p python3 iotea

c) sanal ortamı başlatın ve iotea dizinine girin

kaynak kutusu/etkinleştir

d) mevcut çevre

devre dışı bırakmak

Python3

a) kurmak

yum epel sürümünü yükleyin

yum python36'yı yükleyin

b) PyMySQL, DBUtils, Flask, websocket-client, configparser bağımlı kitaplığını kurun

pip kurulum pymysql

pip kurulumu dbutils pip yükleme şişesi pip kurulumu websocket-client pip kurulumu configparser

gunicorn

a) kurun (Python3 ortamı altında)

pip yükleme gunicorn

b) şişe projesini çalıştırın (iotea proje dizini altında)

gunicorn -w 5 -b 0.0.0.0:5000 uygulama:uygulama

c) loriot verilerini almak için websocket-clint'i çalıştırın

gunicorn loriot:uygulama

d) Gunicorn işlem ağacını görüntüle

pstree -ap|grep gunicorn

süpervizör

a) kurulum (kök kullanıcı)

pip kurulum sorumlusu

b) yapılandırma dosyaları oluşturun

echo_supervisord_conf > /etc/supervisord.conf

c) bir dizin oluşturun ve bir dizin yapılandırması tanıtın

mkdir -p /etc/supervisor/conf.d

/etc/supervisord.conf dosyasını düzenleyin ve dosyanın sonundaki [include] altındaki dosyalar alanını değiştirin.

';' işaretini kaldırmanız gerektiğini unutmayın. yorum karakteri olan bu iki satırın önünde.

[Dahil etmek]

Dosyalar = /etc/supervisor/conf.d/*.conf

/etc/supervisor/conf.d/'yi tanıtmak anlamına gelir. Aşağıdaki yapılandırma dosyası, süreç yapılandırma dosyası olarak kullanılır (gözetmen tarafından izlenir).

d) gelen yapılandırma (iotea dizini altında)

cp iotea.conf /etc/supervisor/conf.d/

cp loriot.conf /etc/supervisor/conf.d/

e) açık iotea servisi

superviosrctl yeniden yükle #yapılandırma dosyasını yeniden yükle

superviosrctl loriot başlat #open loriot veri alımı superviosrctl iotea başlat #iotea şişesi uygulamasını aç

f) diğer ortak işlemler

süpervizörctl yeniden yükle # yapılandırma dosyasını yeniden yükle

süpervizörctl güncelleme süpervizörctl başlat xxx süpervizörctl durdur xxx süpervizörctl durumu xxx süpervizörctl yardım # daha fazla komut görüntüle

Nginx

a) kurmak

yum yükleme -y nginx

b) yapılandırma

cp NginxIotea.conf /etc/nginx/conf.d/

c) Nginx'i başlat

systemctl nginx.service'i başlat

MySQL

a) ilgili parametreler

kullanıcı = 'kök'

passwd='1234' db='iotea' bağlantı noktası=3306

b) dosya

iotea_iotea.sql

c) yapılandırma dosyası

db.ini

Önerilen: