DIGIMAD-4 / main

0 stars 0 forks source link

Interboard communicatieprotocol ontwerpen. #10

Closed Villadelfia closed 3 years ago

Villadelfia commented 3 years ago

Beschrijving hardwareopstelling:

Beschrijving firmware opstelling:

Gedetailleerd werkingsidee:

  1. Algoritme op Raspberry Pi bepaalt volgende tracker ID om te meten. Stuurt vervolgens twee bytes over UART naar beacon 0: (uint8)trackerID, (uint8)beaconID = 0.
  2. Beacon 0, in IDLE staat, ontvangt het commando, en stuurt (uint8)0xAA terug. Indien verzender deze confirmatie niet ontvangt, wordt her commando herhaald. Beacon 0 slaat lokaal trackerID en beaconID op en gaat naar de PING staat.
  3. Beacon 0 stuurt een packet naar de trackerID, en wacht op respons. Signaalsterkte wordt opgeslagen, en tijd in microseconden sinds verzenden ping wordt opgeslagen.
  4. Beacon 0 verhoogt beaconID met 1 en stuurt vervolgende twee bytes naar beacon 1: (uint8)trackerID, (uint8)beaconID. Hij gaat nu naar de WAIT staat.
  5. Herhaal stappen 2, 3, en 4 voor beacon 1.
  6. Herhaal stappen 2, 3, en 4 voor beacon 2.
  7. Herhaal stappen 2 en 3 voor beacon 3.
  8. Omdat beaconID nu 3 is, weet beacon 3 dat het de laatste is. Hij stuurt nu de volgende data terug naar beacon 2: (uint8)beaconID, (uint16)RSSI, (uint32)delay. Beacon 3 gaat naar de IDLE staat.
  9. Beacon 2 ontvangt de data van beacon 3, en voegt zijn eigen data er aan toe om verder te sturen naar beacon 1: (7 bytes)data, (uint8)beaconID, (uint16)RSSI, (uint32)delay. Beacon 2 gaat naar de IDLE staat.
  10. Beacon 1 ontvangt de data van beacon 2, en voegt zijn eigen data er aan toe om verder te sturen naar beacon 0: (14 bytes)data, (uint8)beaconID, (uint16)RSSI, (uint32)delay. Beacon 1 gaat naar de IDLE staat.
  11. Beacon 0 ontvangt de data van beacon 1, en voegt zijn eigen data er aan toe om verder te sturen naar Raspberry Pi: (21 bytes)data, (uint8)beaconID, (uint7)RSSI, (uint32)delay, (uint16)CRC16. Beacon 0 gaat naar de IDLE staat.
  12. Raspberry Pi ontvangt de uiteindelijke data van de meting: 28 bytes.
(1 byte)3
(2 byte)RSSI beacon 3
(4 bytes)Delay beacon 3
(1 byte)2
(2 byte)RSSI beacon 2
(4 bytes)Delay beacon 2
(1 byte)1
(2 byte)RSSI beacon 1
(4 bytes)Delay beacon 1
(1 byte)0
(2 byte)RSSI beacon 0
(4 bytes)Delay beacon 0

Indien er geen datacorruptie of haperende trackers zijn, gebeurt deze hele meting in een fractie van een seconde.

Bedenkingen en extra's:

Villadelfia commented 3 years ago

Update aan tracker code: De RF96 ondersteunt message ID, FROM en TO header filtering. Dus de chipset wordt in de plaats zo geconfigureerd dat enkel de messages bestemd voor een tracker daar aan komen, idem voor de beacons. Er moet dus NIET gecheckt worden op de juiste ID bij het aankomen, maar de bestemmeling moet correct ingesteld worden bij verzending.

20007082 commented 3 years ago

Kan er mij rechten gegeven worden zodat ik ook issues kan verplaatsen in het Kanban bord. Zoals dit besproken is afgelopen week?

Villadelfia commented 3 years ago

Nieuwe invite gestuurd. https://i.imgur.com/5lH7VsY.png