Mafunzo ya ESP32 33/55 - Kete ya Dijiti kwa kutumia kifurushi cha kujifunza cha IoT cha SunFounder ESP32
Katika mafunzo haya, tutaunda kete ya dijiti kwa kutumia onyesho la sehemu saba na ESP32 kutoka kwenye mfuko wa kujifunza wa IoT wa SunFounder. Mradi huu utakuruhusu kuviringisha kete ya mtandaoni, ikitoa nambari kutoka 1 hadi 6 kwa kubonyeza kitufe. Hii ni njia nzuri ya kuchunguza uwezo wa ESP32 huku ukijifunza kuhusu kuunganisha na maonyesho na vitufe. Kwa uwazi zaidi, hakikisha umeangalia video kwenye (kwenye video saa 0:00).
Vifaa Vimeelezwa
Vipengele vikuu vya mradi huu vinajumuisha microcontroller ya ESP32, rejista ya mabadiliko ya 74HC595, onyesho la sehemu saba, na kitufe cha kubonyeza. ESP32 ni microcontroller yenye nguvu inayojumuisha Wi-Fi na Bluetooth, na kuifanya kufaa kwa matumizi ya IoT. Rejista ya mabadiliko ya 74HC595 inaturuhusu kudhibiti onyesho la sehemu saba kwa kutumia pini chache kuliko kuunganisha kila sehemu moja kwa moja.
Onyesho la sehemu saba linaonyesha nambari na linadhibitiwa kwa kutuma data kutoka kwenye rejista ya mabadiliko. Kitufe cha kubonyeza kinatumiwa kuanzisha kuviringisha kete, kikitoa nambari ya nasibu ambayo itaonyeshwa. Kinapobonyezwa, kitufe kinaunganisha kwenye pini 13 kwenye ESP32, ambayo ina kipingamizi cha kuvuta-juu cha ndani ili kuiweka katika hali ya juu wakati haijabonyezwa.
Maelezo ya Datasheet
| Mtengenezaji | Texas Instruments |
|---|---|
| Nambari ya sehemu | 74HC595 |
| Voltage ya mantiki/IO | 2 V hadi 6 V |
| Voltage ya usambazaji | 4.5 V hadi 5.5 V |
| Mkondo wa pato (kwa kila chaneli) | 6 mA max |
| Mkondo wa kilele (kwa kila chaneli) | 35 mA max |
| Mwongozo wa mzunguko wa PWM | Hautumiki |
| Vizingiti vya mantiki ya ingizo | VIH ≥ 2 V, VIL ≤ 0.8 V |
| Kushuka kwa voltage / RDS(on) / kueneza | 0.5 V max |
| Mipaka ya joto | 150 °C |
| Kifurushi | DIP-16 |
| Vidokezo / lahaja | Inatumika kwa kawaida katika maonyesho ya dijiti |
- Hakikisha viwango sahihi vya voltage (4.5 V hadi 5.5 V) kwa utendaji wa kuaminika.
- Punguza mkondo wa pato ili kuepuka kuharibu rejista ya mabadiliko.
- Tumia capacitors za kutenganisha karibu na pini za nguvu ili kuimarisha voltage.
- Unganisha onyesho la sehemu saba kwa usahihi ili kuepuka uwakilishi usio sahihi wa nambari.
- Angalia wiring kwa miunganisho iliyolegea ambayo inaweza kusababisha tabia isiyotarajiwa.
Maagizo ya Wiring

Ili kuunganisha kete ya dijiti, anza kwa kusanidi miunganisho ya nguvu. Unganisha ardhi (mstari wa bluu) kwenye breadboard yako kwenye pini ya ardhi kwenye ESP32 na uhakikishe kwamba pointi zote za ardhi zimeunganishwa. Kisha, unganisha pini ya 3.3V kutoka kwenye ESP32 kwenye reli ya nguvu (mstari mwekundu) kwenye breadboard.
Kwa rejista ya mabadiliko ya 74HC595, hakikisha kwamba pini 1 imeunganishwa kwenye reli ya 3.3V, na pini 8 kwenye ardhi. Unganisha pini ya pato la data (DS) kwenye pini 25 kwenye ESP32, pini ya saa ya mabadiliko (SHCP) kwenye pini 26, na pini ya saa ya kuhifadhi (STCP) kwenye pini 27. Kitufe cha kubonyeza kinapaswa kuunganishwa kati ya pini 13 kwenye ESP32 na ardhi, kikiruhusu kuvuta pini chini kinapobonyezwa.
Mifano ya Msimbo & Maelezo ya Hatua kwa Hatua
Katika msimbo, kwanza tunafafanua pini zinazotumika kwa rejista ya mabadiliko na kitufe. Pini ya kitufe inafafanuliwa kama buttonPin na imewekwa kwenye pini 13 kwenye ESP32. Safu ya data datArray ina uwakilishi wa binary wa nambari 0-9 kwa onyesho la sehemu saba.
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
const int buttonPin = 13;
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
Katika kazi ya setup(), tunaweka pini ya kitufe katika hali ya ingizo na pini za rejista ya mabadiliko katika hali ya pato. Hii inatayarisha pini kwa kusoma ingizo kutoka kwenye kitufe na kwa kutuma data kwenye onyesho.
void setup ()
{
pinMode(buttonPin,INPUT);
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Mantiki kuu ya programu inapatikana katika kazi ya loop(). Inaangalia ikiwa kitufe kimebonyezwa, inazalisha nambari ya nasibu, na inaita kazi ya show_number() kuonyesha nambari kwenye onyesho la sehemu saba.
void loop()
{
if(digitalRead(buttonPin) == LOW)
{
int diceNumber = random(1, 7);
show_number(diceNumber);
delay(50);
}
}
Kazi ya show_number() inatuma thamani inayofaa kutoka kwenye safu ya data kwenye rejista ya mabadiliko, ambayo kisha inadhibiti sehemu za onyesho kuonyesha nambari iliyozalishwa. Kazi hii ni muhimu kwa maoni ya kuona wakati kitufe kinapobonyezwa.
Maonyesho / Nini cha Kutarajia
Mchakato wa usanidi ukikamilika na msimbo kupakiwa, kubonyeza kitufe kutazalisha nambari ya nasibu kati ya 1 na 6, ambayo itaonyeshwa kwenye kiashiria cha sehemu saba. Ikiwa kila kitu kimeunganishwa kwa usahihi, kiashiria kinapaswa kuonyesha nambari kila wakati kitufe kinapobonyezwa. Kuwa makini na pembejeo zinazoelea; hakikisha kitufe kimeunganishwa vizuri kwenye ardhi (ground) ili kuepuka tabia isiyo ya kawaida (katika video kwenye dakika ya 1:30).
Vidokezo vya Muda wa Video
- 00:00 Mwanzo
- 1:48 Utangulizi wa mradi
- 3:40 Uunganishaji wa Kete ya Dijiti Umeelezwa
- 13:16 Msimbo wa Arduino wa Kete ya Dijiti Umeelezwa
- 19:19 Kuchagua Bodi ya ESP32 na Bandari ya COM katika Arduino IDE
- 21:00 Maonyesho ya Kete ya Dijiti
- 22:15 Kusahihisha Msimbo wa Arduino
// Define the pins used for the 74hc595 and button
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
const int buttonPin = 13;
// Define an array of values to display numbers on a 7-segment display
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int buttonState = false;
void setup ()
{
// Set the button pin to input mode
pinMode(buttonPin,INPUT);
//Set pins to 74hc595
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
// Check if the button is pressed
if(digitalRead(buttonPin) == LOW)
{
// Generate a random number between 1 and 6
int diceNumber = random(1, 7);
// Display the number on the 7-segment display
show_number(diceNumber);
// Delay for 50 milliseconds
delay(50);
}
}
// Function to display a number on a 7-segment display
void show_number(int num)
{
// Ground ST_CP and hold low for as long as you are transmitting
digitalWrite(STcp, LOW);
// Send the data for the number to the shift register
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
// Pull the ST_CP to save the data
digitalWrite(STcp, HIGH);
}
Common Course Links
Common Course Files
Resurser och referenser
-
DokumentationESP32 Tutorial 33/55- SunFounder doc page for digital dicedocs.sunfounder.com
Filer📁
Inga filer tillgängliga.