Skip to content
Snippets Groups Projects
Commit 98722ea7 authored by fxk8y's avatar fxk8y :spider:
Browse files

Merge branch 'master' of git.services.c3pb.de:fxk8y/CyanLight

parents 588a136c 9a009e0f
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,7 @@ CyanLight
Simple `PT4115`-BreakoutBoard, initially designed for my special 490 nm LED but may also be used for generic projects
If you want to know more about `CyanBus`, `CyanLight`'s new animation protocol suite on top of `RS485` just goto [the documentation of SiliconTorch](SiliconTorch/README.md) !
Pinout
------
......@@ -106,6 +107,11 @@ Both protocols share the same basic concept: Time critical animation data is sen
**[TODO!]**
### The `IrDA` protocol
### ~~The `IrDA` protocol~~
**[TODO!]**
There won't be any `IrDA` as R&D discovered the following problems:
- The "classical" low-bandwidth chips for e.g. TV remotes aren't usable for UART communication. At `9600 Baud` there is half text half garbage, at `4800 Baud` we got 2-3 wrong chars per line (~40 chars).
- **ANY** higher-bandwidth `IrDA` chips are either very expensive (8$ for `LT1328` IF you even get one) and the `16 MBaud` ones are completely ungettable and 2-3x more expensive!
**⇨ `IrDA` is unfeasible!**
SiliconTorch
============
`SiliconTorch` is the `python` reference implementation for the `fxCyanF`-protocol
`SiliconTorch` is:
- `CyanBus` library for `ESP32` (client) and `Python` (server)
- `fxCyan` animation protocol library for `ESP32` (client) and `Python` (client/server)
- its own adapter to the [Weaponsmith](https://git.c3pb.de/jonsen/weaponsmith) eco system
It will be moved to a separate repo when it matures
Protocol documentation
----------------------
Documentation of the used (network-)protocols inside of `SiliconTorch`
### `CyanBus`
`CyanBus` will be the main working horse of `SiliconTorch`.
It consists of a `RS485` and a `MQTT` layer, the first for real-time animation data and the second one for signalling.
`RS485` packets look like below, `CRC` is calculated over payload only.
![fxCyan envelope bytefields](doc/fxCyan.svg)
;; This is bytefield-svg code to describe the fxCyan packet envelope
(draw-column-headers)
(draw-box "b'fxCyan'" {:span 6})
(draw-box "Size" {:span 2})
(draw-gap "Payload")
(draw-box "CRC-XY" {:span 4}) ;; TODO: Which CRC algorithm exactly???
(draw-bottom)
<?xml version="1.0" encoding="UTF-8"?><svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="681" height="146" viewBox="0 0 681 146" ><text x="60" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >0</text><text x="100" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >1</text><text x="140" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >2</text><text x="180" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >3</text><text x="220" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >4</text><text x="260" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >5</text><text x="300" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >6</text><text x="340" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >7</text><text x="380" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >8</text><text x="420" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >9</text><text x="460" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >a</text><text x="500" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >b</text><text x="540" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >c</text><text x="580" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >d</text><text x="620" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >e</text><text x="660" y="8" font-family="Courier New, monospace" font-size="11" dominant-baseline="middle" text-anchor="middle" >f</text><line x1="40" y1="15" x2="280" y2="15" stroke="#000000" stroke-width="1" /><line x1="40" y1="45" x2="280" y2="45" stroke="#000000" stroke-width="1" /><line x1="280" y1="15" x2="280" y2="45" stroke="#000000" stroke-width="1" /><line x1="40" y1="15" x2="40" y2="45" stroke="#000000" stroke-width="1" /><text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif" x="160" y="31" text-anchor="middle" dominant-baseline="middle" >b'fxCyan'</text><line x1="280" y1="15" x2="360" y2="15" stroke="#000000" stroke-width="1" /><line x1="280" y1="45" x2="360" y2="45" stroke="#000000" stroke-width="1" /><line x1="360" y1="15" x2="360" y2="45" stroke="#000000" stroke-width="1" /><line x1="280" y1="15" x2="280" y2="45" stroke="#000000" stroke-width="1" /><text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif" x="320" y="31" text-anchor="middle" dominant-baseline="middle" >Size</text><line x1="360" y1="15" x2="680" y2="15" stroke="#000000" stroke-width="1" /><line x1="680" y1="15" x2="680" y2="45" stroke="#000000" stroke-width="1" /><line x1="360" y1="15" x2="360" y2="45" stroke="#000000" stroke-width="1" /><text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif" x="520" y="31" text-anchor="middle" dominant-baseline="middle" >Payload</text><text font-size="11" font-family="Courier New, monospace" font-style="normal" dominant-baseline="middle" x="35" y="30" text-anchor="end" >00</text><text font-size="11" font-family="Courier New, monospace" font-style="normal" dominant-baseline="middle" x="35" y="60" text-anchor="end" >10</text><line x1="40" y1="45" x2="40" y2="60" stroke="#000000" stroke-width="1" /><line x1="680" y1="45" x2="680" y2="60" stroke="#000000" stroke-width="1" /><line stroke-dasharray="1,1" x1="40" y1="60" x2="680" y2="90" stroke="#000000" stroke-width="1" /><line x1="680" y1="45" x2="680" y2="90" stroke="#000000" stroke-width="1" /><line stroke-dasharray="1,1" x1="40" y1="70" x2="680" y2="100" stroke="#000000" stroke-width="1" /><line x1="40" y1="70" x2="40" y2="100" stroke="#000000" stroke-width="1" /><line x1="40" y1="100" x2="40" y2="115" stroke="#000000" stroke-width="1" /><line x1="680" y1="100" x2="680" y2="115" stroke="#000000" stroke-width="1" /><text font-size="11" font-family="Palatino, Georgia, Times New Roman, serif" font-style="italic" dominant-baseline="middle" x="35" y="130" text-anchor="end" >i+<tspan font-size="11" font-family="Courier New, monospace" font-style="normal" dominant-baseline="middle" >00</tspan></text><line x1="40" y1="115" x2="200" y2="115" stroke="#000000" stroke-width="1" /><line x1="40" y1="145" x2="200" y2="145" stroke="#000000" stroke-width="1" /><line x1="200" y1="115" x2="200" y2="145" stroke="#000000" stroke-width="1" /><line x1="40" y1="115" x2="40" y2="145" stroke="#000000" stroke-width="1" /><text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif" x="120" y="131" text-anchor="middle" dominant-baseline="middle" >CRC-XY</text><line x1="40" y1="115" x2="680" y2="115" stroke="#000000" stroke-width="1" /></svg>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment