Isi kandungan:

Penyelesaian Lihat LoRa IoTea: 5 Langkah
Penyelesaian Lihat LoRa IoTea: 5 Langkah

Video: Penyelesaian Lihat LoRa IoTea: 5 Langkah

Video: Penyelesaian Lihat LoRa IoTea: 5 Langkah
Video: JANGAN TERTIPU DENGAN 5 TIPE ORANG BERBAHAYA INI I Motivasi Merry | Merry Riana 2024, November
Anonim
Melihat LoRa IoTea Solution
Melihat LoRa IoTea Solution

Sistem pengumpulan maklumat automatik yang digunakan untuk ladang teh. Ia adalah sebahagian daripada pengumpulan maklumat pertanian pintar.

Langkah 1: Perkara Yang Digunakan dalam Projek Ini

Komponen perkakasan

  • Grove - Sensor Karbon Dioksida (MH-Z16)
  • Grove - Sensor Cahaya Digital
  • Grove - Sensor Debu (PPD42NS)
  • Grove - Sensor Oksigen (ME2-O2-Ф20)
  • Sensor Kelembapan & Suhu Tanah
  • LoRa LoRaWAN Gateway - Kit 868MHz dengan Raspberry Pi 3
  • Grove - Sensor Temp & Humi & Barometer (BME280)

Aplikasi perisian dan perkhidmatan dalam talian

Microsoft Visual Studio 2015

Langkah 2: Cerita

Pertanian pintar adalah dengan menerapkan teknologi Internet of Things untuk pertanian tradisional, menggunakan sensor dan perisian untuk mengawal pengeluaran pertanian melalui platform mudah alih atau komputer, menjadikan pertanian tradisional lebih "pintar".

Di Gunung Mengding di timur laut Ya'an, Sichuan, rabung gunung berjalan ke barat ke timur di lautan hijau. Ini adalah pemandangan yang paling biasa bagi Deng yang berusia 36 tahun, salah satu pembuat teh Mengding dari generasinya, dengan ladang seluas 50mu (= 3,3 hektar) yang terletak di tingkat 1100m abovesea. Deng berasal dari keluarga pembuat teh, tetapi meneruskan warisan keluarga bukanlah tugas yang mudah. "Teh kami ditanam di ketinggian tinggi dalam lingkungan organik untuk memastikan kualitinya yang sangat baik. Tetapi pada masa yang sama, kepadatan pertumbuhannya rendah, biaya tinggi dan pemula tidak merata, menjadikan teh sukar untuk menuai. Itulah sebabnya teh gunung tinggi biasanya merupakan hasil panen kecil dan nilainya tidak tercermin di pasaran. " Selama dua tahun terakhir, Deng telah berusaha meningkatkan kesadaran pengguna tentang teh gunung tinggi untuk mempromosikan nilainya. Dan ketika dia bertemu Fan, yang sedang mencari perkebunan untuk menerapkan teknologi IoTea Seeed, pencocokan sempurna untuk penyelesaian dibuat. The Seeed IoTea Solution bertujuan untuk membantu para petani teh menguruskan ladang dengan lebih baik tanpa mengubah amalan tradisional penanaman teh, dan menyampaikan data persekitaran masa nyata dari ladang di platform terbuka.

Terdiri dari sensor, node, dan gateway, IoTea mengumpulkan data masa nyata dari faktor-faktor yang mungkin mempengaruhi kualiti teh semasa penanaman dan proses pengeluaran, termasuk suhu dan kelembapan, CO2, O2, PM, dan pendedahan cahaya. Data dikumpulkan oleh sensor, dikirim oleh node ke pintu masuk dan akhirnya ke awan, dan dibuat dapat diakses oleh pelanggan akhir di laman web.

Langkah 3: Sambungan Perkakasan

Langkah 1: Sambungan Gateway

Gerbang dipasang secara berasingan dalam kotak. Memandangkan masalah pelesapan panas, kami menambah 2 kipas. Salah satunya adalah untuk pelesapan haba Raspberry Pi, yang lain untuk peredaran udara dalaman dan luaran. Kotak pintu masuk diletakkan di rumah petani, jadi kami tidak perlu mempertimbangkan masalah kekuatannya.

Imej
Imej

Langkah 2: Sambungan Node

Node adalah terminal data, dan semua data asal diperoleh dari sini. Terdapat 6 sensor yang disambungkan ke simpul. Selain sensor kelembapan & suhu tanah, kami meletakkan sensor lain di dalam kotak louver.

Imej
Imej
Imej
Imej

Nod diletakkan di dalam kotak kalis air. Untuk mempunyai sambungan yang lebih baik ke simpul, kami membuat papan penyesuai. Akhirnya, kami akan memberikan pautan muat turun skema papan ini. Seperti yang ditunjukkan di bawah, kabel sensor dipasang ke papan penyesuai melalui blok terminal. Kami menggunakan 3 tiub MOS (SI2301) untuk membina litar suis untuk mengawal dan mematikan sensor dan kipas. Kipas digunakan untuk menyejukkan. Kami mempunyai sensor suhu (DS18B20) yang terpasang di papan. Ia dapat memberitahu kita suhu dalaman kotak, dan kemudian mikrokontroler memutuskan sama ada menghidupkan kipas. Kami menggunakan beberapa perintang untuk membuat litar pembahagi voltan untuk mengukur voltan bateri asid plumbum. Akhirnya, kami menempah 3 antara muka IIC dan port bersiri di papan untuk pengembangan dan debug kemudian.

Imej
Imej

Mari kita bincangkan masalah bekalan kuasa nod. Node diletakkan di ladang teh secara rawak, jadi kaedah bekalan kuasa tradisional tidak lagi berlaku. Menggunakan penyelesaian tenaga suria adalah idea yang baik. Terdapat banyak penyelesaian yang disediakan di pasaran pada masa ini. Kita boleh memilih salah satu yang memenuhi keperluan kita. Terdapat 3 bahagian dalam penyelesaian yang kami pilih: panel solar, pengawal cas solar dan bateri asid plumbum. Untuk menangkap tenaga suria dengan lebih baik, kami meletakkan panel suria di bahagian atas pendakap dan menyesuaikan sudut untuk memastikan bahawa ia menghadap matahari. Kami meletakkan pengawal cas solar ke dalam kotak yang sama dengan nod. Oleh kerana tidak ada ruang tambahan di dalam kotak, kami terpaksa mencari kotak kalis air baru untuk meletakkan bateri asid plumbum.

Imej
Imej
Imej
Imej
Imej
Imej

Langkah 4: Konfigurasi Perisian

Node

Di bahagian ini, kami akan memperkenalkan konfigurasi perisian terutamanya dari nod.

DataFormat

Data yang dimuat naik oleh nod ke gerbang:

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

Maksud setiap bit data:

Lora_data [0] : Suhu udara, ℃

Lora_data [1]: Kelembapan udara,%

Lora_data [2] : Ketinggian tinggi delapan, m

Lora_data [3]: Ketinggian rendah lapan

Lora_data [4]: Kepekatan CO2 tinggi lapan, ppm

Lora_data [5]: Kepekatan CO2 rendah lapan

Lora_data [6] : Kepekatan debu tinggi lapan, pcs / 0.01cf

Lora_data [7]: Kepekatan debu rendah lapan

Lora_data [8] : Intensitas cahaya tinggi lapan, lux

Lora_data [9]: Intensitas cahaya rendah lapan

Lora_data [10]: Kepekatan O2,% (data mentah dibahagi dengan 1000)

Lora_data [11]: Suhu tanah, ℃

Lora_data [12]: Kelembapan tanah,%

Lora_data [13]: Voltan bateri, v

Lora_data [14] : Kod ralat sensor

Kod salah:

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

Maksud setiap bit:

ralat bit 0: 1 ---- Temp & Humi & Barometer Sensor (BME280)

ralat bit 1: 1 ---- Carbon Dioxide Sensor (MH-Z16)

ralat bit 2: 1 ---- Sensor Debu (PPD42NS)

bit 3: 1 ---- Kesalahan Sensor Cahaya Digital

ralat bit 4: 1 ---- Sensor Oksigen (ME2-O2-Ф20)

ralat bit 5: 1 ---- Kesalahan Kelembapan Tanah & Sensor Suhu

bit 6: Terpelihara

bit 7: Terpelihara

Kami telah membuat Error_code_transform.exe, membukanya dan memasukkan kod ralat dalam heksadesimal, anda akan dengan cepat mengetahui sensor mana yang salah. Pautan muat turun ada di akhir artikel ini.

Penyesuaian parameter: a) Kitaran penghantaran data

// seeedtea.ino

#defineinterval_time 600 // saat

Parameter ini dapat diubah untuk mengubah siklus pengiriman data. Dalam setiap kitaran, pemerolehan data memakan masa sekitar 1 minit. Jadi, tidak digalakkan menukar nilai ini menjadi kurang dari 60 saat.

b) Masa pemanasan sensor habuk

//seeedtea.ino

#definePreheat_time 30000 // Masa pemanasan Sensor Debu, miliseond //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s

c) Pekali voltan

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 // Nilai ADC × Battery_coefficient = bateri_voltage #defineSolar_coefficient 0.22559 // Nilai ADC × Solar_coefficient = solar_voltage

Kedua-dua parameter ini dikira berdasarkan litar pembahagi voltan.

d) Ambang suhu pembukaan kipas

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperaturethreshold #defineFan_start_light 500 // intensiti cahaya

Apabila suhu sebenar melebihi ambang, kipas akan mula sejuk.

e) Parameter inisialisasi sensor O2

// Oksigen.cpp

# tentukanO2_peratus 208.00 //20.8%

f) Suis makro

//seeedtea.ino

#defineLORA_RUN // Selepas komen, inisialisasi Lora dan penghantaran data akan berhenti #defineSENSOR_RUN // Selepas komen itu, eksternal sensor akan berhenti berfungsi //POWER_Ctrl.cpp #defineFAN_ON // Fortesting only, Aplikasi praktikal perlu dikomentari / **** *** Mod kawalan DS18B20 ********************** / #defineSlower_Mode // Mod perlahan untuk mendapatkan suhu. Ulasan adalah mod pantas

g) Pemetaan pin

D2: Indikator LED dan mikrokontroler tetapan semula luaran IIC: SCL dan SDA

//Dust_other.h

#defineDust_pin 3 // Sensor habuk //CO2.cpp # defineCO2_serial Serial1 // gunakan port hardwareserial (D0 & D1) //seeedtea.ino #definedataPin 6 // Pin data tanah #defineclockPin 7 // Pin jam tanah // POWER_Ctrl. h # defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Fan #defineAir_CtrlPin 10 // Pin kawalan untuk sensor yang diletakkan di louverbox #defineSoil_CtrlPin 11 // Soil Moisture & Temperature Sensor pin pin #defineBattery_pin A2 // Ukur voltan bateri / Ukur voltan panel suria //Oxygen.h # defineO2_pin A1 // O2 sensor

h) Pemasa pengawas

Pemasa pengawas digunakan untuk memantau status berjalan sistem. Apabila sistem berjalan tidak normal, node akan diset semula, sehingga dapat berjalan secara berterusan untuk waktu yang lama.

Perpustakaan yang akan dirujuk:

  • Adafruit_SleepyDog.h telah ditambahkan ke projek
  • Adafruit_ASFcore-master.zip dibungkus dalam folder projek dan perlu ditambahkan secara manual ke Arduino IDE.

Fungsi yang berkaitan:

Dayakan pengawas

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

Parameter input:

Int maxPeriodMS: Masa menunggu dalam milisaat. Maksimum yang dibenarkan ialah 16000 milisaat.

nilai pulangan:

Jenis int, mengembalikan masa menunggu sebenar

Tetapkan semula pengawas

batal WatchdogSAMD:: reset ()

Panggil fungsi ini untuk menetapkan semula pemasa pengawas, yang disebut sebagai "memberi makan anjing." Melebihi masa menunggu tanpa menetapkan semula akan menyebabkan nod dimulakan semula.

Berhenti pengawas

batal WatchdogSAMD:: lumpuhkan ()

Pintu Gerbang

Di bahagian ini kami akan memperkenalkan cara menyambung ke pelayan Loriot.

Langkah 1: Pendaftaran Gerbang Pelayan Loriot

a) Pengguna baru perlu mendaftarkan akaun terlebih dahulu, klik alamat pendaftaran. Isi Nama Pengguna, Kata Laluan dan alamat e-mel untuk mendaftar, setelah pendaftaran e-mel akan dihantar kepada anda, ikuti arahan dalam e-mel untuk mengaktifkannya.

b) Setelah berjaya diaktifkan, klik di sini untuk log masuk. Tahap lalai adalah "Community Network", ia menyokong 1 Gateway (RHF2S001) dan 10 nod.

c) Masukkan Dashboard -> Gateway, klik Tambah Gateway mula untuk menambah Gateway.

d) Pilih Raspberry Pi 3

e) Tetapkan seperti di bawah:

  • Bahagian depan radio -> RHF2S001 868/915 MHz (SX1257)
  • BUS -> SPI

f) Isi alamat MAC RHF2S001 anda, hendaklah dalam format b8: 27: eb: xx: xx: xx. Dan juga memasukkan maklumat Lokasi Gateway.

g) Klik "Daftar gateway Raspberry Pi" untuk menyelesaikan pendaftaran.

Imej
Imej

h) Klik pintu masuk yang didaftarkan untuk memasuki halaman konfigurasi, beralih "Pelan Frekuensi" secara manual, rancangan anda di sini ditentukan oleh jenis jenis RHF2S001 anda, paket yang tersedia adalah CN470 , CN473 , CN434 , CN780 , EU868, setelah dipilih sila muat semula halaman untuk mendapatkan saluran yang tepat. Dalam wiki ini kami memilih EU868.

i) Jalankan perintah di terminal dempul:

cd /home/rxhf/loriot/1.0.2

sudo systemctl hentikan pktfwd 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.

Imej
Imej

Langkah 2: Peranti Loriot Server Connect Node

a) Dapatkan saluran gerbang yang tersedia

Saluran gerbang semasa dapat diperoleh dari Dashboard -> Gateway -> Gateway Anda, anda dapat melihat saluran yang tersedia seperti gambar di bawah.

Imej
Imej

b) Konfigurasi GPS Seeeduino LoRAWAN (RHF3M076)

Buka monitor bersiri ArduinoIDE, ketik arahan di bawah.

pada + ch

Untuk mengesahkan saluran lalai GPS Seeeduino_LoRAWAN anda, anda akan mendapat 3 saluran. Sekiranya tidak ada saluran yang tersedia, anda boleh menukar saluran Seeeduino_LoRAWAN dengan arahan di bawah.

pada + ch = 0, 868.1

pada + ch = 1, 868.3 pada + ch = 2, 868.5

Kemudian anda boleh menggunakan di + ch sekali lagi untuk memeriksa.

c) Tambahkan GPS Seeeduino_LoRAWAN sebagai ABP NodeLog dalam pelayan Loriot, Klik Dash Board -> Aplikasi -> SimpleApp. Klik Import ABP , input di bawah item

  • DevAddr: Seeeduino_LoRAWAN GPS melalui arahan "AT + ID" (Nota: Loriot tidak menyokong penyambung usus besar, perlu dikeluarkan secara manual)
  • FCntUp: Setto 1
  • FCntDn: Setto 1
  • NWKSKEY : Nilai Lalai 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY : Nilai Lalai 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI : DEVEUI, Seeeduino_LoRAWAN GPS melalui perintah "AT + ID"
Imej
Imej

Klik butang Import Peranti untuk menyelesaikan import peranti. Sekarang pilih Dashboard-> Applications -> SampleApp, anda akan melihat ABP Node baru yang baru sahaja anda tambahkan.

Imej
Imej

d) Menghantar data dari Seeeduino_LoRAWAN

PERHATIAN! Ini hanya ujian.

Kembali ke monitor bersiri ArduinoIDE, hantar arahan:

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

Kemudian pergi ke Dashboard -> Applications -> SampleApp -> Device, klik Node Device EUI atau DevAddr, anda akan menemui data yang baru anda hantar di sini.

Imej
Imej

Untuk perincian, sila rujuk wiki ini.

Langkah 5: Pembinaan Laman Web

Alat Berkaitan

  • virtualenv
  • Python3
  • Gunicorn
  • Penyelia
  • Nginx
  • MySQL

Kami menggunakan CentOS7 sebagai persekitaran penggunaan ujian

virtualenv

Gunakan virtualenv untuk membina persekitaran pengeluaran python3 yang berdiri sendiri

a) pasang

pip pasang virtualenv

b) mewujudkan persekitaran maya python3

virtualenv -p python3 iotea

c) mulakan persekitaran maya dan masukkan direktori iotea

tong sumber / aktifkan

d) wujud persekitaran

nyahaktifkan

Python3

a) pasang

yum pasang pelepasan epel

yum pasang python36

b) pasang pustaka bergantung PyMySQL, DBUtils, Flask, websocket-client, configparser

pip memasang pymysql

pip install dbutils pip install flask pip install websocket-client pip install configparser

Gunicorn

a) pasang (di bawah persekitaran Python3)

pip pasang gunicorn

b) jalankan projek termos (di bawah direktori projek iotea)

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

c) jalankan websocket-clint untuk mendapatkan data loriot

gunicorn loriot: aplikasi

d) melihat pokok proses Gunicorn

pstree -ap | grep gunicorn

Penyelia

a) pasang (pengguna root)

penyelia pemasangan pip

b) menghasilkan fail konfigurasi

echo_supervisord_conf> /etc/supervisord.conf

c) membuat direktori dan memperkenalkan konfigurasi direktori

mkdir -p /etc/supervisor/conf.d

Edit /etc/supervisord.conf dan ubah medan fail di bawah [include] di akhir fail.

Perhatikan bahawa anda perlu membuang ';' di hadapan dua baris ini, yang merupakan watak komen.

[sertakan]

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

Bermakna untuk memperkenalkan /etc/supervisor/conf.d/. Fail konfigurasi berikut digunakan sebagai fail konfigurasi proses (dipantau oleh penyelia).

d) konfigurasi masuk (di bawah direktori iotea)

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

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

e) hidangan iotea terbuka

superviosrctl memuat semula #muat semula fail konfigurasi

superviosrctl memulakan loriot #open penerimaan data loriot superviosrctl memulakan iotea #membuka aplikasi termos iotea

f) operasi biasa yang lain

supervisorctl tambah nilai # muat semula fail konfigurasi

supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # view more command

Nginx

a) pasang

yum install -y nginx

b) konfigurasi

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

c) mulakan Nginx

systemctl mulakan nginx.service

MySQL

a) parameter yang berkaitan

pengguna = 'root'

passwd = '1234' db = 'iotea' port = 3306

b) fail

iotea_iotea.sql

c) fail konfigurasi

db.ini

Disyorkan: