Iot Experiment-: 2
1. Aim / Objective
To analyze the digital signal data acquisition capabilities of Arduino and ESP8266, focusing on how
these platforms can be used to collect and transmit digital data from sensors or devices.
2. Apparatus Required / Components Required
• Arduino Board (Arduino Uno, Nano, or Mega)
• ESP8266 Board (NodeMCU or ESP-01)
• Digital Sensor (e.g., Temperature Sensor, Ultrasonic Sensor)
• Breadboard
• USB Cable (for both Arduino and ESP8266)
• Connecting Wires
• Resistors (if required by sensor)
• Multimeter (optional, for signal verification)
• Computer with Arduino IDE
• Wi-Fi Network (for ESP8266)
3. Theory
Digital Signal Data Acquisition
Data acquisition involves capturing and processing signals from various sensors or devices. A digital
signal refers to discrete data points that the microcontroller can read and process, such as ON/OFF
states or sensor outputs.
Arduino for Digital Signal Data Acquisition
Arduino boards are widely used for data acquisition from digital sensors. The board reads signals
from sensors via digital I/O pins and can process or store this data for further use. Arduino’s clock
speed of 16 MHz allows it to handle basic data acquisition tasks efficiently. Digital signals are typically
HIGH (5V) or LOW (0V) in Arduino systems.
• How Arduino Acquires Digital Data:
o Digital signals are read using digitalRead() function.
o The data can be stored, displayed, or transmitted for further processing.
Example: An Arduino can read a digital temperature sensor and display the value on a serial monitor
or control devices based on sensor inputs.
ESP8266 for Digital Signal Data Acquisition
ESP8266 is a more advanced platform for data acquisition, especially for IoT applications. It not only
reads digital signals but can also transmit data over Wi-Fi, making it ideal for real-time remote
monitoring.
• How ESP8266 Acquires Digital Data:
o Similar to Arduino, ESP8266 can read digital data using digitalRead().
o The acquired data can be transmitted wirelessly using Wi-Fi via HTTP requests or
MQTT protocol.
Example: An ESP8266 can collect temperature data from a digital sensor and send it to a web server
or cloud service like ThingSpeak.
Comparison between Arduino and ESP8266 for Data Acquisition
Feature Arduino ESP8266
Operating Voltage 5V 3.3V
Digital Input 14 pins (Arduino Uno) 16 GPIO pins
Data Transmission No built-in wireless support Built-in Wi-Fi for wireless data
Power Efficiency Moderate Low-power mode available
Use Case Local data acquisition Remote data acquisition via Wi-Fi
Applications:
• Arduino: Localized systems like door sensors, robot controls, and real-time digital data
monitoring.
• ESP8266: IoT-based systems, such as remote sensor monitoring, home automation, and
wireless data logging.
4. Code
Arduino Code for Digital Data Acquisition
This example shows how to acquire digital data from a push button and display the status on the serial
monitor.
#define buttonPin 2 // Digital pin connected to the button
int buttonState = 0; // Variable to hold the button state
void setup() {
Serial.begin(9600); // Start serial communication
pinMode(buttonPin, INPUT); // Set the button pin as input
void loop() {
buttonState = digitalRead(buttonPin); // Read the digital input
if (buttonState == HIGH) {
Serial.println("Button Pressed");
} else {
Serial.println("Button Released");
delay(100); // Delay between readings
ESP8266 Code for Digital Data Acquisition and Transmission over Wi-Fi
This example reads a digital signal and sends the data to a web server over Wi-Fi.
#include <ESP8266WiFi.h>
const char* ssid = "Your_SSID"; // Replace with your Wi-Fi SSID
const char* password = "Your_PASSWORD"; // Replace with your Wi-Fi Password
int sensorPin = 5; // GPIO 5 (D1 on NodeMCU)
void setup() {
Serial.begin(115200);
pinMode(sensorPin, INPUT); // Set sensor pin as input
WiFi.begin(ssid, password); // Connect to Wi-Fi
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
void loop() {
int sensorValue = digitalRead(sensorPin); // Read digital input from sensor
if (sensorValue == HIGH) {
Serial.println("Sensor is HIGH");
sendDataToServer("HIGH"); // Send data to server
} else {
Serial.println("Sensor is LOW");
sendDataToServer("LOW"); // Send data to server
delay(2000); // Delay between readings
// Function to send data to the web server
void sendDataToServer(char* data) {
WiFiClient client;
if (client.connect("yourserver.com", 80)) { // Replace with your server
client.print("GET /update?data=");
client.print(data);
client.println(" HTTP/1.1");
client.println("Host: yourserver.com");
client.println("Connection: close");
client.println();
5. Result
• Arduino was able to read digital signals from the sensor and display the values on the serial
monitor.
• ESP8266 successfully acquired digital data from the sensor and transmitted it wirelessly to a
web server, showcasing its capabilities in IoT applications.
6. Applications
• Arduino: Suitable for standalone data acquisition projects like environmental monitoring,
robotics, and real-time control systems.
• ESP8266: Ideal for IoT applications that require remote data acquisition and wireless data
transmission such as smart home devices, weather stations, and industrial monitoring
systems.