Daftar Isi:

Solusi Seed LoRa IoTea: 5 Langkah
Solusi Seed LoRa IoTea: 5 Langkah

Video: Solusi Seed LoRa IoTea: 5 Langkah

Video: Solusi Seed LoRa IoTea: 5 Langkah
Video: Tutorial LoRaWan Antares - Hello World di frek 923Mhz [part 1] 2024, Juli
Anonim
Lihat Solusi LoRa IoTea
Lihat Solusi LoRa IoTea

Sistem pengumpulan informasi otomatis yang diterapkan pada perkebunan teh. Ini adalah bagian dari pengumpulan informasi pertanian cerdas.

Langkah 1: Hal-hal yang Digunakan dalam Proyek Ini

Komponen perangkat keras

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

Aplikasi perangkat lunak dan layanan online

Microsoft Visual Studio 2015

Langkah 2: Cerita

Pertanian cerdas adalah menerapkan teknologi Internet of Things ke pertanian tradisional, menggunakan sensor dan perangkat lunak untuk mengontrol produksi pertanian melalui platform seluler atau komputer, menjadikan pertanian tradisional lebih “pintar”.

Di Gunung Mengding di timur laut Ya'an, Sichuan, punggungan gunung membentang dari barat ke timur dalam lautan hijau. Ini adalah pemandangan yang paling akrab bagi Deng yang berusia 36 tahun, salah satu dari sedikit pembuat teh Mengding dari generasinya, dengan perkebunan seluas 50mu (=3,3 hektar) yang terletak di 1100m di atas permukaan laut. Deng berasal dari keluarga pembuat teh, tetapi meneruskan warisan keluarga bukanlah tugas yang mudah. “Teh kami ditanam di dataran tinggi di lingkungan organik untuk memastikan kualitasnya yang sangat baik. Tetapi pada saat yang sama, kepadatan pertumbuhan rendah, biaya tinggi dan tunas tidak merata, membuat teh sulit dipanen. Itu sebabnya teh gunung tinggi biasanya panen kecil dan nilainya tidak tercermin di pasar.” Selama dua tahun terakhir, Deng telah berusaha meningkatkan kesadaran konsumen akan teh pegunungan tinggi untuk mempromosikan nilainya. Dan ketika dia bertemu Fan, yang sedang mencari perkebunan untuk mengimplementasikan teknologi IoTea Seeed, solusi yang cocok dibuat. Solusi Seeed IoTea bertujuan untuk membantu petani teh mengelola perkebunan dengan lebih baik tanpa mengubah praktik tradisional budidaya teh, dan untuk menyajikan data lingkungan real-time dari perkebunan pada platform terbuka.

Terdiri dari sensor, node, dan gateway, IoTea mengumpulkan data real-time dari faktor-faktor yang dapat mempengaruhi kualitas teh selama proses budidaya dan produksi, termasuk suhu dan kelembaban, CO2, O2, PM, dan paparan cahaya. Data dikumpulkan oleh sensor, dikirim oleh node ke gateway dan akhirnya ke cloud, dan dapat diakses oleh pelanggan akhir di halaman web.

Langkah 3: Koneksi Perangkat Keras

Langkah1: Koneksi Gerbang

Gateway dipasang secara terpisah di dalam kotak. Mempertimbangkan masalah pembuangan panas, kami menambahkan 2 kipas. Salah satunya adalah untuk pembuangan panas Raspberry Pi, yang lainnya untuk sirkulasi udara internal dan eksternal. Kotak gerbang ditempatkan di rumah petani, jadi kita tidak perlu mempertimbangkan masalah kekuatannya.

Gambar
Gambar

Langkah2: Koneksi Node

Node adalah terminal data, dan semua data asli diperoleh dari sini. Ada 6 sensor yang terhubung ke node. Selain sensor kelembaban & suhu tanah, kami menempatkan sensor lain di dalam kotak louver.

Gambar
Gambar
Gambar
Gambar

Node ditempatkan dalam kotak tahan air. Untuk memiliki koneksi yang lebih baik ke node, kami membuat papan adaptor. Terakhir, kami akan memberikan tautan unduhan skema papan ini. Seperti yang ditunjukkan di bawah ini, kabel sensor dicolokkan ke papan adaptor melalui blok terminal. Kami menggunakan 3 tabung MOS (SI2301) untuk membangun sirkuit sakelar untuk mengontrol on dan off sensor dan kipas. Kipas angin digunakan untuk mendinginkan. Kami memiliki sensor suhu (DS18B20) yang terpasang di papan. Ini dapat memberi tahu kami suhu internal kotak, dan kemudian mikrokontroler memutuskan apakah akan menyalakan kipas. Kami menggunakan beberapa resistor untuk membuat rangkaian pembagi tegangan untuk mengukur tegangan baterai timbal-asam. Akhirnya, kami memesan 3 antarmuka IIC dan port serial di papan untuk ekspansi dan debugging nanti.

Gambar
Gambar

Mari kita bicara tentang masalah catu daya node. Node ditempatkan di perkebunan teh secara acak, sehingga metode catu daya tradisional tidak lagi berlaku. Menggunakan solusi tenaga surya adalah ide yang bagus. Ada banyak solusi yang tersedia di pasaran saat ini. Kita bisa memilih salah satunya yang sesuai dengan kebutuhan kita. Ada 3 bagian dalam solusi yang kami pilih: panel surya, pengontrol muatan surya, dan baterai asam timbal. Untuk menangkap energi matahari dengan lebih baik, kami menempatkan panel surya di bagian atas braket dan menyesuaikan sudutnya untuk memastikan menghadap matahari. Kami menempatkan solar charge controller ke dalam kotak yang sama dengan node. Karena tidak ada ruang ekstra di dalam kotak, kami harus mencari kotak tahan air baru untuk menempatkan baterai asam timbal.

Gambar
Gambar
Gambar
Gambar
Gambar
Gambar

Langkah 4: Konfigurasi Perangkat Lunak

simpul

Pada bagian ini, kami akan memperkenalkan konfigurasi perangkat lunak utama dari node.js.

Format data

Data yang diunggah oleh node ke gateway:

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

Arti dari setiap bit data:

Lora_data[0] Suhu udara, Lora_data[1] Kelembaban udara, %

Lora_data [2] Ketinggian tinggi delapan, m

Lora_data[3] Ketinggian rendah delapan

Lora_data[4] Konsentrasi CO2 tinggi delapan, ppm

Lora_data[5] Konsentrasi CO2 rendah delapan

Lora_data[6] Konsentrasi debu tinggi delapan, pcs/0.01cf

Lora_data[7] Konsentrasi debu rendah delapan

Lora_data[8] Intensitas cahaya tinggi delapan, lux

Lora_data[9] Intensitas cahaya rendah delapan

Lora_data[10] Konsentrasi O2, % (data mentah dibagi 1000)

Lora_data[11] Suhu tanah, Lora_data[12] Kelembaban tanah, %

Lora_data[13] Tegangan baterai, v

Lora_data[14] Kode kesalahan sensor

Kode kesalahan:

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

Arti dari setiap bit:

bit 0: 1---- Sensor Suhu & Humi & Barometer (BME280) error

bit 1: 1---- Sensor Karbon Dioksida (MH-Z16) kesalahan

bit 2: 1---- Sensor Debu PPD42NS) error

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

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

bit 5: 1---- Kesalahan Sensor Kelembaban & Suhu Tanah

bit 6: Dipesan

bit 7: Dipesan

Kami telah membuat Error_code_transform.exe, buka dan masukkan kode kesalahan dalam heksadesimal, Anda akan segera tahu sensor mana yang salah. Link download ada di akhir artikel ini.

Penyesuaian parameter: a) Siklus transmisi data

// seeedtea.ino

#defineinterval_time 600 //detik

Parameter ini dapat divariasikan untuk mengubah siklus transmisi data. Dalam setiap siklus, akuisisi data memakan waktu sekitar 1 menit. Jadi, tidak disarankan untuk mengubah nilai ini menjadi kurang dari 60 detik.

b) Waktu pemanasan sensor debu

//seeedtea.ino

#definePreheat_time 30000 //DustSensor waktu pemanasan, milidetik //Dust_other.cpp #definesampletime_ms 30000 //samplingtime30s

c) Koefisien tegangan

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 //nilai ADC× Battery_coefficient = battery_voltage #defineSolar_coefficient 0.22559 //nilai ADC × Solar_coefficient = solar_voltage

Kedua parameter ini dihitung berdasarkan rangkaian pembagi tegangan.

d) Ambang suhu pembukaan kipas

//POWER_Ctrl.cpp

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

Ketika suhu aktual melebihi ambang batas, kipas akan mulai mendingin.

e) Parameter inisialisasi sensor O2

//Oksigen.cpp

#defineO2_persentase 208.00 ///20.8%

f) Saklar makro

//seeedtea.ino

#defineLORA_RUN //Setelah komentar, inisialisasi Lora dan transmisi data akan berhenti #defineSENSOR_RUN //Setelah komentar, sensor eksternal akan berhenti bekerja //POWER_Ctrl.cpp #defineFAN_ON //Fortesting saja, Aplikasi praktis perlu dikomentari /**** ***Mode kontrol DS18B20 **********************/ #defineSlower_Mode // Mode lambat untuk mendapatkan suhu. Komentar keluar adalah mode cepat

g) Pemetaan pin

D2: Indikator LED dan mikrokontroler reset eksternalIIC: SCL dan SDA

//Debu_lainnya.h

#defineDust_pin 3 //Sensor debu //CO2.cpp #defineCO2_serial Serial1 //gunakan port serial perangkat keras (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 kontrol untuk sensor yang ditempatkan di louverbox #defineSoil_CtrlPin 11 // Pin sakelar Sensor Kelembaban & Suhu Tanah #defineBattery_pin A2 // Mengukur tegangan baterai_pin A3 /Solar_pin A3 /Mengukur tegangan panel surya //Oxygen.h #defineO2_pin A1 //O2 sensor

h) Pengatur waktu pengawas

Watchdog timer digunakan untuk memonitor status sistem berjalan. Ketika sistem berjalan tidak normal, node akan direset, sehingga dapat berjalan terus menerus untuk waktu yang lama.

Perpustakaan yang akan dirujuk:

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

Fungsi terkait:

Aktifkan pengawas

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

Parameter masukan:

Int maxPeriodMS: Waktu tunggu dalam milidetik. Maksimum yang diizinkan adalah 16000 milidetik.

nilai kembali:

Jenis int, kembalikan waktu tunggu yang sebenarnya

Setel ulang pengawas

void WatchdogSAMD::reset()

Panggil fungsi ini untuk menyetel ulang pengatur waktu pengawas, yang disebut sebagai "memberi makan anjing". Melebihi waktu tunggu tanpa reset akan menyebabkan node restart.

Hentikan pengawas

void WatchdogSAMD::disable()

gerbang

Di bagian ini kami akan memperkenalkan cara terhubung ke server Loriot.

Langkah1: Pendaftaran Gerbang Server Loriot

a) Pengguna baru perlu mendaftarkan akun terlebih dahulu, klik alamat pendaftaran. Isi UserName, Password dan alamat email untuk mendaftar, setelah registrasi akan dikirimkan email kepada Anda, silakan ikuti instruksi di email untuk aktivasi.

b) Setelah aktivasi berhasil, klik di sini untuk masuk. Tingkat default adalah “Jaringan Komunitas”, mendukung 1 Gateway (RHF2S001) dan 10 node.

c) Masuk Dashboard -> Gateway, klik Add Gateway mulai menambahkan Gateway.

d) Pilih Raspberry Pi 3

e) Atur seperti di bawah ini:

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

f) Isikan MAC address RHF2S001 Anda, sebaiknya dalam format b8:27:eb:xx:xx:xx. Dan juga masukan informasi Lokasi Gateway.

g) Klik “Register Raspberry Pi gateway” untuk menyelesaikan registrasi.

Gambar
Gambar

h) Klik gateway yang terdaftar untuk masuk ke halaman konfigurasi, alihkan “Frequency Plan” secara manual, paket Anda di sini ditentukan oleh jenis jenis RHF2S001 Anda, paket yang tersedia adalah CN470,CN473, CN434,CN780,EU868, setelah dipilih silahkan refresh halaman untuk mendapatkan saluran yang tepat. Di wiki ini kami memilih EU868.

i) Jalankan perintah di terminal dempul:

cd /home/rxhf/loriot/1.0.2

sudo systemctl stop 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.

Gambar
Gambar

Langkah2: Perangkat Loriot Server Connect Node

a) Dapatkan saluran gateway yang tersedia

Saluran gateway saat ini dapat diperoleh dari Dashboard -> Gateway -> Gateway Anda, Anda dapat melihat saluran yang tersedia seperti gambar di bawah ini.

Gambar
Gambar

b) Konfigurasi Seeeduino LoRAWAN GPS(RHF3M076)

Buka serial monitor ArduinoIDE, ketuk perintah di bawah ini.

di+ch

Untuk mengkonfirmasi saluran default GPS Seeeduino_LoRAWAN Anda, Anda akan mendapatkan 3 saluran. Jika tidak ada saluran yang tersedia, Anda dapat mengubah saluran Seeeduino_LoRAWAN dengan perintah di bawah ini.

di+ch=0, 868.1

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

Kemudian Anda dapat menggunakan at+ch lagi untuk memeriksa.

c) Tambahkan Seeeduino_LoRAWAN GPS sebagai ABP NodeLog di server Loriot, Klik Dash Board -> Applications -> SimpleApp. Klik Impor ABP masukkan item di bawah ini

  • DevAddr: Seeeduino_LoRAWAN GPS melewati perintah "AT+ID" (Catatan: Loriot tidak mendukung konektor titik dua, perlu dihapus secara manual)
  • FCntUp:Setto 1
  • FCntDn:Setto 1
  • NWKSKEY:Nilai default 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY:Nilai default 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI:DEVEUI, Seeeduino_LoRAWAN GPS melewati perintah "AT+ID"
Gambar
Gambar

Klik tombol Impor Perangkat untuk menyelesaikan impor perangkat. Sekarang pilih Dashboard-> Applications -> SampleApp, Anda akan melihat ABP Node baru yang baru saja Anda tambahkan.

Gambar
Gambar

d) Kirim data dari Seeeduino_LoRAWAN

PERHATIAN! Ini hanyalah ujian.

Kembali ke serial monitor ArduinoIDE, kirim perintah:

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

Lalu pergi ke Dashboard -> Applications -> SampleApp -> Device, klik Node Device EUI atau DevAddr, Anda akan menemukan data yang baru saja Anda kirim di sini.

Gambar
Gambar

Untuk detailnya, silakan merujuk ke wiki ini.

Langkah 5: Konstruksi Situs Web

Alat Terkait

  • virtualenv
  • Python3
  • gunicorn
  • Pengawas
  • Nginx
  • MySQL

Kami menggunakan CentOS7 sebagai lingkungan penerapan pengujian

virtualenv

Gunakan virtualenv untuk membangun lingkungan produksi python3 mandiri

a) pasang

pip install virtualenv

b) buat lingkungan virtual python3

virtualenv -p python3 iotea

c) mulai lingkungan virtual dan masuk ke direktori iotea

sumber bin/aktifkan

d) lingkungan yang ada

menonaktifkan

Python3

a) pasang

yum instal epel-release

yum instal python36

b) instal pustaka dependen PyMySQL, DBUtils, Flask, websocket-client, configparser

pip instal pymysql

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

gunicorn

a) instal (di bawah lingkungan Python3)

pip install gunicorn

b) jalankan proyek flask (di bawah direktori proyek iotea)

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

c) jalankan websocket-clint untuk mendapatkan data loriot

loriot gunicorn: aplikasi

d) lihat pohon proses Gunicorn

pstree -ap|grep gunicorn

Pengawas

a) instal (pengguna root)

pengawas pemasangan pip

b) menghasilkan file 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 bidang file di bawah [include] di akhir file.

Perhatikan bahwa Anda harus menghapus ';' di depan dua baris ini, yang merupakan karakter komentar.

[termasuk]

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

Berarti memperkenalkan /etc/supervisor/conf.d/. File konfigurasi berikut digunakan sebagai file konfigurasi proses (dipantau oleh supervisor).

d) konfigurasi masuk (di bawah direktori iotea)

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

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

e) buka servis iotea

superviosrctl reload #reload file konfigurasi

superviosrctl start loriot #buka penerimaan data loriot superviosrctl start iotea #buka aplikasi iotea flask

f) operasi umum lainnya

supervisorctl reload # reload file konfigurasi

supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # lihat perintah lainnya

Nginx

a) pasang

yum instal -y nginx

b) konfigurasi

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

c) mulai Nginx

systemctl mulai nginx.service

MySQL

a) parameter terkait

pengguna = 'root'

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

b) berkas

iotea_iotea.sql

c) file konfigurasi

db.ini

Direkomendasikan: