Kodi ya Arduino na Video: Sensor ya Umbali ya Ultrasonic HC-SR04 na Onyesho la TP1637
Katika mafunzo haya, tutachunguza jinsi ya kutumia kihisi cha umbali cha ultrasonic HC-SR04 pamoja na onyesho la TP1637 kuonyesha vipimo vya umbali kwa njia ya kuona. Mradi huu ni mzuri kwa matumizi kama magari ya roboti na kazi nyingine za kuhisi umbali. Kufikia mwisho wa mwongozo huu, utakuwa na mfumo unaofanya kazi unaopima umbali na kuuonyesha kwenye skrini, ikiruhusu ufuatiliaji rahisi wa usomaji wa kihisi.

Tutatumia vipengele viwili vikuu: kihisi cha ultrasonic HC-SR04 na moduli ya onyesho TP1637. Kihisi cha HC-SR04 hutoa mawimbi ya ultrasonic na kupima muda unaochukua kwao kurudi nyuma, kisha hukokotoa umbali kulingana na muda huo. Onyesho la TP1637 hutumia mawasiliano ya I2C kuonyesha umbali uliopimwa katika muundo rahisi kwa mtumiaji. Kwa uwazi zaidi, unaweza kurejelea video kwenye dakika ya 1:30 kwa maelezo ya kuona ya vipengele.
Maelezo ya Vifaa
Kihisi cha ultrasonic HC-SR04 kina pini nne: VCC, Trig, Echo, na GND. Pini ya VCC inaunganishwa na usambazaji wa umeme, wakati pini ya GND inaunganishwa na ardhi. Pini ya Trig hutumika kuanzisha mpigo wa ultrasonic, na pini ya Echo hupokea mpigo ulioakisiwa. Kihisi hiki kinaweza kupima umbali kuanzia sm 2 hadi sm 400.
Moduli ya onyesho TP1637 ina pini nne pia, ambazo hutumika kwa mawasiliano ya I2C. Pini hizi ni pamoja na VCC, GND, Clock (CLK), na Data (DIO). Katika mradi huu, pini ya CLK imeunganishwa kwenye pini ya dijiti 2 kwenye Arduino, na pini ya DIO imeunganishwa kwenye pini ya dijiti 3. Onyesho hili hurahisisha kuona usomaji wa umbali kutoka kwa kihisi cha ultrasonic.
Maelezo ya Datasheet
| Mtengenezaji | TM1637 |
|---|---|
| Nambari ya sehemu | TM1637 |
| Voltage ya Logic/IO | 3.3 V hadi 5.5 V |
| Voltage ya usambazaji | 5 V |
| Mkondo wa pato (kwa kila chaneli) | ~25 mA |
| Mkondo wa kilele (kwa kila chaneli) | ~50 mA |
| Mwongozo wa mzunguko wa PWM | Haupo |
| Viwango vya kizingiti cha mantiki ya kuingiza | 0.3VCC kiwango cha juu |
| Kushuka kwa voltage / RDS(on) / kueneza | Haupo |
| Mipaka ya joto | 85 °C |
| Kifurushi | DIP-16 |
| Vidokezo / lahaja | Hutumiwa kwa kawaida katika onyesho za sehemu 7 |
- Hakikisha miunganisho sahihi ili kuepuka uharibifu.
- Dumisha voltage ya juu ya usambazaji ya 5 V kwa uendeshaji salama.
- Tumia pull-ups sahihi kwa mawasiliano ya I2C ikihitajika.
- Weka kipimo cha umbali ndani ya mipaka iliyobainishwa (sm 2 - sm 400).
- Epuka kufupisha pini za umeme na ardhi.
- Jaribu mipangilio ya mwangaza wa onyesho ili kuhakikisha mwonekano.
- Angalia pembejeo zinazoelea ambazo zinaweza kusababisha usomaji usio sahihi.
CLK = saa, DIO = pato la data
Maagizo ya Uunganishaji

Ili kuunganisha kihisi cha ultrasonic HC-SR04, unganisha pini ya VCC (waya nyekundu) kwenye pini ya 5V kwenye Arduino, na pini ya GND (waya ya njano) kwenye ardhi. Pini ya Trigger (waya ya bluu) inapaswa kuunganishwa kwenye pini ya dijiti 12, wakati pini ya Echo (waya ya kijani) inapaswa kuunganishwa kwenye pini ya dijiti 11. Hakikisha miunganisho hii ni thabiti ili kuhakikisha uendeshaji sahihi.
Kwa onyesho la TP1637, unganisha pini ya VCC (waya nyekundu) kwenye pini ya 5V kwenye Arduino na pini ya GND (waya ya njano) kwenye ardhi. Pini ya Clock (waya ya bluu) inapaswa kwenda kwenye pini ya dijiti 2, na pini ya Data (waya nyeupe) inapaswa kuunganishwa kwenye pini ya dijiti 3. Mpangilio huu unaruhusu Arduino kuwasiliana na onyesho na kutuma data ya umbali kwa ajili ya kuonyeshwa.
Mifano ya Msimbo na Maelekezo
Sehemu ifuatayo ya msimbo huanzisha kihisi cha ultrasonic na onyesho:
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
TM1637Display display(CLK, DIO);
Hapa, tunafafanua pini za trigger na echo za kihisi cha ultrasonic na kuweka umbali wa juu kuwa sm 200. Maktaba ya NewPing hutumika kushughulikia kihisi, wakati kitu cha TM1637Display kinasimamia onyesho.
Katika kitanzi kikuu, tunasoma umbali mara kwa mara na kuuonyesha:
int distance = sonar.ping_cm(); // pata umbali
display.showNumberDec(distance, false, 3, 1);
Sehemu hii ya msimbo hupata kipimo cha umbali kutoka kwa kihisi na kukionyesha kwenye onyesho la TP1637. Kazi ya showNumberDec hufomati umbali kuonyeshwa kama nambari ya desimali.
Kwa msimbo kamili, tafadhali rejelea sehemu iliyo chini ya makala.
Maonyesho / Nini cha Kutarajia
Mara tu kila kitu kitakapowekwa na msimbo kupakiwa, unapaswa kuona usomaji wa umbali ukionyeshwa kwenye onyesho la TP1637. Usomaji utasasishwa takriban kila milisekunde 50, ukitoa maoni karibu ya wakati halisi kuhusu umbali uliopimwa na kihisi cha ultrasonic. Ukiona thamani zisizotarajiwa, hakikisha kihisi kimeelekezwa vizuri na kwamba hakuna vizuizi katika njia yake (katika video kwenye dakika ya 6:15).
Vidokezo vya Muda wa Video
- 00:00 - Utangulizi
- 01:30 - Muhtasari wa vipengele
- 02:45 - Maagizo ya uunganishaji
- 04:00 - Maelezo ya msimbo
- 06:15 - Maonyesho
/*
* This is the Arduino code for the HC-SR04 Ultrasonic Distance Sensor with TP1637 Display
* to measure the distance using Arduino for a robotic car and other applications
* Watch the video https://youtu.be/SlgLj_T5GaY
*
* Written by Ahmad Shamshiri for Robojax Video
* Date: December 21, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
/* Original Code
from https://github.com/avishorp/TM1637
// https://playground.arduino.cc/Code/NewPing
* Modified for Robojax video on December 21, 2017
// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------
*/
#include <NewPing.h>
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
////////////////////////////
#include <Arduino.h>
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
// The amount of time (in milliseconds) between tests
#define TEST_DELAY 500
TM1637Display display(CLK, DIO);
/////////////////////////
void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}
void loop() {
display.setBrightness(0x0f);
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
int distance = sonar.ping_cm();// get the distance and store it in "distance" variable
// Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.println("cm");
display.showNumberDec(distance, false, 3,1);
delay(50);
}
Tänker att du kanske behöver
-
eBay
Resurser och referenser
-
Extern.HC-SR04 Ultrasonic Library from the Arduino official websiteplayground.arduino.cc
-
Interna
Filer📁
Andra filer
-
HC-SR04 ultraljudssensor Arduino-bibliotek
robojax-HC-SR04-ultrasonic-Library.zip0.02 MB