Publicat la data

UNO Semafor cu trei Led-uri verde-galben-rosu – pentru începători

UNO Semafor cu trei Led-uri verde-galben-rosu

Un program simplu pentru Arduino.

Înainte ar fi bine sa citeşti tutorialul “Descrierea pinilor UNO R3

si tutorialul ”Arduino LED Blink”

Voi folosi trei LED-uri de 3v pe care le leg la pinii 8, 9, 10 cu rezistoare de 1kΩ.

UNO-semafor

Voi scrie un cod :

void setup() {

pinMode(8, OUTPUT);

pinMode(9, OUTPUT);

pinMode(10, OUTPUT);

}

void loop() {

digitalWrite(10, HIGH);

delay(2000);

digitalWrite(9, HIGH);

delay(200);

digitalWrite(10, LOW);

delay(1000);

digitalWrite(9, LOW);

delay(100);

digitalWrite(8, HIGH);

delay(2000);

}

Acum voi face upload la program pe placa UNO prin USB.

Succes !

Colectivul Roboromania

 

Publicat la data

Cum să facem un UNO să cânte !

Cum să facem un UNO să cânte !

The imperial March – STAR WARS

muzica

Avem nevoie de un UNO și de un buzzer pasiv.

UNO-Buzzer1 UNO-Buzzer2

Montăm cablurile

Exemplu de cod :

//The imperial March – STAR WARS

// tone(8,LA3,Q)  delay(1+Q)

// toate notele definite in englezăcu exceptia,

//asta care se numeste in italiană “la” pentru că A0…A5 sunt pini “analog”.

// (Ab este definit  Ab, iar inversul(NOT) este LAb)

#define  C0 16.35

#define Db0 17.32

#define D0  18.35

#define Eb0 19.45

#define E0  20.60

#define F0  21.83

#define Gb0 23.12

#define G0  24.50

#define Ab0 25.96

#define LA0 27.50

#define Bb0 29.14

#define B0  30.87

#define C1  32.70

#define Db1 34.65

#define D1  36.71

#define Eb1 38.89

#define E1  41.20

#define F1  43.65

#define Gb1 46.25

#define G1  49.00

#define Ab1 51.91

#define LA1 55.00

#define Bb1 58.27

#define B1  61.74

#define C2  65.41

#define Db2 69.30

#define D2  73.42

#define Eb2 77.78

#define E2  82.41

#define F2  87.31

#define Gb2 92.50

#define G2  98.00

#define Ab2 103.83

#define LA2 110.00

#define Bb2 116.54

#define B2  123.47

#define C3  130.81

#define Db3 138.59

#define D3  146.83

#define Eb3 155.56

#define E3  164.81

#define F3  174.61

#define Gb3 185.00

#define G3  196.00

#define Ab3 207.65

#define LA3 220.00

#define Bb3 233.08

#define B3  246.94

#define C4  261.63

#define Db4 277.18

#define D4  293.66

#define Eb4 311.13

#define E4  329.63

#define F4  349.23

#define Gb4 369.99

#define G4  392.00

#define Ab4 415.30

#define LA4 440.00

#define Bb4 466.16

#define B4  493.88

#define C5  523.25

#define Db5 554.37

#define D5  587.33

#define Eb5 622.25

#define E5  659.26

#define F5  698.46

#define Gb5 739.99

#define G5  783.99

#define Ab5 830.61

#define LA5 880.00

#define Bb5 932.33

#define B5  987.77

#define C6  1046.50

#define Db6 1108.73

#define D6  1174.66

#define Eb6 1244.51

#define E6  1318.51

#define F6  1396.91

#define Gb6 1479.98

#define G6  1567.98

#define Ab6 1661.22

#define LA6 1760.00

#define Bb6 1864.66

#define B6  1975.53

#define C7  2093.00

#define Db7 2217.46

#define D7  2349.32

#define Eb7 2489.02

#define E7  2637.02

#define F7  2793.83

#define Gb7 2959.96

#define G7  3135.96

#define Ab7 3322.44

#define LA7 3520.01

#define Bb7 3729.31

#define B7  3951.07

#define C8  4186.01

#define Db8 4434.92

#define D8  4698.64

#define Eb8 4978.03

// DURATION OF THE NOTES

#define BPM 120    //  you can change this value changing all the others

#define H 2*Q //half 2/4

#define Q 60000/BPM //quarter 1/4

#define E Q/2   //eighth 1/8

#define S Q/4 // sixteenth 1/16

#define W 4*Q // whole 4/4

void setup() {

pinMode(8, OUTPUT);

pinMode(9, OUTPUT);

digitalWrite(9,LOW);

}

// the loop routine runs over and over again forever:

void loop() {

//tone(pin, note, duration)

tone(8,LA3,Q);

delay(1+Q); //delay duration should always be 1 ms more than the note in order to separate them.

tone(8,LA3,Q);

delay(1+Q);

tone(8,LA3,Q);

delay(1+Q);

tone(8,F3,E+S);

delay(1+E+S);

tone(8,C4,S);

delay(1+S);

tone(8,LA3,Q);

delay(1+Q);

tone(8,F3,E+S);

delay(1+E+S);

tone(8,C4,S);

delay(1+S);

tone(8,LA3,H);

delay(1+H);

tone(8,E4,Q);

delay(1+Q);

tone(8,E4,Q);

delay(1+Q);

tone(8,E4,Q);

delay(1+Q);

tone(8,F4,E+S);

delay(1+E+S);

tone(8,C4,S);

delay(1+S);

tone(8,Ab3,Q);

delay(1+Q);

tone(8,F3,E+S);

delay(1+E+S);

tone(8,C4,S);

delay(1+S);

tone(8,LA3,H);

delay(1+H);

tone(8,LA4,Q);

delay(1+Q);

tone(8,LA3,E+S);

delay(1+E+S);

tone(8,LA3,S);

delay(1+S);

tone(8,LA4,Q);

delay(1+Q);

tone(8,Ab4,E+S);

delay(1+E+S);

tone(8,G4,S);

delay(1+S);

tone(8,Gb4,S);

delay(1+S);

tone(8,E4,S);

delay(1+S);

tone(8,F4,E);

delay(1+E);

delay(1+E);//PAUSE

tone(8,Bb3,E);

delay(1+E);

tone(8,Eb4,Q);

delay(1+Q);

tone(8,D4,E+S);

delay(1+E+S);

tone(8,Db4,S);

delay(1+S);

tone(8,C4,S);

delay(1+S);

tone(8,B3,S);

delay(1+S);

tone(8,C4,E);

delay(1+E);

delay(1+E);//PAUSE QUASI FINE RIGA

tone(8,F3,E);

delay(1+E);

tone(8,Ab3,Q);

delay(1+Q);

tone(8,F3,E+S);

delay(1+E+S);

tone(8,LA3,S);

delay(1+S);

tone(8,C4,Q);

delay(1+Q);

tone(8,LA3,E+S);

delay(1+E+S);

tone(8,C4,S);

delay(1+S);

tone(8,E4,H);

delay(1+H);

tone(8,LA4,Q);

delay(1+Q);

tone(8,LA3,E+S);

delay(1+E+S);

tone(8,LA3,S);

delay(1+S);

tone(8,LA4,Q);

delay(1+Q);

tone(8,Ab4,E+S);

delay(1+E+S);

tone(8,G4,S);

delay(1+S);

tone(8,Gb4,S);

delay(1+S);

tone(8,E4,S);

delay(1+S);

tone(8,F4,E);

delay(1+E);

delay(1+E);//PAUSE

tone(8,Bb3,E);

delay(1+E);

tone(8,Eb4,Q);

delay(1+Q);

tone(8,D4,E+S);

delay(1+E+S);

tone(8,Db4,S);

delay(1+S);

tone(8,C4,S);

delay(1+S);

tone(8,B3,S);

delay(1+S);

tone(8,C4,E);

delay(1+E);

delay(1+E);//PAUSE QUASI FINE RIGA

tone(8,F3,E);

delay(1+E);

tone(8,Ab3,Q);

delay(1+Q);

tone(8,F3,E+S);

delay(1+E+S);

tone(8,C4,S);

delay(1+S);

tone(8,LA3,Q);

delay(1+Q);

tone(8,F3,E+S);

delay(1+E+S);

tone(8,C4,S);

delay(1+S);

tone(8,LA3,H);

delay(1+H);

delay(2*H);

}

Gata!

Succes !

Colectivul Roboromania

 

Publicat la data

UNO LED cu intensitate variabila – pentru începători

UNO LED cu intensitate variabila

Un program simplu pentru Arduino.

Voi folosi un LED de 3v pe care îl leg la pinul 10 cu un rezistor de 1kΩ.

UNO-led

Acest led se aprinde atunci când pinul 10 digital este pus in HIGH şi se stinge atunci când pinul 10 este pus în LOW.

Acum îi voi varia aprinderea.

Deşi UNO nu scoate tensiune variabilă pe porturile digitale, exista o posibilitate de a genera un semnal dreptunghiular între 0V și 5V, foarte rapid, şi în funcție de cât timp stă în 5V și cat timp sta in 0V, puterea semnalului variază.

Numele acestui gen de semnal este „PWM„.

De remarcat faptul că doar pinii 3, 5, 6, 9, 10 şi 11 sunt capabili să genereze semnal PWM.

 

Voi scrie un cod :

void setup() {

pinMode(10, OUTPUT);

}

void loop() {

for (int i = 0; i < 255; i++) {

analogWrite(10, i);

delay(50);

}

for (int i = 255; i > 0; i–) {

analogWrite(10, i);

delay(50);

}

}

 

Acum voi face upload la program pe placa UNO prin USB.

Să analizăm codulul de mai sus.

La ” void setup”.

Avem o singură instrucţiune, care declară că pinul 10 digital va fi folosit ca ieşire (OUTPUT).

La ” void loop”.

Avem instrucţiunea analogWrite, care defineşte puterea semnalului PWM de ieşire.

Ca parametri, instrucţiunea analogWrite primeste pinul (10, în cazul meu), şi puterea

semnalului (variabilă, de la 0 la 255).

Aceasta instrucţiune este apelată într-un ciclu “for”, care modifică

valoarea variabilei “I” între 0 si 255.

Efectul va fi ca led-ul se va aprinde gradat pană la maxim, iar apoi se va stinge treptat.

Succes !

Colectivul Roboromania

Publicat la data

Descrierea pinilor la placa UNO R3

Descrierea pinilor la placa UNO  R3

Uno-roboromania-fata  Uno-MCU-MEGA328PU-ATMEGA16U2-roboromania-fata

Începând de sus.

Există 14 pini digitali de intrare / ieşire (I/O sau input/output).

Aceştia operează la o tensiune de 5 volţi şi pot fi controlaţi cu una din funcţiile pinMode(), digitalWrite() şi digitalRead().

Fiecare pin poate primii sau trimite o intensitate de maxim 40 mA şi au o rezistenţă internă între 20-50 kOhmi (default deconectată). În afară de semnalul standard I/O, unii dintre pini mai au şi alte funcţii specializate.

  • 0 (serial) RX – pin serial, utilizat în special pentru recepţia (intrare – Rx) datelor seriale asincrone (asynchronous serial communication) Protocolul serial asincron este o metodă foarte răspândită în electronică pentru a trimite şi recepţiona date între dispozitive. Acest protocol este implementat în dispozitiv numit UART (Universal Asynchronous Receiver/Transmitter)
  • 1 (serial) TX – pin serial, utilizat pentru trimiterea datelor asincrone (ieşire – Tx). TTL vine de la transistor-transistor logic.
  • 2 (External Interrupts) întrerupere externă. Acest pin poate fi configurat pentru a declanșa o întrerupere la o valoare mică, un front crescător sau descrescător, sau o schimbare în valoare. Vezi detalii despre posibile comenzi la attachInterrupt()
  • 3 (External Interrupts + PWM) întrerupere externă. Identic cu pinul 2. Suplimentar, toţi pinii marcaţi cu semnul ~ pot fi folosiţi şi pentru PWM (pulse with modulation)
  • 4 (I/O) pin standard intrare/iesire
  • 5 (PWM) poate furniza control de ieşire pe 8-bit pentru controlul PWM. Vezi detalii despre posibile comenzi la analogWrite()
  • 6 (PWM)
  • 7 (I/O) pin standard intrare/ieşire
  • 8 (I/O) pin standard intrare/ieşire
  • 9 (PWM)
  • 10 (PWM + SPI) – suportă comunicare prin interfaţa serială (Serial Peripheral Interface). SPI-ul are patru semnale logice specifice iar acest pin se foloseste pentru SS – Slave Select (active low; output din master). Pinii SPI pot fi controlaţi folosind libraria SPI.
  • 11 (PWM + SPI) – suportă SPI, iar acest pin se foloseşte pentru MOSI/SIMO – Master Output, Slave Input (output din master)
  • 12 (SPI) – suportă SPI, iar acest pin se foloseşte pentru MISO/SOMI – Master Input, Slave Output (output din slave)
  • 13 (LED + SPI) – suportă SPI, iar acest pin se foloseşte pentru SCK/SCLK – Ceas serial (output din master). De asemenea, pe placă este încorporat un LED care este conectat la acest pin. Când pinul este setat pe valoarea HIGH este pornit, când are valoarea LOW este oprit.
  • 14 (GND) – împământare. Aici se pune negativul.
  • 15 (AREF) – Analog REFference pin – este utilizat pentru tensiunea de referinţă pentru intrările analogice. Se poate controla folosind funcţia analogReference().
  • 16 (SDA) – comunicare I2S
  • 17 (SCL) – comunicare I2S

 

În partea de jos.

Există o serie de 6 pini pentru semnal analogic, numerotaţi de la A0 la A5.

Fiecare din ei poate furniza o rezoluţie de 10 biţi (adică maxim 1024 de valori diferite). În mod implicit se măsoară de la 0 la 5 volţi, deşi este posibil să se schimbe limita superioară a intervalului lor folosind pinul 15 AREF şi funcţia analogReference(). De asemenea, şi aici anumiţi pini au funcţii suplimentare descrise mai jos:

  1. A0 standard analog pin
  2. A1 standard analog pin
  3. A2 standard analog pin
  4. A3 standard analog pin
  5. A4 (SDA) suportă comunicarea prin 2 fire (I2C (I-two-C) sau TWI (Two wire interface)). Acest pin este folosit pentru SDA (Serial Data) la TWI.
  6. A5 (SCL) identic cu pinul 4, doar că acest pin este folosit pentru SCL (Serial Clock) la TWI. Pentru controlul TWI se poate folosi librăria Wire.

Lângă pinii analogici arătaţi mai există o secţiune de pini notată POWER.

Acestia sunt ( începând de lângă pinul analog A0) :

  • 1 Vin – intrarea pentru tensiune din sursă externă (input Voltage)
  • 2 GND – negativul pentru tensiune din sursă externă (ground Voltage)
  • 3 GND – negativ. Se foloseşte pentru piesele şi componentele montate la arduino ca şi masă/împământare/negativ.
  • 4 5V – ieşire pentru piesele şi componentele montate la arduino. Scoate fix 5V dacă placa este alimentată cu tensiune corectă (între 7 şi 12 v)
  • 5 3,3V – ieşire pentru piesele şi senzorii care se alimentează la această tensiune. Tensiunea de ieşire este 3.3 volţi şi maxim 50 mA.
  • 6 RESET – se poate seta acest pin pe LOW pentru a reseta controlerul de la Arduino. Este de obicei folosit de shield-urile care au un buton de reset şi care anulează de obicei butonul de reset de pe placa Arduino.
  • 7 5VREF – este folosit de unele shield-uri ca referinţă pentru a se comuta automat la tensiunea furnizată de placa arduino (5 volţi sau 3.3 volţi) (Input/Output Refference Voltage)
  • 8 pin neconectat, este rezervat pentru utilizări ulterioare (la reviziile următoare ale plăcii probabil).

Comunicarea cu calculatorul, altă placă arduino sau alte microcontrolere se poate realiza fie prin portul USB (şi este văzut ca un port standard serial COMx), fie prin pinii 0 şi 1 (RX şi TX) care facilitează comunicarea serială UART TTL (5V). Folosind librăria SoftwareSerial.

Se poate face comunicaţii seriale folosind oricare din pinii digitali.

Pentru comunicarea I2C (TWI) este inclusă o librărie Wire. Pentru comunicarea SPI se poate folosi librăria SPI.

După cum vedeţi în imagine,in  partea dreapta, placa mai are o serie de pini marcaţi ICSP (In-Circuit Serial Programming). Aceşti pini pot fi folosiţi pentru reprogramarea microcontrolerului, sau ca pini de expansiune cu alte microcontrolere compatibile. Sunt conectaţi standard şi se poate folosi un cablu de 6 fire (MOSI, MISO, SCK, VCC, GND, şi pinul RESET).

 

Publicat la data

Monitorizarea energiei electrice acasă (ServerWeb Energy) – pentru avansați

Monitorizarea energiei electrice
(ServerWeb Energy)

www.roboromania.ro

Este un proiect Arduino care necesită cunoştinţe medii în domeniu.
Vom prezenta în continuare paşii de realizare.

Ce vrem să realizăm ?

Monitorizarea energiei electrice de acasă prin internet, adică să supraveghem consumul
electric al casei în care locuim. Nimic mai simplu. Vom măsura curentul şi tensiunea
consumata instantaneu cât şi pe un interval de timp stabilit pe care le vom desena într-o
pagină web sub formă de grafic.

Ce materiale avem nevoie ?

O placă Placă de dezvoltare UNO sau NANO sau Mini.

Uno-roboromania-fatanano-roboromaniaMini-roboromania-fata

Un senzor de curent (preferabil de 30A).

ACS712-roboromania

transformator-curent-roboromania-produs

senzor-curent-trafo-curent-roboromania

Un senzor de tensiune pe care îl vom realiza cu transformatorul de alimentare
al montajului, pentru că vrem să separăm galvanic tot montajul de reţeaua de 220v
a casei, pentru a întâmpina distrugerile cauzate de un scurtcircuit.
Acesta este de 12v şi 1A.

transformator-220-roboromania

O sursă bine stabilizată de 5v şi minim 1A.

LM2596-roboromania-produsalimentare-montaj

Un circuit care să redreseze și să amplifice curentul alternativ citit de senzorul de curent (varianta bobină).
Este un AO de precizie, cu un câștig de aproximativ 40. Se converteşte ieșirea
cu vârfuri negative de la senzorul de curent în tensiune continua de aproximativ 0…5v,
într-un interval de aproximativ 0 – 50A, cu o liniaritate și precizie de aproximativ 0.1A.

senzor-curent-tensiune-roboromaniasenzor-curent-bobinareglare-analog-curent-tensiune

O memorie pentru baza de date, în care să încapă datele înregistrate pe 4 săptămâni.

Memorie-24LC256-roboromaniamodul-eeprom-I2C-roboromaniaalimentare-eeprom

Şi evident o placă de reţea Arduino W5100 sau ENC28J60.
Vom folosi placa de reţea Arduino W5100 pentru că este mult mai stabilă.

W5100-roboromaniaENC28J60-roboromania-produsethernet-unoethernet-mini

Ne mai trebuie o placa prototip și o cutie.

Cât ne costă ?

În varianta făcută de noi şi cumpărate de la roboromania.ro

  • Arduino Mini sau UNO sau NANO
  • Modul Ethernet W5100.
  • Senzor de curent 30A.
  • Amplificator operațional LM324.
  • Diverse (diode 1N4148,rezistenţe,potenţiometre,condensatoare, diode 1N4007, fire,
    placă prototip, cutie, leduri, cabluri, conectoare, socluri).
  • Modul sursa ajustabila LM2596 DC 4-40v la 1,3-37v.
  • Memorie EEPROM I2C 24LC256.
  • Transformator 220v la 12v şi 1A.

mini to ftdi
Montajul poate arăta aşa (poze trimise de câțiva studenți care au realizat proiectul cu UNO și NANO),

mea-online-schema

mea-online-uno-schema

montaj-uno-roboromaniamontaj-mini-roboromania

sau aşa,

montaj-final-roboromania

Ce urmează ?

Să uploadăm codul (sketch).

Acesta conţine mai multe fişiere:
serverWeb_Energy_roboromania.ino
database.h
debug_out.h
general_string_data.h
page_printer.h
page_string_data.h

Toate le găsiți şi puteţi să le downloadaţi de pe roboromania.ro sectiunea Suport.
Pentru Mini vă mai trebuie un Modul interfața FTDI – USB (tip FT232R) cu reset,
dacă nu-l aveţi îl luaţi tot de la roboromania.ro la 20 lei.

FTDI-FT232RL-USB-TTL-Serial-Converter-Adapter-Module-5V-3v-roboromania-fupload-energy-roboromania

După realizarea montajului şi uploadarea codului (sketch), montăm senzorul pe firul de
fază al locuinţei (în general sunt 2 fire –> FAZA și NUL)

atenție la electrocutare … ar fi bine să apelaţi la un electrician autorizat

conectare-senzor-roboromania

Ledurile de la placa de reţea încep să pulseze, semn ca aceasta încearcă să se conecteze.
Trebuie să căutăm în setările de la routerul de internet IP-ul pe care l-a primit dispozitivul nostru.
Deschidem un browser cu IP-ul respectiv şi apare pagina web.

ServerWeb-Energy-Pag-web-roboromania

Acum putem citi curentul şi tensiunea instantanee a reţelei de de alimentare a locuinţei cât şi
energia electrică activă afişată în funcţie de intervalul orar afişat pe butoanele din josul paginii.
Butonul reset şterge toată baza de date.

In cod se pot corecta valorile curentului și tensiunii măsurate.

Bineînțeles că dacă modificăm codul ,putem să realizăm diverse modele de pagină web sau
putem trimite pe internet diverse alte măsurători de la alţi senzori.

ing.Popescu Viorel

Colectivul magazinului roboromania.ro vă urează succes !  După realizare va rugam sa trimiteți poze și sugestii.

Cod sursa pentru proiect : Server web energy monitor

Creative Commons License
Control Centrala Online de Popescu Viorel licențiat sub Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Publicat la data

Termostat Online (ServerWeb Thermostat-Online) – pentru avansați

Termostat Online

Thermostat Online
www.roboromania.ro

Este un proiect Arduino care necesită cunoştinţe medii în domeniu.
Vom prezenta în continuare paşii de realizare.

Ce vrem să realizăm ?

Vrem să construim un termostat pentru acţionarea încălzirii (o centrală termică) prin reţeaua de acasă sau chiar prin internet. Deci vom controla când să înceapă încălzirea locuinţei ştiind ce temperatură ambiantă avem şi ce ne poate oferi centrala termică. Aşa că vom avea o pagină web în care găsim temperatura în centrală pe tur şi retur, temperatura ambiantă pe care o putem seta din această pagină web, cât şi posibilitatea de a opri şi porni încălzirea şi centrala termică online.

termostat-online-roboromania

Ce materiale avem nevoie ?

O placă compatibilă Arduino Uno sau Nano sau Mini.

Uno-roboromania-fatanano-roboromaniaMini-roboromania-fata

Trei senzori de temperatura (preferabil DS18b20).

DS18B20-waterproof-roboromania-fataDS18B20-roboromaniaa

Un Modul 2 relee și 2 canale la 5v.

modul-2-relee-2-canale-roboromania-avr-Bucuresti

Şi evident o placă de reţea Arduino W5100 sau ENC28J60. Vom folosi placa de reţea Arduino W5100 pentru că este mult mai stabilă.

W5100-roboromaniaENC28J60-roboromania-produs

Un Alimentator Arduino dedicat 9V 1A

Alimentator-Arduino-dedicat-9V-1A-robo-romania

Ne mai trebuie o Placă prototip 3×7 cm unde o sa legam mai ușor senzorii de temperatură folosind pini şi Conectoare terminal cu şuruburi, câteva Cabluri Dupont şi eventual o cutie.

Placa-prototip-3x7-cm-roboromaniaterminal-connector-roboromaniaMufa-jack-mama-DC-2.5-mm-cablaj-roboromania-Bucurestidupont-robo-romania-4

Cât ne costă ?

În varianta făcută de noi şi cumpărate de la roboromania.ro

– Arduino Mini
– Modul Ethernet W5100
– Senzori de temperatura DS18b20 (3 bucati)
– Alimentator Arduino dedicat 9V 1A
– Diverse (rezistenţe, placă prototip, cabluri, conectoare)

Deci un total aproximativ de 165 lei. (roboromania.ro)

Ce urmează ?

Să le conectam.
E simplu, trebuie doar să fim atenți la conectarea pinilor, corespunzător sketch-ului Arduino folosit.
Acesta conţine mai multe fişiere.
Par destul de complicate pentru un începător !
Dar puteți veni la sediul nostru și vă învățăm noi cat putem … vă ajutăm și la montaj …

mini to ftdi

termostat mini

termostat UNO

Să uploadăm codul (sketch).
control_centrala_online_roboromania.ino
debug.h
memory.h
OneWire.cpp
OneWire.h
page.h
temperature.h

Toate le găsiți şi puteţi să le download-ați de pe roboromania.ro secțiunea Suport.
Pentru Mini vă mai trebuie un Modul interfață FTDI – USB (tip FT232R) cu reset, dacă nu-l aveţi îl luaţi tot de la roboromania.ro la 20 lei.

FT232RL-FTDI-USB-roboromania

Ledurile de la placa de reţea încep să pulseze, semn ca aceasta încearcă să se conecteze. Trebuie să căutăm în setările de la router IP-ul pe care l-a primit dispozitivul nostru. Deschidem un browser cu IP-ul respectiv şi apare pagina web.

termostat-online-an-roboromaniatermostat-online-roboromania

Acum putem citi temperatura în centrală pe tur şi retur şi temperatura ambiantă din locuinţă .
Urmează setarea temperaturii ambiante minime la care să înceapă încălzirea.
Şi butoanele de comandă Power on/off şi Iarnă (încălzire) on/off.

termostat-online-set-amb-roboromania

Bineânţeles că dacă modificăm codul , putem să realizăm diverse modele de pagină web sau putem trimite pe internet diverse alte măsurători de la alţi senzori.
Colectivul magazinului roboromania.ro vă urăm succes !

Colectivul magazinului roboromania.ro vă urează succes !  După realizare va rugam sa trimiteți poze și sugestii.

Cod sursa pentru proiect : Control centrala online

Creative Commons License
Control Centrala Online de Popescu Viorel licențiat sub Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Publicat la data

Folosirea senzorului de distanta cu ultrasunete HC-SR04 – pentru începători

Folosirea senzorului de distanta cu ultrasunete HC-SR04

HC-SR04-roboromania

Piese necesare :

1 x placă Arduino UNO R3
1 x Senzor de distanţă cu ultrasunete HC-SR04
3 x LED (plus 3 rezistenţe de 1 kΩ pentru aceste leduri)
cabluri de legătură necesare între piese şi placă

Uno-roboromania-fata

Algoritm :

Iniţial ledurile sunt oprite.
La distanţa cea mai mare (eu am specificat în cod peste valoarea 3000) toate ledurile sunt de asemenea oprite.

Dacă se detectează un obstacol între valorile 2001 şi 3000 se aprinde 1 led (aproximativ între 30-40 cm distanţă).
Dacă obiectul se apropie între valorile 1000 si 2000 am setat să se aprindă 2 leduri.
Dacă obiectul e foarte aproape de senzor (sub 1000 respectiv sub 10-15 cm) am setat să se aprindă toate 3 ledurile.

Montare :

Senzorul are 4 pini respectiv:

VCC de la senzor se cupleaza la +5V de pe placa arduino.
TRIG de la senzor se cuplează la unul din pinii digitali de pe placa arduino (în cod am setat pinul 2)
ECHO de la senzor se cuplează la un alt pin digital de pe placa arduino (în cod am setat pinul 3)
GND de la senzor se cuplează la unul din pinii GND de la arduino

LED-urile se cuplează şi ele (prin intermediul unei rezistenţe de 1 kΩ) la pinii 8,9 şi 10 iar negativul de la leduri la GND de la arduino.

Codul necesar (sketch) :

 

/*
* Ultrasound model: HC-SR04
* Senzor pins  | Arduino Board
* VCC la 5V
* TRIG la Digital pin 2
* ECHO la Digital pin 3
* GND la GND
* LED1 la Digital pin 8
* LED2 la Digital pin 9
* LED3 la Digital pin 10
*/

// initialize the necessary ports
int usTrigger = 2;
int usEcho = 3;
int led1 = 8;
int led2 = 9;
int led3 = 10;

void setup() {
// start ultrasound
pinMode(usTrigger, OUTPUT);
pinMode(usEcho, INPUT);
// start leds
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}

void loop() {
// Initiate ultrasonic speaker
digitalWrite(usTrigger, HIGH);
delayMicroseconds(10);
digitalWrite(usTrigger, LOW);

// Reading out the signal strength
long timecount = pulseIn(usEcho, HIGH);
// if more than 3000 all LEDs stop.
if ( timecount > 3000 ) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
// If it’s between 2001 and 3000 start LED 1
if ( timecount > 2000 && timecount <= 3000 ) {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
// If it’s between 1000 and 2000 start LED 1 and 2
if ( timecount >= 1000 && timecount <= 2000 ) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
}
// If it’s under 1000 turn all LEDs
if ( timecount < 1000 ) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}
// Wait 0.1 seconds before the next reading.
delay(100);
}

 

Această aplicaţie se poate dezvolta de exemplu pentru un robot autonom care ocoleşte obstacolele.

Succes !

Colectivul Roboromania