Połączenie komputera rowerowego z chmurą – podstawy
Integracja DIY komputera rowerowego z chmurą otwiera przed cyklistami zupełnie nowe możliwości. Zamiast ograniczać się do odczytów na małym ekranie podczas jazdy, możemy teraz gromadzić i analizować dane w długim okresie. Brzmi ciekawie, prawda? No to zaczynamy!
Pierwszym krokiem jest wybór odpowiedniej platformy chmurowej. Popularne opcje to Google Sheets dla prostszych zastosowań lub Strava dla bardziej zaawansowanych rowerzystów. Osobiście polecam na początek Google Sheets – jest darmowe i intuicyjne. Kolejna sprawa to zapewnienie łączności. Najprostszym rozwiązaniem będzie moduł Wi-Fi lub GSM podłączony do naszego Arduino czy Raspberry Pi. Dzięki temu komputer rowerowy będzie mógł wysyłać dane w czasie rzeczywistym lub po zakończeniu treningu.
Kluczowe jest też odpowiednie formatowanie danych. Warto stworzyć prosty format CSV z timestamp’em, współrzędnymi GPS, prędkością, dystansem i innymi interesującymi nas parametrami. Przykładowy wiersz mógłby wyglądać tak: 2023-06-15 18:30:22, 52.229676, 21.012229, 25.4, 10.2, 145. Dzięki temu łatwo zaimportujemy dane do arkusza lub innego narzędzia analitycznego.
Konfiguracja przesyłania danych do Google Sheets
Zacznijmy od skonfigurowania Google Sheets do odbierania danych. Najpierw tworzymy nowy arkusz i nadajemy mu nazwę, np. Statystyki rowerowe. Teraz przechodzimy do części programistycznej. W edytorze skryptów (Narzędzia > Edytor skryptów) tworzymy nową funkcję:
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = JSON.parse(e.postData.contents);
sheet.appendRow([new Date(), data.speed, data.distance, data.heartRate]);
return ContentService.createTextOutput(OK);
}
Ta funkcja będzie odbierać dane przesyłane przez nasz komputer rowerowy i zapisywać je w kolejnych wierszach arkusza. Następnie publikujemy skrypt jako aplikację webową i kopiujemy wygenerowany URL – będzie nam potrzebny do konfiguracji komputera rowerowego.
Teraz przechodzimy do kodu na Arduino. Oto przykładowy szkielet:
#include
#include
const char* ssid = NazwaSieci;
const char* password = HasloSieci;
const char* serverUrl = URL_z_Google_Scripts;
void setup() {
// konfiguracja Wi-Fi i czujników
}
void loop() {
// odczyt danych z czujników
float speed = getSpeed();
float distance = getDistance();
int heartRate = getHeartRate();
// przygotowanie danych do wysłania
String data = {\speed\: + String(speed) + ,\distance\: + String(distance) + ,\heartRate\: + String(heartRate) + };
// wysłanie danych
WiFiClient client;
HTTPClient http;
http.begin(client, serverUrl);
http.addHeader(Content-Type, application/json);
int httpResponseCode = http.POST(data);
http.end();
delay(5000); // wysyłamy dane co 5 sekund
}
Pamiętajmy, żeby dostosować ten kod do konkretnego modelu Arduino i używanych czujników.
Analiza danych i wizualizacja w Google Sheets
Kiedy już mamy dane w arkuszu, czas na zabawę! Google Sheets oferuje sporo możliwości analizy i wizualizacji. Na początek warto stworzyć podstawowe wykresy: prędkości w czasie, dystansu w czasie oraz tętna. To da nam ogólny obraz naszych treningów.
Ciekawym pomysłem jest też obliczanie statystyk dla każdej jazdy. Możemy użyć funkcji arkuszowych do wyliczenia średniej prędkości, maksymalnego tętna czy całkowitego dystansu. Oto przykładowe formuły:
=AVERAGE(B2:B100) // średnia prędkość
=MAX(D2:D100) // maksymalne tętno
=SUM(C2:C100) // całkowity dystans
Warto też pomyśleć o bardziej zaawansowanych analizach. Możemy na przykład śledzić naszą formę w czasie, obliczając średnią prędkość dla każdego tygodnia. Albo sprawdzić, jak nasze tętno zmienia się w zależności od prędkości jazdy. Możliwości jest naprawdę sporo!
Osobiście lubię też tworzyć dashboardy z najważniejszymi statystykami. Wykres kołowy pokazujący czas spędzony w różnych strefach tętna, słupkowy z dystansem pokonanym w każdym miesiącu – takie rzeczy naprawdę motywują do dalszej pracy!
Integracja z platformami dla sportowców
Dla bardziej zaawansowanych rowerzystów ciekawą opcją może być integracja z platformami dedykowanymi sportowcom, takimi jak Strava czy Garmin Connect. Te serwisy oferują bardziej zaawansowane analizy, możliwość porównywania się ze znajomymi czy śledzenia popularnych tras w okolicy.
Integracja z takimi platformami wymaga trochę więcej pracy, ale naprawdę warto. W przypadku Stravy musimy skorzystać z ich API. Najpierw rejestrujemy naszą aplikację na stronie dla deweloperów Stravy, otrzymujemy klucz API i token dostępu. Następnie modyfikujemy nasz kod na Arduino, aby wysyłał dane w formacie akceptowanym przez Stravę. Oto przykładowy fragment:
HTTPClient http;
http.begin(https://www.strava.com/api/v3/activities);
http.addHeader(Authorization, Bearer + String(accessToken));
http.addHeader(Content-Type, application/json);
String payload = {\name\:\Poranna przejażdżka\,\type\:\Ride\,\start_date_local\:\2023-06-15T08:00:00Z\,\elapsed_time\:3600,\distance\:30000};
int httpResponseCode = http.POST(payload);
http.end();
Oczywiście, trzeba dostosować payload do rzeczywistych danych z naszego treningu.
Integracja z takimi platformami daje nam dostęp do zaawansowanych analiz, jak na przykład obliczanie Training Stress Score (TSS) czy śledzenie obciążenia treningowego w czasie. To świetne narzędzia do planowania treningów i monitorowania postępów.
Podsumowując, integracja DIY komputera rowerowego z chmurą otwiera przed nami morze możliwości. Od prostych wykresów w Google Sheets po zaawansowane analizy w platformach sportowych – wszystko zależy od naszych potrzeb i ambicji. Najważniejsze to zacząć zbierać dane i eksperymentować z różnymi sposobami ich analizy. Kto wie, może odkryjemy coś ciekawego o naszym stylu jazdy albo znajdziemy sposób na poprawę wydajności? Powodzenia na szlaku i do zobaczenia w chmurach danych!