Ανάλυση πάρε-δώσε από και πρός εφαρμογές που επικοινωνούν στο arduino με ένα logic analyzer που πήρες απο το Skroutz (συγγεκριμένα ένα Lakeview Research Saleae Logic)

E ψιτ χακερά. Ξυπνησες μια πρωΐα και είπες α έχω ένα ξέμπαρκo arduino και μιας και χθες ο ινδός μου έμαθε την print ας ανταλλάξω ένα μυνηματάκι με το arduino.

Δε ο pc_magas μου είπε εδώ στο forum το ότι μπορώ με ένα φτηνό ψιψινονι από το skroutz να αναλύεις ότι το ledaki ανάβει και σβήνει στο default arduino sketch. (ΡΕ δεν ξέρεις να προφέρεις USB Logic Analayzer αμάν τι χακεράς είσαι να ούμε ακου εκεί ψιψιψόνι)

Έτσι φόρεσες το hoodie soy και πήρες το μαύρο καπέλου του παππού σου και άρχισες να παίζεις μπαλίτσα. Για αρχή έκανες ένα απλό σκετσάκι έτσι για προθέρμανση (εδώ αθλητές κάνουν προθέρμανση εμείς οι A1 black hoodie and black hat hackerαδες δεν θα κάνουμε, σιγά-σιγά καίγονται τα εγκεφαλικά κύτταρα αμέσως απότιμα στα βαθεία):

void setup() {
    Serial.begin(9600);
}

void loop() {
  while (Serial.available() == 0) {}
  String teststr = Serial.readString();
  teststr.trim();
  Serial.print("PONG:");
  Serial.println(teststr);
}

Και το φορτώνεις με το Arduino IDE.

Και λες πριν πάω στην python (αν και την ξέρω για πλάκα από τον ινδό που μου έδειξε πως να κάνω print) ας ανοίξω κάτι που λέγετε screen να δώ ότι παίζω μπαλίτσα (γατάκια παράλληλα λες από μέσα σου, λέτε ότι δεν ξέρω terminal και με λέγατε script kiddie, ορίστε ξέρω και εσείς δεν ξέρετε):

screen /tty/ACM0 9600

Και αν δώσω κάτι θα μου απαντήσει PONG: <κάτι>. Πχ αν πληκτρολογήσω Apagapiipervoliki8ape8anw θα μου απαντήσει:

PONG: Apagapiipervoliki8ape8anw

Και είσαι θυμωμένος μες την μάνα σου που έβαλε Βανδή και όχι Stratovarious, αλλά το Spotify got u covered. Εφόσον έβαζες να παίζει stratovarious. Συνεχίζεις.

Ωραία λές τωρά θα πρέπει κάπως να ξέρω ότι ο πύθωνάς μου θα παίζει μπαλίτσα αλλά επειδή η μάνα μου δεν ψέκασε αναμένω bug και θα πρέπει να τα λιώσω με τα ίδια μου τα χέρια (ε πρωταθλητής στο να σκοτώνεις κουνούπια με τα χέρια σου λες το 'χω το debugging)

Για αρχή έβαλες 2 καλωδικάκια στα pins του logic analyzer σου όπως δείχνει η εικόνα:

Πήρες 2 pin από τον logic analyzer και τα σύνδεσες με τα TX και RX pin του Arduino μετά ένωσες και τη γείωση στη γείωση του Arduino. Εφόσον το έκανες και αυτό μετά άνοιξες το PulseView:

Στην μπαρίτσα είδες ότι κάπου στην άκρη έχει κάτι σαν κυματομορφή, την άνοιξες και είδες μια επιλογή που ανέφερε UART και την επέλεξες. (Εγώ στο screenshot το έκανα ήδη).

Ακόμα πριν ρυθμίσεις το Uart ρύθμισες το Sampling rate στα 24kHz kai 500M samples όπως δείχνει η εικόνα:

Μετέπειτα Ρυθμίζεις το UART έτσι:

Δηλαδή ρυθμίζεις το baudrate με αυτό που είναι στο sketch και απενεργοποίησες το partiy (cause arduino has not). Μετέπειτα μένει να ρυθμίσεις τα Pin. O απλός τρόπος να δεις ποια pin πρέπει να ρυθμιστούν είναι να πατήσεις Run και σε όποια γραφήματα από D0 εως D7 έχει παλμούς να ορίζεις αυτό.

Γενικά σαν μνημονικό κανόνα έχεις τον αριθμό του καναλιού-1 είναι το pin στo pulseview. Πχ ένα καλώδιο συνδεδεμένο στο CH1 πινάκι του logic analyzer θα είναι το D0. Έτσι έκανες το εξής πινακάκι αντιστοίχησης:

Logic Analyzer Pin PulseViewChannel
CH1 D0
CH2 D1
CH3 D2
CH4 D3
CH5 D4
CH6 D5
CH7 D8

Και οι τελικές ρυθμίσεις σου στο UART ήταν:

Πλέον στο UART έβλεπες να εκτυπώνετε ότι και στο screen.

Έτσι μπορούσες να παίξεις με ότι σου έμαθε ο Ινδός από το youtube στο προηγούμενο βράδυ.

4 «Μου αρέσει»