Posts in Engineering
Arduino GPS Tracker

The NEO-6 is a miniature GPS module designed by u-blox to receive updates from up to 22 satellite on 50 different channels that use trilateration to approximate fixed position of a receiver device every second (or less, for some modules). The particular module used in this tutorial, the NEO-6M, is capable of updating its position every second and communicates with an Arduino board using UART serial communication. The NEO-6M uses the National Marine Electronics Association (NMEA) protocol which provides temporal and geolocation information such as Greenwich Mean Time (GMT), latitude, longitude, altitude, and approximate course speed. The NEO-6M and Arduino board will also be paired with an SD module to create a portable logger that acts as a retrievable GPS tracker.

Read More
MPU6050 Arduino High-Frequency Accelerometer and Gyroscope Data Saver

The MPU6050 is a 6-DoF (degree of freedom) accelerometer and gyroscope that is designed for inexpensive, small-scale, and efficient approximation of motion. Accelerometers and gyroscopes are used in smart phones for orientation detection, vibration analysis in vehicles and machines, and even camera stabilization and motion tracking. There are countless applications for accelerometers and gyroscopes, and with devices as accessible as the MPU6050, we can really test the limits of the technology.

Read More
Infrared Thermometry Theory and Applications with Arduino and Python

In this tutorial, I will explore black body radiation, infrared detectors, and the relationship between temperature and emissivity - all with the intention of exploring how infrared (IR) detectors measure temperature from a distance. Arduino will be used, along with an MLX90614 IR thermometer, and a thermocouple for true-temperature approximation of each object. Planck’s discovery of energy quanta and their relationship to thermodynamics is the basis for radiation detectors and infrared temperature sensors. We will use Planck’s law to derive a usable equation that can relate the radiation measured by an infrared sensor to the temperature of a radiative object.

Read More
Satellite Imagery Analysis in Python Part III: Land Surface Temperature and The National Land Cover Database (NLCD)

The third entry of the satellite imagery analysis in Python uses land surface temperature (LST) as the data variable along with land cover information from the national (U.S.) database. The land cover information will allow us to create a relationship between land cover type and its respective heating (or cooling) contribution to the earth’s surface. Land cover is used in many applications ranging from algorithm development to military applications and crop surveying, not to mention applications in water management and drought awareness.

Read More
Satellite Imagery Analysis in Python Part II: GOES-16 Land Surface Temperature (LST) Manipulation

For part II, the focus shifts from the introduction of file formats and libraries to the geospatial analysis of satellite images. Python will again be used, along with many of its libraries. Land Surface Temperature will again be used as the data information, along with shapefiles used for geometric boundary setting, as well as information about buildings and land cover produced by local governments - all of which are used in meteorological and weather research and analyses.

Read More
Satellite Imagery Analysis in Python Part I: GOES-16 Data, netCDF Files, and The Basemap Toolkit

In this tutorial series, Python’s Basemap toolkit and several other libraries are utilized to explore the publicly-available Geostationary Operational Environmental Satellite-16 (GOES-16). In this first entry, the following will be introduced: acquisition of satellite data, understanding of satellite data files, mapping of geographic information in Python, and plotting satellite land surface temperature (LST) on a map.

Read More
Smartphone Arduino Weighing Scale with Load Cell and HX711

In this tutorial, I introduce an Arduino-based weighing scale that uses a load cell, analog-to-digital converter, and calibrated mass. I introduce calibration with known masses to create a powerful and accurate weighing system that can be used for highly accurate measurement purpose such as: chemistry, horticulture, cooking, and much more!

Read More
Arduino Weighing Scale with Load Cell and HX711

In this tutorial, I introduce an Arduino-based weighing scale that uses a load cell, analog-to-digital converter, and calibrated mass. I introduce calibration with known masses to create a powerful and accurate weighing system that can be used for highly accurate measurement purpose such as: chemistry, horticulture, cooking, and much more!

Read More
Image Processing Object Detection with Raspberry Pi and Python

In this entry, image processing-specific Python toolboxes are explored and applied to object detection to create algorithms that identify multiple objects and approximate their location in the frame using the picamera and Raspberry Pi. The methods used in this tutorial cover edge detection algorithms as well as some simple machine learning algorithms that allow us to identify individual objects in a frame.

Read More
Arduino + VL53L1X Time of Flight Distance Measurement

Time of flight (ToF) is an approximation of the time it takes a traveling wave to come in contact with a surface and reflect back to the source. Time of flight has applications in automotive obstacle detection, resolving geographic surface composition, and computer vision and human gesture recognition. In the application here, the VL53L1X ToF sensor will be used to track the displacement of a ping pong ball falling down a tube. We can predict the acceleration and behavior of a falling ping pong ball by balancing the forces acting on the ball, and ultimately compare the theory to the actual displacement tracked by the time of flight sensor.

Read More
Raspberry Pi Vibration Analysis Experiment With a Free-Free Bar

Using the Euler-Bernoulli beam theory, the resonant frequencies of a beam will be measured using a thin film piezoelectric transducer and compared to the theoretical calculations. A Raspberry Pi will be used along with a high-frequency data acquisition system (Behringer UCA202, sample rate: 44.1kHz) and the Python programming language for analysis. The fast fourier transform will allow us to translate the subtle beam deflections into meaningful frequency content. This tutorial is meant to introduce Python and Raspberry Pi as formidable tools for vibration analysis by using measurements as validation against theory.

Read More
Loudspeaker Analysis and Experiments: Part II

Part II of the tutorial series on loudspeaker analysis and experiments. The majority of this entry focuses on finding Thiele-Small parameters to fully characterize an electrodynamic loudspeaker in free air.

Read More
Loudspeaker Analysis and Experiments: Part I

In this tutorial, a loudspeaker will be analyzed by calculating the Thiele-Small parameters from impedance measurements using an inexpensive USB data acquisition system (minimum sampling rate of 44.1 kHz). The methods used in this project will educate the user on multiple engineering topics ranging from: data acquisition, electronics, acoustics, signal processing, and computer programming.

Read More
Arduino Pitot Tube Wind Speed and Airspeed Indicator - Theory and Experiments

The pitot tube is a device used to approximate the speed of vehicles traveling by air and water. An in-depth article on NASA's website is dedicated to pitot tubes (also called pitot-static tubes, Prandtl tubes), where it cites the primary application as airspeed indicator on aircraft. For more information on design and limitations of the instrument, I recommend perusing that page. For this tutorial, only the basic theory is explored using Bernoulli's equation and a practical application. An inexpensive pitot tube and a digital differential pressure sensor are used to measure pressure, which is converted to a digital signal using an Arduino board.

Read More
Arduino Thermistor Theory, Calibration, and Experiment

Thermistor, whose name is derived from a combination of thermal and resistor, is a temperature sensing device that registers changes in internal resistance as a function of temperature. Thermistors are often chosen over thermocouples because they are more accurate, have a shorter response time, and are generally cheaper. For most applications, thermistors are the smart and easy selection for temperature sensing below 300 degrees Celsius. In our case, we will be using a Negative Temperature Coefficient (NTC) thermistor, where the resistance decreases as the temperature increases. NTC thermistors are most common in commercial products that operate in the tens of degrees like thermostats, toasters, and even 3-D printers. An NTC 3950 100k thermistor will be used, which is designed for 100kOhm resistance at 25 degrees Celsius. This tutorial will introduce methods for relating resistance to temperature by fitting factory calibration data. The performance of the thermistor will also be evaluated using an Arduino board and a simple Newton’s law of cooling experiment.

Read More
GOES-R Satellite Latitude and Longitude Grid Projection Algorithm

Calculating latitude and longitude from a GOES-R L1b data file. The GOES-R L1b radiance files contain radiance data and geometry scan information in radians. This information is not enough to plot geographic radiance data right from the file, however, after some geometric manipulation harnessing satellite position and ellipsoid parameters, we can derive latitude and longitude values from the one-dimensional scan angles and plot our data in projected formats familiar to many geographic information tools.

Read More
iPhone Datalogger with Arduino Using The iOS Bluetooth App BLExAR

The BLExAR app will be used in conjunction with a CC2541 (HM-10, JDY-08, AT-09, SH-M08) Bluetooth module and an Arduino (ATmega328) board to create a simple data acquisition system. A DHT22 sensor will provide temperature and humidity data to the Arduino which will be recorded by an iOS device via the BLExAR app. This experiment is a real-world example of an Arduino application demonstrating data acquisition from a real sensor. This tutorial will allow users to solve their own engineering problems using the modern Arduino platform and wireless communication through the BLExAr app, which will ultimately expand the reach and compatibility of technology in the classical sciences through exploration and experimentation.

Read More
Arduino Tachometer - Using a Hall Effect Sensor (A3144) to Measure Rotations from a Fan

Arduino tachometer used to calculate the rotational motion of a part. Tachometers read out revolutions per minute (RPM), which tells the user how often a rotating part completes one full rotation. RPM readings are used in the automotive, aerospace, and manufacturing fields. Tachometers can indicate fuel consumption and motor speed, safety of moving parts, and even wind speed indicators. In this tutorial, the speed of a fan is measured using a hall sensor and neodymium magnet to acquire an accurate depiction of fan speed.

Read More
Audio Processing in Python Part III: Guitar String Theory and Frequency Analysis

In this continuation of the audio processing in Python series, I will be discussing the live frequency spectrum and its application to tuning a guitar. I will introduce the idea of nodes and antinodes of a stringed instrument and the physical phenomena known as harmonics. This will give us a better idea of how to tune the guitar string-by-string and also discern the notes of a given chord - all calculated using the FFT function in Python.

Read More
Audio Processing in Python Part II: Exploring Windowing, Sound Pressure Levels, and A-Weighting Using an iPhone X

Raspberry Pi 3B+ acoustic analysis using Python. Audio recording and signal processing with Python, beginning with a discussion of windowing and sampling, which will outline the limitations of the Fourier space representation of a signal. Discussion of the frequency spectrum, and weighting phenomenon in relation to the human auditory system will also be explored. Lastly, the significance of microphone pressure units and conversion to the decibel will be briefly introduced and explained.

Read More