How to Locate the Truth: Truth Finder

by ThomasL204 in Circuits > Arduino

2899 Views, 20 Favorites, 0 Comments

How to Locate the Truth: Truth Finder

_MG_9108-Edit.jpg
Truth is near a vacuum

I wanted to know the truth so I started trying to look for it. Unfortunately, there were no Instructables for doing this so I decided to make one and share it with you!

I found out that all the biggest truths were located at ‘‘standard conditions’.

In this instructable, I will show you how to create a Truth-finder which leads you directly to the truth at the standard conditions.

There are many ways of finding the truth, more than I know or could describe. In this instructable, I will be showing you the tracking method.

Please take a look at my other instructable which describe alternative methods for reaching the truth

Materials

_MG_9113.jpg

Materials

  • Arduino Uno
  • LCD screen
  • Wires
  • Nylon spacers
  • 1 nylon nut and bolt
  • Arduino battery pack
  • BMP180 Barometric Pressure Sensor (or equivalent)
  • Blue tack

Building Truth Aerial

_MG_9114.jpg
_MG_9115.jpg

Add multiple spacers on top of each other. On the top spacer bolt the sensor using the bolt.

Attaching Aerial

_MG_9118.jpg

Attach the aerial to one of the holes in the corner of the LCD screen. Securing in place with the bolt.

Attach LCD Screen to Arduino

_MG_9121.jpg

Push the LCD screen gently onto the Arduino being careful not to bend any of the pins.

Attaching Battery Pack

_MG_9124.jpg
_MG_9125.jpg

Take the blue tack and attach it to two positions on the bottom of the Arduino. Now stick the Arduino on top of the battery pack ensuring that the power cable can reach the Arduino

Connecting Sensor

_MG_9119.jpg
TruthFinder_bb.png

Use the above wiring diagram as an aid for connecting the sensor to the Arduino board

Code

This code has been modified from the adafruit sensor library. Please download it here or copy and paste it from below into a black sketch.This requires some knowledge about Arduino and its IDE which you can read here.

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

/* This driver uses the Adafruit unified sensor library (Adafruit_Sensor), which provides a common 'type' for sensor data and some helper functions. To use this driver you will also need to download the Adafruit_Sensor library and include it in your libraries folder.

You should also assign a unique ID to this sensor for use with the Adafruit Sensor API so that you can identify this particular sensor in any data logs, etc. To assign a unique ID, simply provide an appropriate value in the constructor below (12345 is used by default in this example). Connections =========== Connect SCL to analog 5 Connect SDA to analog 4 Connect VDD to 3.3V DC Connect GROUND to common ground History ======= 2013/JUN/17 - Updated altitude calculations (KTOWN) 2013/FEB/13 - First version (KTOWN) */ Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);

//Setting up variables for calculating a rolling average for pressure const int numReadings = 50;

float readings[numReadings]; // the readings from the analog input int readIndex = 0; // the index of the current reading float total = 0; // the running total float average = 0; // the average /**************************************************************************/ /* Displays some basic information on this sensor from the unified sensor API sensor_t type (see Adafruit_Sensor for more information) *

**************************************************************************/ /* Arduino setup function (automatically called at startup) */ /**************************************************************************/ void setup(void) { Serial.begin(9600); Serial.println("Pressure Sensor Test"); Serial.println("");

for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; } /* Initialise the sensor */ if(!bmp.begin()) { /* There was a problem detecting the BMP085 ... check your connections */ Serial.print("Ooops, no BMP085 detected ... Check your wiring or I2C ADDR!"); while(1); }

//Displaying lcd.begin(16, 2); //initalising size of display (16 collumns, 2 rows) lcd.setCursor(0,0); //set cursor to first row and first collumn lcd.print("Temp:"); lcd.setCursor(0,1); lcd.print("Pres:");

}

/**************************************************************************/ /* Arduino loop function, called once 'setup' is complete (your own code should go here) */ /**************************************************************************/ void loop(void) { /* Get a new sensor event */ sensors_event_t event; bmp.getEvent(&event); /* Display the results (barometric pressure is measure in hPa) */ if (event.pressure) { /* Display atmospheric pressue in hPa */ Serial.print("Pressure: "); Serial.print(event.pressure); Serial.println(" hPa"); /* Calculating altitude with reasonable accuracy requires pressure * * sea level pressure for your position at the moment the data is * * converted, as well as the ambient temperature in degress * * celcius. If you don't have these values, a 'generic' value of * * 1013.25 hPa can be used (defined as SENSORS_PRESSURE_SEALEVELHPA * * in sensors.h), but this isn't ideal and will give variable * * results from one day to the next. * * * * You can usually find the current SLP value by looking at weather * * websites or from environmental information centers near any major * * airport. * * * * For example, for Paris, France you can check the current mean * * pressure and sea level at: http://bit.ly/16Au8ol */ /* First we get the current temperature from the BMP085 */ float temperature; bmp.getTemperature(&temperature); Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" C");

/* Then convert the atmospheric pressure, and SLP to altitude */ /* Update this next line with the current SLP for better results */ float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; Serial.print("Altitude: "); Serial.print(bmp.pressureToAltitude(seaLevelPressure, event.pressure)); Serial.println(" m"); Serial.println("");

lcd.setCursor(5,0); lcd.print(temperature); lcd.print((char)223); lcd.print("C ");

// subtract the last reading: total = total - readings[readIndex]; // read from the sensor: readings[readIndex] = event.pressure; // add the reading to the total: total = total + readings[readIndex]; // advance to the next position in the array: readIndex = readIndex + 1;

// if we're at the end of the array... if (readIndex >= numReadings) { // ...wrap around to the beginning: readIndex = 0; }

// calculate the average: average = total / numReadings;

delay(1); lcd.setCursor(5,1); lcd.print(average); // print average pressure lcd.print("hPa"); } else { Serial.println("Sensor error"); } delay(0); }

You Are Ready

_MG_9111.jpg

your truth finder should now be displaying the temperature and pressure when powered on

Finding Likely Truth Locations

Capture.jpg
Capture2.jpg
Capture3.jpg
Capture4.jpg
Twelve Truth Tacks

In order to be more efficient with your searching, I would recommend scouting out potential places before venturing out. Google earth is a very useful tool to help you do this. You can set placemarkers at the true altitude and see where they intersect with building and landmarks.



Go Out and Look

IMG_20170323_102703181.jpg
IMG_20170323_103201038.jpg
IMG_20170323_112316790.jpg
IMG_20170323_112324162.jpg

Now you are aware of the approximate locations, go visit these places with the truth finder and see how close you can get to the truth. Good Luck!