Tafuta Msimbo

Kodi ya Arduino na Video: Sensor ya Umbali ya Ultrasonic HC-SR04 na Onyesho la TP1637

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.

How HC-SR04 ulrasonic sensor work

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

MtengenezajiTM1637
Nambari ya sehemuTM1637
Voltage ya Logic/IO3.3 V hadi 5.5 V
Voltage ya usambazaji5 V
Mkondo wa pato (kwa kila chaneli)~25 mA
Mkondo wa kilele (kwa kila chaneli)~50 mA
Mwongozo wa mzunguko wa PWMHaupo
Viwango vya kizingiti cha mantiki ya kuingiza0.3VCC kiwango cha juu
Kushuka kwa voltage / RDS(on) / kuenezaHaupo
Mipaka ya joto85 °C
KifurushiDIP-16
Vidokezo / lahajaHutumiwa 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

Arduino wiring for HC-SR04 Ultrasonic Sensor with TM1637 display
Arduino wiring for HC-SR04 Ultrasonic Sensor with TM1637 display

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

Bilder

HC-SR04 ulrasonic sensor
HC-SR04 ulrasonic sensor
How HC-SR04 ulrasonic sensor work
How HC-SR04 ulrasonic sensor work
Arduino wiring for HC-SR04 Ultrasonic Sensor with TM1637 display
Arduino wiring for HC-SR04 Ultrasonic Sensor with TM1637 display
43-This is the Arduino code for the HC-SR04 ultrasonic distance sensor with a TP1637 display.
Språk: C++
/*
 * 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

Resurser och referenser

Filer📁

Andra filer