Πίνακας περιεχομένων:

Πώς να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε ένα ESP32: 11 βήματα (με εικόνες)
Πώς να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε ένα ESP32: 11 βήματα (με εικόνες)

Βίντεο: Πώς να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε ένα ESP32: 11 βήματα (με εικόνες)

Βίντεο: Πώς να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε ένα ESP32: 11 βήματα (με εικόνες)
Βίντεο: ESP32 Turorial 1 - Introduction to SunFounder's ESP32 IoT Learnig kit Software and Arduino IDE 2024, Νοέμβριος
Anonim
Πώς να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε ένα ESP32
Πώς να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε ένα ESP32

Θέλατε ποτέ να ρίξετε μια ματιά στον κώδικά σας για να δείτε γιατί συμπεριφέρεται όπως είναι; Παραδοσιακά στα έργα ESP32, θα έπρεπε να προσθέσετε ατελείωτη δήλωση εκτύπωσης για να καταλάβετε τι συνέβαινε, αλλά υπάρχει καλύτερος τρόπος!

Το πρόγραμμα εντοπισμού σφαλμάτων είναι ένας τρόπος για να δείτε τι συμβαίνει σε συγκεκριμένα τμήματα του κώδικα και να δοκιμάσετε διαφορετικές τιμές μεταβλητών χωρίς να επανασυντάξετε τον κώδικά σας, συνήθως αυτό δεν είναι κάτι που είναι διαθέσιμο σε εμάς για ενσωματωμένα έργα, αλλά σε αυτόν τον οδηγό θα σας δείξω πώς να το χρησιμοποιήσετε σε ένα ESP32.

Σε αυτόν τον οδηγό θα σας δείξω να ρυθμίσετε το υλικό, να ρυθμίσετε το λογισμικό και να δείξω ένα απλό παράδειγμα χρήσης του εντοπισμού σφαλμάτων.

Προμήθειες

  • ESP -Prog - Αυτός είναι ο πίνακας που απαιτείται για τον εντοπισμό σφαλμάτων

    • Ακριβώς ένα που αγόρασα*
    • 5 $ φθηνότερο, αλλά δεν το έχω δοκιμάσει*
  • Ένα ESP32 που ξεσπάει τις ακίδες 12, 13, 14, 15

    • Φτερό Adafruit Huzzah32
    • D1 Mini ESP32*
  • [ΠΡΟΑΙΡΕΤΙΚΟ] Debug Shield πουλάω στο Tindie

    • Φτερό Huzzah32
    • D1 Mini ESP32

* = Συνδεδεμένος σύνδεσμος

Βήμα 1: Δείτε το βίντεο

Image
Image

Έχω ένα βίντεο σχετικά με αυτό το θέμα αν θέλετε να το δείτε.

Στο κανάλι μου συνήθως φτιάχνω βίντεο βασισμένα σε ESP8266 και ESP32, οπότε αν σας ενδιαφέρουν, ελέγξτε το!

Βήμα 2: Υλικό - ανταλλακτικά και καλωδίωση

Υλικό - ανταλλακτικά & καλωδίωση
Υλικό - ανταλλακτικά & καλωδίωση
Υλικό - ανταλλακτικά & καλωδίωση
Υλικό - ανταλλακτικά & καλωδίωση
Υλικό - ανταλλακτικά & καλωδίωση
Υλικό - ανταλλακτικά & καλωδίωση

Για να χρησιμοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων χρειάζεστε μόνο ένα ESP-Prog και σχεδόν οποιαδήποτε πλακέτα ESP32 (συνδέσεις με αυτές σε προηγούμενο βήμα)

ESP-Prog:

Το ESP-Prog είναι ένας πίνακας σχεδιασμένος από το espressif, τους κατασκευαστές των τσιπ ESP32 και ESP8266. Συνδέεται με ακροδέκτες JTAG του ESP32 για να μας επιτρέψει να χρησιμοποιήσουμε το πρόγραμμα εντοπισμού σφαλμάτων. Μπορεί επίσης να χρησιμοποιηθεί για τον προγραμματισμό πινάκων ESP32, αλλά δεν θα το καλύψω εδώ.

Πίνακας ESP32:

Μπορείτε να χρησιμοποιήσετε βασικά οποιονδήποτε πίνακα ESP32 για αυτό μόλις ξεσπάσει οι καρφίτσες JTAG, οι οποίες είναι 12, 13, 14 & 15. Έχω δοκιμάσει τόσο ένα φτερό Adafruit Huzzah32 όσο και έναν πίνακα D1 Mini 32 και λειτουργούσαν και οι δύο καλά.

Λάβετε υπόψη ότι μπορείτε να χρησιμοποιήσετε τις καρφίτσες JTAG στο σκίτσο σας με το πρόγραμμα εντοπισμού σφαλμάτων, για παράδειγμα η ενσωματωμένη λυχνία LED της πλακέτας Huzzah32 είναι στην ακίδα 13, οπότε δεν μπορείτε να την χρησιμοποιήσετε κατά τον εντοπισμό σφαλμάτων.

Καλωδίωση:

Για να συνδέσετε το ESP-Prog με το ESP32, απλώς χρησιμοποιήστε τον οδηγό καλωδίωσης όπως παρέχεται στην παραπάνω εικόνα. Ελέγξτε με το διάγραμμα καλωδίωσης της πλακέτας ESP32 εάν δεν βλέπετε αμέσως τις κατάλληλες ακίδες, καθώς μερικές φορές χρησιμοποιούν διαφορετικό σχήμα ονοματοδοσίας.

Debug Shields:

Αυτά είναι προαιρετικά, αλλά πουλάω κάποιες ασπίδες στο Tindie για το Huzzah32 και το D1 Mini 32 που καθιστούν τη σύνδεση του ESP-Prog πολύ απλή, βγάζει τις κατάλληλες ακίδες σε μια υποδοχή IDC που μπορείτε να χρησιμοποιήσετε ένα καλώδιο κορδέλας για απευθείας σύνδεση μεταξύ η ασπίδα και το ESP-Prog

Βήμα 3: Υλικό - Ρύθμιση προγράμματος οδήγησης

Υλικό - Ρύθμιση προγράμματος οδήγησης
Υλικό - Ρύθμιση προγράμματος οδήγησης
Υλικό - Ρύθμιση προγράμματος οδήγησης
Υλικό - Ρύθμιση προγράμματος οδήγησης
Υλικό - Ρύθμιση προγράμματος οδήγησης
Υλικό - Ρύθμιση προγράμματος οδήγησης

Για να χρησιμοποιήσουμε το ESP-prog για εντοπισμό σφαλμάτων, πρέπει να εγκαταστήσουμε τα κατάλληλα προγράμματα οδήγησης για αυτό. Το PlatformIO παρέχει ορισμένα βήματα για αυτό εδώ, αλλά θα περάσω από τα βήματα των Windows σε αυτόν τον οδηγό.

  1. Κατεβάστε και εγκαταστήστε τα προγράμματα οδήγησης FTDI για το ESP-Prog από εδώ, μετακινηθείτε προς τα δεξιά για να κάνετε λήψη της έκδοσης "setup εκτελέσιμη" για να το κάνετε πιο εύκολο.
  2. Κατεβάστε και εγκαταστήστε το εργαλείο Zadig από εδώ, αυτό μας επιτρέπει να εγκαταστήσουμε ένα γενικό πρόγραμμα οδήγησης που απαιτείται για τον εντοπισμό σφαλμάτων.
  3. Με το ESP-Prog συνδεδεμένο, ανοίξτε το Zadig
  4. Στην εφαρμογή Zadig, στην ενότητα "Επιλογές", κάντε κλικ στην επιλογή "Λίστα όλων των συσκευών"
  5. Το αναπτυσσόμενο μενού στο Zadig θα συμπληρωθεί τώρα, επιλέξτε την επιλογή "Dual RS232-HS (Interface 0)". Βεβαιωθείτε ότι είναι η διεπαφή 0 που επιλέγετε!
  6. Στα δεξιά του πράσινου βέλους, πρέπει να επιλέξετε "WinUSB" και, στη συνέχεια, κάντε κλικ στην επιλογή "Αντικατάσταση προγράμματος οδήγησης"

Όταν τελειώσει αυτό, τα προγράμματα οδήγησης θα πρέπει να ρυθμιστούν για χρήση!

Σημείωση: Εάν αλλάξετε τη θύρα USB που χρησιμοποιείτε για το ESP-Prog, ίσως χρειαστεί να επαναλάβετε τα βήματα 3-6 ξανά. Εάν λάβετε ένα σφάλμα όπως φαίνεται στην παραπάνω εικόνα κατά τον εντοπισμό σφαλμάτων, πρέπει να επαναλάβετε τα βήματα.

Βήμα 4: Λογισμικό: Εγκατάσταση του PlatformIO

Λογισμικό: Εγκατάσταση του PlatformIO
Λογισμικό: Εγκατάσταση του PlatformIO
Λογισμικό: Εγκατάσταση του PlatformIO
Λογισμικό: Εγκατάσταση του PlatformIO
Λογισμικό: Εγκατάσταση του PlatformIO
Λογισμικό: Εγκατάσταση του PlatformIO

Το PlatformIO είναι ένα IDE για ανάπτυξη με διάφορα διαφορετικά ενσωματωμένα πλαίσια, συμπεριλαμβανομένου του οικολογικού συστήματος Arduino. Είναι πιο περίπλοκο στη χρήση από κάτι σαν το Arduino IDE, αλλά είναι πολύ ισχυρό και έχει ορισμένες δυνατότητες που το Arduino IDE χάνει πολύ, όπως η αυτόματη συμπλήρωση.

Απαιτείται από το PlatformIO να χρησιμοποιήσει το πρόγραμμα εντοπισμού σφαλμάτων. Εάν είστε ήδη εξοικειωμένοι με το PlatformIO, μη διστάσετε να παραλείψετε μερικά βήματα.

  • Κατεβάστε και εγκαταστήστε το Visual Studio Code (VS Code) από το σύνδεσμο που παρέχεται στον ιστότοπο του PlatformIO.org
  • Ανοίξτε τον κώδικα VS και ανοίξτε το μενού επεκτάσεων, το κουμπί επισημαίνεται στην παραπάνω εικόνα
  • Πληκτρολογήστε "platformio" στην αναζήτηση, επιλέξτε το και κάντε κλικ στην εγκατάσταση.

Βήμα 5: Λογισμικό: Χρήση του PlatformIO

Λογισμικό: Χρήση του PlatformIO
Λογισμικό: Χρήση του PlatformIO
Λογισμικό: Χρήση του PlatformIO
Λογισμικό: Χρήση του PlatformIO
Λογισμικό: Χρήση του PlatformIO
Λογισμικό: Χρήση του PlatformIO

Η χρήση του PlatformIO είναι λίγο διαφορετική από τη χρήση του Arudino IDE, οπότε σε αυτό το βήμα θα καλύψουμε απλώς τα βασικά για την εκτέλεση ενός παραδείγματος σε έναν πίνακα.

Άνοιγμα παραδείγματος:

  1. Κάντε κλικ στο κουμπί Αρχική σελίδα στη γραμμή εργαλείων PlatformIO (Όπως φαίνεται στην εικόνα)
  2. Κάντε κλικ στο κουμπί "Παραδείγματα έργου"
  3. Επιλέξτε το παράδειγμα "Arduino-blink" στην ενότητα Espressif 32

Αυτό θα ανοίξει ένα δείγμα έργου αναλαμπής. Η διάταξη ενός PlatformIO είναι αρκετά διαφορετική σε σύγκριση με ένα έργο Arduino, οπότε ας περάσουμε από τα βασικά.

Πού είναι ο κωδικός;

Ο κωδικός για το έργο σας θα αποθηκευτεί στο φάκελο "src", για το παράδειγμα αναλαμπής θα δείτε ένα αρχείο "blink.cpp", αυτό το αρχείο είναι το ίδιο με το σκίτσο σας (.ino) σε ένα έργο Arduino.

Πώς μπορώ να διαμορφώσω τον πίνακα μου;

Οι διαμορφώσεις για το έργο σας διατηρούνται μέσα σε ένα αρχείο "platformio.ini" στο έργο σας. Αυτό είναι στην πραγματικότητα ένα από τα αγαπημένα μου πράγματα για το PlatformIO σε σύγκριση με το Arduino IDE, δεν μου έκανε ποτέ νόημα ότι οι ρυθμίσεις του πίνακα δεν ήταν συνδεδεμένες με σκίτσα.

Το παράδειγμα.ini περιέχει ορισμούς για πολλούς διαφορετικούς πίνακες, αλλά για να είμαστε απλοί, ας διαγράψουμε τους δύο κάτω ορισμούς.

Πού ρυθμίζω τη θύρα COM;

Το PlatformIO θα προσπαθήσει αυτόματα να βρει τη σωστή θύρα COM για χρήση, ώστε να μπορείτε πραγματικά να αποφύγετε να μην ρυθμίσετε τίποτα για αυτό. Αλλά εάν έχετε πολλές θύρες COM, τις οποίες θα κάνετε όταν χρησιμοποιείτε το πρόγραμμα εντοπισμού σφαλμάτων, νομίζω ότι είναι λογικό να ορίσετε τη συγκεκριμένη που χρειάζεστε. Μπορείτε να δείτε τις διαφορετικές συσκευές που έχετε κάνοντας κλικ στην ενότητα "Συσκευές" στην αρχική καρτέλα και μπορείτε να ορίσετε ποιο είναι το ESP32 σας στο "platformio.ini" προσθέτοντας μια διαμόρφωση "upload_port".

Πώς ανεβάζω τον κωδικό μου;

Κάντε κλικ στο κουμπί Μεταφόρτωση (το εικονίδιο είναι ένα βέλος που δείχνει δεξιά) και θα πρέπει να μεταγλωττίσει και να ανεβάσει τον κώδικα. Θα πρέπει τώρα να έχετε ένα LED που αναβοσβήνει στον πίνακα.

Βήμα 6: Αποσφαλμάτωση: Δυνητικό δέρμα μπανάνας

Αποσφαλμάτωση: Δυνητικό δέρμα μπανάνας!
Αποσφαλμάτωση: Δυνητικό δέρμα μπανάνας!
Αποσφαλμάτωση: Δυνητικό δέρμα μπανάνας!
Αποσφαλμάτωση: Δυνητικό δέρμα μπανάνας!
Αποσφαλμάτωση: Δυνητικό δέρμα μπανάνας!
Αποσφαλμάτωση: Δυνητικό δέρμα μπανάνας!

Αυτό είναι κάτι που με τράβηξε όταν το ετοίμαζα και ελπίζω να διορθωθεί μέχρι να το δοκιμάσετε, αλλά σκέφτηκα ότι ήταν σημαντικό να φύγω από εδώ.

Κατά τη δημιουργία αυτού του οδηγού, η τελευταία έκδοση του PlatformIO είναι 4.3.0 και έχει ένα σφάλμα που σχετίζεται με την ικανότητα εντοπισμού σφαλμάτων. Ευτυχώς μπορούμε να ενημερώσουμε στην πιο πρόσφατη έκδοση ανάπτυξης αρκετά εύκολα που λύνει το πρόβλημα.

Ελέγξτε στην αρχική σελίδα την έκδοση του PlatformIO core, εάν είναι "4.3.0", εκτελέστε τα ακόλουθα βήματα.

  1. Στη γραμμή εργαλείων PlatformIO, κάντε κλικ στο εικονίδιο τερματικού
  2. Στον τερματικό τύπο: pio upgrade --dev
  3. Ο κώδικας RestartVS και το PlatfromIO θα πρέπει να ενημερωθούν

Βήμα 7: Αποσφαλμάτωση: Διαμόρφωση

Αποσφαλμάτωση: Διαμόρφωση
Αποσφαλμάτωση: Διαμόρφωση

Χρειαζόμαστε επεξεργασία του αρχείου "PlatofrmIO.ini" για να ενεργοποιήσουμε τον εντοπισμό σφαλμάτων, χρειάζεται μόνο να προσθέσουμε δύο πράγματα σε αυτό.

debug_tool = esp-prog

Αυτό ορίζει το εργαλείο εντοπισμού σφαλμάτων που χρησιμοποιούμε.

debug_init_break = ρύθμιση tbreak

Αυτό είναι ένα κόλπο που μάθαμε από το βίντεο της Andress Spiess σχετικά με τον εντοπισμό σφαλμάτων στο ESP32. Λέει στο πρόγραμμα εντοπισμού σφαλμάτων να σταματήσει στη ρύθμιση της εφαρμογής μας.

Βήμα 8: Αποσφαλμάτωση: Έναρξη εντοπισμού σφαλμάτων

Αποσφαλμάτωση: Έναρξη εντοπισμού σφαλμάτων
Αποσφαλμάτωση: Έναρξη εντοπισμού σφαλμάτων
Αποσφαλμάτωση: Έναρξη εντοπισμού σφαλμάτων
Αποσφαλμάτωση: Έναρξη εντοπισμού σφαλμάτων
Αποσφαλμάτωση: Έναρξη εντοπισμού σφαλμάτων
Αποσφαλμάτωση: Έναρξη εντοπισμού σφαλμάτων
Αποσφαλμάτωση: Έναρξη εντοπισμού σφαλμάτων
Αποσφαλμάτωση: Έναρξη εντοπισμού σφαλμάτων

Πριν μπούμε σε αυτό, θα κάνουμε μια μικρή αλλαγή στο σκίτσο που θα διευκολύνει την επίδειξη του τι μπορείτε να κάνετε με τον εντοπισμό σφαλμάτων.

  1. Δημιουργήστε μια νέα μεταβλητή, "int delayTime = 1000;" εκτός από οποιεσδήποτε μεθόδους, αυτό θα το κάνει μια παγκόσμια μεταβλητή.
  2. Αντικαταστήστε τον αριθμό μέσα στις κλήσεις καθυστέρησης στο βρόχο με αυτήν τη νέα μεταβλητή: delay (delayTime);

Ανεβάστε τον κώδικα στον πίνακα για άλλη μια φορά, στη συνέχεια για να ξεκινήσετε τον εντοπισμό σφαλμάτων, στη γραμμή εργαλείων, κάντε κλικ στην επιλογή "Εκτέλεση" και στη συνέχεια "Έναρξη εντοπισμού σφαλμάτων"

Θα δείτε τα πράγματα να κινούνται στο παράθυρο του τερματικού, αλλά ακόμη και όταν αυτό δηλώνει ότι ήταν επιτυχία, αν κάνετε κλικ στην "Κονσόλα εντοπισμού σφαλμάτων" θα δείτε ότι λειτουργεί ακόμα, θα χρειαστούν μερικά δευτερόλεπτα για να ολοκληρωθεί.

Εάν όλα πήγαν όπως αναμενόταν, θα δείτε το πρόγραμμα εντοπισμού σφαλμάτων να σταματά στην αρχή της εγκατάστασης.

Βήμα 9: Αποσφαλμάτωση: Βασική χρήση

Αποσφαλμάτωση: Βασική χρήση
Αποσφαλμάτωση: Βασική χρήση
Αποσφαλμάτωση: Βασική χρήση
Αποσφαλμάτωση: Βασική χρήση
Αποσφαλμάτωση: Βασική χρήση
Αποσφαλμάτωση: Βασική χρήση
Αποσφαλμάτωση: Βασική χρήση
Αποσφαλμάτωση: Βασική χρήση

Ας καλύψουμε μερικά από τα βασικά για το τι μπορείτε να κάνετε με το πρόγραμμα εντοπισμού σφαλμάτων

Δημιουργία σημείων διακοπής:

Ένα σημείο διακοπής είναι ένα σημείο του κώδικα όπου θέλετε να σταματήσει ο εντοπισμός σφαλμάτων. Για να δημιουργήσετε ένα σημείο διακοπής κάντε κλικ στα αριστερά του αριθμού γραμμής. Ως επίδειξη, προσθέστε σημείο διακοπής στην πρώτη γραμμή στη μέθοδο βρόχου.

Πλοήγηση σημείου διακοπής:

Για να μετακινηθείτε μεταξύ σημείου διακοπής ή να μεταβείτε στην επόμενη γραμμή κώδικα, μπορείτε να χρησιμοποιήσετε τα εργαλεία που θα εμφανιστούν στο επάνω μέρος της οθόνης. Πατήστε το κουμπί "συνέχεια" (μοιάζει με κουμπί αναπαραγωγής) για να μετακινήσετε το σημείο διακοπής που μόλις δημιουργήσαμε μέσα στον βρόχο.

Μεταβλητά ρολόγια:

Τα ρολόγια μεταβλητών σάς επιτρέπουν να παρακολουθείτε την τιμή των μεταβλητών όταν ο εντοπισμός σφαλμάτων σταματήσει σε σημείο διακοπής. Για να προσθέσετε ένα νέο ρολόι μεταβλητής, μπορείτε να κάνετε κλικ στο εικονίδιο + και, στη συνέχεια, πληκτρολογήστε το όνομα της μεταβλητής. Ως επίδειξη, πληκτρολογήστε τη μεταβλητή που προσθέσαμε στο προηγούμενο βήμα "delayTime"

Μεταβλητή προβολή:

Μπορείτε επίσης να δείτε όλες τις μεταβλητές και τις τιμές τους που είναι διαθέσιμες στο τρέχον σημείο διακοπής. Για να το επιδείξετε αυτό, αν κοιτάξετε στην ενότητα "Παγκόσμιο" θα βρείτε τη μεταβλητή "delayTime".

Επεξεργασία της τιμής των μεταβλητών:

Μπορείτε επίσης να επεξεργαστείτε τις τιμές των μεταβλητών και θα επηρεάσει άμεσα τη συμπεριφορά των κωδικών σας. Για να το δείξετε αυτό, κάντε κλικ στη μεταβλητή delayTime στην ενότητα Μεταβλητή προβολή και αλλάξτε την τιμή σε "100". Για να δείξει ότι αυτό λειτουργεί, απενεργοποιήστε το σημείο διακοπής μέσα στον βρόχο κάνοντας ξανά κλικ στα αριστερά του αριθμού γραμμής. Πατήστε το κουμπί συνέχισης στη γραμμή πλοήγησης του σημείου διακοπής. Η λυχνία LED στο ESP32 θα πρέπει τώρα να αναβοσβήνει πολύ πιο γρήγορα από πριν.

Βήμα 10: Αντιμετώπιση προβλημάτων

Αντιμετώπιση προβλημάτων
Αντιμετώπιση προβλημάτων

Διαπίστωσα κατά τη διάρκεια της δοκιμής μου ότι μερικές φορές δεν μπορούσα να ανεβάσω στο ESP32 ενώ ήταν συνδεδεμένο στο ESP-prog και δεν μπορούσα να καταλάβω ένα μοτίβο γιατί συνέβη αυτό, επειδή τις περισσότερες φορές μπορούσα να ανεβάσω χωρίς προβλήματα. Βρήκα ότι μπορούσα απλώς να αποσυνδέσω το ESP32 και το ESP-Prog, να ανεβάσω τον κωδικό στο ESP32 και μετά να τα επανασυνδέσω και θα λειτουργούσε καλά.

Βήμα 11: Σύγκρουση

Νομίζω ότι αυτό είναι ένα πραγματικά υπέροχο εργαλείο για προσθήκη στην εργαλειοθήκη για να καταλάβετε τι συμβαίνει μέσα στο έργο σας.

Θα ήθελα να ακούσω αν το βρείτε χρήσιμο !. Παρακαλώ ενημερώστε με στα παρακάτω σχόλια ή ελάτε μαζί μου και με μια ομάδα άλλων κατασκευαστών στον διακομιστή μου Discord, όπου μπορούμε να συζητήσουμε αυτό το θέμα ή οποιοδήποτε άλλο σχετικό με τους κατασκευαστές που έχετε, οι άνθρωποι είναι πραγματικά εξυπηρετικοί εκεί, οπότε είναι ένα εξαιρετικό μέρος για να κρεμάσετε έξω.

Θα ήθελα επίσης να ευχαριστήσω πολύ τους Χορηγούς Github που με βοηθούν να υποστηρίξω αυτό που κάνω, το εκτιμώ πραγματικά. Εάν δεν γνωρίζετε, η Github ταιριάζει με χορηγίες για το πρώτο έτος, οπότε αν κάνετε χορηγία θα ταιριάξουν 100% για τους επόμενους μήνες. Ευχαριστώ για την ανάγνωση!

Συνιστάται: