refactor: reorganize landing page — What is it, Quick Start, What can you do
This commit is contained in:
1 file changed
+62
-65
+62
-65
@@ -36,40 +36,81 @@ import Base from "../layouts/Base.astro";
|
|||||||
<section class="py-12 max-w-3xl mx-auto">
|
<section class="py-12 max-w-3xl mx-auto">
|
||||||
<h2 class="font-mono text-2xl font-bold mb-6 text-text">What is it?</h2>
|
<h2 class="font-mono text-2xl font-bold mb-6 text-text">What is it?</h2>
|
||||||
<p class="text-text-muted leading-relaxed mb-4">
|
<p class="text-text-muted leading-relaxed mb-4">
|
||||||
LoRa radios are cheap, long-range, low-power, and everywhere. But using one from a
|
Flash firmware onto a LoRa board once and it becomes a dumb USB radio. It doesn't know or
|
||||||
computer is surprisingly hard. You either run someone else's firmware with someone else's
|
care what protocol you're running — it just moves bytes between the air and your computer.
|
||||||
protocol baked in, or you write your own embedded code from scratch.
|
|
||||||
</p>
|
|
||||||
<p class="text-text-muted leading-relaxed mb-4">
|
|
||||||
DongLoRa takes a different approach. Flash firmware onto a LoRa board once, and from that
|
|
||||||
point on it's a dumb USB radio. It doesn't know or care what protocol you're running. It
|
|
||||||
receives bytes from the air and hands them to your computer. It takes bytes from your
|
|
||||||
computer and puts them on the air. That's all it does.
|
|
||||||
</p>
|
</p>
|
||||||
<p class="text-text-muted leading-relaxed">
|
<p class="text-text-muted leading-relaxed">
|
||||||
Everything else — what those bytes mean, how to route them, what to display, how to respond
|
Everything else — routing, encryption, display, response logic — happens in your code,
|
||||||
— happens in your code, on your computer, in whatever language you want.
|
in Python, Rust, or whatever you want — with the feedback loop of a scripting
|
||||||
|
environment instead of a flash-and-pray embedded workflow.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Architecture -->
|
<hr class="border-border my-4" />
|
||||||
<section class="py-8 max-w-3xl mx-auto">
|
|
||||||
|
<!-- Quick Start -->
|
||||||
|
<section class="py-12 max-w-3xl mx-auto">
|
||||||
|
<h2 class="font-mono text-2xl font-bold mb-6 text-text">Quick Start</h2>
|
||||||
|
<ol class="space-y-6">
|
||||||
|
<li class="flex gap-4">
|
||||||
|
<span class="font-mono text-accent font-bold text-lg shrink-0">1.</span>
|
||||||
|
<div>
|
||||||
|
<p class="font-medium text-text">Flash the firmware</p>
|
||||||
|
<p class="text-sm text-text-muted">
|
||||||
|
Use the <a href="/flash" class="text-accent hover:text-accent-bright">web flasher</a> or
|
||||||
|
flash from the command line.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="flex gap-4">
|
||||||
|
<span class="font-mono text-accent font-bold text-lg shrink-0">2.</span>
|
||||||
|
<div>
|
||||||
|
<p class="font-medium text-text">Install a client library</p>
|
||||||
|
<pre
|
||||||
|
class="font-mono text-sm text-accent bg-bg-card border border-border px-4 py-2 rounded mt-2"
|
||||||
|
>pip install donglora</pre>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="flex gap-4">
|
||||||
|
<span class="font-mono text-accent font-bold text-lg shrink-0">3.</span>
|
||||||
|
<div>
|
||||||
|
<p class="font-medium text-text">Listen for packets</p>
|
||||||
|
<pre
|
||||||
|
class="font-mono text-sm text-accent bg-bg-card border border-border px-4 py-3 rounded mt-2 overflow-x-auto"
|
||||||
|
set:html={`import donglora as dl
|
||||||
|
|
||||||
|
ser = dl.connect()
|
||||||
|
dl.send(ser, "SetConfig", config=dl.DEFAULT_CONFIG)
|
||||||
|
dl.send(ser, "StartRx")
|
||||||
|
|
||||||
|
while pkt := dl.recv(ser):
|
||||||
|
p = pkt["payload"]
|
||||||
|
print(f'{pkt["rssi"]:4d}dBm {pkt["snr"]:3d}dB {p.hex()}')`}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="border-border my-4" />
|
||||||
|
|
||||||
|
<!-- What can you do -->
|
||||||
|
<section class="py-12 max-w-3xl mx-auto">
|
||||||
|
<h2 class="font-mono text-2xl font-bold mb-6 text-text">What can you do with it?</h2>
|
||||||
|
<p class="text-text-muted leading-relaxed mb-6">
|
||||||
|
Connect your code directly to a LoRa radio over USB — or run the multiplexer and let
|
||||||
|
multiple programs share a single dongle at the same time.
|
||||||
|
</p>
|
||||||
<pre
|
<pre
|
||||||
class="font-mono text-sm text-accent bg-bg-card border border-border p-6 rounded overflow-x-auto"
|
class="font-mono text-sm text-accent bg-bg-card border border-border p-6 rounded overflow-x-auto mb-8"
|
||||||
>your code ──► client library ──► USB ──► firmware ──► LoRa radio
|
>your code ──► client library ──► USB ──► firmware ──► LoRa radio
|
||||||
|
|
||||||
your code ──► client library ──┐
|
your code ──► client library ──┐
|
||||||
your code ──► client library ──┼──► mux ──► USB ──► firmware ──► LoRa radio
|
your code ──► client library ──┼──► mux ──► USB ──► firmware ──► LoRa radio
|
||||||
your code ──► client library ──┘</pre>
|
your code ──► client library ──┘</pre>
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Why / What can you do -->
|
|
||||||
<section class="py-12 max-w-3xl mx-auto">
|
|
||||||
<h2 class="font-mono text-2xl font-bold mb-6 text-text">What can you do with it?</h2>
|
|
||||||
<p class="text-text-muted leading-relaxed mb-6">
|
<p class="text-text-muted leading-relaxed mb-6">
|
||||||
Because the firmware is protocol-agnostic, a DongLoRa dongle works with any LoRa network
|
Because the firmware is protocol-agnostic, a DongLoRa dongle works with any LoRa network
|
||||||
— Meshtastic, MeshCore, custom protocols, or raw packets. You get the feedback loop of a
|
— Meshtastic, MeshCore, custom protocols, or raw packets.
|
||||||
scripting environment instead of a flash-and-pray embedded workflow.
|
|
||||||
</p>
|
</p>
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<div class="bg-bg-card border border-border p-5 rounded">
|
<div class="bg-bg-card border border-border p-5 rounded">
|
||||||
@@ -149,50 +190,6 @@ your code ──► client library ──┘</pre>
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Quick Start -->
|
|
||||||
<section class="py-12">
|
|
||||||
<h2 class="font-mono text-2xl font-bold mb-6 text-text">Quick Start</h2>
|
|
||||||
<ol class="space-y-6">
|
|
||||||
<li class="flex gap-4">
|
|
||||||
<span class="font-mono text-accent font-bold text-lg shrink-0">1.</span>
|
|
||||||
<div>
|
|
||||||
<p class="font-medium text-text">Flash the firmware</p>
|
|
||||||
<p class="text-sm text-text-muted">
|
|
||||||
Use the <a href="/flash" class="text-accent hover:text-accent-bright">web flasher</a> or
|
|
||||||
flash from the command line.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="flex gap-4">
|
|
||||||
<span class="font-mono text-accent font-bold text-lg shrink-0">2.</span>
|
|
||||||
<div>
|
|
||||||
<p class="font-medium text-text">Install a client library</p>
|
|
||||||
<pre
|
|
||||||
class="font-mono text-sm text-accent bg-bg-card border border-border px-4 py-2 rounded mt-2"
|
|
||||||
>pip install donglora</pre>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="flex gap-4">
|
|
||||||
<span class="font-mono text-accent font-bold text-lg shrink-0">3.</span>
|
|
||||||
<div>
|
|
||||||
<p class="font-medium text-text">Listen for packets</p>
|
|
||||||
<pre
|
|
||||||
class="font-mono text-sm text-accent bg-bg-card border border-border px-4 py-3 rounded mt-2 overflow-x-auto"
|
|
||||||
set:html={`import donglora as dl
|
|
||||||
|
|
||||||
ser = dl.connect()
|
|
||||||
dl.send(ser, "SetConfig", config=dl.DEFAULT_CONFIG)
|
|
||||||
dl.send(ser, "StartRx")
|
|
||||||
|
|
||||||
while pkt := dl.recv(ser):
|
|
||||||
p = pkt["payload"]
|
|
||||||
print(f'{pkt["rssi"]:4d}dBm {pkt["snr"]:3d}dB {p.hex()}')`}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<hr class="border-border my-4" />
|
<hr class="border-border my-4" />
|
||||||
|
|
||||||
<!-- Repositories -->
|
<!-- Repositories -->
|
||||||
|
|||||||
Reference in new issue
Block a user