Files
Web-NibblePoker/content/items/circuitpython-ebyte-e32.json

483 lines
23 KiB
JSON

{
"strings": {
"en": {
"meta.title": "CircuitPython - Ebyte E32 Driver",
"meta.description": "CircuitPython driver for Ebyte's E32 UART LoRa modules that use the SX1278/SX1276 chipsets.",
"article.subtitle": "<a href=\"https://github.com/aziascreations/CircuitPython-Ebyte-E32\"><i class=\"fab fa-github\"></i> View on GitHub</a>",
"intro.title": "Introduction",
"intro.p1": "This project is a simple driver for CircuitPython that allows you to easily interact with Ebyte's E32 series of LoRa modules.",
"features.title": "Features",
"features.1": "Supports all standard E32 UART modules.",
"features.2": "Extra support on a per-frequency and per-power basis:",
"features.2.1": "More descriptive constants for TX power.",
"features.2.2": "<s>Maximum packet size calculators.</s> (TODO)",
"features.2.3": "Entirely optional via separate modules.",
"features.3": "Minified versions for devices with tiny storage space:",
"features.3.1": "~75% smaller for <code class=\"code\">.py</code> files",
"features.3.2": "~5% smaller for <code class=\"code\">.mpy</code> files <i>(Due to shortened local variables, mostly)</i>",
"limitations.title": "Limitations",
"limitations.1": "No built-in packet size limit:",
"limitations.1.1": "Wildly different between frequencies & operating parameters.",
"limitations.1.2": "Not documented clearly enough in LoRA and LoRaWAN documentation.",
"limitations.2": "No built-in protocol:",
"limitations.2.1": "All LoRa packets are glued back-to-back when received.",
"limitations.2.2": "No LoraWAN support",
"limitations.3": "Missing support for some modules:",
"limitations.3.1": "Modules with <code class=\"code\">170</code>, <code class=\"code\">400</code> and <code class=\"code\">900</code> prefix. (Will improve overtime)",
"doc.title": "Documentation",
"doc.p1": "The entire documentation for this project can be found on Github.<br>The datasheets for all the E32 modules can also be found on \"<a href=\"https://files.nibblepoker.lu/datasheets/ebyte/e32/\">files.nibblepoker.lu</a>\".",
"usage.title": "Usage",
"usage.p1": "Many usage examples can be found on GitHub in the \"<a href=\"https://github.com/aziascreations/CircuitPython-Ebyte-E32/tree/master/examples\">examples/</a>\" subfolder.<br>The examples cover all modes of operations for the modules, except for the <i>wake-up</i> and <i>power-saving</i> modes.",
"usage.p2": "However, if you want to get a feel on how to use it, I invite you to read the code below taken from the \"<a href=\"https://github.com/aziascreations/CircuitPython-Ebyte-E32/blob/master/examples/transmit_fixed/sender_unicast.py\">transmit_fixed/sender_unicast.py</a>\" example that is used to send a message in fixed mode to a specific device.",
"demo.title": "<abbr title=\"In-Real-Life\">IRL</abbr>&nbsp;Tests",
"demo.p1": "Some tests were conducted using this library with an <i>E32 443T20D</i> module transmitting at <i>10 mW / 10dBm</i> and <i>2.4 kbps</i>.",
"demo.p2": "The transmitting side used a handmade ??? antenna held up ~8-10 m above ground-level, and the receiving one was a basic ??? from a Baofeng radio held up ~2-3 m above the ground with the help of a wooden stick.",
"demo.p3": "The maximum observed range was around <i>1.7km / 1.05mi</i> with a clear <abbr title=\"Line-of-Sight\">LOS</abbr>.",
"demo.p4": "It could have probably been bigger if we hadn't ran out of beers and were ready to walk >8km to the next unobstructed point.",
"downloads.title": "Downloads",
"license.title": "License",
"links.title": "Links"
},
"fr": {
"meta.title": "CircuitPython - Driver Ebyte E32",
"meta.description": "Driver CircuitPython pour les modules sérial LoRa E32 de Ebyte tournant sous les chipset SX1278/SX1276.",
"article.subtitle": "<a href=\"https://github.com/aziascreations/CircuitPython-Ebyte-E32\"><i class=\"fab fa-github\"></i> Voir sur GitHub</a>",
"intro.title": "Introduction",
"intro.p1": "Ce projet est un driver qui vous permet d'interagir avec la série de modules LoRa E32 d'Ebyte dans CircuitPython.",
"features.title": "Fonctionnalités",
"features.1": "Prend en charge tous les modules E32 UART standards.",
"features.2": "Support supplémentaire en fonction de la fréquence et de la puissance :",
"features.2.1": "Constantes pour la puissance d'émission.",
"features.2.2": "<s>Calculatrices de taille de paquet maximale.</s> (À FAIRE)",
"features.2.3": "Entièrement facultatif via des modules séparés.",
"features.3": "Versions minifiées pour les appareils avec un espace de stockage réduit :",
"features.3.1": "~75 % plus petites pour les fichiers <code class=\"code\">.py</code>",
"features.3.2": "~5 % plus petites pour les fichiers <code class=\"code\">.mpy</code>",
"limitations.title": "Limitations",
"limitations.1": "Aucune limitation de taille de paquet intégrée :",
"limitations.1.1": "Varie grandement entre les fréquences et les paramètres d'utilisation.",
"limitations.1.2": "Pas suffisamment documentée dans les spécifications techniques de LoRA et LoRaWAN.",
"limitations.2": "Aucun protocole intégré :",
"limitations.2.1": "Tous les paquets LoRa sont collés les uns aux autres dans un buffer lors de la réception.",
"limitations.2.2": "Aucun support pour LoRaWAN. (Limitation du module)",
"limitations.3": "Support avancé manquant pour certains modules :",
"limitations.3.1": "Modules avec les préfixes <code class=\"code\">170</code>, <code class=\"code\">400</code> ou <code class=\"code\">900</code>. (S'améliorera avec le temps)",
"doc.title": "Documentation",
"doc.p1": "Toute la documentation de ce projet est disponible sur Github.<br>Les fiches techniques de tous les modules E32 peuvent également être trouvées sur \"<a href=\"https://files.nibblepoker.lu/datasheets/ebyte/e32/\">files.nibblepoker.lu</a>\".",
"usage.title": "Utilisation",
"usage.p1": "De nombreux exemples d'utilisation peuvent être trouvés sur GitHub dans le sous-dossier \"<a href=\"https://github.com/aziascreations/CircuitPython-Ebyte-E32/tree/master/examples\">examples/</a>\" du projet.<br>Les exemples couvrent tous les modes de fonctionnement des modules, à l'exception des modes <i>wake-up</i> et <i>power-saving</i>.",
"usage.p2": "Cependant, si vous souhaitez avoir un aperçu rapide, je vous invite à lire le code ci-dessous extrait de l'exemple \"<a href=\"https://github.com/aziascreations/CircuitPython-Ebyte-E32/blob/master/examples/transmit_fixed/sender_unicast.py\">transmit_fixed/sender_unicast.py</a>\" qui est utilisé pour envoyer un message en mode fixe à un récipient spécifique.",
"demo.title": "Essais&nbsp;<abbr title=\"dans la vraie vie\">IRL</abbr> ",
"demo.p1": "Des tests ont été effectués avec cette librairie en utilisant un module <i>E32 443T20D</i> émettant à <i>10 mW / 10 dBm</i> et <i>2,4 kbps</i>.",
"demo.p3": "La portée maximale observée était d'environ <i>1,7 km / 1,05 mi</i> avec une ligne de visée dégagée (<abbr title=\"Line-of-Sight\">LOS</abbr>).",
"demo.p4": "Elle aurait probablement pu être plus grande si nous n'avions pas épuisé nos réserves de bières sur la première partie de la marche, et si nous étions prêts à marcher plus de 8 km jusqu'au prochain point dégagé.\n",
"downloads.title": "Télechargements",
"license.title": "Licence",
"links.title": "Liens"
}
},
"metadata": {
"template": "generic-project-readme",
"head": {
"title": "meta.title",
"description": "meta.description"
},
"opengraph": {
"title": "meta.title",
"description": "meta.description",
"type": null,
"url": null,
"image": "/resources/NibblePoker/images/content/circuitpython-ebyte-e32/main.png",
"image_type": null
},
"article": {
"icon": "fab fa-python",
"title": "meta.title",
"subtitle": "article.subtitle",
"tags": ["electronic", "python" ,"circuitpython", "lora", "library"]
}
},
"elements": [
{"type": "h1", "content": "intro.title"},
{"type": "paragraph", "indent": 2, "content": "intro.p1"},
{"type": "h1", "content": "features.title"},
{
"type": "paragraph", "indent": 2,
"parts": [
{"type": "raw", "content": "●&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "features.1"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "●&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "features.2"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "features.2.1"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "features.2.2"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "features.2.3"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "●&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "features.3"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "features.3.1"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "features.3.2"},
{"type": "raw", "content": "<br>", "localize": false}
]
},
{"type": "h1", "content": "limitations.title"},
{
"type": "paragraph", "indent": 2,
"parts": [
{"type": "raw", "content": "●&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "limitations.1"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "limitations.1.1"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "limitations.1.2"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "●&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "limitations.2"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "limitations.2.1"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "limitations.2.2"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "●&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "limitations.3"},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "&nbsp;&nbsp;&nbsp;∘&nbsp;&nbsp;", "localize": false},
{"type": "raw", "content": "limitations.3.1"},
{"type": "raw", "content": "<br>", "localize": false}
]
},
{"type": "h1", "content": "doc.title"},
{"type": "paragraph", "indent": 2, "content": "doc.p1"},
{"type": "h1", "content": "usage.title"},
{"type": "paragraph", "indent": 2, "content": "usage.p1"},
{"type": "paragraph", "indent": 2, "content": "usage.p2"},
{
"type": "container", "padding": 2, "modifiers": ["pb-0"],
"parts": [
{
"type": "code", "indent": 2,
"modifiers": ["horizontal-scroll-auto", "code-block"],
"language": "python", "copyable": true,
"code": [
"import board",
"import time",
"",
"import ebyte_e32",
"",
"PIN_M0 = board.IO13",
"PIN_M1 = board.IO12",
"PIN_RXD = board.IO11 # Pin marked as RX on the module",
"PIN_TXD = board.IO10 # Pin marked as TX on the module",
"PIN_AUX = board.IO9",
"",
"e32 = ebyte_e32.E32Device(PIN_M0, PIN_M1, PIN_AUX, PIN_TXD, PIN_RXD, address=0xBEEF, channel=4)",
"",
"# Switching to fixed transmission mode.",
"e32.tx_mode = ebyte_e32.TransmissionMode.TRANSMISSION_FIXED",
"",
"# Switching to mode 0. (Normal mode)",
"e32.mode = ebyte_e32.Modes.MODE_NORMAL",
"",
"# Message content:",
"# * Receiver's address: 0x1337 (b'\\13\\x37')",
"# * Receiver's channel: 4 (b'\\x04')",
"# * Message: b'Hello World !'",
"message = b'\\x13\\x37\\x04Hello World !'",
"",
"# Sending message with helper method",
"e32.send(message)",
"",
"# The message may be truncated at specific lengths depending on the frequencies used.",
"# Please check the documentation for more information !"
]
}
]
},
{"type": "h1", "content": "demo.title"},
{"type": "paragraph", "indent": 2, "content": "demo.p1"},
{"type": "paragraph", "indent": 2, "content": "demo.p3"},
{"type": "paragraph", "indent": 2, "content": "demo.p4"},
{
"type": "container", "padding": 2,
"modifiers": ["pb-0"],
"parts": [
{
"type": "gallery",
"modifiers": [],
"images": [
"/resources/NibblePoker/images/content/circuitpython-ebyte-e32/demo-01.jpg",
"/resources/NibblePoker/images/content/circuitpython-ebyte-e32/demo-02.jpg",
"/resources/NibblePoker/images/content/circuitpython-ebyte-e32/demo-03.jpg",
"/resources/NibblePoker/images/content/circuitpython-ebyte-e32/demo-04.jpg"
]
}
]
},
{"type": "h1", "content": "downloads.title"},
{
"type": "container", "padding": 2, "modifiers": ["pb-0"],
"parts": [
{
"type": "table", "modifiers": ["stylish", "auto-cell-padding", "v-center-cells"],
"head": [
{"type": "raw", "content": "content.commons.version"},
{"type": "raw", "content": "<code class=\"code\">.py</code>", "localize": false},
{"type": "raw", "content": "<code class=\"code\">.min.py</code>", "localize": false},
{"type": "raw", "content": "<code class=\"code\">.mpy</code>", "localize": false},
{"type": "raw", "content": "<code class=\"code\">.min.mpy</code>", "localize": false}
],
"body": [[
{"type": "raw", "content": "v0.8.0", "localize": false},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin", "download-primary"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.8.0/nibblepoker-circuitpython-e32-driver_v0.8.0_py.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;10.42 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.8.0/nibblepoker-circuitpython-e32-driver_v0.8.0_py-min.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;4.79 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin", "download-primary"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.8.0/nibblepoker-circuitpython-e32-driver_v0.8.0_mpy-8.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;6.25 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.8.0/nibblepoker-circuitpython-e32-driver_v0.8.0_mpy-8-min.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;5.99 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
}
],[
{"type": "raw", "content": "v0.7.0", "localize": false},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.7.0/nibblepoker-circuitpython-e32-driver_v0.7.0_py.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;10.51 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.7.0/nibblepoker-circuitpython-e32-driver_v0.7.0_py-min.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;4.79 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.7.0/nibblepoker-circuitpython-e32-driver_v0.7.0_mpy-8.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;6.26 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.7.0/nibblepoker-circuitpython-e32-driver_v0.7.0_mpy-8-min.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;5.99 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
}
],[
{"type": "raw", "content": "v0.6.0", "localize": false},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.6.0/nibblepoker-circuitpython-e32-driver_0.6.0_py.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;10.39 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.6.0/nibblepoker-circuitpython-e32-driver_0.6.0_py-min.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;4.62 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.6.0/nibblepoker-circuitpython-e32-driver_0.6.0_mpy-8.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;6.10 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.6.0/nibblepoker-circuitpython-e32-driver_0.6.0_mpy-8-min.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;5.83 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
}
],[
{"type": "raw", "content": "v0.4.0", "localize": false},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.4.0/nibblepoker-circuitpython-e32-driver_0.4.0_py.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;19.96 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.4.0/nibblepoker-circuitpython-e32-driver_0.4.0_py-min.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;4.18 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.4.0/nibblepoker-circuitpython-e32-driver_0.4.0_mpy-8.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;5.27 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
},
{
"type": "raw",
"parts": [
{
"type": "button", "modifiers": ["thin"],
"link": "https://files.nibblepoker.lu/downloads/CircuitPython-Ebyte-E32/0.4.0/nibblepoker-circuitpython-e32-driver_0.4.0_mpy-8-min.zip",
"content": "<span class=\"text-monospace\"><i class=\"fad fa-file-archive\"></i>&nbsp;&nbsp;5.04 KiB</span><i class=\"fas fa-download ml-s\"></i>",
"localize": false
}
]
}
]]
}
]
},
{"type": "h1", "content": "license.title"},
{
"type": "paragraph", "indent": 2, "content": "content.commons.license.mit.single",
"link": "https://github.com/aziascreations/CircuitPython-Ebyte-E32/blob/master/LICENSE"
},
{"type": "h1", "content": "links.title"},
{
"type": "paragraph",
"indent": 2,
"parts": [
{"type": "raw", "content": "●&nbsp;&nbsp;", "localize": false},
{
"type": "raw", "link": "https://github.com/aziascreations/CircuitPython-Ebyte-E32",
"parts": [
{"type": "raw", "content": "content.commons.github"}
]
},
{"type": "raw", "content": "<br>", "localize": false},
{"type": "raw", "content": "●&nbsp;&nbsp;", "localize": false},
{
"type": "raw", "link": "https://aziascreations.github.io/CircuitPython-Ebyte-E32/",
"parts": [
{"type": "raw", "content": "content.commons.doc.online"}
]
}
]
}
]
}