Სარჩევი:

ნახეთ IoTea LoRa გადაწყვეტა (განახლება 1811): 5 ნაბიჯი
ნახეთ IoTea LoRa გადაწყვეტა (განახლება 1811): 5 ნაბიჯი

ვიდეო: ნახეთ IoTea LoRa გადაწყვეტა (განახლება 1811): 5 ნაბიჯი

ვიდეო: ნახეთ IoTea LoRa გადაწყვეტა (განახლება 1811): 5 ნაბიჯი
ვიდეო: CS50 2014 - Week 9, continued 2024, ივლისი
Anonim
ნახეთ IoTea LoRa გადაწყვეტა (განახლება 1811)
ნახეთ IoTea LoRa გადაწყვეტა (განახლება 1811)

ინტერნეტი+ ახლა პოპულარული კონცეფციაა. ამჯერად ჩვენ ვცადეთ ინტერნეტი პლუს სოფლის მეურნეობა, რათა ჩაის ბაღი გაიზარდოს ინტერნეტით.

ნაბიჯი 1: ნივთები, რომლებიც გამოიყენება ამ პროექტში

აპარატურის კომპონენტები

  • გროვი - ნახშირბადის დიოქსიდის სენსორი (MH -Z16)
  • გროუვი - ციფრული სინათლის სენსორი
  • გროვი - მტვრის სენსორი (PPD42NS
  • გროვი-ჟანგბადის სენსორი (ME2-O2-Ф20)
  • ნიადაგის ტენიანობისა და ტემპერატურის სენსორი
  • LoRa LoRaWAN Gateway - 868MHz ნაკრები Raspberry Pi 3 -ით
  • გროვი - ტემპერამენტი და ჰუმი და ბარომეტრის სენსორი (BME280)

პროგრამული უზრუნველყოფის პროგრამები და ონლაინ სერვისები

Microsoft Visual Studio 2015

ნაბიჯი 2: ისტორია

მენგდინგის მთაზე იაანის ჩრდილო -აღმოსავლეთით, სიჩუანი, მთის ქედი დასავლეთიდან აღმოსავლეთით გადის მწვანე ზღვაში. ეს არის ყველაზე ნაცნობი სანახაობა 36 წლის დენგისთვის, მისი თაობის მენგდინგის ჩაის ერთ – ერთი იმ მცირერიცხოვანი ადამიანისაგან, რომლის პლანტაციაა 50 მუ (= 3.3 ჰექტარი) ზღვის დონიდან 1100 მეტრზე. დენგი ჩაის მწარმოებელთა ოჯახიდან მოდის, მაგრამ ოჯახის მემკვიდრეობის შენარჩუნება ადვილი საქმე არ არის.”ჩვენი ჩაი იზრდება მაღალ სიმაღლეზე ორგანულ გარემოში, რათა უზრუნველყოს მისი შესანიშნავი ხარისხი. მაგრამ ამავე დროს, ზრდის სიმჭიდროვე დაბალია, ღირებულება მაღალია და ყვავის არათანაბარი, რის გამოც ჩაის მოსავალი რთულდება. სწორედ ამიტომ მაღალმთიანი ჩაი ჩვეულებრივ მცირე მოსავალია და მათი ღირებულებები არ აისახება ბაზარზე.”ბოლო ორი წელია დენგი ცდილობს გაზარდოს მომხმარებელთა ცნობიერება მაღალმთიანი ჩაის შესახებ მათი ღირებულების გასაუმჯობესებლად. და როდესაც ის შეხვდა ფანს, რომელიც ეძებდა პლანტაციას Seeed's IoTea ტექნოლოგიის განსახორციელებლად, გამოსავლის სრულყოფილი შესატყვისი გაკეთდა.

ნაბიჯი 3: აპარატურის კავშირი

ამ პროექტის აპარატურა შეიძლება დაიყოს 4 ნაწილად: Power, Sensors, Node და Gateway. შემდეგი სტატია გაჩვენებთ თუ როგორ უნდა შეავსოთ იგი ეტაპობრივად.

ძალაუფლების ნაწილი

Power ნაწილი ძირითადად შეიცავს მზის პანელს და ლითიუმის ბატარეას, თუ თქვენ უბრალოდ ააშენებთ ამ პროექტს საჩვენებლად, შეგიძლიათ მათი იგნორირება. ან შეგიძლიათ მიყევით წინა გაკვეთილს კვანძის სიმძლავრის დასაყენებლად.

სენსორების ნაწილი

სენსორების ნაწილში, მრავალი სენსორის გამო, ჩვენ გამოვიყენეთ ამინდის სადგური და ასევე გავაკეთეთ აკრილის ფრჩხილი მათი ინსტალაციისთვის.

გამოსახულება
გამოსახულება

როგორც ხედავთ ზემოთ სურათზე, ციფრული სინათლის სენსორი ყოველთვის თავზეა, ისე რომ მას შეუძლია შეაგროვოს განათების ინფორმაცია. სენსორები, რომლებიც გამოიმუშავებენ სითბოს, დამონტაჟებულია აკრილის ფრჩხილის შუაგულში, როგორიცაა O2 სენსორი, მტვრის სენსორი და CO2 სენსორი. დაბოლოს, ტემპერატურისა და ტენიანობის სენსორი აკრილის ფრჩხილის ბოლოში.

გარდა ამისა, ნიადაგის ტემპერატურისა და ტენიანობის სენსორი დამონტაჟებულია მარტო მიწაში. კვანძის ნაწილი

გამოსახულება
გამოსახულება

Node Part არის Seeeduino LoRaWan, რომელიც დამონტაჟებულია წყალგაუმტარი ყუთში, ის აკავშირებს ენერგიასა და სენსორებს წყლის სახსრების საშუალებით. მათ შორის, Dust Sensor დაკავშირება LoRaWan– ის ციფრულ პინთან D3, CO2 Sensor დაკავშირება pin D4 & D5– თან, ნიადაგის სენსორი დაკავშირება pin D6 & D7– თან, O2 სენსორი დაკავშირება ანალოგიურ pin P1– თან და Light Sensor & Barometer Sensor დაკავშირება I2C პორტთან.

შენიშვნა: 10k რეზისტორი უნდა დაემატოს ნიადაგის სენსორის ლურჯ (მონაცემთა) კაბელს და წითელს (Vcc) კაბელს შორის.

Seeeduino LoRaWan აგროვებს სენსორების მნიშვნელობას დროდადრო და აგზავნის მათ Gateway– ში LoRa– ს საშუალებით. მონაცემთა ფორმატი, როგორიცაა ქვემოთ:

{

[0], /* ჰაერის ტემპერატურა (℃)* /[1], /* ჰაერის ტენიანობა (%)* /[2], /* სიმაღლე (მ) მაღალი ბაიტი* /[3], /* სიმაღლე (მ) დაბალი ბაიტი */[4],/ * CO2 კონცენტრაცია (PPM) მაღალი ბაიტი */[5],/ * CO2 კონცენტრაცია (PPM) დაბალი ბაიტი */[6],/ * მტვრის კონცენტრაცია (ცალი/0.01cf) მაღალი ბაიტი */[7],/ *მტვრის კონცენტრაცია (ცალი/0.01cf) დაბალი ბაიტი */[8],/ *სინათლის ინტენსივობა (ლუქსი) მაღალი ბაიტი */[9],/ *სინათლის ინტენსივობა (ლუქსი) დაბალი ბაიტი */ [10], /* O2 კონცენტრაცია (%)* /[11], /* ნიადაგის ტემპერატურა (℃)* /[12], /* ნიადაგის ტენიანობა (%)* /[13], /* ბატარეის ძაბვა (V) */ [14]/ *სენსორის შეცდომის კოდი */}

სენსორის შეცდომის კოდის ბაიტში თითოეულ ბიტს აქვს განსხვავებული მნიშვნელობა, ისევე როგორც ქვემოთ:

{

ბიტი 0: 1; / * ბარომეტრის სენსორის შეცდომა */ bit1: 1; / * CO2 სენსორის შეცდომა */ bit2: 1; / * მტვრის სენსორის შეცდომა */ bit3: 1; / * სინათლის სენსორის შეცდომა */ bit4: 1; / * O2 სენსორის შეცდომა */ bit5: 1; / * ნიადაგის სენსორის შეცდომა */ დაცულია: 2; / * დაცულია */}

კარიბჭის ნაწილი

გამოსახულება
გამოსახულება

Gateway Part არის Raspberry Pi, რომელმაც შეაერთო Gateway მოდული RHF0M301–868 და PRI 2 Bridge RHF4T002, იგი დამონტაჟებულია წყალგაუმტარი ყუთში და დაუკავშირდით დენის და USB კამერას წყლის სახსრების საშუალებით. რადგან ის იყენებს სპეციალურ პროგრამულ უზრუნველყოფას, გთხოვთ, მიჰყევით Seeed Wiki– ს კონფიგურაციისთვის.

ნაბიჯი 4: პროგრამული უზრუნველყოფის პროგრამირება

როგორც აპარატურის კავშირი, ასევე შესაძლებელია პროგრამული პროგრამირების გაყოფა, ის შეიძლება დაიყოს 3 ნაწილად: კვანძი, კარიბჭე და ვებ გვერდი.

კვანძის ნაწილი

დრაივერების უმეტესობა, რომელიც Node Part– ს მოითხოვდა, უკვე შეიცავს Orig_driver საქაღალდეში. ქვემოთ მოყვანილი ბიბლიოთეკები უნდა დაინსტალირდეს ხელით:

Adafruit_ASFcore

იმის გამო, რომ პროექტი გართულებულია, ჩვენ გირჩევთ გამოიყენოთ Arduino IDE ნაცვლად Microsoft Visual Studio. მოდული სახელწოდებით Visual Micro დაგეხმარებათ Arduino პროექტის განხორციელებაში Visual Studio– ს გამოყენებით, დააწკაპუნეთ აქ დამატებითი ინფორმაციისთვის.

უკეთესი წაკითხვისა და შენარჩუნების მიზნით, ჩვენ ვიყენებთ ობიექტზე ორიენტირებულ პროგრამირებას ამჯერად. ამ პროექტის კლასის დიაგრამა ასე გამოიყურება ქვემოთ:

გამოსახულება
გამოსახულება

იმ სენსორებს, რომლებსაც უკვე აქვთ OOP დრაივერი, ჩვენ გადავაფარეთ იგი ამ პროექტის შესაცვლელად, სხვებისთვის კი ჩვენ გადავაწერეთ მათი დრაივერები OOP– ის გამოყენებით. სენსორული კლასი საშუალო პროგრამის ფენაში გამოიყენება რეალური სენსორების ინტერფეისების გასაერთიანებლად, მაგალითად, ბარომეტრის სენსორს შეუძლია შეაგროვოს ტემპერატურა, ტენიანობა და სიმაღლე ერთდროულად, ამიტომ მას აქვს 3 ინტერფეისი ტემპერატურის, ტენიანობის და სიმაღლის მოსაპოვებლად. მაგრამ მათ აქვთ განსხვავებული მეთოდის სახელი, რაც სენსორების ღირებულების შეძენის პროგრამას უფრო გაართულებს, ისევე როგორც ეს:

ბარომეტრი-> getTemperature ();

ბარომეტრი-> getHumidity (); ბარომეტრი-> getAltitude (); //… სხვა_სენსორი-> getSomeValue (); //…

მაგრამ OOP– ის გამოყენებით, ასე გამოიყურება:

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

}

ჩვენ ასევე შეფუთული გვაქვს აპლიკაციის კლასი, რომელიც ახორციელებს IApplication ინტერფეისს, IoTea.ino– ში setup () და loop () მეთოდს შეუძლია დარეკოს setup () და loop () მეთოდი აპლიკაციის ობიექტში.

შენიშვნა: USB სერიული გამოიყენება მხოლოდ გამართვისთვის. გამართვის შემდეგ, გთხოვთ გამოხატოთ მისი ინიციალიზაციის კოდი setup () მეთოდით.

კარიბჭის ნაწილი

Gateway Part– ის პითონის პროგრამა სახლის საქაღალდეში გამოიყენება ფოტოების გადასაღებად და ატვირთვისთვის Amazon S3 სერვერზე ყოველ საათში. სანამ გამოიყენებ, დარწმუნდი, რომ fswebcam უკვე დაყენებულია შენს Raspberry Pi- ში:

sudo apt- მიიღეთ განახლება && sudo apt-get დააინსტალირეთ fswebcam

თუ გსურთ ფოტოების ატვირთვა, დააკონფიგურირეთ თქვენი AWS შემდეგი ნაბიჯებით. პირველი, დააინსტალირეთ AWS SDK და AWS CLI თქვენს Raspberry Pi– ზე ამ ბრძანებების გამოყენებით:

sudo pip დააინსტალირეთ boto3

sudo pip დააინსტალირეთ awscli

და შემდეგ გაუშვით AWS CLI:

sudo aws კონფიგურაცია

დააკონფიგურირეთ თქვენი AWS წვდომის გასაღების ID, AWS საიდუმლო წვდომის ID და ნაგულისხმევი რეგიონის სახელი.

თუ არ მოგწონთ თქვენი ფოტოების ატვირთვა, შეგიძლიათ გამოტოვოთ AWS კონფიგურაციის ნაბიჯები და გააკეთოთ კომენტარი კოდებზე ფოტოზე. Py ატვირთვასთან დაკავშირებით. ამ პროგრამის გასაშვებად Raspberry Pi– ს ყოველ ჯერზე ჩატვირთვის შემდეგ, თქვენ შეგიძლიათ შექმნათ ფაილის სახელის ფოტო /etc/init.d და ჩაწეროთ მას შემდეგი კოდი.

#!/bin/bash

# /etc/init.d/photo ### INIT INFO # უზრუნველყოფს: seeed_photo # საჭირო-დაწყება: $ remote_fs $ syslog # საჭირო-გაჩერება: $ remote_fs $ syslog # ნაგულისხმევი-დაწყება: 2 3 4 5 # ნაგულისხმევი-გაჩერება: 0 1 6 # მოკლე აღწერა: ფოტოს გადაღება initscript # აღწერა: ეს სერვისი გამოიყენება ფოტო გადაღების მართვის მიზნით ### END INIT INFO საქმე "$ 1" დასაწყისში) ექო "ფოტოს გადაღების დაწყება" /home/rxhf/photo.py &;; გაჩერება) ექო "შეაჩერე ფოტოს გადაღება" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{ბეჭდვა $ 2}');; *) ექო "გამოყენება: სერვისის ფოტო დაწყება | გაჩერება" გასასვლელი 1;; esac გასასვლელი 0

დააყენეთ შესრულების ნებართვა

sudo chmod 777/და ა.შ./init.d/ ფოტო

sudo chmod 777 /home/rxhf/photo.py

და გამოსცადე

sudo /etc/init.d/ ფოტო დაწყება

თუ პრობლემა არ არის, შეწყვიტეთ და დაამატეთ იგი გაშვების პროგრამაში

sudo /etc/init.d/ ფოტო გაჩერება

sudo update-rc.d ფოტო ნაგულისხმევი

შენიშვნა: თუ გსურთ გაშვების კარიბჭე Raspberry Pi ჩატვირთვის შემდეგ, დაამატეთ კარიბჭის საწყისი კოდები Seeed Wiki– ში /etc/rc.local, ასე გამოიყურება:

#!/bin/sh -e

# # rc.local # # ეს სკრიპტი შესრულებულია თითოეული მრავალჯერადი გამოყენების დონის ბოლოს. # დარწმუნდით, რომ სკრიპტი იქნება "გასვლა 0" წარმატებაზე ან სხვა # მნიშვნელობა შეცდომებზე. # # იმისათვის, რომ ჩართოთ ან გამორთოთ ეს სკრიპტი უბრალოდ შეცვალეთ შესრულების # ბიტი. # # სტანდარტულად ეს სკრიპტი არაფერს აკეთებს. # დაბეჭდეთ IP მისამართი _IP = $ (hostname -I) || მართალია, თუ ["$ _IP"]; შემდეგ printf "ჩემი IP მისამართი არის %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 გასასვლელი 0

ვებგვერდი

ჩვენ განვათავსეთ ვებგვერდი CentOS 7. შემდეგ ნაბიჯებზე ნაჩვენებია როგორ განვათავსოთ.

ნაბიჯი 1. დააინსტალირეთ Python3

sudo yum -y დააინსტალირეთ epel -release

sudo yum -y დააინსტალირეთ python36

ნაბიჯი 2. დააინსტალირეთ Python pip და ვირტუალური გარემო

wget

sudo python36 get-pip.py sudo pip დააინსტალირეთ virtualenv

ნაბიჯი 3. დაალაგეთ ჩვენი ვებ გვერდი GitHub– დან

sudo yum -y დააინსტალირეთ git

git კლონი

ნაბიჯი 4. შექმენით და გააქტიურეთ ვირტუალური გარემო

virtualenv -p python36 iotea -hb

cd iotea-hb წყარო bin/activ

ნაბიჯი 5. დააინსტალირეთ დამოკიდებული ბიბლიოთეკები

pip დააინსტალირეთ pymysql

pip დააინსტალირეთ dbutils pip დააინსტალირეთ flask pip დააინსტალირეთ websocket-client pip install cofigparser

ნაბიჯი 6. მონაცემთა ბაზის შექმნა

sudo yum -y დააინსტალირეთ mariadb mariabd -server

sudo systemctl ჩართვა mariadb sudo systemctl დაწყება mariadb mysql -uroot -p

და შემდეგ გამოიყენეთ iotea_hb.sql ცხრილის შესაქმნელად.

ნაბიჯი 7. შექმენით db.ini და ჩაწერეთ ეს კოდები

[დ.ბ]

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

შეცვალეთ db.ini გზა db.py

# db.py

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

ნაბიჯი 8. შეცვალეთ პორტი app.py– ში და დაიწყეთ ვებ – გვერდი:

# აპლიკაციაში. py

#app.run (გამართვა = მართალია, პორტი = 6000) app.run (გამართვა = მართალია, პორტი = 8080)

# ტერმინალში

pip დააინსტალირეთ gunicorn gunicorn -w 5 -b 0.0.0.0:8080 აპლიკაცია: აპლიკაცია

ახლა ეწვიეთ 127.0.0.1:8080 თქვენს ბრაუზერში, შეგიძლიათ ნახოთ ვებგვერდი, მაგრამ რეალურ დროში მონაცემები არ არის ნაჩვენები.

ნაბიჯი 9. მიიღეთ ლორიოტის მონაცემები

გახსენით სხვა ტერმინალი, შედით ვირტუალურ გარემოში და დაიწყეთ ლორიოტის აპლიკაცია:

cd iotea-hb

წყაროს ბინ/გააქტიურება gunicorn loriot: აპლიკაცია

დაელოდეთ ცოტა ხანს, თქვენ ნახავთ მონაცემებს, რომლებიც ნაჩვენებია ვებგვერდზე, ან შეგიძლიათ შეცვალოთ wss loriot.py- ში:

# in loriot.py

#ws = შექმნა_კავშირი ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

ნაბიჯი 5: ოპერაცია

თქვენ შეგიძლიათ ეწვიოთ ჩვენს ვებსაიტებს რეალურ დროში მონაცემების სანახავად:

  • იაანში
  • დემონსტრაციისთვის

გირჩევთ: