- Componente necesare:
- Explicație de lucru:
- Explicația circuitului:
- Explicație de programare:
- Proiectarea circuitelor și PCB-urilor folosind EasyEDA:
- Calcularea și comandarea eșantioanelor online:
Un cutremur este un dezastru natural imprevizibil care provoacă daune vieților și bunurilor. Se întâmplă brusc și nu o putem opri, dar putem fi alertați de la aceasta. În vremurile de astăzi, există multe tehnologii care pot fi utilizate pentru a detecta micile zguduituri și lovituri, astfel încât să putem lua măsuri de precauție înainte de unele vibrații majore pe pământ. Aici folosim Accelerometer ADXL335 pentru a detecta vibrațiile dinaintea cutremurului. Accelerometrul ADXL335 este extrem de sensibil la vibrații și vibrații, împreună cu toate cele trei axe. Aici construim un detector de cutremure bazat pe Arduino folosind accelerometrul.
Aici construim acest detector de cutremur ca un Arduino Shield pe PCB și vom afișa, de asemenea, graficul vibrațiilor pe computer folosind Procesare.
Componente necesare:
- Arduino UNO
- Accelerometru ADXL335
- 16x2 LCD
- Buzzer
- BC547 tranzistor
- Rezistențe 1k
- GHID 10K
- LED
- Sursa de alimentare 9v / 12v
- Berg lipeste mascul / femela
Accelerometru:
Pin Descrierea accelerometrului:
- Alimentarea Vcc de 5 volți ar trebui să se conecteze la acest pin.
- X-OUT Acest pin oferă o ieșire analogică în direcția x
- Y-OUT Acest pin oferă o ieșire analogică în direcția y
- Z-OUT Acest pin oferă o ieșire analogică în direcția z
- GND Ground
- ST Acest pin utilizat pentru setarea sensibilității senzorului
Verificați și celelalte proiecte folosind Accelerometer:
- Joc de Ping Pong folosind Arduino
- Robot controlat prin gesturi de mână bazat pe accelerometru.
- Sistem de alertă a accidentelor vehiculului bazat pe Arduino, care utilizează GPS, GSM și accelerometru
Explicație de lucru:
Funcționarea acestui detector de cutremure este simplă. După cum am menționat mai devreme, am folosit accelerometrul pentru detectarea vibrațiilor cutremurelor de-a lungul oricăreia dintre cele trei axe, astfel încât, ori de câte ori apar vibrații, accelerometrul să simtă aceste vibrații și să le transforme în valoare ADC echivalentă. Apoi aceste valori ADC sunt citite de Arduino și afișate pe ecranul LCD de 16x2. De asemenea, am arătat aceste valori pe Grafic folosind Procesare. Aflați mai multe despre Accelerometer parcurgând celelalte proiecte noastre Accelerometer aici.
Mai întâi trebuie să calibrăm accelerometrul luând probe de vibrații înconjurătoare ori de câte ori Arduino se alimentează. Apoi, trebuie să scădem acele valori de eșantion din citirile reale pentru a obține citirile reale. Această calibrare este necesară, astfel încât să nu afișeze alerte cu privire la vibrațiile sale normale înconjurătoare. După ce a găsit citiri reale, Arduino compară aceste valori cu valorile max și min predefinite. Dacă Arduino constată că orice modificare a valorilor este mai mult sau mai mică decât valorile predefinite ale oricărei axe în ambele direcții (negative și pozitive), atunci Arduino declanșează buzzer-ul și arată starea de alertă pe ecranul LCD 16x2 și, de asemenea, un LED aprins. Putem ajusta sensibilitatea detectorului Cutremur schimbând valorile predefinite în codul Arduino.
Video demonstrativ și cod Arduino sunt prezentate la sfârșitul articolului.
Explicația circuitului:
Circuitul acestui detector de cutremur Arduino Shield PCBeste, de asemenea, simplu. În acest proiect, am folosit Arduino care citește tensiunea analogică a accelerometrului și le transformă în valori digitale. Arduino conduce, de asemenea, buzzer-ul, LED-ul, ecranul LCD 16x2 și calculează și compară valorile și ia măsurile corespunzătoare. Următoarea parte este Accelerometrul care detectează vibrațiile pământului și generează tensiuni analogice pe 3 axe (X, Y și Z). LCD-ul este utilizat pentru afișarea modificărilor valorilor axelor X, Y și Z și, de asemenea, pentru afișarea unui mesaj de alertă peste acesta. Acest ecran LCD este atașat la Arduino în modul pe 4 biți. Pinii RS, GND și EN sunt conectați direct la 9, GND și 8 pini Arduino, iar restul a 4 pini de date LCD, respectiv D4, D5, D6 și D7, sunt conectați direct la pinul digital 7, 6, 5 și 4 al Arduino. Buzzerul este conectat la pinul 12 al Arduino printr-un tranzistor NPN BC547. Un vas de 10k este, de asemenea, utilizat pentru controlul luminozității ecranului LCD.
Explicație de programare:
În acest Shield Arduino Shield Detector, am creat două coduri: unul pentru Arduino pentru a detecta un cutremur și altul pentru Processing IDE pentru a trage vibrațiile cutremurului peste graficul de pe computer. Vom afla despre ambele coduri unul câte unul:
Cod Arduino:
În primul rând, calibrăm accelerometrul în funcție de suprafața sa de plasare, astfel încât să nu afișeze alerte cu privire la vibrațiile sale normale înconjurătoare. În această calibrare, luăm câteva eșantioane și apoi luăm o medie a acestora și le stocăm într-o variabilă.
pentru (int i = 0; i
Acum, ori de câte ori Accelerometrul ia citiri, vom scădea valorile eșantionului din citiri, astfel încât să poată ignora vibrațiile din jur.
valoarea int1 = analogRead (x); // citirea x valoare int2 = analogRead (y); // citirea y valoare int3 = analogRead (z); // citirea z-ului int xValue = xsample-value1; // găsirea modificării în x int yValue = ysample-value2; // găsirea schimbării în y int Valoare = zsample-value3; // găsirea modificării în z / * modificarea disputată a valorilor axelor x, y și z peste lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); întârziere (100)
Apoi, Arduino compară valorile calibrate (scăzute) cu limitele predefinite. Și acționează în consecință. Dacă valorile sunt mai mari decât valorile predefinite, acesta va emite un semnal sonor și va grafica graficul de vibrații pe computer folosind Procesare.
/ * compararea schimbării cu limitele predefinite * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = milis (); // timer start buz = 1; // semnal sonor / led activat} else if (buz == 1) // semnal sonor activat atunci se avertizează cutremur {lcd.setCursor (0,0); lcd.print („Alertă de cutremur”); if (millis ()> = start + buzTime) buz = 0; }
Cod de procesare:
Mai jos este atașat Codul de procesare, puteți descărca codul de la linkul de mai jos:
Cod de procesare a detectorului de cutremure terestre
Am proiectat un grafic folosind Procesare, pentru vibrațiile cutremurului de pământ, în care am definit dimensiunea ferestrei, unitățile, dimensiunea fontului, fundalul, citirea și afișarea porturilor seriale, deschiderea portului serial selectat etc.
// setați dimensiunea ferestrei: și dimensiunea fontului f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, adevărat); f10 = createFont ("Arial", 10, adevărat); f12 = createFont ("Arial", 12, adevărat); f24 = createFont ("Arial", 24, adevărat); dimensiune (1200, 700); // Listează toate porturile seriale disponibile println (Serial.list ()); myPort = serial nou (acesta, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); fundal (80)
În funcția de mai jos, am primit date de la portul serial și am extras datele necesare și le-am mapat cu dimensiunea graficului.
// extragerea tuturor valorilor necesare pentru toate cele trei axe: int l1 = inString.indexOf ("x =") + 2; String temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; String temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; String temp3 = inString.substring (l1, l1 + 3); // maparea valorilor x, y și z cu dimensiunile grafului float inByte1 = float (temp1 + (char) 9); inByte1 = hartă (inByte1, -80,80, 0, înălțime-80); float inByte2 = float (temp2 + (char) 9); inByte2 = hartă (inByte2, -80,80, 0, înălțime-80); float inByte3 = float (temp3 + (char) 9); inByte3 = hartă (inByte3, -80,80, 0, înălțime-80); float x = hartă (xPos, 0,1120,40, lățime-40);
După aceasta, am trasat spațiul unității, limitele maxime și minime, valorile axelor x, y și z.
// fereastra graficului graficului, cursa unității Greutate (2); accident vascular cerebral (175); Linie (0,0,0,100); textFont (f24); umplutură (0,00.255); textAlign (DREAPTA); xmargin ("EarthQuake Graph By Circuit Digest", 200.100); umplere (100); greutate accident vascular cerebral (100); linie (1050,80,1200,80);………………
După aceasta, trasăm valorile peste grafic folosind 3 culori diferite ca Albastru pentru valoarea axei x, culoarea verde pentru axa y și z este reprezentată de culoare roșie.
accident vascular cerebral (0,0,255); if (y1 == 0) y1 = height-inByte1-shift; linie (x, y1, x + 2, shift-inByte1-shift); y1 = înălțime-înByte1-shift; cursă (0,255,0); if (y2 == 0) y2 = height-inByte2-shift; linie (x, y2, x + 2, shift-inByte2-shift); y2 = înălțime-înByte2-shift; accident vascular cerebral (255,0,0); if (y2 == 0) y3 = height-inByte3-shift; linie (x, y3, x + 2, shift-inByte3-shift); y3 = înălțime-înByte3-shift;
Aflați și mai multe despre procesare parcurgând celelalte proiecte de procesare.
Proiectarea circuitelor și PCB-urilor folosind EasyEDA:
EasyEDA nu este doar soluția one stop pentru captarea schematică, simularea circuitelor și proiectarea PCB-urilor, ci oferă, de asemenea, un serviciu de aprovizionare cu prototip PCB și componente de aprovizionare. Recent, au lansat serviciul de aprovizionare a componentelor, unde au un stoc mare de componente electronice, iar utilizatorii își pot comanda componentele necesare împreună cu comanda PCB.
În timp ce vă proiectați circuitele și PCB-urile, puteți, de asemenea, să vă faceți publice circuitele și PCB-urile, astfel încât ceilalți utilizatori să le poată copia sau edita și să beneficieze de acolo, de asemenea, am făcut publice întreaga noastră schemă de circuite și PCB-uri pentru acest Shield Indicator Shield pentru Arduino UNO, verificați linkul de mai jos:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Mai jos este Instantaneul stratului superior al aspectului PCB-ului de la EasyEDA, puteți vizualiza orice strat (superior, inferior, de top, de fund etc.) al PCB-ului, selectând stratul din fereastra „Straturi”.
Puteți vedea, de asemenea, vizualizarea foto a PCB utilizând EasyEDA:
Calcularea și comandarea eșantioanelor online:
După finalizarea proiectării PCB-ului, puteți face clic pe pictograma de ieșire Fabrication , care vă va duce pe pagina de comandă PCB. Aici puteți vizualiza PCB-ul dvs. în Gerber Viewer sau puteți descărca fișierele Gerber ale PCB-ului dvs. Aici puteți selecta numărul de PCB-uri pe care doriți să le comandați, de câte straturi de cupru aveți nevoie, grosimea PCB-ului, greutatea cuprului și chiar culoarea PCB-ului. După ce ați selectat toate opțiunile, faceți clic pe „Salvați în coș” și finalizați comanda. Recent, și-au redus semnificativ tarifele PCB și acum puteți comanda 10 buc PCB cu 2 straturi cu dimensiunea de 10cm x 10cm doar pentru 2 USD.
Iată PCB-urile pe care le-am obținut de la EasyEDA:
Mai jos sunt imaginile Shieldului final după lipirea componentelor de pe PCB: