Mises à jour du 8/10/2024, fixe Tentative Iterator si la connexion n'est pas établie
Émetteurs-récepteurs EBYTE
Cette bibliothèque est destinée à être utilisée avec des émetteurs-récepteurs EBYTE de type UART (E44-TTL-100 par exemple), de petites unités sans fil pour MCU telles que Teensy et Arduino. Cette bibliothèque permet aux utilisateurs de programmer les paramètres de fonctionnement et d'envoyer et de recevoir des données. Cette entreprise fabrique plusieurs modules avec différentes capacités, mais la plupart des #Defines ici devraient être compatibles avec eux, toutes les constantes ont été extraites de plusieurs fiches techniques et répertoriées en binaire, car c'est ainsi que la fiche technique représentait chaque paramètre. Espérons que les modifications ou ajouts aux constantes peuvent être une question de copier les constantes de la fiche technique directement dans les #Defines. L'utilisation de cette bibliothèque consomme environ 970 octets.
Vous n'avez vraiment besoin que de cette bibliothèque pour programmer ces unités Ebyte.
Pour lire les structures de données, vous pouvez appeler la méthode ReadBytes directement sur l'objet série d'Ebyte:
Eserial.readbytes ((uint8_t *) & mydata, (uint8_t) sizeof (mydata));
Pour écrire des structures de données, vous pouvez appeler la méthode d'écriture directement sur l'objet série d'Ebyte
ESerial.write ((uint8_t *) & mydata, (uint8_t) sizeof (mydata));
EBYTE Model numbers (only a partial list shown) Old model number scheme E30-TTL-100,E30-490T20D, E31-TTL-100, E32-TTL-100, E32-TTL-500, E32-TTL-1W, E41-TTL-100, E41-TTL-100, E44-TTL-100, E44-TTL-500, E44-TTL-1W, E50-TTL-100, E50-TTL-500, E51-TTL-100, E51-TTL-500, E51-TTL-1W
New model number scheme E22-900T22S, E22-230T22S, E22-400T22S, E22-230T30S, E22-400T30S, E22-900T30S, E30-433T20S3, E30-170T20D, E30-170T27D, E30-780T20S, E30-868T20S, E30-868T20D, E30-915T20D, E30-490T20D, E30-433T20S, E30-433T20D, E30-915T20S, E30-490T20S, E31-433T30S, E31-433T17S3, E31-230T33D, E31-433T17S3, E31-230T33D, E31-43T17D E31-230T27D, E31-433T17S, E31-433T17D, E31-433T27D, E31-433T30D, E31-433T3D, E32-4333T20DC, E32-433T20, E32-4333T20 E32-433T30D, E32-433T30S, E32-868T20D, E32-868T20S, E32-868T30D, E32-868T30S, E32-915T20D, E32-915T30S, E32-915T30D, E32-915T30S, E32-915T30D, E32-915T30S, E32-170T30D, E32-400T20S
Remarque: Consultez le site Web EBYTE pour vous assurer que le module sélectionné prend en charge les communications UART, certains modules sont uniquement SPI.
Voici une vidéo YouTube sur l'utilisation de la bibliothèque: https://youtu.be/hmjarkgucfa
Connexion du module
Module MCU Description
- Mo toute broche numérique * PIN pour contrôler les modes de travail / programme
- M1 Toute broche numérique * PIN pour contrôler les modes de travail / programme
- Rx Toute broche numérique * à la broche MCU TX (le module transmet à MCU, donc MCU doit recevoir des données du module
- Tx Toute broche numérique * à la broche MCU RX (le module transmet à MCU, donc MCU doit recevoir des données du module
- Aux toute broche numérique pour indiquer quand une opération est terminée (faible est occupé, est élevé) (vous pouvez omettre avec -1, mais le temps de récupération fixe utilisé et peut ne pas être assez long pour terminer l'opération)
- VCC + 3V3 ou 5V0, notez que les unités peuvent se réchauffer avec 5v0 et consommer plus de puissance
- VCC Ground Ground doit être commun au module et au MCU
notes
- Attention dans la connexion à Arduino PIN 0 et 1, car ces broches sont destinées à la connexion USB à PC, vous ne pouvez donc pas avoir l'EBYTE connecté lors de la programmation. Je recommande de ne pas utiliser des épingles Arduino 0 et 1
- Les lignes de signal pour ces unités sont de 3v3 mais sont tolérantes à 5 volts, mais 5 volts peuvent entraîner des défaillances de communication. Si vous utilisez un MCU à 5 volts comme Arduino, vous devrez peut-être effectuer ce qui suit. A) Vous pouvez avoir besoin d'un traction 4k7-10k vers RX et AUX PINS (peut-être TX) Si vous utilisez et Arduino B) Si vous utilisez un Arduino, vous pouvez avoir besoin d'une résistance de série 4K7 entre MCU TX et l'émetteur-récepteur RX.
- Dans certaines de mes applications, je n'avais pas assez de broches numériques pour connecter la broche AUX. Pas de soucis (il suffit de passer -1 dans la liste d'arguments dans le code de création de l'objet). La bibliothèque a un délai intégré pour fournir un retard approprié pour laisser la transmission terminer - vous pouvez avoir à expérimenter le montant.
- Les broches en série pour la connexion dépendent du MCU, Teensy 3.2 Par exemple: Serial1 sont Rx = 0, Tx = 1, Serial2 Rx = 9, Tx = 10, Serial3 Rx = 7, Tx = 8. Arduino peut être la plupart des broches en série utilisant des logiciels (MCU_RX_PIN, MCU_TX_PIN), sauf les broches 0 et 1 comme celles-ci sont pour l'utilisation USB
- Certains MCU tels que les teensy et ESP32 ne permettent pas d'utiliser des logiciels pour créer un port de communication. Pas de soucis, il suffit de câbler le dur à l'EBTYE à un port UART dédié (broche 0 et broche 1 sur un adolescente 3.2 pour Serial1.
Site Web des fabricants
http://www.ebyte.com/en/ module Exemple Cette bibliothèque est destinée à être utilisée avec http://www.ebyte.com/en/product-view-news.aspx?id=174
Utilisation du code général
- Créer un objet série
- Créer un objet EByte qui utilise l'objet série
- commencer l'objet en série
- init () l'objet ebyte
- Définir les paramètres (facultatif mais requis si l'expéditeur et le récepteur sont différents)
- Envoyer ou écouter des données envoyées (octet unique) ou créer et envoyer une structure de données
Conseils sur l'utilisation
Pour la meilleure gamme:
- La fiche technique indique que les meilleurs résultats sont avec les antennes 2Meters hors du sol
- Ligne de vue idéale, mais mes tests personnels, la transmission réussissent encore avec quelques obstructions
- Les débits de données à air lent peuvent améliorer la plage, mais en raison du temps de transmission plus long, la fréquence à laquelle les données peuvent être envoyées seront sacrifiées
- Envisagez des antennes à gain élevé (peut être achetée auprès du fabricant) Voir leur site Web pour plus de détails
- La fiche technique indique pour la plage maximale, alimentez les unités avec 5,0 volts (gardez 3v3 sur les lignes de signal). J'ai personnellement trouvé peu de plage différente avec une tension d'alimentation plus élevée
- La fiche technique indique pour la plage maximale, définissez le débit de données de l'air sur 2,4 bps. J'ai personnellement trouvé peu de plage différente avec de faibles débits de données, et les débits de données faibles peuvent limiter la fréquence à laquelle vous pouvez envoyer des données.
Paquets de transmission de données
- Cette bibliothèque a une méthode pour envoyer des octets uniques, mais si plus de données doivent être envoyées, créez une structure de données et envoyez la structure de données à l'aide de la méthode Librarys SendStruct (& struct, sizeof (struct)). Remarque passez par référence donc incluez le nom de la structure & avant
- Encore une fois, les débits de données lents prennent plus de temps, vous devrez expérimenter la plage de débit de données de l'air idéal basée sur la taille des données
- Si vous avez besoin d'envoyer des données à l'aide d'une structure entre différents modifications de MCU sur la façon dont chaque pack de processeur sera probablement différent. Si vous obtenez des données corrompues à l'extrémité de reçue, il existe des moyens de forcer le compilateur à ne pas optimiser l'emballage de structure - je n'ai pas encore fait fonctionner. Ce qui a fonctionné pour moi, c'est d'utiliser une bibliothèque qui crée la jambe de force et les poignées envoyées. Découvrez EasyTransfer.h (Google It et obtenez votre auteur préféré). Dans ces libs, vous utiliserez leur méthode d'envoi et d'obtention de structures (il y a des libs matériels et logiciels, utilisez en conséquence. Ce qui signifie que vous pouvez utiliser cette bibliothèque pour programmer et gérer les paramètres, mais utiliser EasyTransfer pour gérer l'envoi de données via les lignes de série que l'Ebyte utilise. Lib.
Débogage
- Si votre module sans fil renvoie tous les 0 pour la méthode printParameters () ou tout simplement le modèle et que vous utilisez du matériel en série et que vous utilisez un ESP32, assurez-vous que vous utilisez une définition en série complète dans la déclaration début (): comme ceci
#include <hardwareserial.h>
#define serial_0 serial2
Serial_0.begin (9600, serial_8n1, 16, 17);
- Si votre module sans fil renvoie tous les 0 pour la méthode printParameters (), assurez-vous que votre câblage est correct et fonctionne, MCU RX doit se connecter à Ebyte TX et vice versa. Assurez-vous également que M0, M0 et AUX sont connectés à des ports numériques valides. La plupart des problèmes sont dus à des connexions de ligne de données incorrectes
- Si votre module sans fil renvoie tous les 0 pour la méthode printParameters () et que vous êtes sûr que votre câblage est correct, votre module peut être lent à réagir au changement de pinmode effectué lors d'un changement de mode. La fiche technique dit que le retard de 2 ms est nécessaire, mais j'ai trouvé que 10 ms sont plus fiables. Avec certaines unités, encore plus de temps est nécessaire. La par défaut de la bibliothèque est de 50 ms, mais augmentez cela dans le fichier .h si les paramètres ne sont pas correctement lus.
- Si votre module sans fil renvoie tous les 0 pour la méthode printParameters (), et que vous êtes sûr que votre câblage est correct et votre MCU est 5v0, vous devrez peut-être ajouter des diviseurs de tension sur la ligne MXU TX et AUX. Ces modules peuvent être capricieux si un signal 5v0 y est envoyé. J'obtiens des résultats très fiables lors de l'alimentation du module avec une alimentation 3V3 distincte. J'utilise généralement des convertisseurs de mâle ou des régulateurs linéaires.
- Si vous utilisez un MCU 5v0, vous avez peut-être besoin de résistances série sur la ligne MCU TX à la ligne Ebyte RX et éventuellement les lignes M0 et M1. Ces unités Ebyte sont censées être tolérantes de 5 volts, mais mieux vaut prévenir que désolé. MFG affirme également que les tractions 4K7 peuvent être nécessaires sur la ligne MCU TX et AUX. J'ai utilisé ces émetteurs-récepteurs sur les UNO, les méga et les nano sans résistances et tout allait bien. J'avais un cas où un nano n'a pas travaillé avec ces émetteurs-récepteurs et avait besoin d'une puissance étrange.
- Si vous utilisez leurs unités 1W (sortie de 30 dB), alimentez l'unité séparément de l'alimentation embarquée du MCU. Le tirage au courant peut dépasser la note embarquée, ce qui a entraîné la destruction du MCU. J'ai détruit le régulateur de tension embarqué sur un nano lorsqu'il essaie d'alimenter une unité 1W.
- Si l'émetteur et le récepteur sont différents MCU (Arduino <-> Teensy), l'envoi de structures de données pose un pack différemment, quels que soient les types de données de structure. Cela est dû à la façon dont un processeur 8 bits et un processeur 32 bits gèrent le processus d'emballage. L'option 1) consiste à utiliser EasTransfer Lib. J'utilise cette lib et cela fonctionne bien. Option 2) Essayez l'attribut variable __attribute __ ((emballé)). Option 3) et ne riez pas, mais si vous envoyez un flotteur en multipliant un flotteur à 100 (et refonte à un int), divisez cette valeur de 100 à l'extrémité de réception (refonte à un flotteur)
- Si vous semblez obtenir des données corrompues de .printParameters, essayez d'ajouter #include "Avr / io.h" à votre programme .ino
- Si vous alimentez vos modules EByte à partir d'une source d'alimentation séparée, assurez-vous que tous les motifs sont connectés