- Components necessaris:
- Explicació de treball:
- Explicació del circuit:
- Explicació de la programació:
- Disseny de circuits i PCB amb EasyEDA:
- Càlcul i ordenació de mostres en línia:
Un terratrèmol és un desastre natural imprevisible que provoca danys a vides i béns. Passa de sobte i no podem aturar-ho, però sí que en podem alertar. Actualment, hi ha moltes tecnologies que es poden utilitzar per detectar petites sacsejades i cops, de manera que podem prendre precaucions abans d'algunes vibracions importants a la terra. Aquí fem servir l’acceleròmetre ADXL335 per detectar les vibracions anteriors al terratrèmol. L’acceleròmetre ADXL335 és molt sensible a les sacsejades i vibracions juntament amb els tres eixos. Aquí estem construint un detector de terratrèmols basat en Arduino amb acceleròmetre.
Aquí estem construint aquest detector de terratrèmols com a Arduino Shield al PCB i també mostrarem el gràfic de vibracions a l’ordinador mitjançant Processament.
Components necessaris:
- Arduino UNO
- Acceleròmetre ADXL335
- LCD de 16x2
- Zumbador
- Transistor BC547
- Resistències 1k
- 10K POT
- LED
- Font d'alimentació 9v / 12v
- Pals de Berg mascle / femella
Acceleròmetre:
Pin Descripció de l’acceleròmetre:
- L’alimentació de 5 volts Vcc s’hauria de connectar en aquest pin.
- X-OUT Aquest pin proporciona una sortida analògica en direcció x
- Y-OUT Aquest pin proporciona una sortida analògica en direcció y
- Z-OUT Aquest pin proporciona una sortida analògica en direcció z
- Terra GND
- ST Aquest pin s'utilitza per configurar la sensibilitat del sensor


Consulteu també els nostres altres projectes mitjançant Accelerometer:
- Joc de Ping Pong amb Arduino
- Robot controlat amb gestos manuals basat en acceleròmetre.
- Sistema d’alerta d’accidents de vehicles basat en Arduino mitjançant GPS, GSM i acceleròmetre
Explicació de treball:
El treball d’aquest detector de terratrèmols és senzill. Com hem esmentat anteriorment, hem utilitzat l’acceleròmetre per detectar vibracions de terratrèmols al llarg de qualsevol dels tres eixos, de manera que, sempre que es produeixen vibracions, l’acceleròmetre detecta aquestes vibracions i les converteix en valor ADC equivalent. A continuació, aquests valors ADC són llegits per Arduino i es mostren a la pantalla LCD de 16x2. També hem mostrat aquests valors a Graph utilitzant Processing. Per obtenir més informació sobre Accelerometer, consulteu els nostres altres projectes d’Accelerometer aquí.
Primer, cal calibrar l’acceleròmetre prenent mostres de vibracions circumdants sempre que s’encengui Arduino. A continuació, hem de restar aquests valors de mostra de les lectures reals per obtenir les lectures reals. Es necessita aquest calibratge perquè no mostri alertes respecte a les seves vibracions normals al voltant. Després de trobar lectures reals, Arduino compara aquests valors amb els valors màxim i mínim predefinits. Si Arduino troba algun canvi, els valors són més o menys alts dels valors predefinits de qualsevol eix en ambdues direccions (negatiu i positiu), Arduino activa el brunzidor i mostra l'estat d'alerta a través de la pantalla LCD de 16x2 i també s'encén un LED. Podem ajustar la sensibilitat del detector de terratrèmols canviant els valors predefinits al codi Arduino.


El vídeo de demostració i el codi Arduino es donen al final de l'article.
Explicació del circuit:
Circuit d'aquest detector de terratrèmols Arduino Shield PCBtambé és senzill. En aquest projecte, hem utilitzat Arduino que llegeix la tensió analògica de l’acceleròmetre i els converteix en valors digitals. Arduino també condueix el brunzidor, el LED, la pantalla LCD de 16x2 i calcula i compara els valors i pren les mesures adequades. La següent part és l’acceleròmetre que detecta les vibracions de la terra i genera tensions analògiques en 3 eixos (X, Y i Z). La pantalla LCD s’utilitza per mostrar el canvi de valors dels eixos X, Y i Z i també per mostrar-hi un missatge d’alerta. Aquesta pantalla LCD està connectada a Arduino en mode de 4 bits. Els pins RS, GND i EN estan connectats directament a 9, GND i 8 pins d'Arduino i la resta de 4 pins de dades de LCD, és a dir, D4, D5, D6 i D7 estan connectats directament als pins digitals 7, 6, 5 i 4 d'Arduino. El brunzidor està connectat al pin 12 d'Arduino mitjançant un transistor NPN BC547. Una olla de 10 k també s’utilitza per controlar la brillantor de la pantalla LCD.

Explicació de la programació:
En aquest Arduino Shield Detector de terratrèmols, hem creat dos codis: un per Arduino per detectar un terratrèmol i un altre per Processar IDE per representar les vibracions del terratrèmol sobre el gràfic de l’ordinador. Coneixerem els dos codis un per un:
Codi Arduino:
En primer lloc, calibrem l’acceleròmetre respecte a la seva superfície de col·locació, de manera que no mostri alertes respecte a les seves vibracions normals circumdants. En aquest calibratge, prenem algunes mostres i després en prenem una mitjana i les emmagatzemem en una variable.
per a (int i = 0; i
Ara, cada vegada que l'Accelerometer pren lectures, restarem els valors de mostra de les lectures de manera que pugui ignorar les vibracions de l'entorn.
valor int1 = analogRead (x); // llegint x valor int2 = analogRead (y); // lectura del valor int3 = analogRead (z); // lectura de z int xValue = xsample-value1; // trobant un canvi a x int yValue = ysample-value2; // trobant canvis en y int zValue = zsample-value3; // trobant un canvi en z / * que disposa el canvi en els valors dels eixos x, y i z sobre lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); retard (100)
A continuació, Arduino compara aquests valors calibrats (restats) amb límits predefinits. I actuï en conseqüència. Si els valors són superiors als valors predefinits, emetrà un so al brunzidor i representarà el gràfic de vibracions a l'ordinador mitjançant Processament.
/ * comparació de canvis amb límits predefinits * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = millis (); // temporitzador d’inici buz = 1; // indicador zumbador / led activat} else if (buz == 1) // indicador zumbador activat i alerta al terratrèmol {lcd.setCursor (0,0); lcd.print ("Alerta de terratrèmol"); if (millis ()> = start + buzTime) buz = 0; }
Codi de processament:
A continuació s’adjunta el codi de processament, podeu descarregar-lo des de l’enllaç següent:
Codi de processament del detector de terratrèmols
Hem dissenyat un gràfic mitjançant Processament, per a vibracions de terratrèmol, en el qual definíem la mida de la finestra, les unitats, la mida de la font, el fons, la lectura i visualització dels ports sèrie, obrim el port sèrie seleccionat, etc.
// Estableix la mida de la finestra: i Mida del tipus de lletra f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, cert); f10 = createFont ("Arial", 10, true); f12 = createFont ("Arial", 12, cert); f24 = createFont ("Arial", 24, cert); mida (1200, 700); // Llista de tots els ports sèrie disponibles println (Serial.list ()); myPort = new Serial (this, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); fons (80)
A la funció següent, hem rebut dades del port sèrie i hem extret les dades necessàries i les hem mapat amb la mida del gràfic.
// extraient tots els valors necessaris dels tres eixos: 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); // assignació de valors x, y i z amb dimensions del gràfic float inByte1 = float (temp1 + (char) 9); inByte1 = mapa (inByte1, -80,80, 0, altura-80); float inByte2 = float (temp2 + (char) 9); inByte2 = mapa (inByte2, -80,80, 0, altura-80); float inByte3 = float (temp3 + (char) 9); inByte3 = mapa (inByte3, -80,80, 0, altura-80); float x = mapa (xPos, 0,1120,40, amplada-40);
Després d'això, hem representat l'espai unitari, els límits màxim i mínim, els valors de l'eix x, y i z.
// finestra gràfica de traçat, pes de traç de la unitat (2); ictus (175); Línia (0,0,0,100); textFont (f24); omplir (0,00.255); textAlign (DRETA); xmargin ("EarthQuake Graph By Circuit Digest", 200.100); farcit (100); pes de cop (100); línia (1050,80,1200,80);………………
Després d'això, representem els valors sobre el gràfic mitjançant l'ús de 3 colors diferents com a Blau per al valor de l'eix X, el color verd per a l'eix y i z es representa amb color vermell.
traç (0,0,255); if (y1 == 0) y1 = altura-enByte1-shift; línia (x, y1, x + 2, shift-inByte1-shift); y1 = alçada inByte1-shift; traç (0,255,0); if (y2 == 0) y2 = shift-inByte2-shift; línia (x, y2, x + 2, shift-inByte2-shift); y2 = alçada inByte2-shift; traç (255,0,0); if (y2 == 0) y3 = alçada inByte3-shift; línia (x, y3, x + 2, shift-inByte3-shift); y3 = altura-inByte3-shift;
També podeu obtenir més informació sobre el processament passant per altres projectes de processament
Disseny de circuits i PCB amb EasyEDA:
EasyEDA no només és la solució única per a la captura esquemàtica, la simulació de circuits i el disseny de PCB, sinó que també ofereix un prototip de PCB de baix cost i un servei d’aprovisionament de components. Recentment han llançat el seu servei d’aprovisionament de components on tenen un gran estoc de components electrònics i els usuaris poden demanar els components necessaris juntament amb la comanda de PCB.
Mentre dissenyeu els vostres circuits i PCBs, també podeu fer públics els vostres dissenys de circuits i PCBs perquè altres usuaris puguin copiar-los o editar-los i aprofitar-los, també hem fet públics tots els dissenys de circuits i PCB per a aquest escut d’indicadors de terratrèmols. Arduino UNO, consulteu l'enllaç següent:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
A continuació es mostra la instantània de la capa superior del disseny de PCB des d’EasyEDA, podeu veure qualsevol capa (superior, inferior, de llana superior, de seda inferior, etc.) del PCB seleccionant la capa de la finestra “Capes”.

També podeu veure la vista de fotos de PCB mitjançant EasyEDA:

Càlcul i ordenació de mostres en línia:
Després de completar el disseny de PCB, podeu fer clic a la icona de sortida de fabricació , que us portarà a la pàgina de comandes de PCB. Aquí podeu veure el vostre PCB a Gerber Viewer o descarregar fitxers Gerber del vostre PCB. Aquí podeu seleccionar el nombre de PCB que voleu demanar, quantes capes de coure necessiteu, el gruix del PCB, el pes del coure i fins i tot el color del PCB. Un cop hàgiu seleccionat totes les opcions, feu clic a "Desa al carret" i completeu la comanda. Recentment han baixat significativament les seves taxes de PCB i ara podeu demanar 10 unitats de PCB de 2 capes amb una mida de 10cm x 10cm per només 2 $.

Aquí teniu els PCB que tinc d’EasyEDA:


A continuació es mostren les imatges de Shield final després de soldar els components del PCB:

