Skocz do zawartości

moderin

Użytkownicy
  • Zawartość

    8
  • Rejestracja

  • Ostatnio

Reputacja

7 Neutralna

O moderin

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. moderin

    Nie mogę wgrać programu do Arduino UNO

    Jak dobrze rozumiem masz dwa różne błędy - jeden z kompilacją i drugi z komunikacją. Przy tym z komunikacją wygląda na to że program jakoś się skompilował, tylko nie chce przejść do Arduino. Możesz spróbować sobie z nim poradzić podłączając zewnętrzny konwerter USB/UART. W moim klonie na przykład, ten wbudowany nie działał od nowości. Jak nie masz konwertera, może masz drugie Arduino? Jak się nie myle może robić za konwerter. Tylko pamiętaj że przy zewnętrznym konwerterze, przy programowaniu będziesz musiał sam reset naciskać w odpowiednim momencie. Ps. To jest wszystko co do błędu z : avrdude: stk500_recv(): programmer is not responding
  2. moderin

    16 Bitowa wartość przez USART STM32

    Co do programu na komputer polecam serialplot. Co do części na STM32 - co to za mikro-kontroler? Na niektóre STM32 są biblioteki Arduino. Jeśli nie chcesz używać bibliotek, możesz to zrobic to od zera, w przypadku STM32 F103 wygląda to tak: Włączasz i konfigurujesz USART Wysyłasz pustą ramkę (nwm jak to się tłumaczy, indle frame) i włączasz przerwanie TXE Przerwanie będzie wchodzić za każdym razem jak USART będzie gotowy do przyjęcia danych. Teraz wystarczy napisać przerwanie z jakimś licznikiem w środku, które za pierwszym razem wstawi do USART_DR pierwsze 8 bitów, a za drugim razem drugie.
  3. moderin

    Blue Pill jako czujnik HRV

    Samo wykrycie uderzenia wygląda tak: if((fl < max_value) && (max_value != 0) && (max_value > (last_beat_value/2)) && (max_age <= 10)) { if (last_beat_age > (uint16_t)((109.0/400.0)*SAMPLING_RATE)) { // Mamy uderzenie } } fl - filtered value - aktualny odczyt po filtrach max_value - odczyt może ją podnieść, ale nie może obniżyć (przy wykryciu uderzenia będzie to wartość poprzedniego odczytu) last_beat_value - wartość odczytu z poprzedniego uderzenia serca. Warunek: (max_value > (last_beat_value/2)) ma za zadanie wykluczyć mniejsze szczyty. Nie można ustalić tu stałego poziomu od jakiego akceptujemy uderzenia, bo w zależności od tego jak położymy palec amplituda potrafi parę razy wzrosnąć lub zmaleć. max_age - czas w próbkach od ostatniego podbicia max_value. last_beat_age - czas od ostatniego uderzenia, żółta linia: (109.0/400.0)*SAMPLING_RATE - wyjdzie 272.5 próbek, tj 0.27s czyli czas między uderzeniami przy tętne 220. Zakładam że nie będe wyżej mierzyć. Czyli po prostu czekamy aż wykres zacznie spadać i na różne sposoby próbujemy rozpoznać czy to ten szczyt który nas interesuje. Nie wiem na ile jest to precyzyjna metoda - ciężko sprawdzić bez EKG. Ale zdaje się działać. W liceum jestem . Bazuje na dwóch książkach: "Antyrak" i "Zdrowiej!" - obie tego samego autora, dr. Davida Servan-Schreibera. Zacytuje fragment: "Badania przeprowadzone na kierowniczej kadrze dużych przedsiębiorstw wykazują, że oddziaływanie stanu koherencji na fizjologie znajduje wyraz w łagodzeniu normalnych przejawów stresu: liczba osób twierdzących że dostają palpitacji serca ""często albo niemal cały czas" spada z 47% (!) do 30% w ciągu 6 tygodni, a do 25% w ciągu 3 miesięcy. Objawy wewnętrznego napięcia spadają z 41% do 15%, a później do 6%, bezsenności z 34% do 6%, zmęczenia z 50% do 12%." - tego jest kilka stron. Czy są dostępne handlowo nie wiem, część smartfonów z takim czujnikiem ma opcję "mierzenia stresu", przypuszczam że może to działać właśnie na takiej zasadzie.
  4. moderin

    Blue Pill jako czujnik HRV

    Dioda nawet tam jest. I po włączeniu bardzo fajnie świeci . Tyle że na ten moment nie bardzo wiem do czego by to mogło służyć. Sam pomysł na tą maszynę wziął się z pewnej książki - autor jako jeden ze sposobów walki ze stresem i depresją opisywał kontrolowanie własnego serca - pokazując właśnie wykres HRV w stanie koherencji i w stanie chaosu. Mówił jak świadomie ze stanu chaosu przechodzić do koherencji (po prostu przywołując pozytywne wspomnienia) i jakie niesie to za sobą skutki po dłuższym czasie. Tak średnio w to wierzyłem. I stąd pomysł żeby to sprawdzić. Za 35zł . Także to był główny cel projektu. Ale jak się dowiem co można ciekawego zrobić z pomiarów SpO2 to wystarczy zmienić program.
  5. Ładnie. Dobrze rozumiem że wyciągasz 39 km/h na silniku z samochodzika dla dzieci? Jaką dałeś przekładnie? I jak z momentem, wystartuje pod górkę na przykład? Ogólnie - robi wrażenie.
  6. moderin

    Blue Pill jako czujnik HRV

    Wykres może wyglądać jak sinusoida, ale nie musi. Zależy to od naszego stanu emocjonalnego - wszelkie negatywne emocje oraz stres sprawiają że wykres się "psuje", z ładnej eleganckiej sinusoidy robi się totalny chaos (ostatnie dwa wykresy). Podobnie jest z depresją. Często występują też stany pośrednie - wykres przypomina sinusoidę ale wciąż jest nierówny. @wn2001 Wykres jest odświeżany w momencie nadejścia nowych danych z UARTa. Te powstają po wykryciu uderzenia serca. Wykres puls=f(t) wyglądałby trochę inaczej, bo odległości między kolejnymi uderzeniami serca nie są równe. A na osi X punkty są w jednakowej odległości. Różnica niewielka, ale jest. Okres względnie zależy od szybkości oddechu. Względnie bo mam wrażenie że serce jest trochę niezależne. Na przykład gdy po wydechu (puls niski) na chwilę wstrzymamy oddech, puls mimo to pójdzie trochę do góry, jakby "nie zauważył" że wstrzymaliśmy oddech. Zatrzyma się może w 1/3 wysokości amplitudy (z moich obserwacji). Amplituda natomiast zależy np. od wieku. Im człowiek starszy tym będzie mniejsza. @Zealota Dzięki, co do pisania w rejestrach - najpierw miało być w Asemblerze . Nie wiem coś tak mnie naszło. Takie ambicje dziwne. Nawet tutorial zrobiłem na blinka w Asemblerze. Od 2 miesięcy google pokazuje całe 2 kliknięcia . W końcu się poddałem bo program się robił długi jak dżdżownica i znalezienie jakiegokolwiek błędu graniczyło z cudem. Więc teraz jest w C.
  7. Witam, dzisiaj przedstawię konstrukcję dość nietypową. Już temat brzmi zagadkowo co nie? "Blue pill" to nazwa taniej chińskiej płytki z mikro-kontrolerem STM32 F103. Kosztuje w Polsce ok 15 zł, za granicą chodzi po $2. Parametry w porównaniu do Arduino Uno na którym zwykłem wcześniej pracować są wręcz astronomiczne. Po chwili zabawy czujemy się jak po przesiadce z Malucha do Ferrari. Mamy na pokładzie kwarc 8MHz, którym według producenta możemy taktować płytkę do 72MHz. To jest oficjalna wartość, przy której producent gwarantuje nam że nasz mikro-kontroler będzie działać. Na własną odpowiedzialność natomiast można podkręcić ją sobie do 128MHz po prostu ustawiając mnożnik PLL-ki na najwyższą wartość. To jest na tyle proste że łatwo to przypadkiem zrobić Reszta parametrów porównując do starej poczciwej atmegi to również niebo a ziemia. Mamy 20kB ramu i 64kB flasha, pełnoprawne USB i 12-bitowe ADC. Mamy też całą masę timerów. I to wszystko za góra 15 zł. Dobra, teraz drugie tajemnicze słowo. HVR to skrót od Hearth Rate Variability. Po polsku przebieg zmienności rytmu serca. Każdy z nas słyszał o tętnie. Serce bije z jakimś tam tempem, 60 BPM, 80 BPM itd. Przy wysiłku bije szybciej, w trakcie spoczynku wolniej. Jednak już znacznie mniej osób wie że odstępy między kolejnymi uderzeniami serca prawie nigdy nie są równe. I to nie mówię tu o małych różnicach. Zdecydowanie nie. Dobra, po prostu pokażę wam wykres. Na osi Y mamy puls w uderzeniach na minutę. Na osi X mamy kolejne uderzenia serca. Czerwona linia to dokładny wykres tętna, a żółty to wartość uśredniona. Robi wrażenie? Pulsometr pokazuje wam tylko wartość uśrednioną. Żółtą linię. Widzicie tętno 80, na prawdę jednak wasze serce skacze od 65 do 95. Dzieje się tak z każdym oddechem. Nie dokładnie, ale z moich obserwacji wynika że tętno względnie synchronizuje się z oddechem. Bynajmniej w stanie koherencji. Ha, teraz co to jest koherencja? O tym za chwilę. Co do samego urządzenia - jest to nasz ukochany Blue Pill z podpiętym czujnikiem MAX30100. Wszystko siedzi sobie na płytce stykowej. Płytkę można programować programatorem bądz przez UARTa. Co więcej jak byśmy zmienili bootloader to płytka może programować sie sama. Przez USB. Ja akurat wybrałem pierwszą opcję bo przypadkiem miałem pod ręką ST-Linka. Skąd miałem? Otórz dawno dawno temu zachwycony ARM-ami kupiłem sobie o taką płytkę. To było moje pierwsze spotkanie z ARM-ami. I wyglądało tak że spaliłem ją w ciągu jakiś 15 minut od podłączenia. Do tej pory nie wiem jak. Ale nie spaliłem pokładowego programatora który jak się okazuje bardzo chętnie przygarnia obce mikro-kontrolery. Więc naszego Blue Pilla za 15 zł można sobie podebugować nawet . Dużo ciekawiej wygląda program. Albowiem postanowiłem nie używać żadnej biblioteki. Nawet CMSIS-a. Tak więc mamy profesjonalną tablice wektorów w Asemblerze i jakże poważnie wyglądające definicje rejestrów. #define RCC_APB2ENR (*(volatile uint32_t *)(0x40021018)) czyż to nie jest piękne? Dobra, teraz na poważnie. Schemat działania programu jest dosyć prosty: Czekamy na przerwanie od czujnika Zczytujemy dane z czujnika Przepuszczamy je przez filtr DC ...i przez butterwortha żeby wyciąć wysokie częstotliwości Teraz mamy dość długi algorytm mający za zadanie wykryć puls. Jeśli właśnie wykryliśmy uderzenie serca (szczyt tej górki na dolnym obrazku), wyliczamy czas od poprzedniego i robimy z tego puls. Na koniec wysyłamy co trzeba UARTem (4 bajty) Jak działa czujnik? Czujnik składa się z diody IR i czujnika który ma za zadanie mierzyć natężenie światła z diody. Do czujnika przykładamy palec. Skóra bendzie w różnym stopniu przepuszczać światło, w zależności od chwilowego ciśnienia krwi. MAX30100 ma 16-bitowe ADC i konfigurowalną częstotliwość próbkowania. W moim projekcie używam 1000Hz. Niestety jak chcemy mieć dużo próbek to nie mamy pełnych 16 bitów . Po przefiltrowaniu mamy coś takiego: Dla jasności: screen jest stary, jak jeszcze nie był na 1kHz, stąd skala inna (wtedy było 50-100Hz, nie pamiętam już). A tak wygląda wykrywanie uderzeń serca: A teraz efekt końcowy. Spójrzcie na dwie sytuacje: Tak jak na początku mamy puls na osi Y i uderzenia na osi X. W pierwszej sytuacji robiłem pomiar w sytuacji stresowej. Wykres jest zupełnie chaotyczny. W drugiej mamy tzw. stan koherencji. Pomiar robiłem jakąś godzinę później, jak sytuacja stresowa minęła. Serce elegancko przyspiesza i zwalnia. Co więcej ze stanu pierwszego da się w ciągu paru minut świadomie przejść do stanu drugiego, po prostu przywołując pozytywne wspomnienia. Nie chcę tu za dużo opowiadać bo powoli wchodzimy w medycynę. A tutaj, bazując tylko na książkach mogę nie być najlepszym źródłem wiedzy. Software na komputerze: PlatformIO (po podaniu pliku linkera potrafi działać bez frameworka) SerialPlot - bardzo fajna maszyna do rysowania wykresów z tego co idzie po uarcie. Na koniec parę zdjęć konstrukcji:
×