Korisna elektronika DIY: Arduino

4 komentara na forumu Autor: Harp zadnji komentar: 20/08/2019 10:44 od bambi

 

Ovdje cu predstaviti par stvari koje spadaju pod kategoriju “korisna elektronika DIY”, jer smatram da mnogo ljudi niti ne zna da se s lakocom moze stvarati razni uredjaji koji uvelike mogu poboljsati neki posao, projekt ili kvalitetu zivota. Fokusirati cu se uglavnom na podrucje mjerenja i kontrole, sto prosjecnom covjeku moze otvoriti nove vidike u prakticnom smislu rjesavanja nekih problema putem elektronicke dojave ili automatizacije.

Kako ja nisam strucnjak iz tog podrucja, vjerojatno ce i moja zapazanja i objasnjenja biti na istoj razini, lakse shvacena od drugog covjeka koji je nov u tome podrucju, a i garantira laksi stupanj projektiranja i gradnje uredjaja.

Za pocetak sam odabrao da vas upoznam s jednom zgodnom i jeftinom igrackom, koja se zove Arduino NANO. Preferiram bas NANO jer je manjih dimenzija, posjeduje USB port i ima obilje analognih ulaza. To je u svojoj prirodi mikrokontroler, koji izvrsava odredjeni program nakon sto se isprogramira. Program ostaje zapisan u cipu i ne brise se prilikom nestanka napajanja, a moze ga se mnogo puta zamjenjivati drugim. Dakle, on radi ono sto vam je potreba ili koliko ste kreativni, npr od banalnog zmiganja LED diode, pistanja SOS morze kodom kada se osvijetli, pa sve do vodjenja slozenih procesa kombiniranjem vise takvih uredjaja ili komunikacijom s drugim (CNC masine, 3D skeniranje, kriptiranje i obrada podataka za slanje linkom itd). Meni se pokazao kao vrlo praktican kod logiranja analognih podataka na racunalo, u fajl – prikupljenih stanja sa raznih senzora: potenciometra, prekidaca, LDR, NTC i drugih.
Isto tako, moze biti potpuno neovisan o racunalu kao neki posebni uredjaj (npr detektor metala, alarm, SD logger, inkubator, roboti i slicno), ali mu je pritom potrebno vlastito napajanje. Velika prednost mu je sto je jako popularan na globalnoj razini (uz vrlo dobru dokumentaciju s primjerima), pa se na internetu mogu pronaci vec gotovi raznorazni programi, projekti i ideje. Opcenito je potrebno svega par eksternih elemenata za interface, jer se samim programom obicno moze puno pojednostaviti veca poteba za istim.

Output se prati preko serijskog monitora (npr Putty) koji moze zapis spremiti u fajl za daljnju obradu. NANO v3 ima vlastitu EEPROM memoriju od 1024 bajta, dakle moze pohraniti, neovisno o napajanju do 1024 znakova. Npr ukoliko koristimo dekadski sustav od 00-99, na raspolaganju je 512 takvih unosa (mjerenja), a dodatno se rezolucija moze povecati i koristenjem heksadecimalnog sustava od 00-FF. U tih 100 mjesta dekadskih, recimo da mjerimo temperaturu u opsegu od 20 st.C, imati cemo korisnu rezoluciju od svaka 0,2 st.C, pa ce mjerenje u intervalima od 10 min potrajati oko 3.5 dana. Vise nego dovoljno za utvrditi kretanje ambijentalne temperature, kako kotao ili frizider radi, a bez potrebe spajanja na kompjuter ili petljanja s sd karticama.

Sam uredjaj se moze kupiti nov za manje od 35Kn ($5) preko ebaya ili slicne kineske trgovine, ali obicno dodje s krivo zalemljenim nozicama. Kinezima se ocito od obima posla neda zezati s “sitnicarenjima” poput ovog – makar je potrebno ispravno zalemiti samo jednu jedinu nozicu da drzi cijeli red u dobrom polozaju prilikom lemljenja. Postoji vise rjesenja, no izgleda da je najjednostavnije kupiti onaj NANO koji nema zalemljene nozice – jos je i malo jeftiniji – pa ih sami zalemiti. Drugu soluciju sam opisao preko prilozenih slika, kako opcenito popraviti takvu vrstu problema.

https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=arduino+nano&_sacat=0

Evo i primjer programa:

/*
 Analog input, analog output, serial output
 dva ntc senzora, u sobi ntc10K (spojen na +5V i preko 10K na GND), i vani
 ntc22K (spojen na +5V i preko 22K na GND).
 U sobi vrijednost 460 je oko 18 stupnjeva
 Vani vrijednost 240 je oko -2.5 stupnja
 Ispisuje stanje oba senzora i njihovu medjusobnu razliku
 Kalibracija izostavljena jer se prikuplja samo oblik odnosa izmedju njih za graficku
 vizualizaciju
*/

// These constants won't change.  They're used to give names
// to the pins used:
const int analogInPinA6 = A6;  // Analog input pin that the potentiometer is attached to
const int analogInPinA7 = A7;  // Analog input pin that the potentiometer is attached to

int sensorSoba = 0;        // value read from the pot
int sensorVan = 0;        
int n = 0;
int delta = 0;
//float sobaPrint = 0;
//float vanPrint = 0;

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 

  Serial.println("##t##");                       
  Serial.println("@ header separator for LiveGraph.jar");                       
  Serial.println();                       

  Serial.print("No");                       
  Serial.print("tSoba");                       
  Serial.print("tVan");                       
  Serial.println("tDelta");                       

}
void loop() {
  // read the analog in value:
  sensorSoba = analogRead(analogInPinA7);
  sensorVan = analogRead(analogInPinA6);

  //sobaPrint = map(sensorSoba, 0, 1023, 15, 64);  
  //vanPrint = map(sensorVan, 0, 1023, -32, 64);  


  // print the results to the serial monitor:
  Serial.print(n);
  Serial.print("t" );                       
  Serial.print(sensorSoba); 
  Serial.print("t" );                       
  Serial.print(sensorVan);   
  Serial.print("t" );  
  delta = sensorSoba - sensorVan;    
  Serial.println(delta);                       

  //  outputValue = map(sensorValue, 0, 1023, 0, 255);  

  delay(60000);      // loop svake 1 min u milisekundama.
  n = n + 1;

}

 

4 komentara na forumu Autor: Harp zadnji komentar: 20/08/2019 10:44 od bambi