Arduino is an open-source electronic platform based on a microcontroller, which drives sensors and actuators to create interactive projects. Widely used in robotics, home automation and the Internet of Things (IoT), it serves as a remote sensor once paired with FizziQ.
Discover FizziQ
How to measure it in class
FizziQ receives the data sent by an Arduino board and records it in the experiment notebook, alongside the measurements from the smartphone’s sensors. The board acts as a remote sensor, going where the phone cannot.
Steps:
- Wire the sensor (thermistor, photoresistor, pressure sensor, etc.) to one of the board’s analog inputs A0 to A5, with its bias resistor.
- In the Arduino IDE, write a program that reads the input with
analogRead()and sends the value over the serial port at regular intervals. - In the program, convert the raw value (0 to 1023) into a voltage, then into a physical quantity, using the sensor’s calibration curve.
- Transmit the values to FizziQ and record them in the experiment notebook to plot and export them.
- Compare the Arduino’s measurement with that of the smartphone’s internal sensor when both exist: the difference tells you about the accuracy of both devices.
The tutorial for connecting Arduino to FizziQ is available here
Learn more
What you need to get started
To use an Arduino, you need an Arduino board, a computer with the Arduino Integrated Development Environment (IDE) installed, and a set of electronic components such as sensors, actuators and cables to connect the components to the Arduino board.
Once you have all the necessary components, you can use the Arduino IDE to write code for your project. The code is written in a programming language close to C++. You can use Arduino’s built-in libraries to access the functionality of the various sensors and actuators. The code is then uploaded to the Arduino board via a USB cable.
Once the code is uploaded to the board, the Arduino uses it to control the various electronic components connected to it. Users can then interact with the project, using the sensors to read data from the environment and the actuators to perform actions such as lighting an LED or driving a motor.
An interface, not a measuring instrument
An Arduino Uno board has no built-in sensor: it measures nothing by itself. It is an interface. It converts a voltage present on one of its analog inputs into an integer usable by a program. All the physics of the measurement therefore lies in the sensor connected to it and in the calibration you perform.
Resolution of the analog-to-digital converter
The analog-to-digital converter (ADC) of the Arduino Uno is coded on 10 bits, that is 1024 levels. Over the 0-5 V range, this gives a quantization step of about 4.9 mV: no variation finer than this value can be distinguished, whatever the quality of the sensor. This is a resolution limit, not an accuracy uncertainty.
Making the measurement chain visible
The educational value of the Arduino lies in the fact that it makes every step of the measurement chain visible: physical quantity, electrical quantity, voltage, number, displayed value. A smartphone hides all these steps behind an already calibrated sensor and a direct display. With a board, students build the conversion themselves and must take responsibility for its calibration.
Formula
The Arduino is not associated with a physical law of its own. The useful relations are those of analog-to-digital conversion.
Quantization step of the converter:
q = U_ref / 2^n
where:
- q: quantization step, smallest detectable voltage variation (V)
- U_ref: reference voltage of the converter, 5 V on a USB-powered Arduino Uno (V)
- n: converter resolution, 10 bits on an Arduino Uno
Numerical application: q = 5 / 1024 ≈ 4.9 × 10⁻³ V, about 4.9 mV.
Converting the raw value into a voltage:
U = N × U_ref / (2^n − 1)
where:
- U: voltage measured on the analog input (V)
- N: integer value returned by
analogRead(), between 0 and 1023
For a resistive sensor mounted in a voltage divider with a fixed resistor R₀:
R_sensor = R₀ × U / (U_supply − U)
where:
- R_sensor: sensor resistance (Ω)
- R₀: fixed resistor of the divider (Ω)
- U_supply: supply voltage of the divider (V)
Application examples
-
Tracking the temperature of a beaker during a change of state, over several hours, with a thermistor on A0: the melting plateau appears clearly, something a one-off thermometer reading does not show.
-
Measuring the illuminance in a greenhouse or a classroom over a whole day with a photoresistor, which a smartphone cannot do for lack of battery life.
-
Recording the discharge of a capacitor: with a 4.9 mV step over 0-5 V, the curve remains usable down to about 1% of the initial voltage.
-
Placing a sensor at the bottom of a container of water or inside an oven, environments where you would not put a phone.
-
Triggering a stopwatch with an optical gate to measure a speed, with a time resolution far better than manual triggering.
-
Comparing the pressure measured by a BMP280 sensor connected to the Arduino with that of the smartphone’s internal barometer read in FizziQ.
FAQ
Q: Do you need to know how to program to use an Arduino in physics? A: You need to be able to read and modify a program, not write one from scratch. The examples provided with the IDE cover reading an analog input and sending it over the serial port; the bulk of the student’s work is about conversion and calibration, not code.
Q: How precise is a measurement made with an Arduino? A: The converter’s resolution is about 4.9 mV, but the actual precision is almost always worse: it depends on the sensor, on electrical noise and on the stability of the USB supply, which is not exactly 5.00 V. This last source of error is the one that most often dominates.
Q: Why use an Arduino when the smartphone already has sensors? A: To measure where the smartphone cannot: a sensor immersed in water, exposed to heat, placed at height, or acquiring data over several days. And for quantities no smartphone measures, such as CO₂ concentration or conductivity.
Q: Can any sensor be connected to an analog input? A: No. The applied voltage must remain between 0 and 5 V, otherwise the input is destroyed. A sensor delivering a higher or negative voltage requires signal conditioning upstream.
Q: How does it differ from an ESP32 or a micro:bit? A: The Arduino Uno is the simplest and best documented, but it has neither built-in sensors nor wireless connectivity. The micro:bit has built-in sensors, and the ESP32 provides Wi-Fi and Bluetooth as well as a 12-bit converter.
Related concepts
Resolution - Calibration - ESP32