Bienvenue dans la nouvelle version de notre blog.Cette fois, toutes les interfaces en série du module ESP - 32 devraient être utilisées.
Il existe trois interfaces matérielles série esp32.Les ports série standard au niveau des connexions gpio3 (RX) et gpio1 (TX) sont utilisés en série pour communiquer avec arduino IDE et pour être connectés au cp2102.
Vous pouvez également utiliser les deux autres interfaces matérielles sérielles en ajoutant une série de matériel de bibliothèque qui fait partie du paquet matériel de plaque de Roland esp32.Mais il y a un problème majeur.Les interfaces série 1 sont habituellement reliées aux pieds de tubes gpio9 (RX) et gpio10 (TX), qui sont utilisés sur les plaques Lora pour commander la mémoire flash et qui ne sont pas accessibles.Par conséquent, l 'utilisation de ce port entraîne directement l' effondrement de l 'application.L 'interface série 2 est généralement reliée à des broches gpio16 (RX) et gpio17 (TX).Il peut être utilisé sur une plaque de Roland, mais l 'affichage est encore sombre lorsque le gpio16 est connecté à la Réinitialisation de l' affichage OLED.
La solution à ce problème est simple.La puce esp32 peut connecter une interface matérielle série (UART) à presque n 'importe quelle broche ISO.La fonction begin () de hardwareserial tient compte de ce fait.Cette fonction comporte également trois autres paramètres qui peuvent être utilisés pour déterminer la configuration et l 'attribution des pieds de tube.
Début (9600, Serial - U - 8n1, 12, 13)
Démarre l 'interface matérielle série 2, dont la version interne est de 9 600, avec 8 bits sans vérification de parité et 1 bit d' arrêt à l 'emplacement gpio12 (RX) et gpio13 (TX).Ainsi, les trois interfaces matérielles en série peuvent fonctionner sur tous les pieds de tuyau ISO disponibles.Sur la plaque Lora, ce sont les broches 11, 13, 17, 21, 22 et 23.Les broches 33 à 39 peuvent également être utilisées pour le RX car elles ne peuvent pas être utilisées en tant que sorties.
Les petits exemples ci - dessous transmettent les entrées dans la fenêtre de moniteur à serial2 par l 'intermédiaire de serial1, puis les tests sont effectués par l' intermédiaire de la sortie de la fenêtre de moniteur de retour de serial1.Pour que le programme fonctionne, la sortie TX de serial1 (gpio13) doit être connectée à l 'entrée RX de serial2 (gpio22) et la sortie TX de serial2 doit être connectée à l' entrée RX de serial1 (gpio12).
/ / définition de deux Interfaces Matériel Télécharger(1); Matériel Série 2(2); Vide Set() { Interface de démarrage Télécharger.Allez.(115200); / / en série sur les prises 12 et 13 Télécharger.Allez.(9600,Séquence 8 N1,12,13); / / en série sur les prises 22 et 23 Série 2.Allez.(9600,Séquence 8 N1,22,23); / / publication d 'un avis d' ouverture Télécharger.Imprimer(); Télécharger.Imprimer("Veuillez saisir:); } Vide Run() { Paysage intérieur Date; Nous attendons l 'entrée de la fenêtre de surveillance. Bien que (Télécharger.Disponible()) { / / envoi des données reçues sur serial1 Date = Télécharger.Lire(); Télécharger.Ecrire(Date); } Nous attendons les données de Serial 2. Bien que (Série 2.Disponible()) { / / renvoie les données reçues à serial2 Date = Série 2.Lire(); Série 2.Ecrire(Date); } Nous attendons les données de Serial 1. Bien que (Télécharger.Disponible()) { / / publie les données reçues sur un moniteur Date = Télécharger.Lire(); Télécharger.Ecrire(Date); } }
Tu aimes Bowen aujourd'hui?Ecris - nous ton avis sur cette question.Nous attendons votre réponse.Avant cela, nous vous souhaitons un bon début de semaine.
Votre équipe, AZ.
8 commentaires
Andreas Wolter
@Max: versuchen Sie es bitte mal damit, die ersten drei Zeilen zu entfernen.
So wie es aussieht, müssen die beiden Objekte Serial1 und Serial2 nicht neu instanziiert werden. Wenn ich das teste, wird es ohne Fehler kompiliert. Wenn die Zeilen drin bleiben, erhalte ich den gleichen Fehler. Der Hinweis des Compilers sagt auch deutlich, dass diese Objekte bereits existieren.
Grüße,
Andreas Wolter
AZ-Delivery Blog
Max
Guten Tag,
Ich würde deinen Code sehr gerne für Arduino und ESP32 ausprobieren, leider erscheint eine Fehlermeldung und der ESP32 lässt sich nicht programmieren. kannst du helfen
Danke
ino:2: first defined here ( HardwareSerial Serial1(1); )
ino:3: first defined here ( HardwareSerial Serial2(2); )
Hannes
Only a Warning. If you use Pin12 for serial communication… Let it closed when you are programming new code… You will get problems because this pin also controls the voltage regulator of the flash!
So dont wunder if you get several warnings and Errors when trying to programm the board — when pin12 is active! Get it unconnected … Everything ist right again….
Thorsten
Wieder einmal eine große Hilfe durch einen kleinen Artikel .
Aber da ist noch etwas offen, das ich mir auch nicht ergoogeln kann:
Die Methode begin() hat zwei weitere Parameter. Der vollständige Prototyp lautet:
void begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1, bool invert=false, unsigned long timeout_ms = 20000UL);
Unter “invert” kann ich mir vorstellen, dass halt 0/1 inversen 0/3.3V Pegel haben, soweit kein Problem.
Aber der Timeout lässt offen, ob es sich um Mikrosekunden oder Millisekunden handelt. Oder gar um Bitzeiten, also Baudratenabhängig? Ausserdem – wann und wo wirkt sich das aus? Wenn das die Wartezeit des .read() auf ein char ist kann ich mir meine selbstgestrickte wartemethode mit Serial2.available() sparen.
Peter Freundorfer
Hallo Zusammen,
Erstmal danke für die Anregung zu der HardwareSerial, hat mir sehr geholfen.
Eine Frage hab ich noch, ihr verwendet hier ist data; als Variable, gibt es hierfür einen Grund ( data) ? Oder kann hier jede andere Bezeichnung für die variablen verwendet werden… ich möchte für eine Fehlersuche den Datenaustausch auf einer RS232 mitschreiben und würde hat gerne RX und TX in unterschiedliche Variablen schieben in die Daten sauber getrennt ablegen zu können. Über eine Antwort würde Ichsucht sehr freuen
Andreas
Das hat mir mit wenig Aufwand viel geholfen, auch für den ESP WROOM 32. Ist ein Tool, mit dem man die Funktion der Schnittstellen testen kann und auf dem man gut aufbauen kann. Danke hierfür!
Werner
Sehr interessanter Beitrag über die seriellen Schnittstellen. Weiter so.
Neidhard
Ich finde es super das der ESP32 hier oft gezeigt wird. Weiter so :)