Translate

sâmbătă, 24 decembrie 2011

Interactiune Arduino - User

Exista mai multe moduri in care Arduino poate interactiona cu userul. Acest post va prezenta cateva dintre ele:
  • Comunicarea pe computer prin Serial; Arduino va afisa mesaje ce pot fi vazute cu Serial Monitor
  • Afisarea pe un ecran LCD 1602 (16 caractere si 2 randuri)
  • Afisarea pe un ecran echipat cu un modul IIC. Personal nu pot spune foarte multe despre acest IIC, dar exista foarte multe resurse disponibile pe Internet. Cateva informatii, nu foarte lamuritoare aici.
Pentru exemplificarea primului mod mentionat, avem nevoie doar de un controller Arduino si de un cablu sa-l conectam la calculator. Dupa ce am conectat controllerul la calculator, vom introduce un programel scurt:

void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);
Serial.println("Welcome to");
Serial.println("The Arduino Blog");
digitalWrite(13, HIGH);
}
void loop(){
}


Rezultatul programului prezentat
Dupa ce il urcam pe Arduino, in partea dreapta a IDE-ului avem Serial Monitor (incercuit cu rosu). Il deschidem, daca nu apare nimic (desi ar trebui) apasam butonul Reset de pe Arduino. Cand ledul de pe pinul 13 se aprinde, ar trebui sa obtinem ceva asemanator cu screen-shot-ul de deasupra.

A doilea si al treilea mediu de afisare este un ecran LCD cu 2 randuri si 16 caractere/rand. Desi in esenta sunt acelasi mediu, voi prezenta doua moduri de a-l folosi.
Conexiunile Arduino - ecran
Pentru realizarea programului, avem nevoie de o librarie, "LiquidCrystal.h", care trebuie inclusa in programul nostru. Aceasta librarie permite afisarea pe orice ecran care foloseste un driver compatibil cu Hitachi HD44780; acestea pot fi identificate dupa conectorul cu 16 pini (evident al ecranului).

In poza de deasupra, sunt prezentate legaturile necesare pentru a pune in functiune ecranul. Conexiunile sunt urmatoarele:
LCD RS -> digital pin 12
LCD Enable -> digital pin 11
LCD D4  -> digital pin 5
LCD D5 -> digital pin 4
LCD D6 -> digital pin 3
LCD D7 -> digital pin 2.
Pentru a putea regla intensitatea literelor, legam si un potentiometru ca in figura.
Urmeaza programul care trebuie scris:

// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 

void setup() {

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.setCursor(2,0);
  lcd.print("The  Arduino");
  lcd.setCursor(6,1);
  lcd.print("Blog");
}

void loop() {
  }

Programul afiseaza pur si simplu pe ecran "The Arduino Blog". Am realizat si eu montajul si l-am pus la treaba:
Montajul realizat pentru ecranul LCD

Inchei acest post pentru ca a ajuns Mos Craciun si trebuie sa-l intampin. Voi continua intr-un post ulterior discutia despre afisarea pe un ecran LCD ce are un modul IIC si mai multe detalii despre diferitele functii ale bibliotecii LiquidCrystal; aceasta scurta prezentare ofera si alte posibilitati de proiectele.

Urez tuturor cititorilor un Craciun Fericit alaturi de cei dragi!

luni, 12 decembrie 2011

Arduino IDE 1.0 and new Arduino UNO

Arduino IDE 1.0 este cea mai recenta versiune de IDE propusa de cei de la Arduino; este disponibila pentru download aici, gratuit. Aceasta versiune este compatibila cu Windows (0023 nu suporta 64-bit, pe aceasta nu am testat-o inca), Mac OS X, iar pentru Linux sunt disponibile variante si pentru 32 si pentru 64 biti.

Relativ recent, a aparut si noul Arduino UNO. Acesta are o mica modificare la controllerul USB; la varianta noua se foloseste un ATMega 8u2

Amy Macdonald - This is the life



Saptamana trecuta s-a terminat sub semnul acestei melodii, asa ca m-am gandit sa o asculte toata lumea

duminică, 11 decembrie 2011

"Semafor" Shield for Arduino

Proiectul urmator este un mic upgrade al ultimului proiect prezentat, respectiv este un semafor cu perechea sa pentru pietoni; unul conceput pentru treceri de pietoni; are un buton push; cand este apasat declanseaza secventa de oprire a masinilor(rosu pentru masini) si de liber pentru pietoni (verde pentru pietoni). Scopul acestui proiectel este exemplificarea utilizarii unui buton push, a posibilitatii de creere de functii si a functiei de timp predefinita millis().
Schema generala a conexiunilor shield-ului
Am realizat o schema a shield-ului; conexiunile sunt asemanatoare, dar pentru a putea fi vazut mai usor, schema nu este chiar shield.
Voi prezenta modul de lucru al semaforului. In conditii normale, semaforul va fi verde pentru masini si rosu pentru pietoni. In momentul in care este apasat butonul, dupa 10 (10000ms) secunde se stinge becul verde si se aprinde galbenul pentru masini timp de 4 secunde apoi rosu pentru masini; in tot acest timp pentru pietoni este rosu. Din motive de siguranta, verdele pentru pietoni se va aprinde la 3 secunde dupa rosul pentru masini; dupa 20 de secunde verdele pietonilor va incepe sa lumineze intermitent si se stinge becul verde si se aprinde becul rosu; peste 2 secunde se da liber masinilor. Din motive practice, trebuie sa adaugam o functie care sa impiedice schimbarea semaforului pentru fiecare pieton care doreste sa traverseze; asa ca vom adauga in program o conditie care sa contorizeze timpul trecut de la ultima declansare; astfel timp de 2 minute nu se va mai da liber pentru pietoni de oricate ori este apasat butonul.
 In timp ce scriam postul, mi-am dat seama ca am omis sa introduc pposibilitatea de a memora apasarea butonului in cele 2 minute si la scuregerea lor sa apeleze functia de schimbare a semaforului.
Rezumatul Proiectului
 Daca realizam lipiturile conform cu schema de mai sus; evident avand grija sa punem pinii pe sheld in asa fel incat atunci cand vom dori sa il conectam cu Arduino, pinii de pe shield sa intre in pinii corespunzatori de pe Arduino; pini pe care i-am folosit in sketch.
Shield-ul pe care l-am construit este conectat la pinii digitali 13, 12, 11, 10, 9, 8 si la pinii de alimentare 5V si GND. Am ales acest layout pentru o fixare mai buna. Desigur, se poate folosi si pin-ul GND de langa pin-ul 13. Pentru buton, alegerea pinului 13 nu este intamplatoare( rol de control); acesta avand un led pe placuta Arduino; astfel pot vedea un efect atunci cand apas butonul din circuit. Voi pune acum si codul complet pe care l-am folosit la realizarea proiectului:

Arduino cu "semafor" shield atasat


//Interactive Traffic Lights
/*
Author:
  THE ARDUINO BLOG
http://thearduinoblog.blogspot.com
*/  

// assign the car lights
 int carRed = 12;
int carYellow = 11;
int carGreen = 10;


// assign the pedestrian lights
int pedRed = 8;
int pedGreen = 9;
int button = 13; // button pin
int crossTime = 20000; // time allowed to cross
unsigned long changeTime; // time since button pressed
void setup() {

Arduino si "Semafor" Shield

  pinMode(carRed, OUTPUT);
  pinMode(carYellow, OUTPUT);
  pinMode(carGreen, OUTPUT);
  pinMode(pedRed, OUTPUT);
  pinMode(pedGreen, OUTPUT);
  pinMode(button, INPUT); // button
  // turn on the green light
  digitalWrite(carGreen, HIGH);
  digitalWrite(pedRed, HIGH);
}
void loop() {
  int state = digitalRead(button);
  /* check if button is pressed and it is
  over 2 minutes since last button press */
  if (state == HIGH && (millis() - changeTime) > 120000) {
    // Call the function to change the lights
    delay(10000);
    changeLights();
  }
}
void changeLights() {
  digitalWrite(carGreen, LOW); // carGreen off
  digitalWrite(carYellow, HIGH); // carYellow on
  delay(4000); // wait 4 seconds
  digitalWrite(carYellow, LOW); // carYellow off
  digitalWrite(carRed, HIGH); // carRed on
  delay(3000); // wait till its safe
  digitalWrite(pedRed, LOW); // pedRed off
  digitalWrite(pedGreen, HIGH); // pedGreen on
  delay(crossTime); // wait for preset time period
  // flash the ped green
  for (int x=0; x<5; x++) {
    digitalWrite(pedGreen, HIGH);
    delay(250);
    digitalWrite(pedGreen, LOW);
    delay(250);
  }
  // turn pedRed on
  digitalWrite(pedRed, HIGH);
  delay(2000);
  digitalWrite(carYellow, HIGH); // carYellow on
 
  delay(2000);
  digitalWrite(carRed, LOW); // carRed off
  digitalWrite(carGreen, HIGH); //carGreen on
  digitalWrite(carYellow, LOW); // carYellow off
  // record the time since last change of lights
  changeTime = millis();

}
Conexiunea shield - board

Fiecare linie de program are un comentariu care arata ce face linia respectiva. Un exercitiu de aplicare a ceea ce a fost prezentat este adaugarea memorarii apasarii butonului in intervalul de 2 minute.

luni, 5 decembrie 2011

Noi sectiuni ale blogului

Se pare ca timpul este o problema destul de mare (atat pentru proiectele cat si pentru fotografierea pasilor), asa ca intre postari despre Arduino si electronica, voi introduce noi sectiuni marcate prin etichete corespunzatoare. Postarile nu vor mai fi urcate regulat ca pana acum, dar se va pastra ora 21:21 ca ora de postare. Noile sectiuni vor fi:
  • Unde sa mergem? - evenimente din Bucuresti sau diferite locatii din tara sau din strainatate
  • Ce am mai citit? - carti pe care le-am citit mai mult sau mai putin tehnice
  • Ce am mai vazut? - filme, spectacole, clipuri etc. 
  • Ce a mai aparut? - ultimile versiuni care au aparut a diverselor (telefoane, OS, programe)

Rammstein - Mein Land


Rammstein - Mein Land from Rammstein on Vimeo.


Probabil cel mai recent clip lansat de Rammstein.
Enjoy! \m/

luni, 14 noiembrie 2011

Arduino Shield

Este o perioada aglomerata asa ca astazi voi trata un subiect mai putin comun; voi vorbi despre shielduri. Acestea pot fi de multe feluri si cu diferite functii. Un shield este o placuta care se introduce in toti pinii controllerului Arduino. Acesta utilizeaza o parte din pini pentru a-si atinge scopul propriu; restul sunt pur si simplu mutati pe noua placuta.

1.Sensor Shield
Arduino Sensor Shield
Acest Shield nu este mare lucru. La el se pot conecta diferiti senzori printr-un cablu cu 3 fire. De fapt, Shield-ul reuneste trei pini - alimentare 2 pini si semnal un pin. Toate mufele pe care le gasim sunt, de fapt cate un port de pe Arduino-ul original. Un Sensor Shield are si un port de comunicatii, pe care se pot folosi comunicatii I2C - pentru un ecran LCD sau un senzor de temperatura digital.
Intrucat acesta se pune peste controllerul Arduino, nu mai avem acces la ledurile sau switchurile de pe controller; asadar pe orice shield gasim si butonul reset si cel putin ledul power.
Arduino Sensor Shield a aparut in mai multe variante, de obicei create pentru diferite scopuri (senzori I2C, servomotoare sau senzori analogici).

2.Ethernet Shield

Arduino Ethernet Shield
Acest shield este inca un mister si pentru mine, asadar pana cand voi lucra cu el il voi mentiona ca fapt divers (sa stim de existenta lui). Acesta permite unui Arduino sa acceseze o retea locala. Are un port de retea cu 8 fire, RJ-45 care se poate conecta la un router. Acesta exista sub multe forme cu diferite facilitati. Exista Ethernet Shield care poate alimenta un Arduino. Spre exemplu, folosind un astfel de shield, se poate crea o conexine catre un site care ofera informatii despre vreme si se pot afiza prognozele pe un ecran. Dupa cum se poate vedea in poza, acest ethernet shield are si un cititor de carduri microSD.

3.Prototyping Shield
Prototyping Shield
Acest shield se utilizeaza pentru ca ofera un acces foarte facil la un breadboard. Desi se poate pune breadboardul langa arduino, folosind acest shield, mutarea proiectelor se poate face mai usor. Cred ca stim cu totii cand aveam un proiect pe breadboard si arduino-ul langa si am vrut sa mergem sa-l aratam si in timpul transportului a iesit fie si un singur fir si s-a dus naiba totul.










Shieldurile enumerate mai sus sunt cele mai folosite si ,exceptand ethernet shield, cele mai simple. Trebuie sa mai mentionam existenta unor shielduri complicate, cum ar fi GSM shield sau X-Bee Shield sau LCD shield. Probabil va intrebati care este rolul acestui post; ideea a fost de a explica putin conceptul de Arduino Shield, deoarece urmatorul proiect este un mic upgrade la semaforul prezentat in postul anterior; proiect pe care il voi prezenta sub forma unui shield.

marți, 8 noiembrie 2011

Semafor controlat de Arduino

Ca o scurta aplicatie a ceea ce am prezentat deja, vom incerca sa facem inca un mic proiectel; un semafor. Materiale necesare:
Materiale necesare: breadboard, fire, Arduino Board, LED Brick
  • Arduino board
  • Led-uri (verde, rosu, galben)
  • Rezistente (de 220 Ohm ar trebui sa fie suficiente)
  • Fire
Vom realiza un fel de tabel de adevar; acesta va prezenta algoritmul semaforului in pasi:
  1. Rosu
  2. Rosu + Galben
  3. Verde
  4. Galben
Acestia sunt pasii pe care ii va parcurge in timpul executarii functiei loop. Inainte de proiect trebuie sa stabilim intervalele de timp pentru fiecare pas; asadar rosu va dura 20 secunde, rosu+galben 1 secunda, verde 20 secunde, galben o secunda. Valorile le puteti schimba; pentru ca ar trebui sa stiti deja cum. Schema acestui circuit:


Conexiunile care trebuie facute:
led rosu-D10 (digital 10)
    led galben-D9
    led verde-D8 (se observa in schema ca exista acele rezistente).
La sfarsit, circuitul va arata cam asa:
Circuitul final

Pasul urmator: programul care trebuie rulat. Acesta arata cam asa:

int redLed=10;
int yelLed=9;
int grnLed=8;

void setup(){
pinMode(redLed,OUTPUT);
pinMode(yelLed,OUTPUT);
pinMode(grnLed,OUTPUT);}

void loop(){
digitalWrite(grnLed,LOW);
digitalWrite(yelLed,LOW);
digitalWrite(redLed,HIGH);
delay(20000);
digitalWrite(yelLed,HIGH);
delay(1800);
digitalWrite(redLed,LOW);
digitalWrite(yelLed,LOW);
digitalWrite(grnLed,HIGH);
delay(20000);
digitalWrite(grnLed,LOW);
digitalWrite(yelLed,HIGH);
delay(1800);}

Acest proiect nu ar trebui sa puna niciun fel de probleme; trebuie doar atentie si rabdare. Eu am folosit niste elemente numite brick. Acestea fac parte din primul meu kit Arduino (pe care l-am primit de la colegii mei de facultate si carora vreau sa le multumesc pe aceasta cale). Ele sunt, de fapt niste componente foarte scumpe care se pot conecta aproape (pentru ca toate GND se conecteaza in acelasi punct) direct la Arduino. LED brick-ul de fapt este un PCB care contine un LED si o rezistenta. Costurile unui brick se ridica la 5 lei sau chiar 8; componentele esentiale nu costa nici macar 1 leu. Eu le-am folosit pentru ca le aveam si ca era mai comod.

sâmbătă, 5 noiembrie 2011

"Hello, world" - Arduino Version

Ei bine, acum ca ne-am ales board-ul care ne va insoti in continuare putem sa trecem la crearea unui program clasic pentru orice limbaj de programare. Ca sa ne apucam de treaba avem nevoie de programelul Arduino. La momentul publicarii postului ultima versiune este 0022, disponibila aici. Acum ca avem si programelul, pentru primul program avem nevoie de urmatoarele:
  • Arduino board
  • USB cable
Codul este disponibil deja in exemplele Arduino 0022. Il putem accesa, dupa cum se vede in imagine.
Programul se numeste blink.
Ce face el?
Desi este un program banal, care aprinde si stinge un led montat deja pe board, acest program reprezinta primul contact cu limbajul de programare Arduino. Voi explica, pe scurt fiecare linie de comanda din program.


/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
 */

void setup() {               
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);    
}

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
}

  • /* bla bla bla  */   -  Ceea ce este cuprins intre /* si */ este considerat comentariu si nu este luat in considerare la compilare; se poate folosi pentru comentarii pe mai multe linii
  • void setup(){....} - este o functie care in timpul rularii programului se ruleaza o singura data; aici se seteaza starea pinilor (intrare sau iesire, se intializeaza ecranele LCD, modulele SD, etc)
  • //  - este simbolul folosit pentru comentarii ce nu depasesc o linie
  • pinMode(13,OUTPUT); - este sitnaxa pentru setarea starii unui pin; in cazul de fata pinul 13 este setat ca pin de iesire. In comanda se face referire la pinii digitali (numerotati 0-13)  si modurile sunt INPUT sau OUTPUT)
  • void loop(){...} - este o a doua functie esentiala a unui program Arduino. Aceasta functie se ruleaza incontinuu, cand ajunge la sfarsit, se reia executarea de la inceput. 
  • digitalWrite(13,HIGH); - este o comanda care aplica tensiune de 5V pe pinul 13 al controllerului. In cazul de fata, exista un LED conectat intre pinul 13 care se va aprinde. Pinii controllerului reprezinta borna pozitiva a oricarui dispozitiv conectat  (led, spre exemplu); a doua borna se conecteaza la GND.
  • delay(1000); - este functia care creeaza o pauza in rularea programului. Parametrul functiei este numarul de milisecunde cat dureaza pauza.
  • pinMode(13,LOW); - aceasta comanda taie voltajul de pe pinul 13; acesta are acelasi potential ca GND; nu exista cadere de potential, nu exista curent.
Acesta este faimosul  "Hello, world" in limba Arduino. Cu aceste comenzi se pot face diferite secvente de leduri; Arduino accepta si comenzi gen for sau while pentru a face jocuri de leduri mai complexe.

joi, 3 noiembrie 2011

Sunt Arduino. Hai sa ne cunoastem mai bine!

Consecinta prezentarii optiunilor de Arduino, cel putin pentru inceput, deoarece exista variante mai complexe, gen Arduino Mega 2560 sau variante miniaturale Arduino Mini,consecinta fireasca este intrarea in posesie a uneia. Acest post isi propune sa prezinte ce gasim pe o placa Arduino si ce ne mai trebuie pentru a trece la "primul meu proiect".
Board-ul Arduino Duemilanove

 In imagine se poate observa controllerul Arduino. In partea de sus sunt cei 14 pini digital I/O configurabili. Acestia vor fi configurati in timpul programarii. Exista niste pini mai speciali, cum ar fi pin-ul 13; acesta are un LED instalat din fabrica, marcat prin "L".
In partea stanga, este interfata USB prin care se programeaza si se alimenteaza controllerul. Conectorul negru este de alimentare; acesta se poate folosi dupa programare, pentru a folosi circuitul realizat. Se alimenteaza  cu o tensiune de maxim 12V; exista conector pentru aceasta mufa cu suport de baterie de 9V, sau cu array de 4 baterii normale sau chiar catre USB (care nu permite si programare).
In partea de jos, exista 6 pini denumiti "Analog in"; acestia sunt pini de intrate; multi senzori fiind conectati la acestia. Senzorii analogici (de obicei bazati pe voltaj) se conecteaza si iesirea din senzori este procesata si transformata in valori accesibile omului. Langa porturile Analog In, se alfa porturile "Power". Aceste porturi pot asigura alimentarea diferitelor componente. Acestea au valori de 5V si 3.3V; aceasta tensiune se obtine conectand borna negativa la orice pin notat GND (borna negativa).
Butonul push de pe placa este butonul "Reset"; acesta restarteaza practic controllerul. Aceasta restartare provoaca reincarcarea programului in memorie si poate remedia anumite erori aparute.
Pe placa mai exista inca trei LED-uri, munite "RX", "TX" si "PWR". Ultimul este evident un bec ce arata ca Arduino este alimentat cu energie electrica. Celelalte doua, se aprind cand exista transfer de date catre calculator; r - received si t - transmitted.
Un alt element necesar este un programel Arduino 0022 disponibil gratuit aici. Acest program va fi interfata dintre utilizator si Arduino. Elementele de baza ale programelului vor fi explicate in postul urmator cand va fi realizat si "Primul Proiect".

marți, 1 noiembrie 2011

Original vs. Clone vs. Handmade

Ei bine, titlul este destul de sugestiv.... Cand trebuie sa ne alegem Arduino-ul ne intrebam ce ar trebui sa facem. Voi incerca sa dau un raspuns disecand fiecare varianta in parte.

Rasunsurile la aceasta intrebare depind foarte mult de cel pe care il intrebati. Fiecare comerciant isi va lauda marfa, probabil asta voi face si eu, dar voi incerca sa gandesc in afara cutiei. Consider ca ce isi face omu' cu mana lui nu e lucru manual, ci este sfant. De departe cel mai bun Arduino este cel facut de fiecare in parte folosind piese de calitate. Exista mai multe problemute care intervin:
  1. Trebuie sa facem un PCB. Acesta se gaseste pe site-ul oficial Arduino, schema este gratuita si disponibila oricui. Una din probleme este obtinerea PCB-ului functional; folosind metoda fotografica implica ceva experienta, metoda markerului nici nu trebuie luata in discutie, deci ramane sa apelam la o firma specializata, fapt care ridica mult costurile.
  2. Trebuie sa folosim unele componente SMD care pot crea si ele probleme, nefiind tocmai usor de lipit.
Avantajele acestuia ar fi mai multe:
  1. Stim ce componente folosim, de obicei mai capabile decat cele din fabrica (majoritatea fabricantilor folosesc piesele aproape de limita lor de exploatare - un exemplu graitor acum vreo 5 ani au aparut niste boxe 5.1 Genius pe care a trebuit sa le repar de cateva ori pana mi-a zis un meserias sa tin volumul de la calculator pe la 30% si sa folosesc  volumul lor ca daia le-am ars :-??)
  2. Componentele care se defecteaza pot fi schimbate, fiind folosite componente mari putem sa el dezlipim si inlocuim
  3. Lipind prindem experienta pentru viitoarele proiecte
  4. Ne intalnim cu diferite componente si pe care le vom recunoaste in alte proiecte, unii chiar isi vor pune intrebari despre cum le-ar putea folosi in alte proiecte
  5. Satisfactia unei realizari personale.
 In imagine, este un Arduino handmade(95%) PCB si SMD-ul sunt facute de roboti; toate componentele se gasesc in magazinele de piese electronice. Pentru cei interesati, mai multe detalii aici.


In caz ca am renuntat la prima varianta, avem doua optiuni: original sau clone. Ei bine, depinde de fiecare. In imagini, am incercat sa compar doua board-uri: un clone si un original. Dupa aproximativ jumatate de ora de studiu, singura diferenta pe care am reusit sa o remarc, din punct de vedere constructiv, este prezenta pinilor X3; acesti patru pini sunt prezenti pe placa clone, iar pe cea originala nu. Cu mici diferente de aspect (recunosc ca originalul arata mai vesel cu steagul Italiei si cu harta) cele doua placi arata si functioneaza absolut identic. Singura diferenta pe care am mai observat-o este diferenta de pret; un clone costa cu aproximativ 25-30% mai putin decat originalul. Am mai intrebat diferite persoane si am primit diferite raspunsuri "cele originale sunt testate garantat functioneaza", ei bine, cu banii de doua originale cumpar trei clone-uri si tot or merge doua. Eu am lucrat cu ambele si nu am observat nicio diferenta in comportament. Ca opinie, strict personala, as alege un clone, deoarece este mai ieftin si daca din neatentie gresec un proiect parlesc o suma mai mica de bani. Un atu al clone-ului este ca microcontrollerul poate fi schimbat si cu un ATMega328 fara bootloader si instalarea bootloaderului (toate acestea cu un singur Arduino!)

Alegerea placii pe care sa lucram este o decizie personala, eu mi-am facut datoria sa prezint variantele posibile si sa fac recomandarile de rigoare. Puteti dezbate in continuare subiectul prin comentarii.

sâmbătă, 29 octombrie 2011

Arduino: The Documentary

Cand doi baieti destepti s-au gandit sa faca ceva pentru a simplifica primii pasi ai studentilor si, as putea spune, chiar elevilor (prin Italia in unele licee se predau ore de Arduino ca initiere in electronica) a aparut Arduino.
Modificarile ulterioare au constat in adaugarea interfetei USB care a inlocuit invechita interfata Serial si schimbarea controllerului. Nu garantez ca acest post va mai fi valabil si maine. In 2010, s-a realizat un documentar despre platforma Arduino pe care va invit sa-l urmariti.
Vizionare placuta!

Arduino The Documentary (2010) English HD from gnd on Vimeo.

vineri, 28 octombrie 2011

Trusa electronistului (incepator) - partea a II a

Am gasit un mod placut de a termina saptamana si odata cu ea voi termina si postul inceput. In aceasta parte a doua, vom face un pas mic spre ceea ce va deveni in final un circuit. Vedetele acestui post sunt elemente de circuit, foarte ieftine, care rar depasesc 2 lei, dar care ne pot costa un drum pana la magazin.
Elementele, pe scurt, probabil le stiti toti:
  • LED-uri
  • Rezistoare simple
  • Rezistoare variabile/potentiometre(foarte utile ca pot inlocui orice rezistor)
  • Condensatoare
  • Stabilizatoare de tensiune
  • Diode
1.Light Emmiting Diode (LED)
LED-urile pot fi folosite in orice faza de test a proiectului. Practic, orice este alimentat in urma proceselor (sirena, releu) poate fi usor inlocuit cu un led. Daca ledul se aprinde, stim ca si releul va fi declansat.
Tot timpul, ledurile se vor folosi impreuna cu un rezistor, pentru ca au nevoie de tensiune mica(de obicei intre 1.7V si 4V in functie de tip si culoare) pentru a functiona. O tensiune mare duce la arderea ledului. Dupa cum si numele ii spune, dioda electroluminiscenta, acest element de circuit este o dioda, deci permite trecerea curentului intr-un singur sens, asadar conteaza cum il conectam. Orice led are doi pini, unul mai lung si altul mai scurt, pinul lung se conecteaza la borna pozitiva a sursei, iar pinul scurt la borna negativa, evident in serie cu un rezistor. Daca pinii ledului sunt taiati, nu e o problema: din fabricatie baza rotuna a ledului are o tesitura pe partea unuia dintre pini pentra a putea identifica borna negativa.
Ledurile nu se conecteaza niciodata in paralel la un singur rezistor. Astfel cu un rezistor putem conecta ledurile in serie, daca totusi vrem sa le conectam in paralel trebuie ca fiecare led sa aiba un rezistor.
Rezistenta necesara pentru functionarea corecta a ledului se poate calcula, conform urmatorului exemplu(eu recomand folosirea unei rezistente mai mari decat cea teretic calculata):
Fie un led rosu care trebuie alimentat la 1.7V care atinge stralucirea maxima cand este strabatut de un curent de 5mA. Trebuie sa gasim rezistenta pentru a-l alimenta la o sursa de 9V. Exista o formula:
(Tensiunea sursei(V) - tensiunea ledului(V))/curentul necesar(A)) = rezistenta necesara (Ohm)
Nu sunt calcule complicate, datele ar trebuie sa le gasim in datasheet-ul ledului. Aplicat, in cazul nostru (9-1.7)/0.005A = 1460 Ohm. Se ia cea mai apropiata marime existenta care este mai mare decat rezultatul obtinut; in cazut nostru 1500 Ohm, deci 1.5KOhm. Cu puterea rezistentei exista o alta formula, dar nu mai complicam situatia, de cele mai multe ori 0.25W este suficient.

2. Rezistoare simple si variabile, potentiometre

In acesta caz, o imagine face cat 1000 de cuvinte. In imagine gasim fiecare element din acest paragraf si metodele de a prezenta marimea lor. Rezistoarele simple sunt marcate prin codul culorilor(detalii), exista multe aplicatii(un exemplu), chiar si pentru telefon care le decodeaza sau prin inscriptionare cu valoarea lor. 1k2 inseamna 1200 Ohm.
Pe rezistentele variabile este scrisa valoarea maxima pe care o pot lua. In cazul din imagine 250K. In partea dreapta este un potentiometru pe care este scris explicit valoarea, 10K.
In trusa, trebuie sa avem cele mai foalosite valori. Pentru rezistente simple, valorile ar fi 220Ohm, 330Ohm (de obicei la leduri alimentate la 5V), 1K (merge pus si la leduri la 5V, lumineaza suficient de puternic) si 10K. Rezistoarele variabile si potentiometrele, de obicei sunt de 10K.
Rezistoarele simple se folosesc impreuna cu leduri. De asemenea cand folosim butoane este necesar un rezisotor, vom vedea in proiecte de 10K. Potentiometrul si rezistentele variabile se pot folosi pentru a regla intensitatea scrisului pe ecrane LCD sau pentru a controla viteza unui ventilator etc.

3.Condensatoare

In circuitele care implica microcontrollere, este bina sa nu existe variatii ale curentului. Pentru asta, se foloseste un condensator care stabilizeaza tensiunea. Desi nu are o valoare mare, isi face treaba, 0.1uF fiind suficienti. Kiturile Arduino au deja pe ele aceste condensatoare, deci nu trebuie sa le adaugam noi. Condensatoarele sunt necesare si pentru functionarea cristalelor de quartz, mai precis doua de 22pF.

4.Stabilizatoare de tensiune

LM7805;         pini:   1   2  3
Aceste elemente de circuit exista pe kitul Arduino. Ele devin necesare cand avem curenti mai mari decat necesari sau cand cei pe care ii avem deja nu fac fata. Aceste elemente permit montarea unui radiator, ceea ce imbunatateste performantele. Configuratia pinilor trebuie luata din datasheet. (un search pe net rezolva imadiat) De obicei,  conform legendei sursa se conecteaza intre 1(+) si 2(-), iar tensiunea dorita apare intre pinii 3(+) si 2(-). Pinul 2, care este borna negativa este considerata de potential electric 0 si de acum orice referire la borna (-) va fi GND. Aceste componente fac parte din seria 78xx; unde xx este tensiunea intre pinii 2 si 3. Cele mai folosite sunt 7805; stabilizatoare de tensiune de 5V. Acestea se pot alimenta de la 12V, fara a fi nevoie de un radiator. Un alt stabilizator, mai rar folosit pentru Arduino este 7812, ati ghicit de 12V.

4.Diode

Ultimele, dar nu cele din urma elemente care ne-ar putea trebui sunt diodele. Acestea restrictioneaza circulatia curentului la un singur sens(au o rezistenta mica intr-un sens si o rezistenta foarte mare in sensul opus). Pana acum, eu am folosit doar 1N4001 si 1N4148, de obicei unde erau mai multi pini ai conrollerului in aceeasi borna (+) a unu led. Rolul lor era sa restrictioneze circulatia curentului spre controller.
Exista multe tipuri de diode, cum ar fi Zener, dar nu intram in prea multe detalii.

Cam acestea sunt componentele pe care ar trebui sa le avem la indemana cand ne apucam de orice proiectel. Recunosc ca acest post este cam stufos, dar prefer sa nu mai lungim treaba si sa ne apucam de lucru la ceva serios. Sper ca nu mi-a scapat nimic, in caz ca am omis ceva, exista rubrica de comentarii :).

marți, 25 octombrie 2011

Trusa electronistului (incepator) - partea I

Inainte de a incepe orice proiect, exista mai multe materiale necesare. De cele mai multe ori, ne dam seama ca ne lipseste ceva abia cand avem nevoie, uneori prea tarziu (si tot timpul in mijlocul proiectului). Deci, ce vom folosi cel mai mult in proiecte?
  • Breadboard/Stripboard/PCB
  • Letcon
  • Fludor +(eventual) pasta decapanta
  • Fire de legatura
1.Breadboard - Placa perforata - Printed Circuit Board

(+) si (-) sunt bornele de tensiune; a-j randuri; 1-30 coloane
 Breadboard(solderless breadboard) este o placa pe care se pot pune elemente de circuit. Aceasta placa se foloseste in fazele incipiente ale proiectelor, pentru teste. Pe aceasta nu se lipeste nimic ceea ce permite modificarea facila a circuitului sau remedierea erorilor. In imaginea alaturata, este un breadboard: pentru o alimentare usoara de obicei se alimenteaza cele 2 perechi de randuri + si -. Se poate observa o linie care imparte toate coloanele in doua parti. Cele cinci puncte(pozitionate simetric fata de linia mediana) care formeaza coloana sunt conectate intre ele; astfel A1=B1=C1=D1=E1, dar sunt diferite de F1=G1=H1=I1=J1. Punctele de pe liniile de tensiune sunt conectate toate conform liniilor albastra si rosie.
Perfboard - placa perforata

Dupa realizarea si testarea proiectului pe breadboard, se poate trece la lipirea definitiva a acestuia. Pentru aceasta etapa, vom folosi o palca perforata sau un PCB. Placa peforata, in imagine, are doua fete: elementele se introduc prin partea fara cerculete de cupru si se lipesc pe partea cu cerculete de cupru(stiu ca este evident, dar am vazut si oameni care nu s-au prins :) ). Legaturile se fac fie prin fire care leaga punctele, fie unind punctele care trebuie conectate cu fludor in momentul lipirii. Metoda este buna pentru proiecte mici si cu conexiuni relativ putine si pentru invatare.

PCB
O alta metoda mult mai des intalnita este PCB-ul. Aceasta este o suprafata placata cu cupru pe care se deseneaza legaturile dintre elementele de circuit, dupa care cuprul in exces este indepartat, ramanand doar legaturile necesare. Despre PCB-uri voi mai vorbi, mai ales despre cum le putem folosi acasa(nu pcb profesional).


2.Letcon sau pistol de lipit (ca o opinie strict personala prefer letconul)
Letcon

Pentru circuite electronice puterea optima este de 30W. Eu prefer sa lucrez cu un letcon; pistolul de lipit are un varf cam mare si, de obicei, putere mare. Majoritatea componentelor electronice sunt sensibile la temperaturi mari; astfel folosirea unor aparate de lipit de putere mare(60 - 100W, chiar si letcon) creeaza riscul arderii piesei respective si distrugerea ei(proprie experienta). In imagine este un letcon cu varf subtire; ceva asemanator este mai mult decat suficient pentru invatare(20-30Ron, nu mai mult).

3. Fludor si pasta decapanta


In electronica, fludorul trebuie sa fie subtire pentru a oferi precizie. Daca acesta este gros poate uni puncte care nu trebuie unite ceea ce poate compromite circuitul sau chiar arde unele componente. Pasta decapanta are rolul de "pregati" suprafata la care trebuie sa adere fludorul.

4. Firele de legatura

Cel mai des vor fi folosite pe breadboard. Exista pe piata fire create cu acest scop care au conectori la capete. Desigur, se pot folosi orice fire. Ideal ar fi sa fie fire monolitate pentru a face contact cand este introdus in breadboard. Pe placa perforata nu conteaza tipul de fire, deoarece acestea fiind lipite sigur fac contact cum trebuie. In imagine un exemplu de fire de legatura; relativ ieftine si care isi fac treaba. Ofera o bogata paleta de culori ceea ce face posibila diferentierea usoara a diferitelor fire din schema electrica.



Stiu ca partea asta cu pregatirea este foarte plictisitoare, dar ca incepator stiu ce probleme am intalnit si eu la randul meu, asa ca posturile vor deveni din ce in ce mai interesante odata cu trecerea timpului
Va urma partea a II a......

luni, 24 octombrie 2011

Prima postare

Pe acest blog voi posta diferite proiectele facute cu ajutorul sau fara ajutorul incredibilelor placi de dezvoltare din titlu(Arduino). Proiectele ce vor fi postate sunt de dificultate redusa; ideale pentru cei care vor sa invete incet tainele electronicii.
Nici eu nu sunt un expert, asa ca probabil multe intrebari nu isi vor gasi raspunsul aici, dar proiectele realizare vor fi 100% functionale si pot constitui bazele unor proiecte mai complicate.