Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino UNO-Based Ultrasonic Distance Sensor with OLED Display and SIM900A Communication

View and Edit Project In Cirkit DesignerImage of Arduino UNO-Based Ultrasonic Distance Sensor with OLED Display and SIM900A Communication

Circuit Documentation

Summary

This circuit integrates an Arduino UNO microcontroller with a JSN-SR04T Ultrasonic Sensor, a SIM900A GSM module, an OLED display, and a 18650 Li-ion Battery. The Arduino UNO serves as the central controller, interfacing with the ultrasonic sensor to measure distance, displaying the measured distance on the OLED display, and transmitting the data via the SIM900A module. The circuit is powered by a 18650 Li-ion Battery.

Component List

JSN-SR04T Ultrasonic Sensor

Arduino UNO

18650 Li-ion Battery

SIM900A

OLED Display 2.42

Wiring Details

JSN-SR04T Ultrasonic Sensor

Arduino UNO

18650 Li-ion Battery

SIM900A

OLED Display 2.42

Code Documentation

Arduino UNO Code

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define TRIG_PIN 9
#define ECHO_PIN 8
#define RX_PIN 10
#define TX_PIN 11
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

void setup() {
  // Initialize Serial Monitor
  Serial.begin(9600);

  // Initialize Ultrasonic Sensor
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  // Initialize SIM900A
  Serial1.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);

  // Initialize OLED Display
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(2000);
  display.clearDisplay();
}

void loop() {
  // Ultrasonic Sensor Code
  long duration, distance;
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  duration = pulseIn(ECHO_PIN, HIGH);
  distance = (duration / 2) / 29.1;

  // Display distance on OLED
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.print("Distance: ");
  display.print(distance);
  display.println(" cm");
  display.display();

  // Send data via SIM900A
  Serial1.print("Distance: ");
  Serial1.print(distance);
  Serial1.println(" cm");

  delay(1000);
}

This code initializes the ultrasonic sensor, SIM900A module, and OLED display. It measures the distance using the ultrasonic sensor, displays the distance on the OLED, and sends the distance data via the SIM900A module. The loop continuously performs these tasks with a delay of 1 second between each iteration.