Pe această pagină
Salut tuturor,
Acum ceva vreme am început să lucrez la un proiect personal numit NucuCar. Este o platformă scrisă în .NET pentru Raspberry Pi, în care încerc să implementez diverse funcții utile, pentru a crea o piesă completă de software care poate fi folosită pentru a construi o mașinuță controlată de la distanță cu Pi-ul.
Proiectul este open source și poate fi găsit pe GitHub:
Deoarece nu mi-am cumpărat o mașinuță de jucărie și nu am mult spațiu în apartament, am lucrat doar la modulul de senzori, care are în prezent suport pentru senzorul de mediu BME680 și pentru senzorul de temperatură al procesorului inclus în Pi.
Ideea din spatele acestui lucru este să creez un daemon care interoghează senzorul, publică date de telemetrie și poate fi configurat ușor. Acesta este fișierul de configurare:
Blocul Telemetry configurează ce publicator de telemetrie se folosește, Azure sau Disk (deocamdată, poate fi extins), și intervalul în care sunt publicate datele de telemetrie. Celelalte două blocuri configurează dacă colectarea senzorilor și a telemetriei este activată sau nu. Atât, în esență.
Pentru a dezvolta acest proiect am folosit Github, o instanță gratuită de Jira și Rider de la JetBrains.
Rularea pe Pi
Am compilat proiectul și l-am încărcat pe Pi. Rularea lui cu toate opțiunile activate produce următorul rezultat în htop:
Avem multe procese aflate în somn întrerupt, aproximativ 7,8% din timpul CPU, care a scăzut la 0,7% după un timp, și aproximativ 5,5MB de utilizare a memoriei RAM. Nu e rău, dacă ținem cont că rulăm C#. Ah, și am uitat să menționez: senzorul BME680 este expus printr-un server gRPC. 🙂
Date de telemetrie
În timp ce programul rula, datele de telemetrie de la senzor au fost colectate și salvate pe disc. Iată cum arată o intrare:
```json{ "source":"NucuCar.Sensors", "timestamp":"2019-12-01T23:26:13.5537227+02:00", "data":[ { "sensor_state":2, "temperature":32.65558333857916, "humidity":100.0, "pressure":62228.49565168124, "voc":0.0, "_id":"Bme680-Sensor" }, { "sensor_state":2, "cpu_temperature":48.849998474121094, "_id":"CpuTemperature" } ]}```
Apoi am scris un script Python pentru a reprezenta grafic datele disponibile, sărind peste primele 10 rezultate.
Mulțumesc pentru lectură!