Experiment: Arduino train detactor
How to detect trains passing by, in a non-intrusive manner? We used an arduino Due (preferred over the Uno due to 12 bit ADC) with a 3 axis accelerometer for detecting vibrations. The device was then attached to concrete structure nearby the train stop. The video shows sensitivity tests in a professional and completely controlled test environment.
The arduino code can be found below the video.
//ARDUINO CODE double mAccelCurrent, mAccelLast; double mAccel; int frame = 0; void setup() { // declare the ledPin as an OUTPUT: Serial.begin(57600); analogReadResolution(12); pinMode(24, OUTPUT); pinMode(26, OUTPUT); pinMode(22, OUTPUT); mAccelCurrent = 0; mAccelLast = 0; mAccel = 0.0; Serial.println("ARD"); } void loop() { // read the value from the sensor: int x = analogRead(A0); // delay(1); int y = analogRead(A1); // delay(1); int z = analogRead(A2); // delay(1); frame++; Serial.println("ARD " + String(frame) + " " + String(x) + " " + String(y) + " " + String(z)); mAccelCurrent = sqrt(x*x + y*y + z*z); double delta = mAccelCurrent - mAccelLast; mAccelLast = mAccelCurrent; if (delta > mAccel) mAccel = delta; else mAccel = mAccel * 0.995 ; if (mAccel > 20) mAccel = 20; digitalWrite(22, mAccel>= 7.5 ? HIGH : LOW); digitalWrite(24, mAccel>= 10 ? HIGH : LOW); digitalWrite(26, mAccel>= 15 ? HIGH : LOW); delay(1); }