Svjetionik

Tehnička škola Ruđera Boškovića Vinkovci

Namijenjeno je da rasvjeta bude neovisna o energetskom sustavu. Koristimo već gotov tracker za najjači izvor svjetlosti koji pozicionira solarne panele za optimalni kut punjenja. Struja generirana se zatim skladišti u bateriji, koja se kasnije koristi za rasvjetu po potrebi, odnosno može se uključiti ili isključiti pomoću mobilne aplikacije. Pošto se koristi jednostavni način paljenja, LED diodu korištenu za dokaz koncepta možemo zamijeniti s tranzistorskom sklopkom ili relejem ovisno o potrebama za jačinom. Namijenjeno je za postavljanje na mjesta gdje nije moguće dovući neki stalan izvor struje.

Izrada projekta

Upaljena LED dioda u ovom slučaju.

Mehanizam pogona, vertikalni dio i najveću masu drži 5V step motor. Koristimo zasebnu Arduino Nano pločicu, jer sa servom i step motorom upravljamo s 5V.

MKR1000 pločicu koristimo za nadzor i kontrolu paljenja i gašenja svjetla. Vrši nadzor fotosenzora, te preko otporničkog djelila spuštamo napon s baterije omjeru 1:2, tako da čitamo trećinu vrijednosti sustava baterije da ne bi preopteretili analogni ulaz.

Mobilna aplikacija

Aplikacija je minimalistička, imamo dugme koje koristimo za paljenje i/ili gašenje svjetla. Ispod se nalazi ekran koji će nam prikazati očitanje sustava punjenja.

Shema projekta

Arduino nano s lijeve strane služi za upravljanje sustavom praćenja. Servo motor koristimo za okretanje baze koja služi za okretanje lijevo-desno. Step motor služimo za nagib gore-dolje. Smjer u kojem treba ići, očitavamo usporedbom mjerenja s fotosenzora. MKR nam služi za nadzor, te kontrolu rasvjete. S njim palimo/gasimo u ovom slučaju LED diodu na pinu 8. Na pinu 8 možemo to zamijeniti za okidanje napajanja preko releja ili tranzistorske sklopke. Mjerenja sva vršimo preko analognih pinova. Preko pinova A0-A3 čitamo stanja foto otpornika, čime dobivamo i očitanje intenziteta svijetla, a s pinom A4 očitavamo stanje napajanja preko naponskog djelila u omjeru otpornika 1:2, jer moramo spustiti napon očitavanja na trećinu da budemo sigurni da je napon uvijek ispod 3V za očitanje. Ako dobivamo očitanja preko 6.7V, baterija se puni ili je potpuno puna, no ako očitanje padne na ispod 6.1V, baterija je prazna.

 

Shemu ovoga projekta možete preuzeti ovdje.

Arduino program

#define BLYNK_PRINT /*
#define BLYNK_PRINT SerialUSB

#include
#include
#include

// Autorizacijski token blynk aplikacije
char auth[] = “f818571615004b44bbebe6fac664f5ef”;

// WiFi postavke
char ssid[] = “Stojka”;
char pass[] = “Nemasifre123”;

void setup()
{
// početak blink aplikacije
Blynk.begin(auth, ssid, pass);

}

void loop()
{
Blynk.run();

}

Arduino program ovoga projekta možete preuzeti ovdje.

#define BLYNK_PRINT /*

#include
#include

int gd, gl, dd, dl;
Servo baza;
CustomStepper vertikala(3,4,5,6);

// the setup function runs once when you press reset or power the board
void setup() {
Serial.begin(9600);
baza.attach(12);
vertikala.setRPM(100);
//vertikala.setSPR(100);
delay(1000);
}

// the loop function runs over and over again until power down or reset
void loop() {

readPhotoSensor();
while (gl != gd) {
if (gl < gd) {
OkreniBazu(-1);
}
else {
OkreniBazu(1);
}
}
OkreniBazu(0);
Serial.println(“Horizontala OK!”);

while (gl != dl) {
if (gl < dl) { // Pomak prema gore Serial.println(“Pomak gore”); PomakniVertikalu(1); } else { // Pomak prema dole Serial.println(“Pomak dole”); PomakniVertikalu(-1); } readPhotoSensor(); } Serial.println(“Vertikala OK!”); delay(1000); } void PomakniVertikalu(int i) { vertikala.run(); vertikala.rotateDegrees(i); while (!vertikala.isDone()) delay(15); } // 0 za stopiranje, 1 za rotaciju desno, -1 za rotaciju lijevo void OkreniBazu(int i){ //testiranjem dobili da ovaj servo staje na 94 int stopservo = 94; //mala brzina potrebna, jer će ionako se malo vrtiti, išli bi i na manje brzine, no zbog opterećenja velikog ostatka mehanizma, nemamo kretanje za manje brzine int pomakoffset = 2; if (i == 0) { //zaustavljanje baza.write(stopservo); //izlazak iz funkcije, jer ako nastavi postavit će pokret u lijevo zbog doljnje else funkcije. return; } if (i > 0) {
//pomak u desno
baza.write(stopservo + pomakoffset);
}
else {
//pomak u lijevo
baza.write(stopservo – pomakoffset);
}

}

void readPhotoSensor() {
//čitanje stanja svih senzora
gd = analogRead(A1);
gl = analogRead(A0);
dd = analogRead(A3);
dl = analogRead(A2);
//traženje maksimalnog, tj. najveće vrijednosti senzora da znamo prema kojem je najveća razina osvjetljenosti
int maxanalog = gd;
if (maxanalog < gl) maxanalog = gl;
if (maxanalog < dd) maxanalog = dd;
if (maxanalog < dl) maxanalog = dl;
gd /= maxanalog / 5;
gl /= maxanalog / 5;
dd /= maxanalog / 5;
dl /= maxanalog / 5;
//Ispis vrijednosti, koristili za provjeru
Serial.print(“Gornji lijevi: “);
Serial.println(gl);
Serial.print(“Gornji desni: “);
Serial.println(gd);
Serial.print(“Donji lijevi: “);
Serial.println(dl);
Serial.print(“Doljnji desni: “);
Serial.println(dd);
delay(10);
}

Arduino program ovoga projekta možete preuzeti ovdje.

Autori

Projekt su izradili Sara Stojanović i Klara Blažević uz mentorstvo Danijela Pobija iz Tehnička škola Ruđer Bošković Vinkovci.

 

Projekt je prijavljen na temu: Internet of Things: Pametna rasvjeta.