Isi kandungan:

Melihat IoTea LoRa Solution (Kemas kini 1811): 5 Langkah
Melihat IoTea LoRa Solution (Kemas kini 1811): 5 Langkah

Video: Melihat IoTea LoRa Solution (Kemas kini 1811): 5 Langkah

Video: Melihat IoTea LoRa Solution (Kemas kini 1811): 5 Langkah
Video: The Potter's - Keterlaluan (Video Clip) 2024, Julai
Anonim
Penyelesaian Lihat IoTea LoRa (Kemas kini 1811)
Penyelesaian Lihat IoTea LoRa (Kemas kini 1811)

Internet + adalah konsep yang popular sekarang. Kali ini kami mencuba Internet plus pertanian untuk membuat kebun teh tumbuh Teh Internet.

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

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 ketinggian 1100m dari permukaan laut. 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 pegunungan biasanya merupakan hasil panen kecil dan nilainya tidak tercermin di pasar. "Selama dua tahun terakhir, Deng telah berusaha untuk meningkatkan kesedaran 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.

Langkah 3: Sambungan Perkakasan

Perkakasan projek ini boleh dibahagikan kepada 4 bahagian: Daya, Sensor, Node dan Gateway. Artikel berikut akan menunjukkan kepada anda bagaimana menyelesaikannya langkah demi langkah.

Bahagian Kuasa

Bahagian Daya terutamanya mengandungi Panel Suria dan Bateri Lithium, jika anda hanya membina projek ini untuk demonstrasi, anda boleh mengabaikannya. Atau anda boleh mengikuti tutorial sebelumnya untuk memasang kuasa nod.

Bahagian Sensor

Di Bahagian Sensor, kerana banyaknya sensor, kami menggunakan stesen cuaca, dan juga membuat pendakap Akrilik untuk memasangnya.

Imej
Imej

Seperti yang anda lihat pada gambar di atas, Sensor Cahaya Digital selalu berada di atas, sehingga dapat mengumpulkan maklumat pencahayaan. Sensor yang akan menghasilkan haba dipasang di tengah-tengah pendakap Akrilik, seperti Sensor O2, Sensor Debu dan Sensor CO2. Akhirnya, Sensor Suhu dan Kelembapan di bahagian bawah pendakap Akrilik.

Selain itu, Sensor Suhu dan Kelembapan Tanah dipasang sendiri di dalam tanah. Bahagian Node

Imej
Imej

Node Part adalah LoRaWan Seeeduino yang dipasang di Kotak Kalis Air, ia bersambung ke kuasa dan sensor melalui Sendi Air. Antaranya, Dust Sensor menyambung ke pin digital LoRaWan D3, CO2 Sensor menyambung ke pin D4 & D5, Soil Sensor menyambung ke pin D6 & D7, O2 Sensor menyambung ke pin analog A1 dan Light Sensor & Barometer Sensor menyambung ke port I2C.

CATATAN: Perintang 10k harus ditambahkan antara kabel Biru (Data) Soil Sensor dan kabel Merah (Vcc).

Seeeduino LoRaWan mengumpulkan nilai sensor sekali sekala, dan menghantarnya ke Gateway melalui LoRa. Format data seperti di bawah:

{

[0], / * Suhu udara (℃) * / [1], / * Kelembapan udara (%) * / [2], / * Ketinggian (m) bait tinggi * / [3], / * Ketinggian (m) byte rendah * / [4], / * kepekatan CO2 (PPM) bait tinggi * / [5], / * kepekatan CO2 (PPM) bait rendah * / [6], / * Kepekatan habuk (pcs / 0.01cf) bait tinggi * / [7], / * Kepekatan habuk (pcs / 0.01cf) byte rendah * / [8], / * Intensiti cahaya (lux) bait tinggi * / [9], / * Intensiti cahaya (lux) bait rendah * / [10], / * Kepekatan O2 (%) * / [11], / * Suhu tanah (℃) * / [12], / * Kelembapan tanah (%) * / [13], / * Voltan bateri (V) * / [14] / * Kod ralat sensor * /}

Setiap bit dalam Kod Ralat Sensor mempunyai makna yang berbeza, seperti di bawah:

{

bit0: 1; / * Ralat Sensor Barometer * / bit1: 1; / * Ralat Sensor CO2 * / bit2: 1; / * Ralat Sensor Debu * / bit3: 1; / * Ralat Sensor Cahaya * / bit4: 1; / * Ralat Sensor O2 * / bit5: 1; / * Ralat Sensor Tanah * / terpelihara: 2; / * Terpelihara * /}

Bahagian Gerbang

Imej
Imej

Gateway Part adalah Raspberry Pi yang memasang modul Gateway RHF0M301-868 dan PRI 2 Bridge RHF4T002, dipasang di Kotak Kalis Air dan disambungkan ke Kuasa & Kamera USB melalui Air Sendi. Kerana menggunakan firmware khusus, ikuti Seeed Wiki untuk mengkonfigurasinya.

Langkah 4: Pengaturcaraan Perisian

Sebagai Sambungan Perkakasan, Pengaturcaraan Perisian juga dapat dipisahkan, dapat dibagi menjadi 3 bahagian: Node, Gateway dan Laman Web.

Bahagian Node

Sebilangan besar pemacu yang diperlukan Bahagian Node sudah ada dalam folder origin_driver. Perpustakaan yang mengikuti perlu dipasang secara manual:

Adafruit_ASFcore

Kerana projeknya rumit, kami mengesyorkan anda menggunakan Microsoft Visual Studio dan bukannya Arduino IDE. Plugin yang disebut Visual Micro dapat membantu anda membuat projek Arduino dengan menggunakan Visual Studio, klik di sini untuk maklumat lebih lanjut.

Untuk kebolehbacaan dan kesediaan yang lebih baik, kami menggunakan Pengaturcaraan Berorientasikan Objek kali ini. Gambarajah kelas projek ini seperti di bawah:

Imej
Imej

Untuk sensor tersebut sudah mempunyai pemacu OOP, kami membungkus semula untuk menyesuaikan projek ini, untuk yang lain, kami menulis semula pemacu mereka dengan menggunakan OOP. Kelas Sensor di lapisan middleware digunakan untuk menyatukan antara muka sensor sebenar, misalnya, sensor barometer dapat mengumpulkan suhu, kelembapan dan ketinggian pada waktu yang sama, sehingga memiliki 3 antarmuka untuk memperoleh suhu, kelembapan dan ketinggian. Tetapi mereka mempunyai nama kaedah perbezaan, yang akan menjadikan program memperoleh nilai sensor lebih rumit, seperti ini:

barometer-> getTemperature ();

barometer-> getHumidity (); barometer-> getAltitude (); //… another_sensor-> getSomeValue (); //…

Tetapi menggunakan OOP, ia kelihatan seperti ini:

untuk (auto i = 0; i getValue ();

}

Kami juga mengemas kelas Aplikasi, menerapkan antarmuka IApplication, kaedah setup () dan loop () dalam kaedah IoTea.ino dapat memanggil setup () dan loop () dalam objek Aplikasi.

CATATAN: Serial USB digunakan untuk melakukan debug SAHAJA. Setelah melakukan debug, sila beri komen bahawa ia menginisialisasi kod dalam kaedah setup ().

Bahagian Gerbang

Program Python Gateway Part dalam folder rumah digunakan untuk mengambil gambar dan memuat naiknya ke Amazon S3 Server setiap jam. Sebelum menggunakannya, pastikan fswebcam sudah terpasang di Raspberry Pi anda:

sudo apt-get kemas kini && sudo apt-get pasang fswebcam

Sekiranya anda ingin memuat naik foto, konfigurasikan AWS anda dengan mengikuti langkah-langkah. Pertama, pasang AWS SDK dan AWS CLI ke Raspberry Pi anda dengan menggunakan arahan berikut:

sudo pip pasang boto3

sudo pip pasang awscli

dan kemudian, jalankan AWS CLI:

sudo aws konfigurasi

Konfigurasikan ID Kunci Akses AWS anda, ID Akses Rahsia AWS dan nama wilayah Lalai.

Sekiranya anda tidak mahu memuat naik foto anda, anda boleh melangkau langkah konfigurasi AWS dan kod komen mengenai memuat naik di photo.py. Untuk menjalankan program ini setelah boot Raspberry Pi setiap kali, anda boleh membuat foto nama file di /etc/init.d, dan menuliskan kod berikut kepadanya.

#! / bin / bash

# /etc/init.d/photo ### BEGIN INIT INFO # Menyediakan: seeed_photo # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Penerangan Ringkas: pengambilan gambar initscript # Penerangan: Perkhidmatan ini digunakan untuk menguruskan pengambilan gambar ### AKHIR INIT INFO case "$ 1" pada permulaan) gema "Mula mengambil foto" /home/rxhf/photo.py &;; berhenti) gema "Berhenti mengambil gambar" bunuh $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) gema "Penggunaan: perkhidmatan bermula foto | berhenti" keluar 1;; esac keluar 0

menetapkan kebenaran pelaksanaan

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

dan mengujinya

sudo /etc/init.d/photo permulaan

Sekiranya tidak ada masalah, hentikan dan tambahkan ke aplikasi permulaan

sudo /etc/init.d/photo berhenti

lalai foto sudo update-rc.d

CATATAN: Sekiranya anda ingin memulakan gerbang selepas boot Raspberry Pi, tambahkan kod permulaan gerbang di Seeed Wiki ke /etc/rc.local, biarkan seperti:

#! / bin / sh -e

# # rc.local # # Skrip ini dilaksanakan pada akhir setiap runlevel multiuser. # Pastikan bahawa skrip akan "keluar 0" pada kejayaan atau nilai # lain pada kesilapan. # # Untuk mengaktifkan atau mematikan skrip ini, ubah saja eksekusi # bit. # # Secara lalai skrip ini tidak melakukan apa-apa. # Cetak alamat IP _IP = $ (nama host -I) || benar jika ["$ _IP"]; kemudian printf "Alamat IP saya adalah% s / n" "$ _IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop 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 keluar 0

Laman web

Kami menyebarkan laman web di CentOS 7. Langkah-langkah berikut akan menunjukkan kepada anda cara menyebarkan.

Langkah 1. Pasang Python3

sudo yum -y pasang pelepasan epel

sudo yum -y install python36

Langkah 2. Pasang Python pip dan persekitaran maya

wget

sudo python36 get-pip.py sudo pip pasang virtualenv

Setp 3. Klon laman web kami dari GitHub

sudo yum -y pasang git

git klon

Langkah 4. Buat dan aktifkan persekitaran maya

virtualenv -p python36 iotea-hb

cd iotea-hb sumber bin / aktifkan

Langkah 5. Pasang perpustakaan yang bergantung

pip memasang pymysql

pip install dbutils pip install flask pip install websocket-client pip install cofigparser

Langkah 6. Buat pangkalan data

sudo yum -y pasang mariadb mariabd-server

sudo systemctl membolehkan mariadb sudo systemctl memulakan mariadb mysql -uroot -p

dan kemudian gunakan iotea_hb.sql untuk membuat jadual.

Langkah 7. Buat db.ini, dan tuliskan kod-kod ini kepadanya

[db]

db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea

ubah jalan db.ini dalam db.py

# dalam db.py

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

Langkah 8. Tukar port di app.py dan mulakan laman web:

# dalam app.py

# app.run (debug = True, port = 6000) app.run (debug = True, port = 8080)

# di terminal

pip memasang gunicorn gunicorn -w 5 -b 0.0.0.0:8080 aplikasi: app

sekarang lawati 127.0.0.1:8080 di penyemak imbas web anda, anda dapat melihat laman web, tetapi data masa nyata tidak dipaparkan.

Langkah 9. Dapatkan data loriot

Buka terminal lain, masukkan semula persekitaran maya dan mulakan aplikasi loriot:

cd iotea-hb

tong sumber / aktifkan gunicorn loriot: app

Tunggu sebentar, anda akan melihat data yang dipaparkan di laman web, atau anda boleh menukar wss di loriot.py:

# dalam loriot.py

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

ws = create_connection ()

Langkah 5: Operasi

Anda boleh melayari laman web kami untuk melihat data masa nyata:

  • Di Ya'an
  • Untuk Demonstrasi

Disyorkan: