- Componenti richiesti:
- Spiegazione di lavoro:
- Spiegazione del circuito:
- Spiegazione della programmazione:
- Progettazione di circuiti e PCB utilizzando EasyEDA:
- Calcolo e ordinazione di campioni online:
Un terremoto è una catastrofe naturale imprevedibile che causa danni a vite umane e proprietà. Succede all'improvviso e non possiamo fermarlo ma possiamo esserne allertati. Al giorno d'oggi, ci sono molte tecnologie che possono essere utilizzate per rilevare i piccoli scossoni e colpi, in modo da poter prendere precauzioni prima di alcune grandi vibrazioni nella terra. Qui stiamo usando l'accelerometro ADXL335 per rilevare le vibrazioni pre-terremoto. L'accelerometro ADXL335 è altamente sensibile alle scosse e alle vibrazioni insieme a tutti e tre gli assi. Qui stiamo costruendo un rilevatore di terremoti basato su Arduino utilizzando l'accelerometro.
Stiamo qui costruendo questo rilevatore di terremoti come uno scudo Arduino su PCB e mostreremo anche il grafico delle vibrazioni sul computer utilizzando l'elaborazione.
Componenti richiesti:
- Arduino UNO
- Accelerometro ADXL335
- LCD 16x2
- Cicalino
- Transistor BC547
- Resistori 1k
- 10K POT
- GUIDATO
- Alimentazione 9v / 12v
- Berg attacca maschio / femmina
Accelerometro:
Pin Descrizione dell'accelerometro:
- L'alimentazione Vcc 5 volt dovrebbe essere collegata a questo pin.
- X-OUT Questo pin fornisce un'uscita analogica in direzione x
- Y-OUT Questo pin fornisce un'uscita analogica in direzione y
- Z-OUT Questo pin fornisce un'uscita analogica in direzione z
- GND Ground
- ST Questo pin utilizzato per impostare la sensibilità del sensore
Controlla anche i nostri altri progetti che utilizzano l'accelerometro:
- Ping Pong Game utilizzando Arduino
- Robot controllato con gesti della mano basato su accelerometro.
- Sistema di allarme per incidenti automobilistici basato su Arduino con GPS, GSM e accelerometro
Spiegazione di lavoro:
Il funzionamento di questo rilevatore di terremoti è semplice. Come accennato in precedenza, abbiamo utilizzato l'accelerometro per rilevare le vibrazioni del terremoto lungo uno qualsiasi dei tre assi in modo che ogni volta che si verificano le vibrazioni l'accelerometro rileva le vibrazioni e le converte in un valore ADC equivalente. Quindi questi valori ADC vengono letti da Arduino e visualizzati sull'LCD 16x2. Abbiamo anche mostrato questi valori su Graph usando Processing. Scopri di più sull'accelerometro esaminando i nostri altri progetti di accelerometro qui.
Per prima cosa dobbiamo calibrare l'accelerometro prelevando i campioni delle vibrazioni circostanti ogni volta che Arduino si accende. Quindi dobbiamo sottrarre quei valori campione dalle letture effettive per ottenere le letture reali. Questa calibrazione è necessaria in modo che non mostri avvisi rispetto alle sue normali vibrazioni circostanti. Dopo aver trovato letture reali, Arduino confronta questi valori con valori massimi e minimi predefiniti. Se Arduino rileva che i valori di modifica sono più o meno dei valori predefiniti di qualsiasi asse in entrambe le direzioni (negativa e positiva), Arduino attiva il cicalino e mostra lo stato di allerta sul display LCD 16x2 e anche un LED acceso. Possiamo regolare la sensibilità del rilevatore di terremoti modificando i valori predefiniti nel codice Arduino.
Il video dimostrativo e il codice Arduino sono forniti alla fine dell'articolo.
Spiegazione del circuito:
Circuito di questo rilevatore di terremoti Arduino Shield PCBè anche semplice. In questo progetto abbiamo utilizzato Arduino che legge la tensione analogica degli accelerometri e li converte in valori digitali. Arduino gestisce anche il cicalino, il LED, l'LCD 16x2 e calcola e confronta i valori e intraprende l'azione appropriata. La parte successiva è l'accelerometro che rileva la vibrazione della terra e genera tensioni analogiche su 3 assi (X, Y e Z). L'LCD viene utilizzato per mostrare la variazione dei valori degli assi X, Y e Z e anche per mostrare il messaggio di avviso su di esso. Questo LCD è collegato ad Arduino in modalità 4 bit. I pin RS, GND e EN sono direttamente collegati a 9, GND e 8 pin di Arduino e il resto dei 4 pin dati dell'LCD, ovvero D4, D5, D6 e D7, sono direttamente collegati ai pin digitali 7, 6, 5 e 4 di Arduino. Il buzzer è collegato al pin 12 di Arduino tramite un transistor NPN BC547. Un potenziometro da 10k viene utilizzato anche per controllare la luminosità dell'LCD.
Spiegazione della programmazione:
In questo Earthquake Detector Arduino Shield, abbiamo creato due codici: uno per Arduino per rilevare un terremoto e un altro per Processing IDE per tracciare le vibrazioni del terremoto sul grafico sul computer. Impareremo entrambi i codici uno per uno:
Codice Arduino:
Innanzitutto calibriamo l'accelerometro rispetto alla sua superficie di posizionamento, in modo che non mostri allarmi rispetto alle sue normali vibrazioni circostanti. In questa calibrazione, prendiamo alcuni campioni e poi ne prendiamo una media e li memorizziamo in una variabile.
for (int i = 0; i
Ora, ogni volta che l'accelerometro effettua letture, sottraiamo quei valori campione dalle letture in modo che possa ignorare le vibrazioni dell'ambiente.
int value1 = analogRead (x); // lettura di x int value2 = analogRead (y); // lettura di y int value3 = analogRead (z); // lettura di z int xValue = xsample-value1; // trovare il cambiamento in x int yValue = ysample-value2; // trovare il cambiamento in y int zValue = zsample-value3; // trovare il cambiamento in z / * disputare il cambiamento nei valori degli assi x, yez su lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); ritardo (100)
Quindi Arduino confronta quei valori calibrati (sottratti) con limiti predefiniti. E agisci di conseguenza. Se i valori sono superiori ai valori predefiniti, il cicalino emetterà un segnale acustico e traccerà il grafico delle vibrazioni sul computer utilizzando Elaborazione.
/ * confronto della variazione con i limiti predefiniti * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = millis (); // avvio del timer buz = 1; // flag buzzer / led attivato} else if (buz == 1) // flag buzzer attivato quindi allerta terremoto {lcd.setCursor (0,0); lcd.print ("Earthquake Alert"); if (millis ()> = start + buzTime) buz = 0; }
Codice elaborazione:
Di seguito è allegato il codice di elaborazione, è possibile scaricare il codice dal link sottostante:
Codice di elaborazione del rilevatore di terremoto
Abbiamo progettato un grafico utilizzando Processing, per le vibrazioni da terremoto, in cui abbiamo definito la dimensione della finestra, unità, dimensione del carattere, sfondo, lettura e visualizzazione delle porte seriali, porta seriale selezionata, ecc
// imposta la dimensione della finestra: e la dimensione del carattere f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, true); f10 = createFont ("Arial", 10, true); f12 = createFont ("Arial", 12, true); f24 = createFont ("Arial", 24, true); dimensione (1200, 700); // Elenca tutte le porte seriali disponibili println (Serial.list ()); myPort = new Serial (this, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); di sfondo (80)
Nella funzione sottostante, abbiamo ricevuto i dati dalla porta seriale ed estratto i dati richiesti e quindi mappati con la dimensione del grafico.
// estraendo tutti i valori richiesti di tutti e tre gli assi: 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); // mappatura dei valori x, yez con le dimensioni del grafico float inByte1 = float (temp1 + (char) 9); inByte1 = map (inByte1, -80,80, 0, altezza-80); float inByte2 = float (temp2 + (char) 9); inByte2 = mappa (inByte2, -80,80, 0, altezza-80); float inByte3 = float (temp3 + (char) 9); inByte3 = mappa (inByte3, -80,80, 0, altezza-80); float x = map (xPos, 0,1120,40, width-40);
Successivamente, abbiamo tracciato lo spazio unitario, i limiti massimo e minimo, i valori degli assi x, yez.
// plottaggio della finestra del grafico, unit strokeWeight (2); corsa (175); Linea (0,0,0,100); textFont (f24); riempimento (0,00,255); textAlign (RIGHT); xmargin ("EarthQuake Graph By Circuit Digest", 200,100); riempimento (100); strokeWeight (100); linea (1050,80,1200,80);………………
Dopodiché tracciamo i valori sul grafico utilizzando 3 colori diversi come blu per il valore dell'asse x, il colore verde per l'asse yez è rappresentato dal colore rosso.
corsa (0,0,255); if (y1 == 0) y1 = height-inByte1-shift; linea (x, y1, x + 2, height-inByte1-shift); y1 = height-inByte1-shift; corsa (0,255,0); if (y2 == 0) y2 = height-inByte2-shift; linea (x, y2, x + 2, height-inByte2-shift); y2 = height-inByte2-shift; corsa (255,0,0); if (y2 == 0) y3 = height-inByte3-shift; linea (x, y3, x + 2, height-inByte3-shift); y3 = height-inByte3-shift;
Scopri anche di più sull'elaborazione passando attraverso i nostri altri progetti di elaborazione.
Progettazione di circuiti e PCB utilizzando EasyEDA:
EasyEDA non è solo la soluzione completa per l'acquisizione di schemi, la simulazione di circuiti e la progettazione di PCB, ma offre anche un servizio di approvvigionamento di prototipi e componenti di PCB a basso costo. Recentemente hanno lanciato il loro servizio di approvvigionamento di componenti in cui hanno un ampio stock di componenti elettronici e gli utenti possono ordinare i componenti richiesti insieme all'ordine PCB.
Durante la progettazione di circuiti e PCB, è anche possibile rendere pubblici i progetti di circuiti e PCB in modo che altri utenti possano copiarli o modificarli e trarne vantaggio, abbiamo anche reso pubblici i nostri layout di circuiti e PCB per questo Earthquake Indicator Shield per Arduino UNO, controlla il link sottostante:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Di seguito è riportata l'istantanea dello strato superiore del layout PCB da EasyEDA, è possibile visualizzare qualsiasi strato (Top, Bottom, Topsilk, Bottomsilk ecc.) Del PCB selezionando lo strato dalla finestra "Layers".
Puoi anche vedere la vista fotografica del PCB usando EasyEDA:
Calcolo e ordinazione di campioni online:
Dopo aver completato il design del PCB, puoi fare clic sull'icona dell'output di Fabrication , che ti porterà sulla pagina dell'ordine PCB. Qui puoi visualizzare il tuo PCB in Gerber Viewer o scaricare i file Gerber del tuo PCB. Qui puoi selezionare il numero di PCB che desideri ordinare, quanti strati di rame ti servono, lo spessore del PCB, il peso del rame e persino il colore del PCB. Dopo aver selezionato tutte le opzioni, fare clic su "Salva nel carrello" e completare l'ordine. Recentemente hanno ridotto significativamente le loro tariffe PCB e ora puoi ordinare 10 pezzi PCB a 2 strati con dimensioni di 10 cm x 10 cm solo per $ 2.
Ecco i PCB che ho ricevuto da EasyEDA:
Di seguito sono riportate le immagini di Shield finale dopo aver saldato i componenti su PCB: