Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
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.
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.
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.
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.
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.
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.
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.
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"
Klik tombol Impor Perangkat untuk menyelesaikan impor perangkat. Sekarang pilih Dashboard-> Applications -> SampleApp, Anda akan melihat ABP Node baru yang baru saja Anda tambahkan.
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.
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