İçindekiler:

Seeed IoTea LoRa Çözümü (Güncelleme 1811): 5 Adım
Seeed IoTea LoRa Çözümü (Güncelleme 1811): 5 Adım

Video: Seeed IoTea LoRa Çözümü (Güncelleme 1811): 5 Adım

Video: Seeed IoTea LoRa Çözümü (Güncelleme 1811): 5 Adım
Video: Seeed IoTea Lora Solution 2024, Temmuz
Anonim
Seeed IoTea LoRa Çözümü (Güncelleme 1811)
Seeed IoTea LoRa Çözümü (Güncelleme 1811)

İnternet+ artık popüler bir kavram. Bu sefer internet artı tarım yaparak çay bahçesini internetten çay yetiştirmeye çalıştık.

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ü

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 bulunan 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ıtılmaz.” Deng, son iki yıldır, değerlerini tanıtmak için yüksek dağ çayı konusunda 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ı.

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

Bu projenin donanımı 4 bölüme ayrılabilir: Güç, Sensörler, Düğüm ve Ağ Geçidi. Aşağıdaki makale, adım adım nasıl tamamlayacağınızı gösterecektir.

Güç Parçası

Güç Bölümü esas olarak bir Güneş Paneli ve bir Lityum Pil içerir, bu projeyi sadece gösteri için inşa ederseniz, onları görmezden gelebilirsiniz. Veya düğüm gücünü yüklemek için Önceki öğreticiyi takip edebilirsiniz.

Sensörler Parçası

Sensörler Bölümünde, sensörlerin çokluğu nedeniyle bir meteoroloji istasyonu kullandık ve ayrıca bunları takmak için bir Akrilik braket yaptık.

resim
resim

Yukarıdaki resimde gördüğünüz gibi, Dijital Işık Sensörü her zaman üsttedir, böylece aydınlatma bilgilerini toplayabilir. Akrilik braketin ortasına O2 Sensörü, Toz Sensörü ve CO2 Sensörü gibi ısı üretecek sensörler takılır. Son olarak, Akrilik braketin altındaki Sıcaklık ve Nem Sensörü.

Ayrıca Toprak Sıcaklık ve Nem Sensörü toprakta tek başına kurulur. Düğüm Parçası

resim
resim

Düğüm Parçası, Su Geçirmez Kutuya monte edilmiş bir Seeeduino LoRaWan'dır, Su Eklemleri aracılığıyla güce ve sensörlere bağlanır. Bunlar arasında Toz Sensörü LoRaWan'ın D3 dijital pimine bağlanır, CO2 Sensörü D4 ve D5 pimine bağlanır, Toprak Sensörü D6 ve D7 pimine bağlanır, O2 Sensörü analog pim A1'e bağlanır ve Işık Sensörü ve Barometre Sensörü I2C portuna bağlanır.

NOT: Toprak Sensörünün Mavi(Veri) kablosu ile Kırmızı(Vcc) kablosu arasına 10k Direnç eklenmelidir.

Seeeduino LoRaWan arada bir sensör değerlerini toplar ve bunları LoRa aracılığıyla Gateway'e gönderir. Aşağıdaki gibi veri formatı:

{

[0], /* Hava sıcaklığı(℃) */ [1], /* Hava nemi(%) */ [2], /* Rakım(m) yüksek bayt */ [3], /* Rakım(m) düşük bayt */ [4], /* CO2 konsantrasyonu(PPM) yüksek bayt */ [5], /* CO2 konsantrasyonu(PPM) düşük bayt */ [6], /* Toz konsantrasyonu(adet/0.01cf) yüksek bayt */ [7], /* Toz konsantrasyonu(adet/0.01cf) düşük bayt */ [8], /* Işık yoğunluğu(lüks) yüksek bayt */ [9], /* Işık yoğunluğu(lüks) düşük bayt */ [10], /* O2 konsantrasyonu(%) */ [11], /* Toprak sıcaklığı(℃) */ [12], /* Toprak nemi(%) */ [13], /* Akü voltajı(V) */ [14] /* Sensör hata kodu */ }

Sensör Hata Kodu baytındaki her bit, aşağıdaki gibi bir fark anlamı taşır:

{

bit0: 1; /* Barometre Sensör Hatası */ bit1: 1; /* CO2 Sensör Hatası */ bit2: 1; /* Toz Sensörü Hatası */ bit3: 1; /* Işık Sensörü Hatası */ bit4: 1; /* O2 Sensör Hatası */ bit5: 1; /* Toprak Sensörü Hatası */ saklıdır: 2; /* Rezerve */ }

Ağ Geçidi Parçası

resim
resim

Ağ Geçidi Parçası, Ağ Geçidi modülü RHF0M301–868 ve PRI 2 Köprü RHF4T002'yi takan bir Ahududu Pi'dir, bir Su Geçirmez Kutuya monte edilir ve Su Eklemleri aracılığıyla güç ve USB Kameraya bağlanır. Özel ürün yazılımı kullandığından, yapılandırmak için lütfen Seeed Wiki'yi takip edin.

Adım 4: Yazılım Programlama

Donanım Bağlantısı olarak Yazılım Programlama da bölünebilir, 3 bölüme ayrılabilir: Düğüm, Ağ Geçidi ve Web Sitesi.

Düğüm Parçası

Düğüm Bölümünün gerektirdiği sürücülerin çoğu zaten Origin_driver klasöründe bulunur. Aşağıdaki kitaplıkların manuel olarak yüklenmesi gerekir:

Adafruit_ASFcore

Proje karmaşık olduğu için Arduino IDE yerine Microsoft Visual Studio kullanmanızı öneririz. Visual Micro adlı bir eklenti, Visual Studio kullanarak bir Arduino projesi oluşturmanıza yardımcı olabilir, daha fazla bilgi için buraya tıklayın.

Daha iyi okunabilirlik ve sürdürülebilirlik için bu sefer Nesne Yönelimli Programlama kullanıyoruz. Bu projenin sınıf diyagramı aşağıdaki gibidir:

resim
resim

Halihazırda OOP sürücüsüne sahip sensörler için, bu projeyi uyarlamak için yeniden paketledik, diğerleri için sürücülerini OOP kullanarak yeniden yazdık. Ara katman katmanındaki Sensör sınıfı, gerçek sensörlerin arayüzlerini birleştirmek için kullanılır, örneğin bir barometre sensörü aynı anda sıcaklık, nem ve irtifa toplayabilir, bu nedenle sıcaklık, nem ve yükseklik elde etmek için 3 arayüze sahiptir. Ancak, sensör değeri elde etme programını aşağıdaki gibi daha karmaşık hale getirecek olan farklı yöntem adlarına sahiptirler:

barometre->getTemperature();

barometre->getHumidity(); barometre->getAltitude(); // … other_sensor->getSomeValue(); // …

Ancak OOP kullanarak şöyle görünür:

for (otomatik i = 0; i getValue();

}

Ayrıca bir Application sınıfını paketledik, IApplication arabirimini uygular, IoTea.ino'daki setup() ve loop() yöntemi Application nesnesinde setup() ve loop() yöntemini çağırabilir.

NOT: USB Seri SADECE hata ayıklamak için kullanılır. Hata ayıklamadan sonra, lütfen setup() yönteminde kodu başlattığını yorumlayın.

Ağ Geçidi Parçası

Gateway Part'ın ana klasördeki Python programı, fotoğraf çekmek ve her saat başı Amazon S3 Server'a yüklemek için kullanılır. Kullanmadan önce fswebcam'in Raspberry Pi'nizde kurulu olduğundan emin olun:

sudo apt-get güncelleme && sudo apt-get install fswebcam

Fotoğraf yüklemek istiyorsanız aşağıdaki adımları izleyerek AWS'nizi yapılandırın. Öncelikle aşağıdaki komutları kullanarak AWS SDK ve AWS CLI'yi Raspberry Pi'nize yükleyin:

sudo pip yükleme boto3

sudo pip kurulum awscli

ve ardından AWS CLI'yi çalıştırın:

sudo aws yapılandır

AWS Erişim Anahtarı Kimliğinizi, AWS Gizli Erişim Kimliğinizi ve Varsayılan bölge adınızı yapılandırın.

Fotoğraflarınızı yüklemek istemiyorsanız, AWS yapılandırma adımlarını atlayabilir ve photo.py'ye yüklemeyle ilgili kodlara yorum yapabilirsiniz. Bu programı her seferinde Raspberry Pi'yi açtıktan sonra çalıştırmak için /etc/init.d içinde bir dosya adı fotoğrafı oluşturabilir ve buna aşağıdaki kodu yazabilirsiniz.

#!/bin/bash

# /etc/init.d/photo ### BEGIN INIT INFO # Sağlar: seeed_photo # Gerekli-Başlangıç: $remote_fs $syslog # Gerekli-Durdur: $remote_fs $syslog # Varsayılan-Başlangıç: 2 3 4 5 # Varsayılan-Durdur: 0 1 6 # Kısa Açıklama: fotoğraf çekme initscript # Açıklama: Bu hizmet fotoğraf çekmeyi yönetmek için kullanılır ### END INIT INFO case "$1" başlangıçta) echo "Fotoğraf çekmeye başla" /home/rxhf/photo.py &;; stop) echo "Fotoğraf çekmeyi durdur" kill $(ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{ print $2 }');; *) echo "Kullanım: hizmet fotoğrafı başlat|durdur" çıkış 1;; esac çıkış 0

yürütme iznini ayarla

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

ve test et

sudo /etc/init.d/fotoğraf başlangıcı

Herhangi bir sorun yoksa durdurup başlangıç uygulamasına ekleyin.

sudo /etc/init.d/fotoğraf durdurma

sudo update-rc.d fotoğraf varsayılanları

NOT: Raspberry Pi önyüklemesinden sonra ağ geçidini başlatmak istiyorsanız, Seeed Wiki'deki ağ geçidi başlatma kodlarını /etc/rc.local'a ekleyin, şöyle görünsün:

#!/bin/sh -e

# # rc.local # # Bu komut dosyası, her çok kullanıcılı çalışma seviyesinin sonunda yürütülür. # Başarı durumunda betiğin "0"dan veya hata durumunda başka bir # değerden çıkacağından emin olun. # # Bu betiği etkinleştirmek veya devre dışı bırakmak için sadece yürütmeyi # bit değiştirin. # # Varsayılan olarak bu komut dosyası hiçbir şey yapmaz. # IP adresini yazdırın _IP=$(hostname -I) || true if ["$_IP"]; sonra printf "IP adresim %s\n" "$_IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl 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 çıkış 0

İnternet sitesi

Web sitesini CentOS 7'ye kurduk. Aşağıdaki adımlar size nasıl dağıtacağınızı gösterecektir.

Adım 1. Python3'ü yükleyin

sudo yum -y epel sürümünü yükle

sudo yum -y python36'yı kurun

Adım 2. Python pip ve sanal ortamı kurun

wget

sudo python36 get-pip.py sudo pip sanalenv yükleyin

Setp 3. Web sitemizi GitHub'dan klonlayın

sudo yum -y git'i kurun

git klon

Adım 4. Sanal ortam oluşturun ve etkinleştirin

virtualenv -p python36 iotea-hb

cd iotea-hb kaynak kutusu/etkinleştirme

Adım 5. Bağımlı kitaplıkları kurun

pip kurulum pymysql

pip kurulumu dbutils pip flask kurulumu pip websocket-client kurulumu pip cofigparser kurulumu

Adım 6. Veritabanı oluşturun

sudo yum -y mariadb mariabd sunucusunu kurun

sudo systemctl mariadb'yi etkinleştir sudo systemctl mariadb'yi başlat mysql -uroot -p

ve sonra bir tablo oluşturmak için iotea_hb.sql kullanın.

Adım 7. db.ini oluşturun ve bu kodları ona yazın

[db]

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

db.py'de db.ini'nin yolunu değiştir

# db.py'de

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

Adım 8. App.py'deki bağlantı noktasını değiştirin ve web sitesini başlatın:

# app.py'de

#app.run(debug=Doğru, bağlantı noktası=6000) app.run(debug=Doğru, bağlantı noktası=8080)

# terminalde

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

şimdi web tarayıcınızda 127.0.0.1:8080 adresini ziyaret edin, web sitesini görebilirsiniz, ancak gerçek zamanlı veriler görüntülenmez.

Adım 9. Loriot verilerini alın

Başka bir terminal açın, sanal ortama yeniden girin ve loriot uygulamasını başlatın:

cd iotea-hb

kaynak kutusu/gunicorn loriot'u etkinleştir: uygulama

Bir süre bekleyin, web sitesinde görüntülenen verileri göreceksiniz veya loriot.py'de wss'yi değiştirebilirsiniz:

# loriot.py'de

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

ws = create_connection()

Adım 5: Çalıştırma

Gerçek zamanlı verileri görüntülemek için web sitelerimizi ziyaret edebilirsiniz:

  • Ya'an'da
  • Gösteri için

Önerilen: