---
# System prepended metadata

title: SKPS - Projekt

---

# SKPS - Projekt
**Systemy komputerowe w sterowaniu i pomiarach**

**Minh Nguyen Cong - 317077**
**Andrii Demydenko - 317084**
grupa 108d

## Cel projektu
- [x] 1. Pomiary odczytów z czujnika
- [x] 2. Pomiary czasu
- [x] 3. Sterowanie urządzeniem
- [x] 4. Przesyłanie danych między RPi i urządzeniami
- [x] 5. Przesyłanie danych między RPi i komputerem PC (host)
- [x] 6. Wizualizacja danych w czasie rzeczywistym na komputerze PC

## Praca domowa 1

- [x] Wybranie tematu
- [x] Schemat
- [x] Opis działania
- [x] Opracowanie szkieletu pakietu OpenWRT
- [x] Zbudowanie go dla qemu i uruchomienie na qemu

Wybrany temat - ***Lidar na bazie czujnika odległości ToF i serwomechanizmu***
![](https://i.imgur.com/sBer9ZZ.png)

Wymagania sprzętowe:
* Raspberry Pi 4
* Continuous Rotation Servo AR-3606HB
* VL53L0X Time-of-Flight ranging sensor

Opis działania: 
            

## Praca domowa 2

- [x] Opracowanie interfejsu graficznego działającego na komputerze PC (host)

Wizualizacja działania lidar (example):
![](https://i.imgur.com/uNQpOZG.png)


## Opis działania

1. Pomiary odczytów z czujnika pomiary
    Dla odebrania pomiarów z czujnika został wykorzystany `I2C protokol`. 
`iDistance = toReadDistance();`
3. Sterowanie urządzeniem
    Serwo było kontrolowane za pomocy `Pulse Width Modulation(PWM)` techniki .
5. Przesyłanie danych między RPi i urządzeniami
    Użycie OpenWRT SDK do zbudowania pakietu i zainstalowania go na Raspberry Pi.
    Następnie można go łatwo uruchomić za pomocą polecenia:
    ```
    task2 <host_ip> <host_port>
    ```
    
7. Przesyłanie danych między RPi i komputerem PC (host)
    Do przesyłania danych z Raspberri Pi 4 do komputera(host) wykorzystano `web socket`: Raspberri wysyła informacje za pomocą protokołu `TCP/IP`; na komputerze (host) za pomocą Pythona uruchomiono web socket do nasłuchiwania na porcie 9000, otrzymane informacje są przetwarzane..
9. Wizualizacja danych w czasie rzeczywistym na komputerze PC
    Python tworzy również prosty serwer HTTP, który obsługuje statyczny  HTML kod. html za pomocą jQuery pobierania dane z komputera(host) .
Python tworzy również prosty serwer HTTP, który obsługuje statyczny  HTML kod. html za pomocą jQuery pobierania dane z komputera(host).
    Dostęp do serwera WWW za pomocą adresu:
    ```
    http://<host_ip>:8080
    ```

```mermaid
sequenceDiagram
Sensor & Servo ->> OpenWRT: Signal from sensor about Distance<br/>via I2C protocol
OpenWRT ->> Sensor & Servo: Control the Servo<br/>via PWM
OpenWRT ->> Host: Data about angle and distance<br/>using TCP Protocol
Host->>WebBrowser: Index file HTML<br/>Using HTTP Request
Host ->> WebBrowser: Data about angle and distance

Note right of WebBrowser: WebBrowser processing and drawing<br/> the plot depend on the angle and distance
```
## Pracujący schemat
![](https://i.imgur.com/6sIhZCv.jpg)


![](https://i.imgur.com/ZaMgUxn.jpg)


    
## Wymagane biblioteki
PC: 
* socket: Zbuduj gniazdo TCP i nasłuchuj przychodzących danych.
* http.server: Obsługuj prosty serwer WWW HTTP

Raspberri Pi 4:
* Biblioteka tof: Odczytaj odległość od czujnika VL53L0X.

Browser:
* jQuery: Wyślij żądanie ajax, aby uzyskać zaktualizowane dane z hosta.