ESP-32 Lora utilise toutes les interfaces série

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.

Esp-32Projets pour les débutants

5 commentaires

Thorsten

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

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

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

Werner

Sehr interessanter Beitrag über die seriellen Schnittstellen. Weiter so.

Neidhard

Neidhard

Ich finde es super das der ESP32 hier oft gezeigt wird. Weiter so :)

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi