ዝርዝር ሁኔታ:

አርዱዲኖ ከፍተኛ ቴክ ደህንነቱ የተጠበቀ - 6 ደረጃዎች
አርዱዲኖ ከፍተኛ ቴክ ደህንነቱ የተጠበቀ - 6 ደረጃዎች

ቪዲዮ: አርዱዲኖ ከፍተኛ ቴክ ደህንነቱ የተጠበቀ - 6 ደረጃዎች

ቪዲዮ: አርዱዲኖ ከፍተኛ ቴክ ደህንነቱ የተጠበቀ - 6 ደረጃዎች
ቪዲዮ: RAMPS 1.6 - Basics 2024, ሀምሌ
Anonim
አርዱዲኖ ከፍተኛ ቴክ ደህንነቱ የተጠበቀ
አርዱዲኖ ከፍተኛ ቴክ ደህንነቱ የተጠበቀ

ይህ የእኔ አርዱዲኖ ከፍተኛ የቴክኖሎጂ ደህንነት ነው። መሳቢያውን ለመክፈት ጣትዎን መቃኘት ፣ ካርድዎን መቃኘት አለብዎት ፣ ከዚያ ባለ 4 አሃዝ የይለፍ ቃል ያስገቡ። ይህ ፕሮጀክት ለጀማሪዎች አይመከርም ምክንያቱም በጣም የላቀ ነው። ኮዱ ረጅም ነው ፣ ግን በዚህ ፕሮጀክት ውስጥ እጋራዋለሁ። እንደ እኔ ተመሳሳይ ደህንነትን ከገነቡ ዋጋው 75 ዶላር አካባቢ ነው። ይህ ፕሮጀክት ለማጠናቀቅ ከ1-3 ቀናት ሊወስድ ይችላል። ስለዚህ ፣ እንጀምር!

አቅርቦቶች

ከእኔ ጋር ተመሳሳይ ደህንነትን ለመገንባት የሚከተሉትን ያስፈልግዎታል

አርዱዲኖ (ዩኖ የሚመከረው ለአርዱዲኖ ሜጋ ወይም ናኖ እርምጃዎች ስላልነበሩ ነው። ግን አሁንም ሊጠቀሙባቸው ይችላሉ)

የዳቦ ሰሌዳ

servo

ዝላይ ሽቦዎች

ጆይስቲክ

20*4 (16*4 ን መጠቀም ይችላሉ ፣ ግን ኮዱን መለወጥ ይኖርብዎታል)

የጣት አሻራ ስካነር

mfrc522 rfid ካርድ ስካነር

የሌጎስ ባልዲ

ደረጃ 1: ሣጥን መገንባት

ሣጥን መገንባት
ሣጥን መገንባት

በመጀመሪያ ኤሌክትሮኒክስዎን ለማስገባት ሳጥን ያስፈልግዎታል። ሌጎስ ፣ 3 ዲ የታተመ ሣጥን ወይም ካርቶን እንኳን መጠቀም ይችላሉ! (ምንም እንኳን ይህ ከባድ ሊሆን ቢችልም) ለመሳቢያ እና ለኤሌክትሮኒክስዎ ቀዳዳዎችን በእሱ ውስጥ ማስገባትዎን አይርሱ። የ rfid ካርድ ስካነር የሚጠቀሙ ከሆነ ፣ ግድግዳዎችዎ ቀጭን ከሆኑ ለዚያ ቀዳዳ ማስቀመጥ አያስፈልግዎትም። ካርዶቹ አሁንም ይሰራሉ ፣ ግን የ rfid ካርድ አነፍናፊ እንዲያነባቸው የቁልፍ ሰንሰለቶችን መዝጋት አለብዎት። እንዲሁም ለአርዲኖዎ እና በውስጡ ሽቦዎች ቦታ ይተው። ማሳሰቢያ - መሳቢያውን ሲገነቡ ፣ የእርስዎ አገልጋይ መሳቢያውን ማዞር እና መቆለፍ እንዲችል በውስጡ ቀዳዳ ይተውት።

ደረጃ 2 - ሽቦን ከፍ ማድረግ

ሽቦን ወደላይ!
ሽቦን ወደላይ!

በትክክለኛው ቦታ ላይ ሽቦዎችን መሰካት አለብዎት ወይም ኤሌክትሮኒክስ አይሰራም ምክንያቱም ይህ እርምጃ ውስብስብ ሊሆን ይችላል። እኔ የሽቦ ዲያግራም የለኝም ፣ ግን እያንዳንዱ እንደሚሄድ እነግርዎታለሁ። ሽቦው ለአርዱዲኖ ኡኖ ብቻ ነው። አርዱዲኖ ሜጋ ወይም ናኖ የሚጠቀሙ ከሆነ ሽቦዎቹን ለማስቀመጥ መፈለግ ያስፈልግዎታል። ያለኝን ሁሉንም ኤሌክትሮኒክስ የማይጠቀሙ ከሆነ ፣ ያንን ሽቦ መዝለል ይችላሉ።

የጣት አሻራ ስካነር አረንጓዴ ሽቦ D2 ነጭ ሽቦ D3 ጥቁር ሽቦ GND ቀይ ሽቦ 5 ቮ

ጆይስቲክ 5V = 3.3V GND = GND X = A2 Y = A3 Switch = D4

rfid ካርድ ስካነር 3.3V = 3.3V መጀመሪያ = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

lcd ማያ ገጽ: 5V = 5V GND = GND sda = A4 sck = A5

Servo: ቀይ ሽቦ 5V ቡናማ ሽቦ GND ቢጫ ሽቦ D6

ማሳሰቢያ - በ 5 ቪ ውስጥ የ RFID ካርድ መቃኛን አይጭኑ። ብታደርግ ይሰበራል !!!

በጎን በኩል 5V ሲናገር የጆይስቲክ ኃይልን ወደ 3.3V ይሰኩት ያልኩት ለምን እንደሆነ ትገረም ይሆናል። ይህ የሆነው ሰርቪው ፣ ማያ ገጹ እና የጣት አሻራ ስካነሩ 5 ቪ ስለሚያስፈልገው ነው። በእሱ ላይ ጆይስቲክን ካከሉ ፣ ሁሉም ነገር 5V ስለሚያስፈልገው ኤሌክትሮኒክስ ላይሰራ ይችላል። ጆይስቲክ አሁንም ከ 3.3 ቪ ጋር ይሠራል። ከፍተኛው እሴት ብቻ 1023 አይሆንም ፣ ~ 670 ይሆናል።

ደረጃ 3 ቤተ -ፍርግሞችን ማውረድ

በዚህ ፕሮጀክት ውስጥ ሁሉንም ኤሌክትሮኒክስ ለመጠቀም 6 ቤተመጽሐፍት ያስፈልግዎታል። 1 ለ servo ፣ 1 ለጣት አሻራ አነፍናፊ ፣ 2 ለ rfid ካርድ ስካነር እና 2 ለማያ ገጹ። ጆይስቲክ ቤተመጽሐፍት አያስፈልገውም። አሁን ፣ ቤተ -መጽሐፍት ምንድነው? በመሰረቱ በቀላል ትዕዛዞች በፕሮጀክትዎ ውስጥ ሊጠቀሙባቸው የሚችሉ ብዙ ኮዶችን የያዘ ፋይል ነው። እነዚህን ቤተመጽሐፍት ለማግኘት GitHub ወደሚባል ቦታ መሄድ ያስፈልግዎታል። ቤተ -ፍርግሞችን እንዴት ማውረድ እና መገልበጥ እንደሚችሉ ካወቁ ፣ ለማውረድ ከዚህ በታች ወዳሉት አገናኞች ይሂዱ። እንዴት እንደሆነ ካላወቁ በደረጃ 3 ላይ ቤተ-መጽሐፍትን እንዴት ማውረድ እንደሚቻል ወደሚናገረው ወደ እኔ አስተማሪ መሄድ ይችላሉ-

ወይም የአርዱዲኖ ቤተ -መጽሐፍትን ከጊትሆብ እንዴት ማውረድ እንደሚቻል የ youtube ቪዲዮን ይፈልጉ

ወደ LIRARIES ያገናኛል ፦

ሰርቪ

የጣት አሻራ ዳሳሽ

spi

rfid ካርድ ዳሳሽ

የማያ ገጽ ቤተ -መጽሐፍት 1

የማያ ገጽ ቤተ-መጽሐፍት 2

ደረጃ 4 - የጣት አሻራ ዳሳሽ እና የሬፍ ካርድ ዳሳሽ ማቀናበር

ይህ ደረጃ የጣት አሻራ ዳሳሽ እና የ rfid ካርድ ዳሳሽ እንዴት እንደሚዋቀር ይናገራል። አስቀድመው የጣት አሻራ ዳሳሽዎን ካልተጠቀሙ በስተቀር በማስታወሻው ውስጥ ለማስቀመጥ የጣት አሻራዎ ምን እንደሚመስል ማሳየት ያስፈልግዎታል። ምንም እንኳን ከዚህ በፊት ቢጠቀሙበት ፣ አሁንም ይህንን እርምጃ ማከናወን አለብዎት። በአጭሩ እንዴት እንደሚያደርጉት እነግርዎታለሁ ፣ ግን ትርጉም የማይሰጥ ከሆነ በመጨረሻው ደረጃ ወደ ተመሳሳይ ትምህርት ሰጪ አገናኝ ይሂዱ። በላዩ ላይ በደንብ ያልፋል። መሰረታዊ ልክ ክፍት አርዱዲኖ ሀሳብ። ወደ ፋይል> ምሳሌዎች> የ adafruit የጣት አሻራ አነፍናፊ> ይመዝገቡ። ኮዱን ወደ አርዱዲኖ ይስቀሉ ፣ ተከታታይ ማሳያ ይከፍቱ እና የሚነግርዎትን ደረጃዎች ይከተሉ። ቁጥር ስጠው ሲለው። 1#ይተይቡ።

አሁን ለ rfid ካርድ ፣ ይህ እርምጃ በጣም ቀላል ነው። አርዱዲኖ ሀሳቡን ይክፈቱ። ወደ ፋይል> ምሳሌዎች> mfrc522> የግል ውሂብን ያንብቡ። ወደ አርዱዲኖ ይስቀሉ እና ተከታታይ ማሳያ ይከፍቱ። ከእርስዎ ዳሳሽ ጋር የመጣውን ለመጠቀም የሚፈልጉትን ካርድ ወይም የቁልፍ ሰንሰለት ይቃኙ። ከዚያ የተወሰነ መረጃ ይሰጥዎታል። የካርዱን መታወቂያ ይፈልጉ 4 ስብስቦች 2 አሃዞች ይሆናሉ። እንደዚህ ያለ ነገር AB 45 2Y 45 ግን የእርስዎ ኮድ የተለየ ይሆናል። ይህንን በወረቀት ላይ ይፃፉ። በኋላ ላይ እንደገና ያስፈልግዎታል። ለዚህ እርምጃ ይህ ብቻ ነው።

ደረጃ 5: ኮድ

ይህ ለአብዛኞቻችሁ በጣም ከባድ እርምጃ ይሆናል ፣ ግን በጣም ቀላል ነው። መጀመሪያ ኮዱን ይቅዱ እና ከታች ወደ አርዱዲኖ ሀሳብ ውስጥ ይለጥፉ። ሁለተኛ ፣ አርትዕ ኮድ በሚለው ቦታ ያሉትን 2 ክፍሎች ያርትዑ። 1 ክፍል ለካርድ ስካነር ፣ 1 ለጆይስቲክ ነው። እነዚህ እርምጃዎች ሊዘለሉ አይችሉም። አንዴ ከተጠናቀቀ ፣ ኮድ ወደ አርዱዲኖ ይስቀሉ!

#አካትት #የጣት አሻራ ያካትቱ

#ያካትቱ

#ያካትቱ

#ያካትቱ

#ያካትቱ

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#ጥራት RST_PIN 9 ን ይግለጹ

#SS_PIN ን ይግለጹ 10

MFRC522 mfrc522 (SS_PIN ፣ RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

Servo servo;

ቻር d1;

ቻር d2;

ቻር d3;

ቻር d4;

ባዶነት ማዋቀር () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

ሳለ (! ተከታታይ);

SPI.begin ();

mfrc522. PCD_Init ();

መዘግየት (4);

mfrc522. PCD_DumpVersionToSerial ();

መዘግየት (100);

ተከታታይ።

finger.begin (57600);

መዘግየት (5);

ከሆነ (ጣት.verifyPassword ()) {

Serial.println ("ሁሉም ስርዓቶች እየሰሩ");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("እባክዎን ጣትዎን ይቃኙ");

} ሌላ {

Serial.println ("ስህተት: የጣት አሻራ አነፍናፊ አልተገኘም!");

lcd.setCursor (0, 0);

lcd.print ("ስህተት: የጣት አሻራ");

lcd.setCursor (1, 1);

lcd.print ("ዳሳሽ አልተገኘም!");

(1) {መዘግየት (1); }

}

finger.getTemplateCount ();

Serial.print ("ዳሳሽ ይ containsል"); Serial.print (ጣት.templateCount); Serial.println ("አብነቶች"); Serial.println ("ትክክለኛ ጣት በመጠበቅ ላይ …"); }

ባዶ (* resetFunc) (ባዶ) = 0;

ባዶነት loop () {

getFingerprintIDez ();

መዘግየት (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

መቀየሪያ (ገጽ) {

መያዣ FINGERPRINT_OK ፦

Serial.println ("ምስል ተነስቷል");

ሰበር;

መያዣ FINGERPRINT_NOFINGER ፦

Serial.println ("ጣት አልተገኘም");

መመለስ p;

መያዣ FINGERPRINT_PACKETRECIEERERR ፦

Serial.println ("የግንኙነት ስህተት");

መመለስ p;

መያዣ FINGERPRINT_IMAGEFAIL ፦

Serial.println ("የምስል ስህተት");

መመለስ p;

ነባሪ ፦

Serial.println ("ያልታወቀ ስህተት");

መመለስ p;

}

p = finger.image2Tz ();

መቀየሪያ (ገጽ) {

መያዣ FINGERPRINT_OK ፦

Serial.println ("ምስል ተለውጧል");

ሰበር;

መያዣ FINGERPRINT_IMAGEMESS ፦

Serial.println ("ምስል በጣም የተዝረከረከ");

መመለስ p;

መያዣ FINGERPRINT_PACKETRECIEERERR ፦

Serial.println ("የግንኙነት ስህተት");

መመለስ p;

መያዣ FINGERPRINT_FEATUREFAIL ፦

Serial.println ("የጣት አሻራ ባህሪያትን ማግኘት አልተቻለም");

መመለስ p;

መያዣ FINGERPRINT_INVALIDIMAGE ፦

Serial.println ("የጣት አሻራ ባህሪያትን ማግኘት አልተቻለም");

መመለስ p;

ነባሪ ፦

Serial.println ("ያልታወቀ ስህተት");

መመለስ p;

}

p = finger.fingerFastSearch ();

ከሆነ (p == FINGERPRINT_OK) {

Serial.println ("የህትመት ግጥሚያ ተገኝቷል!");

} ሌላ ከሆነ (p == FINGERPRINT_PACKETRECIEERERR) {Serial.println ("የግንኙነት ስህተት");

መመለስ p;

} ሌላ ከሆነ (p == FINGERPRINT_NOTFOUND) {

Serial.println ("ተዛማጅ አላገኘም");

መመለስ p;

} ሌላ {

Serial.println ("ያልታወቀ ስህተት");

መመለስ p;

}

Serial.print ("የተገኘ መታወቂያ #"); Serial.print (finger.fingerID);

Serial.print (“በልበ ሙሉነት”); Serial.println (ጣት. መተማመን);

ተመለስ finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

(p! = FINGERPRINT_OK) ከተመለሰ -1;

p = finger.image2Tz ();

(p! = FINGERPRINT_OK) ከተመለሰ -1;

p = finger.fingerFastSearch ();

(p! = FINGERPRINT_OK) ከተመለሰ -1;

Serial.print ("የተገኘ መታወቂያ #"); Serial.print (finger.fingerID);

Serial.print (“በልበ ሙሉነት”); Serial.println (ጣት. መተማመን);

ከሆነ (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ጣት ተቀባይነት አግኝቷል");

lcd.setCursor (2, 0);

lcd.print (“አሁን የፍተሻ ካርድ…”);

lcd.setCursor (0, 3);

lcd.print ("===================>");

ሳለ (! mfrc522. PICC_IsNewCardPresent ());

ሳለ (! mfrc522. PICC_ReadCardSerial ());

ከሆነ (mfrc522.uid.uidByte [0] == 0x92 && // ======================== ኮድ አርትዕ ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // መታወቂያውን የያዘበትን ወረቀት ውሰድ ፣ 4 ስብስቦች 2 አሃዞች ነበሩ

mfrc522.uid.uidByte [2] == 0x90 && // በኮድ ይመልከቱ ፣ 0x92 ፣ 0xAB ፣ 0x90 ፣ 0x1c የሚናገርበትን ይመልከቱ? እያንዳንዱን ያስገቡ

mfrc522.uid.uidByte [3] == 0x1C) {// ከ 0x በኋላ ባለ 2 አሃዝ ክፍል። ለምሳሌ የመታወቂያው ክፍል ይላል

lcd.clear (); // 3E ፣ ከዚያ 0x3E ለማድረግ ከ 0x በኋላ 3E ን ያስገቡ። ለእያንዳንዱ ክፍል ይህንን ያድርጉ

lcd.setCursor (3, 0);

lcd.print ("በመጨረሻ ግባ");

lcd.setCursor (1, 1);

lcd.print ("joystick password");

ሳለ (አናሎግ አንብብ (A2)> = 100 &&

አናሎግ አንብብ (A2) <= 670 &&

አናሎግ አንብብ (A3)> = 100 &&

አናሎግ አንብብ (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); ከሆነ (አናሎግ አንብብ (A2) <= 100) {

d1 = ኤል;

}

ከሆነ (አናሎግ አንብብ (A2)> = 670) {

d1 = R;

}

ከሆነ (አናሎግ አንብብ (A3) <= 100) {

d1 = ዩ;

}

ከሆነ (አናሎግ አንብብ (A3)> = 670) {

d1 = መ;

}

መዘግየት (500);

ሳለ (አናሎግ አንብብ (A2)> = 100 &&

አናሎግ አንብብ (A2) <= 670 &&

አናሎግ አንብብ (A3)> = 100 &&

አናሎግ አንብብ (A3) <= 670) {

}

lcd.print ("*");

ከሆነ (አናሎግ አንብብ (A2) <= 100) {

d2 = ኤል;

}

ከሆነ (አናሎግ አንብብ (A2)> = 670) {

d2 = R;

}

ከሆነ (አናሎግ አንብብ (A3) <= 100) {

d2 = ዩ;

}

ከሆነ (አናሎግ አንብብ (A3)> = 670) {

d2 = መ;

}

መዘግየት (500);

ሳለ (አናሎግ አንብብ (A2)> = 100 &&

አናሎግ አንብብ (A2) <= 670 &&

አናሎግ አንብብ (A3)> = 100 &&

አናሎግ አንብብ (A3) <= 670) {

}

lcd.print ("*");

ከሆነ (አናሎግ አንብብ (A2) <= 100) {

d3 = ኤል;

}

ከሆነ (አናሎግ አንብብ (A2)> = 670) {

d3 = አር;

}

ከሆነ (አናሎግ አንብብ (A3) <= 100) {

d3 = ዩ;

}

ከሆነ (አናሎግ አንብብ (A3)> = 670) {

d3 = መ;

}

መዘግየት (500);

ሳለ (አናሎግ አንብብ (A2)> = 10 &&

አናሎግ አንብብ (A2) <= 670 &&

አናሎግ አንብብ (A3)> = 100 &&

አናሎግ አንብብ (A3) <= 670) {

}

lcd.print ("*");

ከሆነ (አናሎግ አንብብ (A2) <= 100) {

d4 = ኤል;

}

ከሆነ (አናሎግ አንብብ (A2)> = 670) {

d4 = R;

}

ከሆነ (አናሎግ አንብብ (A3) <= 100) {

d4 = ዩ;

}

ከሆነ (አናሎግ አንብብ (A3)> = 670) {

d4 = መ;

}

መዘግየት (500);

ከሆነ (d1 == L&& d2 == U && d3 == L&& d4 == R) {// ================= ኮድ አርትዕ ====== ================

lcd.clear (); // ይህ ክፍል የይለፍ ቃሉን በጆይስቲክ ማረም ከቻሉ ነው

lcd.setCursor (2, 0); // የይለፍ ቃሉ ወደ ግራ ፣ ወደ ግራ ፣ ወደ ቀኝ ተቀናብሯል። መለወጥ ከፈለጉ

lcd.print ("መዳረሻ ተሰጥቷል!"); // ፣ በማንኛውም L ውስጥ ለ L ፣ R ለቀኝ ፣ ለ ላይ U ፣ ወይም D ለ ታች ያስቀምጡ

lcd.setCursor (2, 1); // 4 ክፍሎች ከፊደል == ምልክቶች በኋላ።

lcd.print ("መሳቢያ ተከፍቷል");

lcd.setCursor (2, 2);

lcd.print ("ሲጨርሱ ይንቀሳቀሱ");

lcd.setCursor (1, 3);

lcd.print ("እንደገና ለመደሰት ጆይስቲክ");

servo.write (90);

ሳለ (አናሎግ አንብብ (A2)> = 100 &&

አናሎግ አንብብ (A2) <= 670 &&

አናሎግ አንብብ (A3)> = 100 &&

አናሎግ አንብብ (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("መሳቢያ ተቆል "ል");

መዘግየት (3000);

resetFunc ();

} ሌላ {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS ተከልክሏል !!!");

lcd.setCursor (0, 2);

lcd.print ("ዳግም ማስጀመር ስርዓት …");

መዘግየት (3000);

resetFunc ();

}

} ሌላ {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS ተከልክሏል !!!");

lcd.setCursor (0, 2);

lcd.print ("ዳግም ማስጀመር ስርዓት …");

መዘግየት (3000);

resetFunc ();

}

} ሌላ {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS ተከልክሏል !!!");

lcd.setCursor (0, 2);

lcd.print ("ዳግም ማስጀመር ስርዓት …");

መዘግየት (3000);

resetFunc ();

}

ተመለስ finger.fingerID; }

ደረጃ 6: ጨርስ

አንድ ነገር ልነግርዎ የረሳሁት ፣ ደህና 2 ነገሮች ፎቶግራፎችን ከማነሳቴ በፊት ይህንን የሠራሁት ነው ፣ ስለዚህ ሳጥኑን እንዴት እንደሠራሁ ላሳይዎት አልቻልኩም። ሌላኛው ደግሞ የ servo ክፍሉን በሚዞረው ክፍል ላይ ለመጠምዘዝ ይመከራል። ካላደረጉ ፣ አንድ ሰው ተቆልፎ ሳለ መሳቢያውን መሳብ እና ቁራጩን ማውጣት ይችላል። ነገር ግን ከማሽከርከርዎ በፊት አገልጋዩ ወደተወሰነ ደረጃ ስለሚዞር የሚቀመጥበትን ትክክለኛውን ቦታ ይፈልጉ። ወይም በኮዱ ውስጥ ብቻ መለወጥ ይችላሉ። አንዳንድ የኤሌክትሮኒክስ ዕቃዎች አስቂኝ ከሆኑ ፣ ለአንዳንዶቹ 5 ቪ ለማግኘት የተለየ መንገድ መፈለግ ይፈልጉ ይሆናል። የጣት አሻራ ስካነር ብልጭ ድርግም ሲል ፣ ማያ ገጹ በጥቂቱ እንደሚበራ ፣ እና ሰርቪው ጫጫታ እንደሚያደርግ አስተዋልኩ። ሰርቪው በሚንቀሳቀስበት ጊዜ ማያ ገጹ ደብዛዛ ይሆናል። በፕሮጀክቱ እንደተደሰቱ ተስፋ አደርጋለሁ! ማናቸውም ጥያቄዎች ካሉዎት በአስተያየቶች ውስጥ ይተዋቸው። እኔ ብዙ በትምህርት ሰጪዎች ላይ አይደለሁም ፣ ግን በተቻለ ፍጥነት እመልሳቸዋለሁ!

የሚመከር: