ኢኤስፒ32 ትምህርት 18/55 - ኢኤስፒ32ን በመጠቀም ዝንባሌን መለየት | የሰንፋውንደር ኢኤስፒ32 አይኦቲ መማሪያ ኪት
በዚህ መማሪያ ውስጥ፣ የ SunFounder ESP32 ማይክሮኮንትሮለርን በመጠቀም የማዕዘን መለወጫ ስዊች (tilt switch) በመጠቀም ዝንባሌን የሚለይ ቀላል ፕሮጀክት እንፈጥራለን። የማዕዘን መለወጫ ስዊች ሲነቃ፣ LED ይጠፋል፣ እና ቀጥ ባለ ቦታ ላይ ሲሆን፣ LED ይበራል። ይህ ፕሮጀክት ከማዕዘን ዳሳሾች ጋር ለመስራት ጥሩ መግቢያ ብቻ ሳይሆን ለተለያዩ የሮቦቲክስ አፕሊኬሽኖች መሰረት ሆኖ ያገለግላል። ለዝርዝር የእይታ መመሪያ፣ ከላይ የተጠቀሰውን ቪዲዮ መመልከትዎን ያረጋግጡ (በቪዲዮው በ00:00)።

ሃርድዌር ተብራርቷል
በዚህ ፕሮጀክት ውስጥ ጥቅም ላይ የሚውሉት ዋና ዋና ክፍሎች ESP32 ማይክሮኮንትሮለር፣ የማዕዘን መለወጫ ስዊች እና LED ይገኙበታል። ESP32 አብሮ የተሰራ Wi-Fi እና Bluetooth ያለው ኃይለኛ ማይክሮኮንትሮለር ነው፣ ይህም ለIoT አፕሊኬሽኖች ተስማሚ ያደርገዋል። የማዕዘን መለወጫ ስዊች በውስጡ የብረት ኳስ የያዘ ቀላል መሳሪያ ነው። ሲያዘነብል፣ ኳሱ ይንቀሳቀሳል እና ወረዳውን ይሰብራል፣ ይህም የማዕዘን ሁኔታን እንድንለይ ያስችለናል። LED በስዊቹ ሁኔታ ላይ በመመስረት የማዕዘን ሁኔታን በእይታ ያሳያል። ከእነዚህ ክፍሎች በተጨማሪ፣ ለአሁኑ ገደብ እና ለመጎተት-ወደታች (pull-down) ዓላማዎች ተቃዋሚዎችን (resistors) እንጠቀማለን። ከLED ጋር የተገናኘው 220-ohm ተቃዋሚ LED ከመጠን በላይ ጅረት ሳይስብ በደህና እንዲሰራ ያረጋግጣል። 10k-ohm ተቃዋሚ ለማዕዘን መለወጫ ስዊች እንደ pull-down ሆኖ ያገለግላል፣ ስዊቹ በማይነቃበት ጊዜ የግቤት ፒኑ የታወቀ ሁኔታ እንዲያነብ ያረጋግጣል።
የዳታሼት ዝርዝሮች
| አምራች | SunFounder |
|---|---|
| የክፍል ቁጥር | ESP32 |
| ሎጂክ/IO ቮልቴጅ | 3.3 ቪ |
| የአቅርቦት ቮልቴጅ | 5 ቪ |
| የውጤት ጅረት (በአንድ ቻናል) | 12 ሚኤ |
| ከፍተኛ ጅረት (በአንድ ቻናል) | 40 ሚኤ |
| የPWM ድግግሞሽ መመሪያ | 1 ኪሎሄርትዝ |
| የግቤት ሎጂክ ገደቦች | 0.8 ቪ (ዝቅተኛ)፣ 2.0 ቪ (ከፍተኛ) |
| የቮልቴጅ ጠብታ / RDS(on) / ሙሌት | 0.2 ቪ |
| የሙቀት ገደቦች | 85 °C |
| ፓኬጅ | ESP32 ሞጁል |
| ማስታወሻዎች / ልዩነቶች | Wi-Fi እና Bluetooth ችሎታዎችን ያካትታል |
- LED ከመጎዳት ለመከላከል ትክክለኛ የተቃዋሚ እሴቶችን ያረጋግጡ።
- የአጭር ወረዳዎችን ለማስቀረት ሽቦዎችን በጥሩ ሁኔታ ያስተካክሉ።
- ከማዕዘን መለወጫ ስዊች የተረጋጋ ንባቦችን ለማግኘት pull-down ተቃዋሚዎችን ይጠቀሙ።
- የክፍል ውድቀትን ለማስቀረት ወረዳውን ከማብራት በፊት ግንኙነቶችን ይሞክሩ።
- ትክክለኛ ተግባር ለማግኘት የማዕዘን መለወጫ ስዊች አቅጣጫን ያረጋግጡ።
የሽቦ መመሪያዎች

ክፍሎቹን ለማገናኘት፣ በማዕዘን መለወጫ ስዊች ይጀምሩ፣ እሱ ፖላሪቲ የለውም፣ ስለዚህ በማንኛውም አቅጣጫ ሊገናኝ ይችላል። የማዕዘን መለወጫ ስዊች አንዱን ፒን ከ3.3V አቅርቦት እና ሌላኛውን ፒን በESP32 ላይ ካለው ፒን 14 ጋር ያገናኙ። ስዊቹ በማይነቃበት ጊዜ ፒን 14 የታወቀ ሁኔታ እንዲያነብ ለማረጋገጥ፣ ከተመሳሳዩ ፒን ወደ መሬት የ10k-ohm ተቃዋሚ ያገናኙ። በመቀጠል፣ LED ይውሰዱ እና ረጅሙን እግር (አኖድ) ከ220-ohm ተቃዋሚ ጋር በማገናኘት ወደ ብሬድቦርዱ ያስገቡት። የተቃዋሚውን ሌላኛውን ጫፍ በESP32 ላይ ካለው ፒን 26 ጋር ያገናኙ። የLED አጭሩ እግር (ካቶድ) ከመሬት ጋር መገናኘት አለበት። በመጨረሻም፣ የESP32 የመሬት ፒን ከብሬድቦርድዎ የመሬት ሀዲድ እና የ3.3V ፒን ከኃይል ሀዲዱ ጋር ያገናኙ። ማንኛውንም አጭር ወረዳዎች ወይም የተሳሳቱ ንባቦችን ለመከላከል ሁሉንም ግንኙነቶች ሁለቴ መፈተሽዎን ያረጋግጡ። እነዚህን ደረጃዎች ከተከተሉ፣ ለፕሮግራም ዝግጁ የሆነ ተግባራዊ የማዕዘን ዳሳሽ ዝግጅት ሊኖርዎት ይገባል።
የኮድ ምሳሌዎች እና ማብራሪያ
ኮዱ የሚጀምረው ለማዕዘን መለወጫ ስዊች እና LED የፒን ቁጥሮችን በመግለጽ ነው። የማዕዘን መለወጫ ስዊች ከፒን 14 ጋር ተገናኝቷል፣ እና LED ከፒን 26 ጋር ተገናኝቷል። የማዕዘን መለወጫ ስዊች ሁኔታ በተለዋዋጭ tiltState ውስጥ ይከማቻል።
// የፒን ቁጥሮችን ያዘጋጁ
const int tiltPin = 14; // የማዕዘን መለወጫ ስዊች
const int ledPin = 26; // LED
// የማዕዘን ሁኔታን ለማከማቸት ተለዋዋጭ
int tiltState = 0;
ይህ ቅንጥብ የፒን ምደባዎችን እና የማዕዘን ሁኔታን የሚከታተለውን ተለዋዋጭ መግለጫ ያሳያል። tiltPin የስዊች ሁኔታን ለማንበብ እንደ ግቤት ተዘጋጅቷል። በsetup() ተግባር ውስጥ፣ ተከታታይ ግንኙነት ይጀመራል፣ እና ለማዕዘን መለወጫ ስዊች እና LED የፒን ሁነታዎች ይዘጋጃሉ። ይህ ESP32 ከማዕዘን መለወጫ ስዊች ግቤት ማንበብ እና LED በዚሁ መሰረት መቆጣጠር እንዲችል ያረጋግጣል።
void setup() {
Serial.begin(115200);
// የማዕዘን ፒን እንደ ግቤት ያስጀምሩ
pinMode(tiltPin, INPUT);
// የLED ፒን እንደ ውጤት ያስጀምሩ
pinMode(ledPin, OUTPUT);
}
ይህ ክፍል ወሳኝ ነው ምክንያቱም አካባቢውን ያዘጋጃል፣ ESP32 በብቃት እንዲግባባ እና በማዕዘን መለወጫ ስዊች ሁኔታ ላይ በመመስረት ውጤቱን እንዲቆጣጠር ያስችለዋል። loop() ተግባር የማዕዘን መለወጫ ስዊች ሁኔታን ያለማቋረጥ ይፈትሻል። ስዊቹ ቀጥ ብሎ ከሆነ፣ LED ይበራል፤ ከተዘነበለ፣ LED ይጠፋል። የአሁኑ ሁኔታ ለማረም ወደ ተከታታይ መቆጣጠሪያ ይታተማል።
void loop() {
// የማዕዘን መለወጫ ስዊች ሁኔታን ያንብቡ
tiltState = digitalRead(tiltPin);
Serial.println(tiltState);
// ስዊቹ ቀጥ ብሎ ከሆነ
if (tiltState == HIGH) {
// LED ያብሩ
digitalWrite(ledPin, HIGH);
} else {
// LED ያጥፉ
digitalWrite(ledPin, LOW);
}
}
ይህ loop ያለማቋረጥ ይሰራል፣ ይህም የማዕዘን መለወጫ ስዊች ሁኔታን በእውነተኛ ጊዜ መከታተል እና ተጓዳኝ የLED ቁጥጥርን ያስችላል። ውጤቱ በተከታታይ መቆጣጠሪያ ውስጥ ሊታይ ይችላል፣ ይህም ተግባራዊነትን ማረጋገጥ ቀላል ያደርገዋል።
ማሳያ / ምን እንደሚጠበቅ
ሁሉም ነገር በትክክል ከተገናኘ እና ኮዱ ከተጫነ፣ የቲልት ስዊች ቀጥ ባለ ሁኔታ ሲሆን LED ሲበራ ማየት አለብዎት፣ እና ሲያጋድሉት ይጠፋል። ይህ በቲልት ሁኔታ እና በLED ምላሽ መካከል ያለው ቀጥተኛ ትስስር የቲልት ስዊችን ተግባር ውጤታማ በሆነ መንገድ ያሳያል። የተለመዱ ስህተቶች የሽቦ አያያዝ ትክክለኛ መሆኑን ማረጋገጥ እና የአጭር ዑደት ችግሮችን ለማስቀረት ተቃዋሚዎቹ በትክክል መቀመጣቸውን ማረጋገጥ ይገኙበታል (በቪዲዮው 12:00 ላይ)።
የቪዲዮ ጊዜ ምልክቶች
- 00:00 መጀመሪያ
- 1:44 የፕሮጀክት መግቢያ
- 2:49 ሰነዶች
- 6:43 የአርዱኢኖ ሽቦ አያያዝ ተብራርቷል
- 10:39 የአርዱኢኖ ኮድ ተብራርቷል
- 13:40 በአርዱኢኖ IDE ላይ የESP32 ቦርድ እና የCOM ወደብ መምረጥ
- 15:22 የፕሮጀክት ቲልት ማሳያ
// Set pin numbers
const int tiltPin = 14; // Tilt Switch
const int ledPin = 26; // LED
// Variable for storing the tilt status
int tiltState = 0;
void setup() {
Serial.begin(115200);
// Initialize the tilt pin as an input
pinMode(tiltPin, INPUT);
// Initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// Read the state of the tilt switch
tiltState = digitalRead(tiltPin);
Serial.println(tiltState);
// If the switch is upright
if (tiltState == HIGH) {
// Turn LED on
digitalWrite(ledPin, HIGH);
} else {
// Turn LED off
digitalWrite(ledPin, LOW);
}
}
Common Course Links
Common Course Files
ምንጮች እና ምንጮች
-
ሰነዶችESP32 Tutorial 18/55- SunFounder Tile sensor documentationdocs.sunfounder.com
ፋይሎች📁
አንድ ፋይል የለም።