Щоб запустити даний пристрій, ви повинні зробити наступні дії:
- Під'єднати дисплей з наступними пінами на STM32Fxxx: RST - PB10, CB - PB14, DC - PB12, Din - PB15, Clk - PB13, Vcc - 5V, Gnd - Gnd
- Тепер під'єднюємо наш далекомір HC-SR04: Vcc - 5V, Trig - PD14, Echo - PD15, Gnd - Gnd
- Запускаємо даний проект(файл main.c) і пробуємо підставити на певній відстані від далекоміра якийсь предмет/руку і на дисплеї можна побачити відстань від далекоміра до предмета.
Далекомір запускає імпульс і коли цей імпульс вдаряється об якусь перешкоду, то він повертається назад. Цей час фіксується. За 1 мс звук пролітає ~ 33см, але це сумарна відстань(туди-назад), тобто відстань до предмета буде 33/2 = 15.5см.
Одніє з найважчих моментів - це робити мікросекундні затримки. Щоб вирішити цю проблему, я використав повноцінний таймер. Для цього в STM32CubeMX я сконфігурував TIM10. Налаштувавши різні конфігурації(подільник, період оновлення) можна генерувати проект. Для затримки в мікросекундах була створена функція udelay_asm(useconds), яка приймаю затримку, як аргумент. Також нетривіальним було те, що при різній температурі імпульс рухається швидше/повільніше, тому берему кімнатну температуру(тобто 340 м/c - швидкість звуку при температурі ~21 градус Цельсія). Також було нетривіальним робота з дисплеєм, бо воно завжди виводило поза екраном. Для цього я кожного разу очищаю екран(LCD5110_clear_scr()) та ставлю курсор на координату (0, 0) екрану(LCD5110_set_cursor()).
© Serhiy Rosovskyy, student of the Ukrainian Catholic University