Arduino Uno R4 WiFi

Το Arduino UNO R4 WiFi είναι μια εξέλιξή του κλασσικού UNO R3 τo οποίο επιφέρει μεταξύ άλλων, απρόσκοπτη ασύρματη συνδεσιμότητα κάτι που δεν συναντούμε στις προηγούμενες εκδόσεις του. Όπως και το «αδερφάκι» του, το UNO R4 Minima, σηματοδοτεί την οριστική μετάβαση από την παλαιότερη 8‑bit αρχιτεκτονική AVR (τον ATmega328P που βρίσκεται στο Arduino UNO R3) σε ένα σύγχρονο και πολύ πιο ισχυρό 32‑bit οικοσύστημα Arm Cortex‑M.

​Ενσωματώνοντας τον ισχυρό μικροελεγκτή Renesas RA4M1 μαζί με έναν συνεπεξεργαστή ESP32‑S3, το UNO R4 WiFi προσφέρει τεράστια αύξηση σε ταχύτητα, μνήμη και δυνατότητες, ενώ προσθέτει ισχυρή λειτουργικότητα Wi‑Fi και Bluetooth Low Energy (BLE).

Εκτός από τις ασύρματες δυνατότητες, το UNO R4 WiFi διατηρεί τις επεκταμένες δυνατότητες της πλατφόρμας R4, όπως CAN bus, τελεστικό ενισχυτή (OPAMP), DAC και υποστήριξη HID μέσω USB. Προσθέτει επίσης χαρακτηριστικά ειδικά για την πλακέτα, όπως την ενσωματωμένη μήτρα LED 12×8 και τον σύνδεσμο Qwiic.

​Ωστόσο, αυτές οι επιπλέον δυνατότητες σημαίνουν επίσης ότι υπάρχουν σημαντικές διαφορές που πρέπει να κατανοηθούν πριν συνδέσετε κυκλώματα «από συνήθεια». Ειδικότερα, το Arduino UNO R4 WiFi εισάγει αλλαγές στην αρχιτεκτονική τροφοδοσίας, πάνω στις επιμέρους περιοχές σημάτων (συμπεριλαμβανομένης της αλληλεπίδρασης μεταξύ της πλευράς 5 V του RA4M1 και της πλευράς 3,3 V του ESP32‑S3) και στα όρια ρεύματος των GPIO. Αν μεταβαίνετε από το Arduino UNO R3, πρέπει να δώσετε ιδιαίτερη προσοχή στη διάταξη ακροδεκτών ώστε να αξιοποιήσετε με ασφάλεια και αποτελεσματικότητα αυτές τις νέες δυνατότητες.

Το UNO R4 WiFi διαθέτει συνολικά 35 ακροδέκτες (pins). Η διάταξη ακροδεκτών έχει ως εξής:

Ας ρίξουμε μια πιο προσεκτική ματιά στα pins του Arduino και στις λειτουργίες τους, ξεκινώντας από τα ψηφιακά pins.

Το UNO R4 WiFi περιλαμβάνει 14 ψηφιακά pins εισόδου/εξόδου (digital I/O), με ονομασία D0 έως D13. Μπορείτε να ορίσετε αυτά τα pins έτσι ώστε να λειτουργούν είτε ως Είσοδοι είτε ως Έξοδοι. Όταν ένα pin έχει οριστεί ως είσοδος, μπορεί να «διαβάζει» ψηφιακά σήματα, και αν ένα pin έχει οριστεί ως έξοδος, μπορεί να στέλνει ψηφιακά σήματα για να ελέγχει άλλες συσκευές.

Όταν χρησιμοποιείτε τα ψηφιακά pins εισόδου/εξόδου, υπάρχουν ορισμένα σημαντικά ηλεκτρικά όρια που πρέπει να έχετε υπόψη. Αυτά τα pins λειτουργούν σε λογικό επίπεδο 5 V. Κάθε ψηφιακό pin μπορεί να χειριστεί με ασφάλεια έως και 8 mA ρεύματος, και όλα τα ψηφιακά pins μαζί δεν πρέπει να ξεπερνούν συνολικά τα 60 mA. Αυτή είναι μια σημαντική διαφορά σε σχέση με τον μικροελεγκτή ATmega328P που χρησιμοποιείται στο UNO R3, όπου κάθε pin μπορούσε τυπικά να χειριστεί μεταξύ 20 και 40 mA.

Κάθε ψηφιακό pin στο UNO R4 WiFi περιλαμβάνει μια ενσωματωμένη pull‑up αντίσταση. Αυτή η δυνατότητα είναι ιδιαίτερα χρήσιμη όταν ένα pin χρησιμοποιείται ως είσοδος και δεν είναι συνδεδεμένο σε τίποτα. Η εσωτερική pull‑up αντίσταση βοηθά «τραβώντας» απαλά την τάση του pin προς HIGH όταν δεν υπάρχει άλλο σήμα. Αυτό διατηρεί την ένδειξη της εισόδου σταθερή και αξιόπιστη.

Για να ενεργοποιήσετε την εσωτερική pull‑up αντίσταση, χρησιμοποιείτε την εντολή pinMode(pin, INPUT_PULLUP) αντί για το απλό pinMode(pin, INPUT).

Τα interrupt pins είναι ειδικά ψηφιακά pins εισόδου που μπορούν να ενεργοποιήσουν ένα συγκεκριμένο μπλοκ κώδικα (μια ρουτίνα εξυπηρέτησης διακοπής – ISR) όταν συμβεί ένα εξωτερικό γεγονός, όπως μια αλλαγή στο επίπεδο τάσης (από HIGH σε LOW ή αντίστροφα).

Το Arduino UNO R4 WiFi διαθέτει δύο βασικά pins εξωτερικών διακοπών, στα pins 2 και 3. Το Arduino UNO R4 WiFi υποστηρίζει τέσσερις τρόπους πυροδότησης (trigger modes) που καθορίζουν πότε εκτελείται η ISR, όπως φαίνεται στον παρακάτω πίνακα:

ModeΣυνθήκη πυροδότησηςΤυπικές χρήσεις
RISINGΤο pin μεταβαίνει από LOW σε HIGHΑνίχνευση πατήματος κουμπιού (pull‑down)
FALLINGΤο pin μεταβαίνει από HIGH σε LOWΑνίχνευση πατήματος κουμπιού (pull‑up)
CHANGEΤο pin αλλάζει κατάσταση (οποιαδήποτε κατεύθυνση)Ανάγνωση encoder, μέτρηση παλμών
LOWΤο pin παραμένει σε επίπεδο LOWΓεγονότα ενεργοποίησης ανά επίπεδο

Για να ορίσετε μια διακοπή, το Arduino χρησιμοποιεί τη συνάρτηση attachInterrupt(interrupt, ISR, mode). Σε αυτή τη συνάρτηση, η τιμή interrupt δηλώνει στο Arduino ποια διακοπή θα χρησιμοποιήσει, όπου η διακοπή 0 αντιστοιχεί στο ψηφιακό pin 2 και η διακοπή 1 στο ψηφιακό pin 3. Η ISR είναι το όνομα της συνάρτησης που πρέπει να εκτελεστεί όταν συμβεί η διακοπή. Το mode ορίζει πώς ενεργοποιείται η διακοπή, π.χ. RISING, FALLING, CHANGE ή LOW.

Τα pins PWM (Pulse‑Width Modulation) στο Arduino UNO R4 WiFi είναι ψηφιακά pins που μπορούν να προσομοιώσουν αναλογική έξοδο. Το πετυχαίνουν αυτό εναλλάσσοντας το pin μεταξύ HIGH και LOW εξαιρετικά γρήγορα· τόσο γρήγορα ώστε να φαίνεται σαν μια σταθερή τάση κάπου ενδιάμεσα, η οποία καθορίζεται από το duty cycle

Το UNO R4 WiFi παρέχει 6 pins με δυνατότητα PWM: D3, D5, D6, D9, D10 και D11. Μπορείτε εύκολα να τα ξεχωρίσετε στην πλακέτα από το σύμβολο του κύματος (~) δίπλα στον αριθμό του pin.

Για να δημιουργήσετε ένα PWM σήμα, πρέπει πρώτα να ορίσετε το αντίστοιχο PWM pin ως έξοδο χρησιμοποιώντας τη συνάρτηση pinMode(pin, OUTPUT). Στη συνέχεια χρησιμοποιείτε τη συνάρτηση analogWrite(pin, value) για να ορίσετε την έξοδο PWM. Σε αυτή τη συνάρτηση, το pin είναι ο αριθμός του pin με δυνατότητα PWM και η παράμετρος value ελέγχει τον κύκλο λειτουργίας.

Από προεπιλογή, η ανάλυση PWM στο UNO R4 WiFi είναι ρυθμισμένη στα 8 bits. Ωστόσο, το UNO R4 WiFi είναι πολύ πιο ισχυρό και σας επιτρέπει να αυξήσετε την ανάλυση PWM. Χρησιμοποιώντας τη συνάρτηση analogWriteResolution(), μπορείτε να αυξήσετε την ανάλυση έως και στα 12 bits, που επιτρέπει τιμές από 0 έως 4096 και σας δίνει πιο λεπτομερή έλεγχο της εξόδου.

analogWriteResolution(12); // Ορίζει την ανάλυση PWM στα 12 bits
analogWriteResolution(8); // Ορίζει την ανάλυση PWM στα 8 bits (προεπιλογή)

Τα αναλογικά pins εισόδου στο Arduino UNO R4 WiFi χρησιμοποιούνται για να διαβάζουν αναλογικά σήματα όπως αυτά που δίνουν οι αισθητήρες που μετρούν φυσικές ποσότητες. Για να «καταλάβει» αυτά τα αναλογικά σήματα, το Arduino χρησιμοποιεί έναν ενσωματωμένο Μετατροπέα Αναλογικού σε Ψηφιακό (ADC), ο οποίος μετατρέπει την αναλογική τάση σε έναν ψηφιακό αριθμό που μπορεί να χρησιμοποιήσει το πρόγραμμά σας.

Το Arduino UNO R4 WiFi διαθέτει έξι αναλογικά pins εισόδου, με ονομασία A0 έως A5. Για να διαβάσετε μια αναλογική τιμή από ένα pin, χρησιμοποιείτε τη συνάρτηση analogRead(pin). Αυτή η συνάρτηση επιστρέφει μια ακέραιη τιμή που αντιστοιχεί στην τάση στο επιλεγμένο pin.

Από προεπιλογή, ο ADC στο Arduino UNO R4 WiFi χρησιμοποιεί ανάλυση 10 bits για συμβατότητα προς τα πίσω. Ωστόσο, το R4 WiFi είναι πολύ πιο ισχυρό από τους προκατόχους του. Μπορείτε να αυξήσετε την ανάλυση έως και στα 12 bits ή ακόμη και στα 14 bits, επιτρέποντας στο Arduino να ανιχνεύει πολύ μικρότερες αλλαγές στην τάση. Με ανάλυση 10 bits, το βήμα τάσης είναι περίπου 4,9mV ενώ με ανάλυση 14 bits το βήμα τάσης είναι 0,3 mV όταν χρησιμοποιείται εύρος 5 V. Για να αλλάξετε την ανάλυση του ADC, χρησιμοποιείτε τη συνάρτηση analogReadResolution() στο μέρος setup() του sketch σας.

analogReadResolution(10); //(προεπιλογή)
analogReadResolution(12);
analogReadResolution(14);

Αξίζει επίσης να θυμάστε ότι, αν εξαντλήσετε τα τυπικά ψηφιακά pins, τα pins A0 έως A5 μπορούν να λειτουργήσουν και ως κανονικά pins ψηφιακής εισόδου/εξόδου.

Από προεπιλογή, το UNO R4 WiFi μετρά αναλογικές τάσεις χρησιμοποιώντας εύρος αναφοράς 0 έως 5 V (η τροφοδοσία 5 V της πλακέτας). Αυτή η τάση αναφοράς καθορίζει τη μέγιστη τάση που μπορεί να μετρήσει ο ADC. Σε ορισμένες περιπτώσεις, όπως όταν χρησιμοποιείτε έναν αισθητήρα που λειτουργεί σε χαμηλότερη τάση (π.χ. 3,3 V), μπορεί να θέλετε να μετράτε χαμηλότερες τάσεις με μεγαλύτερη ακρίβεια.

Για να το πετύχετε αυτό, μπορείτε να αλλάξετε την αναλογική τάση αναφοράς χρησιμοποιώντας το pin AREF και τη συνάρτηση analogReference(type), όπου type όπως ακολούθως:

analogReference(AR_DEFAULT);//Χρησιμοποιεί την προεπιλεγμένη αναλογική 
                             //τάση αναφοράς των 5 V.
analogReference(AR_INTERNAL); // Χρησιμοποιεί εσωτερική τάση αναφοράς 1,5 V.
analogReference(AR_EXTERNAL); // Χρησιμοποιεί εξωτερική τάση αναφοράς 
                              //που εφαρμόζεται στο pin AREF.

Το Arduino UNO R4 WiFi περιλαμβάνει έναν ενσωματωμένο Μετατροπέα Ψηφιακού σε Αναλογικό (DAC). Ένας DAC παίρνει μια ψηφιακή τιμή και τη μετατρέπει σε ομαλή αναλογική τάση. Πρόκειται για μια σημαντική αναβάθμιση για το UNO R4 WiFi, που το καθιστά ιδανικό για projects όπως η δημιουργία κυματομορφών.

Στο Arduino UNO R4 WiFi, ο DAC είναι διαθέσιμος στο αναλογικό pin A0. Για να χρησιμοποιήσετε τον DAC, στην πράξη χρησιμοποιείτε ακριβώς την ίδια συνάρτηση analogWrite(pin, value) που χρησιμοποιείτε για τη δημιουργία PWM σημάτων.

Από προεπιλογή, το pin του DAC λειτουργεί με ανάλυση 8 bits, που σημαίνει ότι δέχεται τιμές μεταξύ 0 και 255. Για ορισμένες εφαρμογές, ειδικά σε projects ήχου, η ανάλυση 8 bits μπορεί να μην προσφέρει αρκετά «ομαλή» έξοδο. Σε αυτές τις περιπτώσεις, το Arduino UNO R4 WiFi σας επιτρέπει να αυξήσετε την ανάλυση του DAC έως και στα 12 bits. Όταν χρησιμοποιείτε ανάλυση 12 bits, οι τιμές που γράφετε στο pin κυμαίνονται από 0 έως 4095, προσφέροντάς σας εξαιρετικά λεπτομερή έλεγχο της τάσης εξόδου. Συγκεκριμένα για τον ορισμό της ανάλυσης είναι analogWriteResolution(12);

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

Ένα από τα πιο ισχυρά νέα χαρακτηριστικά του Arduino Uno R4 WiFi είναι η ενσωμάτωση ενός τελεστικού ενισχυτή (op‑amp). Η ύπαρξη ενός ενσωματωμένου op‑amp σας γλιτώνει από την ανάγκη για εξωτερικά ολοκληρωμένα σε εργασίες όπως η απομόνωση (buffering) σημάτων, η ενίσχυση ασθενών σημάτων από αισθητήρες, το φιλτράρισμα θορύβου ή πολλές άλλες αναλογικές διεργασίες.

Αν και ο μικροελεγκτής του Arduino UNO R4 WiFi, ο Renesas RA4M1, διαθέτει στην πραγματικότητα τέσσερις εσωτερικούς op‑amps, η πλακέτα εκθέτει έναν από αυτούς για χρήση μέσω του αναλογικής κεφαλίδας. Συγκεκριμένα, χρησιμοποιεί το A1 ως θετική (μη αναστρέφουσα) είσοδο, το A2 ως αρνητική (αναστρέφουσα) είσοδο και το A3 ως έξοδο.

Για να αρχίσετε να χρησιμοποιείτε τον op‑amp στο UNO R4 WiFi, πρέπει να συμπεριλάβετε τη βιβλιοθήκη OPAMP.h στο sketch σας και στη συνέχεια να την αρχικοποιήσετε με τη συνάρτηση OPAMP.begin(speed). Η προαιρετική παράμετρος speed σάς επιτρέπει να επιλέξετε μεταξύ διαφορετικών τρόπων λειτουργίας. Μπορείτε να επιλέξετε OPAMP_SPEED_LOWSPEED για χαμηλότερη κατανάλωση ή OPAMP_SPEED_HIGHSPEED για υψηλότερη απόδοση με μεγαλύτερη κατανάλωση.

#include <OPAMP.h>
void setup () {
OPAMP.begin(OPAMP_SPEED_HIGHSPEED);
}
void loop() {
}

Ένας απλός τρόπος χρήσης του op‑amp είναι ως απομόνωτης (buffer), συνδέοντας φυσικά το A2 (την αρνητική είσοδο) απευθείας στο A3 (την έξοδο). Σε αυτή τη διάταξη, οποιαδήποτε τάση εφαρμόσετε στο A1 (τη θετική είσοδο) θα εμφανίζεται στην έξοδο A3, αλλά με μεγαλύτερη ικανότητα οδήγησης ρεύματος.

Μπορείτε επίσης να τον χρησιμοποιήσετε για να υλοποιήσετε έναν Ενισχυτή Τάσης έτσι ώστε να ενισχύσετε ένα πολύ μικρό σήμα. Για να το κάνετε αυτό, συνδέετε μια αντίσταση 10 kΩ μεταξύ A2 και γείωσης (GND) και μια δεύτερη αντίσταση 10 kΩ μεταξύ A3 και A2. Με αυτή τη διάταξη, οποιοδήποτε σήμα τροφοδοτείται στο A1 θα εμφανίζεται στο A3 με διπλάσιο πλάτος.

Μπορείτε ακόμη να χρησιμοποιήσετε τον op‑amp ως Συγκριτή (Comparator) για να συγκρίνετε δύο τάσεις εισόδου και να έχετε ως αποτέλεσμα μια «ψηφιακού τύπου» έξοδο HIGH ή LOW ή και για πιο προχωρημένα κυκλώματα, όπως ολοκλήρωση και διαφοροποίηση σημάτων.

Το Arduino UNO R4 WiFi διαθέτει 11 GPIOs με δυνατότητα χωρητικού αγγίγματος: D0, D1, D2, D3, D8, D9, D11, D13, A1, A2 και LOVE_BUTTON (το καρδιόσχημο pad στο πίσω μέρος του Arduino σας).

Αυτά τα pins μπορούν να ανιχνεύσουν πότε κάτι είναι αγώγιμο, όπως όταν το δάχτυλό σας, πλησιάζει κοντά τους. Λειτουργούν μετρώντας μια αλλαγή στη χωρητικότητα. Όταν το δάχτυλό σας πλησιάζει το pin, μεταβάλλει ελαφρά τις ηλεκτρικές ιδιότητες του κυκλώματος και η πλακέτα αναγνωρίζει αυτή την αλλαγή ως «άγγιγμα».

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

Για να χρησιμοποιήσετε τη λειτουργία «χωρητικότητα αγγίγματος» στο πρόγραμμά σας, πρέπει πρώτα να εγκαταστήσετε και να συμπεριλάβετε τη βιβλιοθήκη Arduino_CapacitiveTouch. Αφού συμπεριλάβετε τη βιβλιοθήκη στο sketch σας, δημιουργείτε ένα αντικείμενο από την κλάση CapacitiveTouch και ορίζετε ποιο pin θέλετε να χρησιμοποιήσετε ως είσοδο αφής. Στη συνάρτηση setup() καλείτε την begin() για να αρχικοποιήσετε τον αισθητήρα και να ρυθμίσετε το υλικό. Αφού ολοκληρωθεί η αρχικοποίηση, μπορείτε να χρησιμοποιήσετε τη συνάρτηση read() για να πάρετε την ακατέργαστη τιμή του αισθητήρα. Αν θέλετε απλώς να ξέρετε αν το pin αγγίζεται ή όχι, μπορείτε να χρησιμοποιήσετε τη συνάρτηση isTouched(), η οποία συγκρίνει την ένδειξη του αισθητήρα με μια τιμή κατωφλίου. Μπορείτε να ρυθμίσετε πόσο ευαίσθητη θα είναι η ανίχνευση αφής με τη συνάρτηση setThreshold(int threshold).

#include "Arduino_CapacitiveTouch.h"
CapacitiveTouch touchButton = CapacitiveTouch(D0);
void setup() {
touchButton.begin();
touchButton.setThreshold(2000);
}
void loop() {
int sensorValue = touchButton.read();
bool isTouched = touchButton.isTouched();
}

Μία από τις σημαντικότερες βελτιώσεις σχεδίασης στο Arduino UNO R4 WiFi είναι ότι περιλαμβάνει δύο ξεχωριστούς I2C διαύλους επικοινωνίας. Αυτή η αλλαγή βοηθά στην επίλυση του χρονίζοντος προβλήματος συμβατότητας μεταξύ 5 V και 3,3 V. Αν γίνει λανθασμένος συνδυασμός αυτών των επιπέδων τάσης, μπορείτε να καταστρέψετε ευαίσθητα εξαρτήματα. Διαχωρίζοντας τους διαύλους, η πλακέτα σάς επιτρέπει να συνδέετε με ασφάλεια και τις δύο κατηγορίες συσκευών που χρησιμοποιούν τέτοιους διαύλους στα 5V και στα 3,3V.

Ο πρώτος δίαυλος επικοινωνίας I2C είναι ο παραδοσιακός δίαυλος των 5 V. Στο Arduino UNO R4 WiFi, τα I2C pins SDA και SCL είναι συνδεδεμένα με τα αναλογικά pins A4 (SDA) και A5 (SCL). Αυτά τα pins είναι επίσης διαθέσιμα κοντά στο pin AREF στην πλακέτα. Ο συγκεκριμένος δίαυλος υπάρχει κυρίως για να διατηρηθεί η συμβατότητα με παλαιότερες 5 V shields και modules.

Είναι σημαντικό να γνωρίζετε ότι το Arduino UNO R4 WiFi δεν περιλαμβάνει, από προεπιλογή, ενσωματωμένες pull‑up αντιστάσεις στις γραμμές I2C. Ωστόσο, υπάρχουν διαθέσιμα solder pads στην πλακέτα, αν θέλετε να τις προσθέσετε μόνοι σας.

Για να χρησιμοποιήσετε τον δίαυλο I2C των 5 V, πρέπει να συμπεριλάβετε την βιβλιοθήκη Wire στην αρχή του κώδικά σας. Στη συνάρτηση setup() καλείτε Wire.begin() για να αρχικοποιήσετε το σύστημα I2C. Μόλις αρχικοποιηθεί το I2C, μπορείτε να στείλετε δεδομένα σε μια συνδεδεμένη I2C συσκευή. Κάθε I2C συσκευή έχει τη δική της διεύθυνση, η οποία ενημερώνει το Arduino με ποια συσκευή επικοινωνεί. Το παρακάτω παράδειγμα δείχνει πώς να στείλετε δεδομένα σε μια συσκευή με διεύθυνση 1 και πώς να κλείσετε σωστά τη σύνδεση στη συνέχεια:

#include <Wire.h>
void setup() {
Wire.begin();
Wire.beginTransmission(1); // έναρξη μετάδοσης προς τη συσκευή 1
Wire.write(byte(0x00)); // αποστολή byte εντολής
Wire.write(val); // αποστολή τιμής
Wire.endTransmission(); // τερματισμός μετάδοσης
}
void loop() {
}

Το Arduino UNO R4 WiFi περιλαμβάνει επίσης ένα δεύτερο I2C δίαυλο που είναι συνδεδεμένο με τον σύνδεσμο Qwiic (STEMMA QT). Ο σύνδεσμος αυτός έχει σχεδιαστεί για εύκολη plug‑and‑play χρήση με πολλούς σύγχρονους αισθητήρες 3,3 V που κατασκευάζονται από τη SparkFun και την Adafruit.

Επειδή αυτός το δεύτερος I2C δίαυλος είναι ξεχωριστός από εκείνο των 5V, προστατεύει τις συσκευές 3,3 V από την έκθεση σε σήματα 5 V. Αυτό σημαίνει ότι μπορείτε να χρησιμοποιείτε με ασφάλεια τόσο συσκευές 5 V όσο και 3,3 V ταυτόχρονα, χωρίς να χρειάζεστε επιπλέον level shifters ή ειδικό hardware.

​Αν θέλετε να χρησιμοποιήσετε αυτόν τον σύνδεσμο Qwiic (STEMMA QT), δεν μπορείτε να χρησιμοποιήσετε το βασικό αντικείμενο Wire για I2C όπως θα κάνατε συνήθως, αλλά πρέπει να χρησιμοποιήσετε το δευτερεύον Wire1. Η υπόλοιπη διαδικασία είναι ίδια με αυτή του πρώτου διαύλου.

#include <Wire.h>
void setup() {
Wire1.begin(); // join the second I2C bus
Wire1.beginTransmission(1); // begin transmit to device 1
Wire1.write(byte(0x00)); // send instruction byte
Wire1.write(val); // send a value
Wire1.endTransmission(); // stop transmit
}
void loop() {
}

Το Arduino UNO R4 WiFi υποστηρίζει επίσης SPI (Serial Peripheral Interface). Το SPI είναι ένα άλλο είδος σειριακής επικοινωνίας και είναι γενικά ταχύτερο από το I2C. Το SPI χρησιμοποιεί ξεχωριστά pins για αποστολή δεδομένων, λήψη δεδομένων και συγχρονισμό της επικοινωνίας μέσω ενός clock σήματος.

Σημείωση: Το Arduino UNO R4 WiFi χρησιμοποιεί τη σύγχρονη ορολογία Controller/Peripheral για τα SPI pins αντί για την παλαιότερη Master/Slave, αν και η λειτουργία παραμένει ακριβώς η ίδια.

​Στο Arduino UNO R4 WiFi, το pin 11 φέρει την ένδειξη COPI (Controller Out, Peripheral In), παλαιότερα γνωστό ως MOSI. Το pin αυτό χρησιμοποιείται από το Arduino για να στέλνει δεδομένα σε άλλη συσκευή. Το pin 12 φέρει την ένδειξη CIPO (Controller In, Peripheral Out), παλαιότερα γνωστό ως MISO, και χρησιμοποιείται από τη συσκευή‑περιφερειακό για να στέλνει δεδομένα πίσω στο Arduino. Το pin 13 είναι το SCK (Serial Clock) pin, το οποίο κρατά συγχρονισμένη τη μεταφορά δεδομένων. Το pin 10 χρησιμοποιείται συνήθως ως CS (Chip Select). Το pin αυτό ορίζει το Arduino με ποια SPI συσκευή θέλει να επικοινωνήσει, κάτι ιδιαίτερα σημαντικό όταν είναι συνδεδεμένες πολλές SPI συσκευές ταυτόχρονα.

​Επιπλέον των τυπικών SPI pins, το Arduino UNO R4 WiFi περιλαμβάνει και μια ICSP (In‑Circuit Serial Programming) κεφαλίδα. Αυτή η κεφαλίδα παρέχει πρόσβαση στα ίδια SPI σήματα. Μπορείτε να χρησιμοποιήσετε είτε τα κανονικά ψηφιακά pins είτε την ICSP κεφαλίδα για SPI επικοινωνία.

​Το παρακάτω παράδειγμα δείχνει πώς να χρησιμοποιήσετε το SPI:

#include <SPI.h>
const int CS = 10;
void setup() {
pinMode(CS, OUTPUT); // Set CS pin as output
SPI.begin(); // Initialize SPI bus
digitalWrite(CS, LOW); // Pull CS low to start communication with the device
SPI.transfer(0x00); // Send a single byte (0x00) over SPI
digitalWrite(CS, HIGH); // Pull CS high to end communication
}
void loop() {
}

Σε αυτό το παράδειγμα, το Arduino ορίζει το Chip Select pin ως έξοδο, εκκινεί το SPI υποσύστημα, επιλέγει τη συνδεδεμένη συσκευή τραβώντας το CS σε LOW, στέλνει ένα μόνο byte δεδομένων και στη συνέχεια τερματίζει την επικοινωνία τραβώντας το CS σε HIGH.

Το Arduino UNO R4 WiFi διαθέτει μια σημαντική αναβάθμιση σε σχέση με τον προκάτοχό του: έχει δύο ξεχωριστές hardware UART διεπαφές. Μία θύρα εκτίθεται μέσω USB‑C και μία εκτίθεται μέσω των pins RX/TX.

​Στο παλαιότερο Arduino UNO R3, η θύρα USB και τα ψηφιακά pins 0 και 1 ήταν συνδεδεμένα στην ίδια σειριακή διεπαφή. Αυτό σήμαινε ότι δεν μπορούσατε να χρησιμοποιήσετε ταυτόχρονα το Serial Monitor στον υπολογιστή και μια εξωτερική μονάδα (όπως GPS ή Bluetooth receiver) χωρίς να παρεμβάλλονται μεταξύ τους.

Το Arduino UNO R4 WiFi λύνει αυτό το πρόβλημα διαχωρίζοντάς τα. Η θύρα USB‑C συνδέεται σε μία σειριακή διεπαφή (την οποία προσπελάζετε στον κώδικα ως Serial), ενώ τα pins 0 (RX) και 1 (TX) συνδέονται σε μια δεύτερη, πλήρως ανεξάρτητη διεπαφή (την οποία προσπελάζετε ως Serial1). Αυτό σας επιτρέπει να αποσφαλματώνετε τον κώδικά σας στον υπολογιστή ενώ ταυτόχρονα επικοινωνείτε με μια εξωτερική συσκευή.

Αν χρειάζεστε ακόμη περισσότερες σειριακές θύρες, μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη SoftwareSerial για να δημιουργήσετε «εικονικές» σειριακές θύρες σε άλλα ψηφιακά pins. Ωστόσο, πρέπει να έχετε υπόψη ότι αυτές οι θύρες που υλοποιούνται σε λογισμικό είναι πιο αργές και καταναλώνουν περισσότερους πόρους CPU από τις αντίστοιχες hardware θύρες.

​Για να χρησιμοποιήσετε το UART που είναι συνδεδεμένο στα pins RX και TX, πρέπει πρώτα να ορίσετε το baud rate στη συνάρτηση setup(). Όταν δουλεύετε με αυτά τα pins στο Arduino UNO R4 WiFi, χρησιμοποιείτε το αντικείμενο Serial1 αντί για το Serial. Αυτό το κάνουμε με την εντολή: Serial1.begin(9600);

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

while (Serial1.available()) {
delay(2);
char c = Serial1.read();
incoming += c;
}

Για να στείλετε δεδομένα μέσω της UART σύνδεσης, μπορείτε να χρησιμοποιήσετε την εξής εντολή:

Serial1.write(“Hello world!”);

Το Arduino UNO R4 WiFi υποστηρίζει επίσης επικοινωνία CAN (Controller Area Network). Πρόκειται για ένα αξιόπιστο και ανθεκτικό στον θόρυβο πρωτόκολλο επικοινωνίας. Το CAN αναπτύχθηκε αρχικά από τη Bosch για χρήση σε αυτοκίνητα, αλλά πλέον χρησιμοποιείται ευρέως σε βιομηχανικά και συστήματα αυτοματισμού. Ένα από τα βασικά πλεονεκτήματα του CAN είναι ότι οι συσκευές μπορούν να επικοινωνούν μεταξύ τους απευθείας πάνω από ένα κοινό δίκτυο χωρίς να απαιτείται κεντρικός υπολογιστής.

​Το Arduino UNO R4 WiFi περιλαμβάνει έναν ενσωματωμένο CAN controller που υποστηρίζει και τα πρότυπα CAN 2.0A και CAN 2.0B. Τα CAN σήματα είναι διαθέσιμα στο ψηφιακό pin D4 για CAN TX (μετάδοση) και στο ψηφιακό pin D5 για CAN RX (λήψη).

​Είναι πολύ σημαντικό να κατανοήσετε ότι το Arduino UNO R4 WiFi περιλαμβάνει μόνο τον CAN controller και όχι τον CAN transceiver. Ο controller χειρίζεται τη λογική των δεδομένων, αλλά δεν παράγει τα πραγματικά ηλεκτρικά σήματα που χρησιμοποιούνται στο CAN bus. Για να συνδέσετε το Arduino με άλλες CAN συσκευές, πρέπει να χρησιμοποιήσετε ένα εξωτερικό CAN transceiver module (όπως MCP2551 ή TJA1050). Αυτές οι συσκευές μετατρέπουν τα 5V λογικά σήματα του Arduino στα διαφορικά σήματα CAN‑H και CAN‑L που απαιτούνται από το CAN δίκτυο.

Για να επικοινωνήσετε με CAN συσκευές, πρέπει πρώτα να συμπεριλάβετε τη βιβλιοθήκη Arduino_CAN στην αρχή του sketch σας. #include <Arduino_CAN.h>

Στη συνέχεια, αρχικοποιείτε το CAN σύστημα επιλέγοντας bit rate. Αυτό γίνεται με τη συνάρτηση CAN.begin(CanBitRate rate). Το bit rate πρέπει να ταιριάζει με την ταχύτητα που χρησιμοποιούν και οι υπόλοιπες συσκευές στο CAN bus. Συνήθεις επιλογές είναι 125 kbps, 250 kbps, 500 kbps και 1 Mbps.

CAN.begin(CanBitRate::BR_125k); // sets the bit rate to 125 kbps
CAN.begin(CanBitRate::BR_250k); // sets the bit rate to 250 kbps
CAN.begin(CanBitRate::BR_500k); // sets the bit rate to 500 kbps
CAN.begin(CanBitRate::BR_1000k); // sets the bit rate to 1 Mbps

Για να στείλετε ένα CAN μήνυμα, θα πρέπει πρώτα δημιουργείτε ένα αντικείμενο CAN message. Το μήνυμα περιλαμβάνει έναν αναγνωριστικό αριθμό (CAN ID), το μέγεθος των δεδομένων και τα ίδια τα δεδομένα. Αφού προετοιμάσετε το μήνυμα, το στέλνετε με τη συνάρτηση CAN.write().

Αν έχετε χρησιμοποιήσει στο παρελθόν ένα Arduino UNO R3, θα αναγνωρίσετε αμέσως την 6‑pin ICSP (In‑Circuit Serial Programming) κεφαλίδα. Ωστόσο, η λειτουργία του έχει αλλάξει πλήρως στο Arduino UNO R4 WiFi.

​Στο Arduino UNO R3, η ICSP κεφαλίδα χρησιμοποιούνταν κυρίως για δύο σκοπούς: το «φλάσαρισμα» του bootloader με χρήση εξωτερικού προγραμματιστή (όπως AVR ISP ή άλλο Arduino που λειτουργεί ως ISP) και την επικοινωνία με SPI συσκευές.

Στο Arduino UNO R4 WiFi, η ICSP κεφαλίδα δεν χρησιμοποιείται πλέον για το φλάσαρισμα του bootloader. Αυτό συμβαίνει επειδή το UNO R4 WiFi χρησιμοποιεί έναν εντελώς διαφορετικό μικροελεγκτή, τον Renesas RA4M1, ο οποίος δεν υποστηρίζει προγραμματισμό μέσω SPI.

Σύμφωνα με το Renesas RA4M1 Hardware User’s Manual, και συγκεκριμένα στην ενότητα που περιγράφει τα “Operating Modes”, αυτός ο μικροελεγκτής υποστηρίζει δύο βασικές μεθόδους προγραμματισμού της flash μνήμης του. Η μία είναι το SCI Boot Mode, που χρησιμοποιεί UART διεπαφή, και η άλλη είναι το USB Boot Mode, που χρησιμοποιεί την ενσωματωμένη USB διεπαφή. Εξαιτίας αυτού, η κλασική μέθοδος ISP μέσω SPI δεν υποστηρίζεται.

​Συνεπώς, η ICSP κεφαλίδα στο Arduino UNO R4 WiFi διατηρείται κυρίως για συμβατότητα με SPI‑βασισμένα shields που λειτουργούν με SPI σήματα που είναι διαθέσιμα σε αυτόν τον σύνδεσμο.

Το Arduino UNO R4 WiFi περιλαμβάνει μια μικρή 2×3 pin κεφαλίδα τοποθετημένη κοντά στο κουμπί RESET. Μπορείτε να χρησιμοποιήσετε αυτή την κεφαλίδα για άμεση πρόσβαση και επαναπρογραμματισμό του ESP32‑S3 module.

Ωστόσο, πρέπει να είστε πολύ προσεκτικοί όταν χρησιμοποιείτε αυτή την κεφαλίδα. Όλα αυτά τα σήματα λειτουργούν στα 3,3 V. Το ESP32‑S3 δεν είναι 5V συμβατό. Αν συνδέσετε κατά λάθος κάποιο από αυτά τα pins σε σήμα 5 V, μπορεί να προκαλέσετε μόνιμη βλάβη στο ESP32‑S3 chip.

Ένα από τα πιο εντυπωσιακά χαρακτηριστικά του Arduino UNO R4 WiFi είναι η ενσωματωμένη μήτρα LED 12×8. Αυτή η μήτρα περιέχει 96 μικρά κόκκινα LEDs διατεταγμένα σε 12 στήλες και 8 σειρές. Μπορείτε να προγραμματίσετε αυτή την οθόνη ώστε να εμφανίζει μοτίβα, εικονίδια, κυλιόμενο κείμενο, κινούμενα σχέδια ή ακόμη και απλά παιχνίδια.

​Και τα 96 LEDs είναι συνδεδεμένα χρησιμοποιώντας μια τεχνική που ονομάζεται Charlieplexing. Το Charlieplexing επιτρέπει τον έλεγχο πολλών LEDs με λιγότερα pins μικροελεγκτή. Λειτουργεί αλλάζοντας προσεκτικά τη διεύθυνση ροής του ρεύματος στα pins, έτσι ώστε κάθε στιγμή να ανάβουν μόνο τα επιθυμητά LEDs. Αυτή η μέθοδος εξοικονομεί πόρους hardware, ενώ ταυτόχρονα σας δίνει πλήρη έλεγχο σε όλη τη μήτρα.

​Για να χρησιμοποιήσετε τη μήτρα LED στο πρόγραμμά σας, πρώτα πρέπει να συμπεριλαμβάνετε τη βιβλιοθήκη Arduino_LED_Matrix στην αρχή του sketch. Στη συνέχεια, δημιουργείτε ένα αντικείμενο που αναπαριστά τη μήτρα LED. Για να εμφανίσετε κάτι στη μήτρα LED, πρέπει να ορίσετε ένα frame. Ένα frame είναι απλώς ένας δισδιάστατος πίνακας αριθμών όπου 1 σημαίνει ότι το LED ανάβει και 0 ότι παραμένει σβηστό.

Για να ξεκινήσει η λειτουργία της LED Matrix, καλείτε τη συνάρτηση begin() μέσα στη setup(). Τέλος, όταν είστε έτοιμοι να εμφανίσετε το σχέδιό σας, απλώς καλείτε τη συνάρτηση renderBitmap() και της περνάτε το frame.

Παράδειγμα που εμφανίζει ένα σχήμα καρδιάς:

#include "Arduino_LED_Matrix.h"
ArduinoLEDMatrix matrix;
byte heart[8][12] = {
{ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
{ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
void setup() {
Serial.begin(115200);
matrix.begin();
}
void loop() {
matrix.renderBitmap(heart, 8, 12);
}

Το Arduino UNO R4 WiFi παρέχει αρκετά power pins, τα οποία χρησιμοποιούνται για την τροφοδοσία της ίδιας της πλακέτας αλλά και για την παροχή ισχύος σε συνδεδεμένους αισθητήρες, modules και άλλα εξωτερικά εξαρτήματα.

​Για να σας βοηθήσει να κατανοήσετε πώς ρέει η ισχύς μέσα στην πλακέτα, το παρακάτω είναι ένα απλοποιημένο block diagram του power tree:

Το VIN pin σας επιτρέπει να τροφοδοτήσετε το Arduino μέσω εξωτερικής πηγής, όπως τροφοδοτικό τοίχου ή πακέτο μπαταριών. Αυτό είναι ιδανικό για αυτόνομα projects που δεν είναι συνδεδεμένα σε υπολογιστή μέσω USB. Το εύρος τάσης εισόδου για το VIN είναι συνήθως 6 V έως 24 V. Οποιαδήποτε τάση παρέχεται σε αυτό το pin μετασχηματίζεται σε σταθερά 5 V από τον ISL854102FRZ DC‑DC step‑down (buck) converter, που στη συνέχεια τροφοδοτεί τον μικροελεγκτή RA4M1 και τα υπόλοιπα μέρη της πλακέτας. Το pin Vin είναι επίσης συνδεδεμένο με την DC‑jack (barrel plug). ​

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

Αν τροφοδοτείτε την πλακέτα μέσω VIN ή της DC-jack, ο ενσωματωμένος buck converter είναι ενεργός και το 5V pin μπορεί να παρέχει έως περίπου 1,2 A ρεύματος στην πλακέτα και στα συνδεδεμένα περιφερειακά.

Αν τροφοδοτείτε την πλακέτα μέσω της USB‑C θύρας, παρακάμπτετε πλήρως τον buck converter. Σε αυτή την περίπτωση, το μέγιστο διαθέσιμο ρεύμα εξαρτάται από την πηγή USB, όπως ένας υπολογιστής ή ένα τροφοδοτικό τοίχου, και μπορεί να φτάσει μέχρι περίπου 2 A χωρίς να προκαλέσει ζημιά στην πλακέτα.

​Αν το project σας περιλαμβάνει εξαρτήματα που τραβούν μεγάλες εντάσεις ρεύματος, όπως servo motors, είναι προτιμότερο να τροφοδοτείτε αυτά τα εξαρτήματα από ξεχωριστό εξωτερικό τροφοδοτικό παρά να βασίζεστε στο 5V pin του Arduino.

Σημείωση: Είναι επίσης σημαντικό να έχετε υπόψη ότι όταν η πλακέτα τροφοδοτείται μέσω USB, η τάση στο 5V pin είναι λίγο χαμηλότερη, τυπικά γύρω στα 4,7 V, λόγω της πτώσης τάσης πάνω σε μια Schottky προστατευτική δίοδο.

Το 3.3V pin παρέχει σταθεροποιημένη έξοδο 3,3 V. Αυτή η τάση δημιουργείται υποβιβάζοντας τη γραμμή των 5 V μέσω ενός δευτερεύοντος low‑dropout (LDO) σταθεροποιητή SGM2205. Η γραμμή 3,3 V τροφοδοτεί το ενσωματωμένο ESP32‑S3 Wi‑Fi module, τον Qwiic connector και λειτουργεί ως τάση αναφοράς για τους 3,3 V αισθητήρες σας. Πρέπει να προσέχετε να μην υπερφορτώσετε αυτό το pin. Το ESP32‑S3 παρουσιάζει «ριπές» κατανάλωσης ρεύματος όταν μεταδίδει WiFi σήματα. Αν συνδέσετε εξωτερικές συσκευές που τραβούν πολύ ρεύμα από το 3.3V pin ενώ το WiFi είναι ενεργό, η τάση μπορεί να πέσει, οδηγώντας σε πτώση τάση του ESP32 και αστάθεια στη σύνδεση.

​Το Arduino UNO R4 WiFi εισάγει δύο pins που δεν υπήρχαν στις προηγούμενες UNO πλακέτες: το OFF pin και το VRTC pin. Αυτά σας δίνουν περισσότερο έλεγχο στον τρόπο με τον οποίο η πλακέτα διαχειρίζεται την ισχύ και τη διατήρηση του χρόνου.

Το OFF pin είναι ένα pin ελέγχου τερματισμού. Είναι active-LOW που σημαίνει ότι όταν συνδέσετε το OFF pin στη γείωση (GND), ο ενσωματωμένος 5V buck converter απενεργοποιείται και η πλακέτα σβήνει.

Αυτό το χαρακτηριστικό είναι πολύ χρήσιμο σε projects χαμηλής κατανάλωσης, όπως απομακρυσμένα συστήματα παρακολούθησης περιβάλλοντος που λειτουργούν με μπαταρίες. Για παράδειγμα, ένα κύκλωμα χρονιστή χαμηλής κατανάλωσης θα μπορούσε να τραβήξει το OFF pin σε LOW για να κλείσει πλήρως την πλακέτα για μερικές ώρες. Αργότερα, ο χρονιστής θα μπορούσε να «αφήσει» το pin, ενεργοποιώντας το σύστημα για όσο χρειάζεται ώστε να πάρει μετρήσεις αισθητήρων, να στείλει δεδομένα μέσω WiFi και να σβήσει ξανά. Χρησιμοποιώντας αυτή τη μέθοδο, μπορείτε να επεκτείνετε τη διάρκεια ζωής της μπαταρίας από λίγες ημέρες σε αρκετούς μήνες.

Είναι σημαντικό να θυμάστε ότι το OFF pin λειτουργεί μόνο όταν η πλακέτα τροφοδοτείται μέσω του VIN pin ή του DC-jack. Αν η πλακέτα τροφοδοτείται από USB‑C, η γραμμή των 5 V προέρχεται απευθείας από την USB πηγή, παρακάμπτοντας τον buck converter. Σε αυτή την περίπτωση, το OFF pin δεν έχει καμία επίδραση.

Το VRTC pin σχετίζεται με το ενσωματωμένο Real Time Clock (RTC) της πλακέτας. Το Arduino UNO R4 WiFi περιλαμβάνει έναν εσωτερικό RTC που κρατά την τρέχουσα ώρα. Αυτό σημαίνει ότι δεν χρειάζεται να συνδέετε εξωτερικό RTC module, όπως το DS3231, για projects καταγραφής δεδομένων. Όσο η βασική τροφοδοσία – είτε USB είτε VIN – είναι συνδεδεμένη, ο RTC λειτουργεί κανονικά. Ωστόσο, αν αφαιρεθεί η βασική τροφοδοσία, ο RTC συνήθως θα σταματούσε. Για να το αποτρέψει αυτό, η πλακέτα παρέχει το VRTC pin κοντά στο DC-jack. Συνδέοντας μια μικρή εφεδρική πηγή ισχύος, όπως μια μπαταρία τύπου κέρματος CR2032 ή supercapacitor, στο VRTC pin, μπορείτε να διατηρείτε τον RTC σε λειτουργία ακόμη και όταν αφαιρείται η κύρια τροφοδοσία. Το VRTC pin δέχεται τάση μεταξύ 1,6 V και 3,6 V.