Ẹkọ ESP32 33/55 - Dásì Dáísì pẹ̀lú lílo SunFounder's ESP32 IoT Learning kit
Nínú ẹ̀kọ́ yìí, a óò ṣẹ̀dá ẹ̀rọ dísì oní nọ́ńbà (digital dice) nípa lílo àfihàn oní-ìpín méje (seven-segment display) àti ESP32 láti inú àkójọpọ̀ ẹ̀kọ́ IoT ti SunFounder. Iṣẹ́ yìí yóò jẹ́ kí o yí dísì oní nọ́ńbà padà, tí ó ń ṣe àwọn nọ́ńbà láti 1 sí 6 nígbà tí o bá tẹ bọ́tìnnì kan. Èyí jẹ́ ọ̀nà àgbàyanu láti ṣàwárí agbára ESP32 nígbà tí o ń kọ́ nípa ìbáṣepọ̀ pẹ̀lú àwọn àfihàn àti bọ́tìnnì. Fún ìmọ̀ pípé, rí i dájú pé o wo fídíò náà (nínú fídíò ní 0:00).
Àlàyé Ohun Èlò
Àwọn ohun èlò pàtàkì fún iṣẹ́ yìí ní ESP32 microcontroller, 74HC595 shift register, àfihàn oní-ìpín méje, àti bọ́tìnnì títẹ̀. ESP32 jẹ́ microcontroller alágbára tí ó so Wi-Fi àti Bluetooth pọ̀, tí ó sì mú un dára fún àwọn ìlò IoT. 74HC595 shift register jẹ́ kí a lè ṣàkóso àfihàn oní-ìpín méje pẹ̀lú àwọn pin díẹ̀ ju bí a bá ta ọ̀kọ̀ọ̀kan wọn ní tààrà.
Àfihàn oní-ìpín méje ń fi àwọn nọ́ńbà hàn, a sì ń ṣàkóso rẹ̀ nípa fífi data ránṣẹ́ láti shift register. Bọ́tìnnì títẹ̀ ni a ń lò láti mú dísì yí, tí ó ń ṣe nọ́ńbà àìròtẹ́lẹ̀ kan tí yóò hàn. Nígbà tí a bá tẹ̀ ẹ́, bọ́tìnnì náà ń so pín 13 lórí ESP32, tí ó ní resistor ìfàwọ́sínú (internal pull-up resistor) láti jẹ́ kí ó wà ní ipò gíga nígbà tí a kò bá tẹ̀ ẹ́.
Àwọn Àlàyé Datasheet
| Olùṣe | Texas Instruments |
|---|---|
| Nọ́ńbà apá | 74HC595 |
| Folti Logic/IO | 2 V sí 6 V |
| Folti ìpèsè | 4.5 V sí 5.5 V |
| Ìjade lọ́wọ́ (fún ikanni kọ̀ọ̀kan) | 6 mA tó pọ̀ jù |
| Ìjade tó ga jù (fún ikanni kọ̀ọ̀kan) | 35 mA tó pọ̀ jù |
| Ìtọ́sọ́nà ìgbohùnsáfẹ́fẹ́ PWM | Kò wúlò |
| Àwọn ìpele ìwọ̀n ìfidání | VIH ≥ 2 V, VIL ≤ 0.8 V |
| Ìrẹwẹ́si folti / RDS(on) / ìkún | 0.5 V tó pọ̀ jù |
| Àwọn ìwọ̀n ooru | 150 °C |
| Àkójọpọ̀ | DIP-16 |
| Àwọn àkíyèsí / oríṣiríṣi | Wọ́n ń lò ó ní ọ̀pọ̀ ìgbà nínú àwọn àfihàn oní nọ́ńbà |
- Rí i dájú pé àwọn ìpele folti tọ́ (4.5 V sí 5.5 V) fún iṣẹ́ tí ó gbára lé.
- Dín ìjade lọ́wọ́ kuro láti má ba à ti shift register jẹ.
- Lo àwọn capacitor ìyàsọ́tọ̀ (decoupling capacitors) nítòsí àwọn pin agbára láti mú folti dúró.
- So àfihàn oní-ìpín méje pọ̀ dáradára láti yẹra fún àṣìṣe nínú fífi àwọn nọ́ńbà hàn.
- Ṣàyẹ̀wò ìsopọ̀ fún àwọn ìsopọ̀ tí kò le kí ó lè yọrí sí ìwà àìròtẹ́lẹ̀.
Àwọn Ìtọ́sọ́nà Ìsopọ̀

Láti so dísì oní nọ́ńbà pọ̀, bẹ̀rẹ̀ nípa ṣíṣètò àwọn ìsopọ̀ agbára. So ilẹ̀ (ọ̀nà bulúù) lórí breadboard rẹ sí pin ilẹ̀ lórí ESP32, kí o sì rí i dájú pé gbogbo àwọn ibi ilẹ̀ ti sopọ̀ mọ́ra. Lẹ́yìn náà, so pin 3.3V kan láti ESP32 sí ọ̀nà agbára (ọ̀nà pupa) lórí breadboard.
Fún 74HC595 shift register, rí i dájú pé pin 1 ti sopọ̀ sí ọ̀nà 3.3V, àti pin 8 sí ilẹ̀. So pin ìjade data (DS) sí pin 25 lórí ESP32, pin aago ìyípadà (SHCP) sí pin 26, àti pin aago ìfipamọ́ (STCP) sí pin 27. Bọ́tìnnì títẹ̀ yẹ kí ó wà ní ìsopọ̀ láàárín pin 13 lórí ESP32 àti ilẹ̀, tí yóò jẹ́ kí ó fa pin náà sí ipò rẹ̀lẹ̀ nígbà tí a bá tẹ̀ ẹ́.
Àwọn Àpẹẹrẹ Kóòdù & Ìtọ́sọ́nà
Nínú kóòdù náà, a kọ́kọ́ ṣàlàyé àwọn pin tí a lò fún shift register àti bọ́tìnnì. Pin bọ́tìnnì jẹ́ dídá lórí buttonPin, a sì gbé e sí pin 13 lórí ESP32. Àkójọpọ̀ data datArray ní àwọn ìṣàfihàn oní-ìpín méji (binary) ti àwọn nọ́ńbà 0-9 fún àfihàn oní-ìpín méje.
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};
Nínú iṣẹ́ setup(), a ṣeto pin bọ́tìnnì sí ipo ìfidání (input mode) àti àwọn pin shift register sí ipo ìjáde (output mode). Èyí ń múra àwọn pin silẹ̀ fún kíkà ìfidání láti bọ́tìnnì àti fún fífi data ránṣẹ́ sí àfihàn.
void setup ()
{
pinMode(buttonPin,INPUT);
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Ìgbòkègbodò pàtàkì ti ètò náà wà nínú iṣẹ́ loop(). Ó ń ṣàyẹ̀wò bí a bá tẹ bọ́tìnnì, ó ń ṣe nọ́ńbà àìròtẹ́lẹ̀ kan, ó sì ń pe iṣẹ́ show_number() láti fi nọ́ńbà náà hàn lórí àfihàn oní-ìpín méje.
void loop()
{
if(digitalRead(buttonPin) == LOW)
{
int diceNumber = random(1, 7);
show_number(diceNumber);
delay(50);
}
}
Iṣẹ́ show_number() ń fi ìye tí ó yẹ láti inú àkójọpọ̀ data ránṣẹ́ sí shift register, tí ó sì ń ṣàkóso àwọn ìpín ti àfihàn láti fi nọ́ńbà tí a ṣe hàn. Iṣẹ́ yìí ṣe pàtàkì fún ìfihàn ìrísí nígbà tí a bá tẹ bọ́tìnnì.
Ìṣàfihàn / Ohun Tí O Lè Retí
Nígbàtí ìṣètò bá ti parí àti pé kódù náà ti gbé sílẹ̀, títẹ bọ́tìnnì náà yóò ṣe àrọ́pò nọ́ńbà àìròtẹ́lẹ̀ láàárín 1 sí 6, èyí tí yóò hàn lórí àfihàn méje-ìpín. Bí gbogbo nǹkan bá ti ní ìsopọ̀ tó tọ́, àfihàn náà yẹ kí ó fi nọ́ńbà hàn ní gbogbo ìgbà tí a bá tẹ bọ́tìnnì náà. Ṣọ́ra fún àwọn ìfisílẹ̀ tí ń fòfò; rí i wí pé bọ́tìnnì náà ti ní ìsopọ̀ tó tọ́ sí ilẹ̀ láti yẹra fún ìwà àìdúróṣinṣin (nínú fídíò ní 1:30).
Àkókò Fídíò
- 00:00 Ìbẹ̀rẹ̀
- 1:48 Ìfihàn iṣẹ́-ọnà náà
- 3:40 Ìsopọ̀ fún Dáísì Onínọ́ńbà Ṣàlàyé
- 13:16 Kódù Arduino fún Dáísì Onínọ́ńbà ṣàlàyé
- 19:19 Yíyan Bọ́ọ̀dù ESP32 àti èbúté COM nínú Arduino IDE
- 21:00 Ìfihàn Dáísì Onínọ́ńbà
- 22:15 Àtúnṣe Kódù 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
Orisun & itọkasi
-
Iwe-ẹriESP32 Tutorial 33/55 - SunFounder doc page for digital dicedocs.sunfounder.com
Fáìlìs📁
Ko si awọn faili ti o wa.