ዝርዝር ሁኔታ:
- ደረጃ 1: ቁሳቁሶች እና መሳሪያዎች
- ደረጃ 2 - ለስላሳ ነጥቦችን ከ ESP32 ጋር ማገናኘት
- ደረጃ 3 - ESP32 ን እና RPI ን ያለገመድ ማገናኘት
- ደረጃ 4 - ድር ጣቢያዎን እና የውሂብ ጎታዎን ማገናኘት
- ደረጃ 5 ሁሉንም ነገር በአንድ ላይ ማገናኘት
- ደረጃ 6 - ተጨማሪ - ኤልሲዲ ማያ ገጽን በማገናኘት ላይ
ቪዲዮ: በ ESP32: 6 ደረጃዎች በቫዮሊን ላይ የጣት ቦታዎችን መለካት
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:33
እንደ ቫዮሊን ተጫዋች እኔ ሁል ጊዜ በቫዮሊን ላይ የጣቶቼን አቀማመጥ የሚያሳየኝን መተግበሪያ ወይም መሣሪያ እፈልግ ነበር። በዚህ ፕሮጀክት ይህንን ለመገንባት ሞከርኩ። ምንም እንኳን ይህ አምሳያ ቢሆንም አሁንም ብዙ ባህሪያትን ማከል ይችላሉ።
እኔ ደግሞ ESP32 ን እና rPI ን ለመለየት ሞከርኩ እና ስለሆነም ESP32 ውሂብን ወደ rPi ገመድ አልባ እንዲልክ አደረግኩ። ምናልባት በዚህ ፕሮጀክት ውስጥ በጣም አስቸጋሪው ነገር።
እንዲሁም በዚህ ፕሮጀክት መጨረሻ ላይ በኮምፒተርዎ ላይ ምንም ነገር አለመከማቸቱ በጣም አስፈላጊ ነው ነገር ግን በ rPI ወይም በ ESP32 ላይ ነው።
ደረጃ 1: ቁሳቁሶች እና መሳሪያዎች
ይህንን ፕሮጀክት በመገንባት ዝርዝር ውስጥ ከመግባታችን በፊት ጥቂት ነገሮች ያስፈልጉናል።
- 4x መስመራዊ ለስላሳ ማስቀመጫ - የጣት ቦታን ለመለካት መስመራዊ ፖታቲዮሜትሮች (ቫዮሊን 4 ሕብረቁምፊዎች አሉት)
- ESP32: መረጃውን ከመስመር የለስላሳ ቦታዎች ለማንበብ የ ESP32 ሞዱል።
- 4/4 ቫዮሊን - መስመራዊ ለስላሳ መያዣዎችን ከላይ ለማስቀመጥ ቫዮሊን።
- ኤስዲ ካርድ ያለው Raspberry Pi: የውሂብ ጎታችንን እና ድርጣቢያችንን የሚያከማች የራስቤሪ ፓይ።
- 10 ኪ ፖታቲሞሜትር - ለኤልሲዲ ብሩህነት ፖታቲሞሜትር
- ኤልሲዲ-ማያ-ለ rPi የአይፒ አድራሻዎች ለማሳየት የ LCD ማያ ገጽ
- የማሸጊያ ኪት - ሁሉንም ንጥረ ነገሮች ለሸቀጣ ሸቀጣ ሸቀጥ
- ወንድ-ወደ-ወንድ ሽቦዎች እና ወንድ-ወደ-ሴት ሽቦዎች-ሁሉንም ንጥረ ነገሮች ለማገናኘት ኬብሎች
- የማይክሮ ዩኤስቢ ገመድ - ESP32 ን ለማብራት
ደረጃ 2 - ለስላሳ ነጥቦችን ከ ESP32 ጋር ማገናኘት
በመጀመሪያ የእኛን ለስላሳ መያዣዎች ከ esp32 ጋር ማገናኘት አለብን። የግራ እና የቀኝ ፒኖችን ከ 5 ቮ እና ከ GND ጋር እናገናኛለን። በ ESP32 ላይ መካከለኛውን ፒን ከአናሎግ ፒን ጋር እናገናኘዋለን። እንዲሁም የመካከለኛውን ፒን ከ 10 ኪ ኦኤም ተቃውሞ ጋር ማገናኘት እና ይህንን ከ GND ጋር ማገናኘት አለብን። የለስላሳ ማስቀመጫዎቻችን ውጤት የዘፈቀደ እሴት እንዳይመለስ ነው።
ከዚያ ኮዱን ወደ እሱ መስቀል እንድንችል ESP32 ን ከማይክሮ ዩኤስቢ ገመድ ወደ ፒሲአችን እናገናኘዋለን። ESP32 ን ለማዘጋጀት Arduino IDE ን እንጠቀማለን። ነገር ግን መጀመሪያ እኛ ወደ እሱ መስቀል እንድንችል አርዱዲኖ ኮር ለ ESP32 መጫን አለብን። ይህ እዚህ ሊከናወን ይችላል።
ከዚያ ኮድ መጻፍ መጀመር እንችላለን።
በመጀመሪያ ለስላሳ መያዣዎች የመካከለኛውን ፒንችን ያገናኘንበትን ፒኖቻችንን መመደብ አለብን።
const int SOFT_POT_PIN1 = 34;
const int SOFT_POT_PIN2 = 35;
const int SOFT_POT_PIN3 = 32;
const int SOFT_POT_PIN4 = 33;
ለረጅም ጊዜ ያልተፈረመ;
ያልተፈረመ ረጅም softPotTime;
ከዚያ ፒኖቻችንን ማዘጋጀት እንችላለን። እና የእኛን ተከታታይ ተቆጣጣሪ እና ጊዜያችንን መጀመር አለብን።
ባዶነት ማዋቀር () {
onTime = ሚሊስ ();
Serial.begin (115200);
Serial.println ("የፕሮግራም መጀመሪያ");
pinMode (SOFT_POT_PIN1 ፣ ማስገቢያ);
pinMode (SOFT_POT_PIN2 ፣ ማስገቢያ);
pinMode (SOFT_POT_PIN3 ፣ INPUT);
pinMode (SOFT_POT_PIN4 ፣ ማስገቢያ); }
ባዶነት getdata (ባይት pdata ) {
// ለስላሳው ድስት የኤዲሲ እሴት ያንብቡ
ከዚያ የእኛን ውሂብ ለመቀበል እንድንችል ፒኖቻችንን ማንበብ አለብን።
int softPotADC1 = analogRead (SOFT_POT_PIN1);
nt softPotADC2 = analogRead (SOFT_POT_PIN2);
int softPotADC3 = analogRead (SOFT_POT_PIN3);
int softPotADC4 = analogRead (SOFT_POT_PIN4);
ከዚያ በኋላ በቀላሉ ለማውጣት እሴቶቹን በዝርዝሩ ውስጥ እናስቀምጣለን።
ለ (int i = 0; i <4; i ++) {
int Names = {softPotADC1 ፣ softPotADC2 ፣ softPotADC3 ፣ softPotADC4};
int softpot = ስሞች ;
ከሆነ (softpot> 10) {
pdata [0] = እኔ;
pdata [1] = softpot;
pdata [2] = ሚሊስ ();
} } }
}
ደረጃ 3 - ESP32 ን እና RPI ን ያለገመድ ማገናኘት
ESP32 ን እና RPI ን ያለገመድ ለማገናኘት ዌብሶኬት የተባለ ቤተመጽሐፍት እንጠቀማለን። ይህንን ቤተመጽሐፍት ለመጫን ፋይሎቹን እዚህ ማግኘት እንችላለን። ይህንን ቤተ -መጽሐፍት ለ ESP32 ለመጠቀም በፋይሎቹ ውስጥ አንዳንድ ኮድ መለወጥ ያስፈልገናል።
MD5.c እና MD5.h ን መለወጥ ያስፈልገናል።
- MD5Init ወደ MD5InitXXX
- MD5Update ወደ MD5UpdateXXX
- MD5Final ወደ MD5FinalXXX
እንዲሁም በ sha1 ፋይሎች ውስጥ የ avr/io.h መስመሮችን መሰረዝ አለብን።
ከዚያ ቤተመፃህፍቱን ወደ አርዱinoኖ አይዲኢ በንድፍ / ማከል / ቤተመፃሕፍት ማካተት>. ZIP ቤተ -መጽሐፍት ማከል እና ከዚያ በዚፕ ፋይል ውስጥ ቤተ -መጽሐፍትዎን መምረጥ እንችላለን።
ከዚያ በኋላ የእኛን ኮድ መጻፍ መጀመር እንችላለን።
መጀመሪያ ለ ESP32
ቤተመፃህፍታችንን ጨምሮ
#አካትት #አካትት
ፒኖቻችንን እንደገና መመደብ።
const int SOFT_POT_PIN1 = 34;
const int SOFT_POT_PIN2 = 35;
const int SOFT_POT_PIN3 = 32;
const int SOFT_POT_PIN4 = 33;
የእኛን የ wifi አገልጋይ መመደብ
የ WiFi አገልጋይ አገልጋይ (80);
የእኛ የድር ሶኬት አገልጋይ በመጀመር ላይ
WebSocketServer webSocketServer;
የእኛን SSID እና የ wifi ይለፍ ቃል መመደብ
const char* ssid = "የእርስዎ wifi SSID";
const char* password = "የእርስዎ wifi ይለፍ ቃል";
ባዶነት ማዋቀር () {
ተከታታይ ማሳያዎን በማዋቀር ላይ
Serial.begin (115200);
ለስላሳዎችዎ ማቀናበር
pinMode (SOFT_POT_PIN1 ፣ ማስገቢያ);
pinMode (SOFT_POT_PIN2 ፣ INPUT);
pinMode (SOFT_POT_PIN3 ፣ ማስገቢያ);
pinMode (SOFT_POT_PIN4 ፣ ማስገቢያ);
የእኛን wifi በመጀመር እና ከእሱ ጋር መገናኘት
WiFi.begin (ssid ፣ የይለፍ ቃል);
ሳለ (WiFi.status ()! = WL_CONNECTED) {
መዘግየት (1000);
Serial.println ("ከ WiFi ጋር መገናኘት.."); }
Serial.println ("ከ WiFi አውታረ መረብ ጋር ተገናኝቷል");
Serial.println (WiFi.localIP ());
server.begin (); መዘግየት (100); }
ባዶነት getdata (ቻር *pdata) {
ውሂብዎን በማንበብ ላይ
// ለስላሳው ድስት የኤዲሲ እሴት ያንብቡ
int softPotADC1 = analogRead (SOFT_POT_PIN1);
int softPotADC2 = analogRead (SOFT_POT_PIN2);
int softPotADC3 = analogRead (SOFT_POT_PIN3);
int softPotADC4 = analogRead (SOFT_POT_PIN4);
ውሂቡን በዝርዝሩ ውስጥ ማስቀመጥ እና ወደ ሄክሳዴሲማል መለወጥ።
sprintf (pdata ፣ “%x ፣ %x ፣ %x ፣ %x ፣ %x” ፣ softPotADC1 ፣ softPotADC2 ፣ softPotADC3 ፣ softPotADC4 ፣ millis ());
}
ባዶነት loop () {
ደንበኛዎን (አርፒአይ) በማገናኘት ላይ
የ WiFiClient ደንበኛ = አገልጋይ. ይገኛል ();
ከሆነ (client.connected ()) {
መዘግየት (10);
ከሆነ (webSocketServer.handshake (ደንበኛ)) {
Serial.println ("ደንበኛ ተገናኝቷል");
ውሂብ መላክ እና መቀበል።
ሳለ (client.connected ()) {
የቻር መረጃ [30];
getdata (ውሂብ);
Serial.println (ውሂብ);
webSocketServer.sendData (ውሂብ);
መዘግየት (10); // ውሂቡን በትክክል ለመቀበል መዘግየት ያስፈልጋል}
Serial.println ("ደንበኛው ተቋርጧል");
መዘግየት (100); }
ሌላ {
Serial.println ("shitsfuckedyo");
} } }
ከዚያ በፓይዘን ውስጥ ለ rPI-
ቤተመፃህፍቶቻችንን ማስመጣት
የ websocketimport ጊዜን ያስመጡ
ግሎባሌ variabel i በመመደብ ላይ
i = 0
ልንቀበላቸው የምንችለውን ከፍተኛውን የ 200 መልዕክቶችን ማቀናበር
nrOfMessages = 200
ክፍል Websocket ():
def _init _ (ራስን) ፦
የእኛን የድር ሶኬት ማስጀመር እና ከእኛ ESP32 ጋር ማገናኘት
self.ws = websocket. WebSocket ()
self.ws.connect ("ws: //172.30.248.48/")
የእኛን ውሂብ መቀበል
ራስን የማጥፋት ሥራ (ራስን);
self.ws.send ("መልዕክት nr: 0")
ውጤት = self.ws.recv () ጊዜ. እንቅልፍ (0.5) የመመለሻ ውጤት
ሁሉንም ነገር ከተቀበለ በኋላ የድረ -ገጹን መዘጋት
def close (ራስን) ፦
self.ws. Close ()
ደረጃ 4 - ድር ጣቢያዎን እና የውሂብ ጎታዎን ማገናኘት
የእኛን የውሂብ ጎታ እና ድርጣቢያ ለማገናኘት በመጀመሪያ mariadb ን በመጫን የውሂብ ጎታዎን በሱ ላይ መፍጠር ያስፈልግዎታል -sudo apt install mariadb።
ከዚያ ይህንን በማድረግ ሊያገኙት ይችላሉ- sudo mariadb.
ከዚያ ድር ጣቢያዎን መፍጠር ያስፈልግዎታል። እርስዎ በሚፈልጉት መንገድ ይህንን ማድረግ ይችላሉ ፣ ግን ፍላስክን መጠቀም አለብዎት እና መረጃዎን ለማቆም እና ለመጀመር በኤችቲኤምኤልዎ ውስጥ ቅጽ እንዲኖርዎት ያስፈልጋል።
ከዚያ የውሂብ ጎታዎን እና ድር ጣቢያዎን ለማገናኘት ይህንን ኮድ ማስገባት ይችላሉ (የእርስዎ ድር ጣቢያ እና የውሂብ ጎታ ሁለቱም በፓይዎ ላይ መሆን አለባቸው ፣ ይህ በፒቻም ቅንብሮች ውስጥ የማሰማሪያ ትርን በመጠቀም ሊከናወን ይችላል)
ከ flaskext.mysql MySQL ን ያስመጡ
app.config ["MYSQL_DATABASE_HOST"] = "localhost"
app.config ["MYSQL_DATABASE_DB"] = "የውሂብ ጎታዎ ስም"
app.config ["MYSQL_DATABASE_USER"] = "የውሂብ ጎታ ተጠቃሚዎ"
app.config ["MYSQL_DATABASE_PASSWORD"] = "የውሂብ ጎታ ይለፍ ቃልዎ"
መረጃን ከመረጃ ቋታችን ውስጥ የማውጣት ተግባር።
def get_data (sql ፣ params = የለም) ፦
conn = mysql.connect ()
ጠቋሚ = conn.cursor ()
ማተም ("መረጃ ማግኘት")
ሞክር
ማተም (ስኩዌር)
cursor.execute (sql ፣ params)
በስተቀር እንደ e:
ማተም (ሠ)
መመለስ ሐሰት
ውጤት = cursor.fetchall ()
ውሂብ =
በውጤት ረድፍ
data.append (ዝርዝር (ረድፍ))
cursor.close ()
conn.close ()
ውሂብ ይመልሱ
በእኛ የውሂብ ጎታ ውስጥ መረጃን የማስገባት ተግባር
def set_data (sql ፣ params = የለም) ፦
conn = mysql.connect ()
ጠቋሚ = conn.cursor ()
ሞክር
log.debug (ስኩዌር)
cursor.execute (sql ፣ params) conn.commit ()
log.debug ("SQL uitgevoerd")
በስተቀር እንደ e:
log.exception ("Fout bij uitvoeren van sql: {0})". ቅርጸት (ሠ))
መመለስ ሐሰት
cursor.close ()
conn.close ()
እውነት ተመለስ
እርስዎ በሚቀረጹበት ጊዜ ሌሎች ነገሮችን ማድረግ እንዲችሉ የእኛን ትግበራ ክር ማያያዝ አለብን።
ክፍል ThreadedTask (threading. Thread):
def _init _ (ራስን ፣) ፦
ክር በማቀናበር ላይ
threading. Thread._ init _ (ራስን)
የተቀበሉትን ውሂብ ሁሉ ለመያዝ ዝርዝር መፍጠር
self.data_all =
def run (ራስን):
ጊዜ። እንቅልፍ (5)
ውሂቡን የሚቀበሉበት የራስዎን የፓይዘን ኮድ ያስመጡ
ማስመጣት_ዌብሶኬት ያስመጡ
ውሂብዎን ይቀበሉ
w = we_sobsocket. Websocket ()
በእርስዎ ዝርዝር ውስጥ ውሂብዎን ያክሉ እና ያትሙት።
በእኔ ክልል ውስጥ (0 ፣ 200) ፦
self.data_all.append (w.work ()። መከፋፈል ("፣"))
ማተም (self.data_all)
ተግባር = ThreadedTask ()
ከዚያ ክርዎን ለመጀመር እና ውሂብ መቀበል ለመጀመር task.run () ማድረግ ይችላሉ።
ደረጃ 5 ሁሉንም ነገር በአንድ ላይ ማገናኘት
ድር ጣቢያዎን ከእርስዎ ፒ ለማሄድ አንድ አገልግሎት መጠቀም አለብዎት-
[ክፍል] ፕሮጀክት1 የድር በይነገጽን ለማገልገል መግለጫ = uWSGI ምሳሌ
በኋላ = network.target
BindsTo = mysqld.service
በኋላ = mysqld.service
[አገልግሎት]
ወደ ተጠቃሚዎ ይለውጡ
ተጠቃሚ = ፒ
ቡድን = www-ውሂብ
የፍላሽክ ፋይልዎን ማውጫ እዚህ ማስገባት አለብዎት
WorkingDirectory =/home/pi/project1/ድር
በኋላ ሊገኝ የሚችል የእርስዎ ini ፋይል ማውጫ።
ExecStart =/usr/bin/uwsgi --ini /home/pi/project1/conf/uwsgi-flask.ini
[ጫን]
WantedBy = multi-user.target
ከላይ በ ExecStart ውስጥ በገለፁት ማውጫ ውስጥ ማስቀመጥ ያለብዎት uwsgi-flask.ini
[uwsgi] ሞዱል = ድር: መተግበሪያ virtualenv =/home/pi/project1/env
ዋና = እውነተኛ ሂደቶች = 5
ተሰኪዎች = python3
ሶኬት = ፕሮጀክት 1.ሶክ chmod-socket = 660 vacuum = true
መሞት-ላይ-ጊዜ = እውነት
አሁን ውሂብዎን ማንበብ እና በድር ጣቢያዎ ላይ ማሳየት ይችላሉ።
ደረጃ 6 - ተጨማሪ - ኤልሲዲ ማያ ገጽን በማገናኘት ላይ
ለድር ጣቢያችን የእኛን ፒ አይ-አድራሻውን ለማሳየት የ LCD ማያ ገጽ ማገናኘት እንችላለን።
RPi. GPIO ን እንደ GPIO ያስመጡ
የማስመጣት ትዕዛዞች
GPIO. Cananup ()
D0 = 22
D1 = 5
D2 = 6
D3 = 13
D4 = 19
D5 = 26
D6 = 20
D7 = 21
ዝርዝር = [22, 5, 6, 13, 19, 26, 20, 21]
ኢ = 24
አርኤስ = 23
የክፍል ማያ ገጽ;
def _init _ (ራስን) ፦
GPIO.setmode (GPIO. BCM)
ራስን ማዋቀር ()
#የድርጊት ስብስብ የራስ። ፣ RS] ፣ GPIO. OUT)
def stuur_instructie (ራስ ፣ ባይት) ፦
GPIO.output (E ፣ GPIO. HIGH)
GPIO.output (RS ፣ GPIO. LOW)
ራስን። ቅንብር_GPIO_bits (ባይት)
ጊዜ. እንቅልፍ (0.005)
GPIO.output (E ፣ GPIO. LOW)
def stuur_teken (ራስ ፣ ቻር) ፦
temp = ord (ቻር)
GPIO.output (E ፣ GPIO. HIGH)
GPIO.output (RS ፣ GPIO. HIGH)
ራስን ።.
ጊዜ. እንቅልፍ (0.005)
GPIO.output (E ፣ GPIO. LOW)
def set_GPIO_bits (ራስ ፣ ባይት) ፦
በእኔ ክልል ውስጥ (0 ፣ 8) ፦
ከሆነ (ባይት እና (2 ** i)) == 0:
GPIO.output (ዝርዝር ፣ GPIO. LOW)
ሌላ
GPIO.output (ዝርዝር ፣ GPIO. HIGH)
def ዋና ():
s = ማያ ገጽ ()
teken = "አካባቢያዊ አይፒ አድራሻ"
በቴክ ለደብዳቤ -
ስቱር_ቴከን (ፊደል)
teken2 = command.getoutput ("ip addr show wlan0 | grep -Po 'inet / K [d.]+'")
ህትመት (teken2)
s.stuur_instructie (0xc0)
በቴክ 2 ለደብዳቤ 2
ስቱር_ቴከን (ፊደል 2)
_name_ == '_main_': #ፕሮግራም ከዚህ ይጀምራል
ሞክር
ዋና ()
ከቁልፍ ሰሌዳ ማቋረጫ በስተቀር
ማለፍ
ከዚያ ጅምር ላይ ኤልሲዲውን ለመጀመር አገልግሎት መፍጠር እንችላለን።
የሚመከር:
የጣት አሻራ መለያ: 4 ደረጃዎች
የጣት አሻራ መለያ - በዕለት ተዕለት ሕይወታችን ውስጥ የጣት አሻራ ትግበራውን ማየት እንችላለን። በሞባይል ስልክ ኢንዱስትሪ ልማት ፣ የሁሉም ሰው ሞባይል ስልክ ማለት ይቻላል የጣት አሻራ መክፈቻ ተግባር አለው። ዛሬ ፣ የጣት አሻራ መክፈቻ መሣሪያን ለ
የጣት አሻራ ሞዱል + ድንጋይ TFT-LCD: 3 ደረጃዎች
የጣት አሻራ ሞዱል + STONE TFT-LCD: በዚህ ወር የጣት አሻራ በር መቆለፊያ ፕሮጀክት ለማዘጋጀት አቅጄ ነበር። የጣት አሻራ መለያ ሞዱሉን ስመርጥ ፕሮጀክቱ ታገደ። ሆኖም ፣ የጣት አሻራ መለያ ሞጁል ስለተገዛ ቀለል አደርጋለሁ ብዬ አስቤ ነበር
DIY- የጣት አሻራ ቁልፍ ደህንነት ስርዓት 8 ደረጃዎች
DIY- የጣት አሻራ ቁልፍ ደህንነት ስርዓት-ይህ ትግበራ የዕለት ተዕለት ቁልፎችን (መቆለፊያ) ለመጠበቅ ጠቃሚ ነው። አንዳንድ ጊዜ እንደ ቤት ፣ ጋራጅ ፣ በሁለት ወይም ከዚያ በላይ ሰዎች መካከል አንዳንድ የተለመዱ ቁልፎች አሉን። በገቢያ ውስጥ በርካታ የባዮ ሜትሪክ ስርዓቶች አሉ ፣ እሱ
የጣት አሻራ ደህንነት ሳጥን: 4 ደረጃዎች
የጣት አሻራ ደህንነት ሣጥን - የሚረሳ ሰው ነዎት? ቁልፎችዎን ማምጣትዎን ብዙ ጊዜ ይረሳሉ? ለጥያቄው መልሱ አዎ ከሆነ። ከዚያ የእራስዎን የጣት አሻራ ደህንነት ሳጥን መሥራት አለብዎት !!! የራስዎ የጣት አሻራ በዓለም ውስጥ ብቸኛው ነገር ነው። ስለዚህ እርስዎ አያስፈልጉዎትም
Esp32 ን እና Thingsio.ai መድረክን በመጠቀም የሙቀት መጠን መለካት -6 ደረጃዎች
Esp32 ን እና Thingsio.ai Platform ን በመጠቀም የሙቀት መጠን መለካት - በዚህ መማሪያ ውስጥ በ esp32 ልማት ቦርድ ውስጥ ያለውን አብሮገነብ የሙቀት ዳሳሽ በመጠቀም በአከባቢው ያለውን የሙቀት መጠን ስለመለካት እገልጻለሁ። esp32 እንደ የአቅራቢያ ዳሳሽ ፣ እንደ ንካ ጥቅም ላይ የዋሉ እንደ አዳራሽ ዳሳሽ ያሉ ብዙ አብሮገነብ ዳሳሾች አሉት ፣ ይንኩ