Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 18

UNIVERZITET U BEOGRADU

FAKULTET ORGANIZACIONIH NAUKA

Katedra za elektronsko poslovanje


Internet inteligentnih uređaja

Pametno pčelarstvo

Studenti: Mentor:
Stefan Sedlarević 2020/0333 Petar Lukovac
Anđela Stanković 2020/0154
Milan Stanković 2020/074

Beograd, 2023.
1 Uvod....................................................................................................................................................3
1.1 Uvod...........................................................................................................................................3
1.2 Objašnjenje Problema................................................................................................................3
2 Projektni zadatak.................................................................................................................................4
3 Rešenje zadatka...................................................................................................................................5
3.1 Korišćena oprema..................................................................................................................................5
4 Prikaz rešenja.......................................................................................................................................9
4.1 Arduino Kod...............................................................................................................................9
4.1.1 Pregled.................................................................................................................................11
4.1.2 Korišćene biblioteke:............................................................................................................11
4.1.3 Definisanje Pina i Kreiranje Instanci Senzora.......................................................................11
4.1.4 Parametri za MQ135 Senzor................................................................................................11
4.1.5 Funkcije za Obradu Podataka sa MQ135..............................................................................11
4.1.6 setup Funkcija......................................................................................................................11
4.1.7 loop Funkcija........................................................................................................................11
4.1.8 Očitavanje podataka sa MQ135 senzora:.............................................................................11
4.1.9 Očitavanje temperature i vlažnosti sa DHT11 senzora:........................................................12
4.1.10 Prikaz podataka:..............................................................................................................12
4.1.11 Zaključak..........................................................................................................................12
4.2 Kreiranje virtuelnog okruženja.................................................................................................13
4.3 MQTT........................................................................................................................................13
4.4 Grafana.....................................................................................................................................16
5 Reference..........................................................................................................................................19

Slika 1 - Šema uređaja u softveru Fritzing....................................................................................................7


Slika 2 - Slika implementiranog projekta.....................................................................................................8
Slika 3 - Arduino kod 1.................................................................................................................................9
Slika 4 - Arduino kod 2...............................................................................................................................10
Slika 5 - Instaliranje Grafane 1...................................................................................................................16
Slika 6 - Instaliranje Grafane 2...................................................................................................................17
Slika 7 - Instaliranje MQTT plugin-a...........................................................................................................18
Slika 8 - Prikaz podataka............................................................................................................................19
Slika 9 - Prikaz podataka uživo...................................................................................................................19
1 Uvod
1.1 Uvod
Pčelarstvo, kao vitalna grana poljoprivrede, igra ključnu ulogu u očuvanju ekosistema i biodiverziteta
kroz oprašivanje biljaka. Pčele ne samo da proizvode med, vosak i druge vredne proizvode, već su i
neophodne za oprašivanje mnogih useva, što direktno utiče na proizvodnju hrane. Ipak, poslednjih
godina pčele se suočavaju sa brojnim izazovima, uključujući bolesti, pesticide, promene u životnoj sredini
i zagađenje vazduha. Ovi faktori dovode do smanjenja pčelinjih kolonija, što predstavlja ozbiljan problem
za poljoprivredu i ekosisteme širom sveta.

1.2 Objašnjenje Problema


Jedan od ključnih faktora koji utiču na zdravlje pčela je kvalitet vazduha u njihovoj okolini. Zagađenje
vazduha, prisustvo toksičnih gasova i promene u mikroklimatskim uslovima mogu značajno uticati na
pčelinje kolonije. Dim, ugljen monoksid, metan, amonijak i drugi štetni gasovi mogu negativno uticati na
zdravlje pčela, smanjujući njihovu sposobnost za oprašivanje i proizvodnju meda.

Da bi se rešio ovaj problem, neophodno je uvesti napredne tehnologije za monitoring kvaliteta vazduha
u košnicama i njihovoj okolini. Implementacija senzora za detekciju gasova i praćenje uslova u košnicama
može pružiti vredne podatke koji će omogućiti pčelarima da pravovremeno reaguju na promene u
životnoj sredini i preduzmu mere za zaštitu pčela.

2 Projektni zadatak
Ovaj projektni rad fokusira se na implementaciju pametnog sistema za monitoring kvaliteta vazduha i
temperature u okviru pčelarstva. Korišćenjem senzora kao što su DHT11 i MQ135, koji su dostupni i
relativno jednostavni za upotrebu, može se ostvariti efikasan način praćenja prisustva štetnih gasova i
temperature u košnicama. DHT11 senzor meri temperaturu i vlažnost, dok MQ135 senzor detektuje
prisustvo gasova kao što su CO2, amonijak i dim. Ovaj pristup omogućava pčelarima da prate nivoe
zagađenja vazduha, temperaturne uslove, identifikuju potencijalne pretnje po zdravlje pčela i preduzmu
potrebne korake za očuvanje svojih kolonija.

Integracija ovakvog sistema ne samo da doprinosi zdravlju pčela, već i unapređuje ukupnu produktivnost
i održivost pčelarstva. Razvijanjem pametnog sistema za monitoring kvaliteta vazduha i temperature,
otvaraju se mogućnosti za dalji napredak u poljoprivredi i očuvanju ekosistema, pružajući dragocene
podatke za istraživanja i praktične primene u zaštiti pčela. Kontinuirano praćenje temperature u
košnicama je od ključne važnosti, jer pčele zahtevaju specifične temperaturne uslove za optimalno
funkcionisanje, a promene temperature mogu imati značajan uticaj na njihovu aktivnost i zdravlje.

Ovaj rad istražuje tehničke aspekte implementacije senzora za monitoring kvaliteta vazduha i
temperature, analizira podatke dobijene iz senzora i diskutuje o potencijalnim merama za poboljšanje
uslova u pčelinjim kolonijama. Cilj je pružiti sveobuhvatan pregled i praktična rešenja za izazove sa
kojima se suočava moderno pčelarstvo, sa posebnim osvrtom na zaštitu pčela kroz inovativne
tehnologije.

Korišćenjem DHT11 senzora, koji meri temperaturu i vlažnost, zajedno sa MQ135 senzorom za detekciju
štetnih gasova, ovaj sistem omogućava pčelarima da precizno prate mikroklimatske uslove unutar
košnica. Na ovaj način, pčelari mogu brzo reagovati na bilo kakve promene koje bi mogle negativno
uticati na pčele, kao što su nagli porast temperature ili prisustvo opasnih gasova. Implementacija
ovakvog sistema predstavlja značajan korak ka unapređenju prakse pčelarstva, omogućavajući efikasniji i
održiviji pristup upravljanju pčelinjim kolonijama.
3 Rešenje zadatka
3.1 Korišćena oprema
Za projektovanje ovog IoT sistema potrebna je sledeća oprema:
Naziv Izgled komponente Opis Količina
komponente

Raspberry Pi Raspberry Pi 1
mikroračunar 4, model B

Arduino Uno Arduino Uno 1


mikroračunar

DHT senzor DHT11


za
temperaturu
i vlažnost
vazduha

1
MQ-135 MQ-135 1
senzor za
detekciju
štetnih
gasova

Kablovi Tip: muško- 10


ženski

USB kabl Printer USB 1


cable

Punjač USB-C punjač 1

Tabela 1 - Prikaz korišćenie opreme


Slika 1 - Šema uređaja u softveru Fritzing

Slika 2 - Slika implementiranog projekta


4 Prikaz rešenja
4.1 Arduino Kod

Slika 3 - Arduino kod 1


Slika 4 - Arduino kod 2
4.1.1 Pregled
Ovaj kod implementira IoT sistem za merenje temperature, vlažnosti i koncentracije ugljen-dioksida
(CO2) koristeći DHT11 senzor za temperaturu i vlažnost, i MQ135 senzor za CO2. Podaci sa senzora se
prikupljaju i prikazuju putem serijske komunikacije.

4.1.2 Korišćene biblioteke:


Adafruit_Sensor.h, DHT.h, i DHT_U.h: Biblioteke za rad sa DHT senzorom.

math.h: Biblioteka za matematičke funkcije, potrebna za izračunavanje koncentracije CO2.

4.1.3 Definisanje Pina i Kreiranje Instanci Senzora


#define DATA_PIN 8: Definiše pin 8 kao pin na koji je povezan DHT11 senzor.

DHT_Unified dht(DATA_PIN, DHT11): Kreira instancu DHT11 senzora na definisanom pin-u.

4.1.4 Parametri za MQ135 Senzor


const int MQ135_PIN = A0: Analogni pin na koji je priključen MQ135 senzor.
const float VCC = 5.0: Napajanje senzora, obično 5V.
const float RL = 10.0: Load otpornik od 10 kilo-ohma.
const float Ro = 100.0: Kalibrisani otpor senzora u čistom vazduhu.
const float CO2_THRESHOLD = 1000.0: Prag koncentracije CO2 u ppm (parts per million).
4.1.5 Funkcije za Obradu Podataka sa MQ135
float calculateRS(int sensorValue): Izračunava otpornost senzora (RS) na osnovu očitane vrednosti sa
analognog pina.

float calculateCO2(float RS): Izračunava koncentraciju CO2 u ppm koristeći empirijsku formulu. Koriste se
pretpostavljene vrednosti za koeficijente B i m.

4.1.6 setup Funkcija


Serial.begin(9600): Pokreće serijsku komunikaciju sa baud ratom od 9600 bps.

dht.begin(): Inicijalizuje DHT senzor.

4.1.7 loop Funkcija


Ova funkcija se izvršava u beskonačnoj petlji i obuhvata sledeće korake:

4.1.8 Očitavanje podataka sa MQ135 senzora:


int sensorValue = analogRead(MQ135_PIN): Očitava analognu vrednost sa pina na koji je priključen
MQ135.

float RS = calculateRS(sensorValue): Izračunava otpornost senzora.

float co2_ppm = calculateCO2(RS): Izračunava koncentraciju CO2 u ppm.

4.1.9 Očitavanje temperature i vlažnosti sa DHT11 senzora:


sensors_event_t event: Kreira događaj za očitavanje podataka.

dht.temperature().getEvent(&event): Dobija podatke o temperaturi.

float celsius = event.temperature: Skladišti temperaturu u stepenima Celzijusa.

float fahrenheit = (celsius * 1.8) + 32: Konvertuje temperaturu u stepeni Farenhajta (iako se ne koristi u
ovom kodu).

dht.humidity().getEvent(&event): Dobija podatke o vlažnosti.

float humidity = event.relative_humidity: Skladišti vrednost relativne vlažnosti.

4.1.10 Prikaz podataka:

Podaci o temperaturi, vlažnosti i koncentraciji CO2 se ispisuju na serijski monitor.

Serial.print(celsius): Ispisuje temperaturu u stepenima Celzijusa.

Serial.print(event.relative_humidity): Ispisuje relativnu vlažnost.

Serial.println(co2_ppm): Ispisuje koncentraciju CO2 u ppm.

4.1.11 Zaključak
Ovaj kod pruža osnovni primer kako koristiti DHT11 i MQ135 senzore za merenje temperature, vlažnosti
i koncentracije CO2, i kako te podatke prikazati preko serijske komunikacije. Sistem se može dalje
razvijati dodavanjem funkcionalnosti kao što su slanje podataka na udaljeni server, aktiviranje alarma pri
visokim koncentracijama CO2, ili prikazivanje podataka na ekranu.

4.2 Kreiranje virtuelnog okruženja


Svaki Python projekat, pogotovu onaj koji zahteva uključivanje dodatnih biblioteka, treba da
ima svoje virtuelno okruženje. Stoga, to će biti prvi korak u kreiranju naše Raspberry Pi
aplikacije.
Potrebno je kreirati novo razvojno okruženje:
python -m venv --system-site-packages env .
Koristi se - -system-site-packages kako bi se uključile i sve sistemske biblioteke kao što je
RPi.GPIO
Komandom cd env ulazi se u kreirano okruženje i komandom source bin/activate
pokreće virtuelno okruženje.
Sada kada je podešeno virtuelno okruženje može se početi sa izradom projekta.

4.3 MQTT
Potrebno je instalirati Mosquitto kroz sledeća tri koraka:
1. Update i upgrade RPi-a
sudo apt update
sudo apt upgrade
2. Potrebno je instalirati Mosquitto i klijentski softver. Klijenstski softver služi za testiranje da li
MQTT broker radi na našem RPi-ju.
sudo apt install mosquitto mosquitto-clients
Automatski je podešeno da se Mosquitto server pokreće pri samom pokretanju RPi-ja.
3. Nakon instalacije, broker je pokrenut. Radi provere da li je broker stvarno pokrenut,
potrebno je pokrenuti sledeću komandu.
sudo systemctl status mosquitto
Ako je servis uredno pokrenut, potrebno je da se ispisuje active (running)

Slika 3-aktiviranje servisa

Potrebno je kreirati sopstvenog publisher-a i subscriber-a:


Prvo je potrebno instalirati paho-mqtt biblioteku pomoću komande
pip install paho-mqtt

Zatim treba kreirati sledeće Python skripte:

publisher.py:

Slika 4-skripta publisher.py

Uvezene su potrebne biblioteke, a zatim definisane poruke koje će biti poslate. Svaka poruka
ima topic (temu) i payload (sadržaj poruke). Zatim sledi konfiguracija MQTT parametara (host I
mqtt_tppic).
U beskonačnoj while petlji koristi se funkcija publish.single() za slanje pojedinačnih poruka.
Sadržaj poruke se dobija pomoću funkcije procitajPoruku() koja je importovana iz puls.py
skripte. Nakon svakog slanja poruke postoji pauza od 0.1s koja se obezbeđuje pomoću
time.sleep() funkcije.
subscriber.py:

Slika 5-skripta subscriber.py

Importovane su potrebne biblioteke, a zatim definisana funkcija on_message() za obradu


poruka. U ovoj funkciji, payload se dekodira iz binarnog oblika u string a zatim se ispisuje u
konzoli.
Nakon toga, sledi konfiguracija MQTT parametara. Kreira se instanca mqtt.Client() koja
predstavlja MQTT klijenta. Zatim se postavlja on_message funkcija kao funkcija za obradu
primljenih poruka. Sledi povezivanje sa MQTT brokerom koristeći client.connect() metodu
specificirajući adresu brokera i port. Takođe, potrebno je pretplatiti se na temu “bees” koristeći
client.subscribe() metodu.
U while petlji koristi se client.loop_forever() da bi se započela petlja za prijem poruka. Svaki put
kada se petlja izvrši, povećava se promenljiva counter za 1.

Program se pokreće tako što se prvo pokrene publisher komandom: python publisher.py, a
zatim se pokreće subscribee komandom: python subscriber.py
4.4 Grafana
Grafana predstavlja open-source platformu za vizuelizaciju i analizu podataka. Ona ima brojne
mogućnosti ,među kojima su:

1. Vizuelizacija podataka-Grafana nudi razne vrste rafikona, tabela i panela koji omogućavaju
pregled i analizu podataka na jednostavan način.
2. Povezivanje sa različitim izvorima podataka-Grafana podržava povezivanje sa brojnim izvorima
podataka, među kojima su baze podataka(MySQL,PostgreSQL,InfluxDB), sistemi za
nadzor(Prometheus,Zabbix), kao I klaud usluge(Microsoft Azure,Monitor).
3. Fleksibilno upravljanje panelima-Grafana omogućava konfiguraciju i organizovanje panela prema
potrebama korisnika.
4. Napredne analitičke mogućnosti-Grafana nudi razne funkcije za analizu podataka među kojima
su: agregacija, grupisanje, filtriranje, matematičke operacije itd.

Grafana je korišćena u ovom radu, radi lakšeg predstavljanja očitanih podataka sa


senzora(Documentation | Grafana Labs).

Potrebno je instalirati Grafanu u okviru koje će se prikazivati podaci grafički.

Slika 5 - Instaliranje Grafane 1


Slika 6 - Instaliranje Grafane 2

Nakon instalacije i podešavanja Grafane potrebno je iskucati komandu:

GF_HTTP_ADDR=”172.20.222.234”

Ovom komandom postavlja se IP adresa na kojoj Grafana sluša dolazne http zahteve.

U ovom slučaju IP adresa je 172.20.222.234.

Sada je ostalo samo da se pokrene server komandom:

sudo service grafana-server start

Sada je moguće pristupiti Grafana GUI na portu 5000. Potrebno je ukucati adresu na kojoj je
povezan RaspberryPi „172.20.222.250“:5000
Potrebno je koristiti MQTT Data Source plugin da bi se kao tip izvora podataka koristio MQTT.
Potrebno je kliknuti na "Configuration" (Konfiguracija) u gornjem meniju, a zatim izabrati "Data
Sources" (Izvori podataka), Kliknuti na "Add data source" (Dodaj izvor podataka) i izabrati
"MQTT" iz padajućeg menija(MQTT plugin for Grafana | Grafana Labs).

Nakon toga, treba kreirati novi dashboard.

Slika 7 - Instaliranje MQTT plugin-a

Na sledećoj fotografiji može se videti panel kretanje temperature, vlažnosti vazduha i količine
ugljen-dioksida u vazduhu.

Slika 8 - Prikaz podataka uživo


5 Reference

 Documentation | Grafana Labs


 MQTT plugin for Grafana | Grafana Labs

You might also like