Impreuna cu placa de dezvoltare STM32F103C8 BluePill putem folosi modulul ultrasonic HC-SR04 pentru a detecta diferite distante dintre senzor si un obstacol.
Acest modul ultrasonic are un pret de 8 lei si poate fi achisitionat de aici.
Modulul se alimenteaza cu o tensiune de +5V iar conexiunile cu placa de dezvoltare se realizeaza in urmatorul mod:
| STM32 | HC-SR04 |
| PB3 | Trig |
| PB4 | Echo |
Poza cu acest modul este mai jos:

Afisarea distantei detectate o vom face pe un display LCD 1602 cu adaptor I2C, adaptor care va fi conectat conform acestui articol.
Pentru a putea testa functionalitatea montajului vom folosi urmatorul sketch:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int trigPin = PB3;
const int echoPin = PB4;
float durata, distanta;
void setup() {
lcd.begin();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.setCursor(0, 0);
lcd.print("electronicstore");
lcd.setCursor(13, 1);
lcd.print(".ro");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Senzor distanta");
lcd.setCursor(0, 1);
lcd.print("HC-SR04");
delay(1000);
lcd.clear();
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
durata = pulseIn(echoPin, HIGH);
distanta = (durata*.0343)/2;
lcd.setCursor(0, 0);
lcd.print("Distanta:");
lcd.setCursor(0, 1);
lcd.print(distanta);
lcd.print(" cm");
delay(300);
lcd.setCursor(0, 1);
lcd.print(" ");
}