Monitoring: OrangePi One vs Odroid C2

Obecnie na działce do OrangePi mam podpięte dwie kamery z rozdzielczością 720p wysyłające po RTSP strumienie H.264. Z użyciem pakietów motion i motioneye jestem w stanie wyciągnąć transmisję z kamer z mocno zmiennym framerate’em, gdzie szczytowo motioneye pokazuje mi 10 i 7 FPS. Jako że wynik jest mocno niezadowalający, stwierdziłem że pora na modernizację sprzętu. Wybór padł na Odroida C2, dla odmiany z zainstalowanym DietPi.

Czytaj dalej

Zaszufladkowano do kategorii Monitoring | Otagowano , , , , , , , , , | Dodaj komentarz

Kompaktowy zasilacz dla Amigi – Cisco ADP-30RB

Cisco ADP-30RB jest zasilaczem dla urządzeń sieciowych, ale jego napięcia odpowiadają tym z zasilacza amigowego. Wydajność prądowa jest na poziomie stockowego zasilacza, więc nie nada się do rozbudowanych konfiguracji, ale dla podstawowych jak najbardziej. Dodatkowym atutem takiego zamiennika jest niewielki wymiar, a także dedykowana żyła do włączania zasilania. Sam zasilacz można kupić taniej niż oryginalny, więc czemu by nie?

“Pech” jednak chciał, że swój egzemplarz kupiłem z gwarancją, więc powstała psychologiczna presja by mu nie urzynać wtyczki, lecz zrobić przejściówkę, co też uczyniłem.

Czytaj dalej

Zaszufladkowano do kategorii Amiga | Otagowano , , , , , | 4 komentarze

Aero2 na SBC

Robiąc monitoring na działce konieczne było posiadanie jakiejś łączności internetowej. Wybór padł na Aaero2 zwłaszcza, że pakiety premium eliminują captchę i mają najkorzystniejszą prepaidową taryfę. O tego typu konfiguracji powstało już wiele tekstów. Brakuje w nich jednak paru kluczowych informacji.

Czytaj dalej

Zaszufladkowano do kategorii Uncategorized | Dodaj komentarz

Target Windows dla tangram-es

Tangram to jedna z lepszych alternatyw google/bing maps, do tego otwarta i działająca nie tylko w przeglądarce (JS + WebGL), ale tekże w wersji pod OpenGL-ES dla Linuksa, OSX, Androida i iOS. Dodatkowo projekt jest otwarty, więc można go rozszerzać pod własne potrzeby. Niestety, wersji na Windows brak. Jako, że używałem tych map w aplikacji androidowej i sprawdzała się tam nieźle, stwierdziłem, że w imię jednolitości opracuję target dla Windows. Żeby cały wysiłek miał jakiś walor dydaktyczny, pisałem ten artykuł równolegle z kolejno wykonywanymi rzeczami.

Czytaj dalej

Zaszufladkowano do kategorii tangram-es | Otagowano , , , , , , , , , | Dodaj komentarz

Konfiguracja wxWidgets dla VSCode

WxWidgets to jeden z zestawów bibliotek pozwalający na tworzenie multiplatformowych aplikacji okienkowych. Najprostszym sposobem by zacząć pracę z wx jest zaopatrzenie się w Code::Blocks, który dodatkowo posiada dedykowany WYSIWYG do okienek o nazwie wxSmith. Jako że pożegnałem się z c::b na zawsze (albo przynajmniej taki miałem zamysł), pora przygotować sobie środowisko pod VSCode.

Czytaj dalej

Zaszufladkowano do kategorii wxWidgets | Otagowano , , | Dodaj komentarz

Zapomniana arytmetyka stałoprzecinkowa

Pisząc OpenFire potrzebowałem robić dużo operacji na liczbach z miejscami dziesiętnymi. Jako, że Amiga obsługuje floaty przez bibliotekę korzystającą z koprocesora albo emulacji programowej, postanowiłem pójść tą najbardziej oczywistą metodą. Niestety wydajność pozostawiała wiele do życzenia.

Generacja obróconych klatek pojazdów oparta o naiwną implementację macierzy rotacji na floatach, skutkowała wykonywaniem w UAE w trybie fastest possible w czasie 47s. Na cycle-exact A500 nie ważyłem się tego nawet odpalać. Po przejściu na fixed pointy czas zmalał do 13s.

Jak zatem działają fixed pointy? Otóż, tak jak w przypadku inta, liczba dalej reprezentowana jest jako kolejne potęgi dwójki, jednak część bitów przeznaczona jest na potęgi dodatnie, a część na ujemne. Te ostatnie tworzą miejsce po przecinku ze z góry określoną, stałą precyzją. W efekcie dodawanie dwóch liczb stałoprzecinkowych wykonuje się zwykłą operacją dodawania liczby całkowitej, oszczędzając przy tym shitload czasu w porównaniu z floatami. Dzielenie i mnożenie jest równie proste, lecz po operacji należy dokonać przesunięcia bitowego, odzwierciedlając tym samym przesunięcie przecinka, tak jak w mnożeniu lub dzieleniu pisemnym. Jako, że wynalazek ten jest stary jak świat, istnieją już do tego gotowce. Biblioteka libfixmath udostępnia: konwersję z i do typu stałoprzecinkowego, podstawowe operacje na tych liczbach, a także generatory funkcji trygonometrycznych, eksponenty, logarytmu a nawet pierwiastka kwadratowego.

Sama integracja biblioteki jest dość prosta – sprowadza się do jednego inkluda i skorzystania z dołączonego makefile’a lub dopięcia plików .c do głównego make’a projektu. Dodatkowo, biblioteka posiada szereg define’ów pozwalających na lepsze dopasowanie biblioteki do platformy sprzętowej, pozwalając na lepsze dopasowanie do platformy 32- lub nawet 8-bitowej. Ich dokładny opis znajduje się na wiki repozytorium

Choć wzrost wydajności jest kuszący, nie dostaje się go za darmo. Fiksy cechują się dużo mniejszą dokładnością obliczeń niż floaty, co bardzo było widać w “drżącej” grafice 3D na pierwszym PlayStation. Dodatkowo, pisząc w C, składnia staje się obrzydliwa z powodu braku przeładowania operatorów.

Zaszufladkowano do kategorii Amiga | Otagowano , , , | Dodaj komentarz

Wymiana kondensatorów w A600

Amiga, będąc komputerem prawie niezniszczalnym, cierpi na jedną, dość niebezpieczną chorobę starczą – awarię kondensatorów. Skutki mogą być fatalne, bowiem wyciekający elektrolit koroduje ścieżki na PCB i prowadzi do trwałych uszkodzeń sprzętu. Nie ma co czekać na najgorsze, lecz trzeba przeciwdziałać.

Czytaj dalej

Zaszufladkowano do kategorii Amiga | Otagowano , , , | Dodaj komentarz

OrangePi jako printserver z Brother DCP-7055W

Moja drukarka nie ma funkcji sieciowych, a podchodzenie do niej, by podpiąć się po USB, stało się męczące. Stwierdziłem, że pora na stworzenie chałupniczego serwera druku.

Czytaj dalej

Zaszufladkowano do kategorii Uncategorized | Otagowano , , , , | Dodaj komentarz

Walka z temperaturą OrangePi

Ostatnio monitoring działkowy napotkał spory problem. Podczas swojej pracy OrangePi zaczęło się przegrzewać do temperatur przekraczających 80 °C, co powodowało throttling prędkości procesora. Jak można się domyśleć, skutkiem tego było niewyrabianie się przetwarzania obrazu, a w konsekwencji niewykrywanie ruchu. Można jednak z tym trochę powalczyć.

Czytaj dalej

Zaszufladkowano do kategorii Monitoring | Otagowano , , , , | Dodaj komentarz

Dzisiaj wyrzuciłem z dysku Code::Blocks

Po wielu latach, próbach migracji do ociężałych Eclipse i Visual Studio. Po wkurzaniu się na powolną prędkość Android Studio i licencyjne ograniczenia Qt Creatora. W końcu znalazłem coś, co na osi wydajności leży nieopodal C::B i Notepada++, a jednocześnie można skonfigurować do wygodnego kompilowania i debugowania. I nie jest tym czymś shareware’owy Sublime Text tylko totalnie darmowe i otwarte rozwiązanie.

Visual Studio Code

Środowisko napisane w technologiach webowych w oparciu o framework Electron, a mimo to dość lekkie (150MB na dysku, 100MB w RAMie), szybkie i responsywne (nie mylić z responsywnością stron internetowych). Aplikacja jest rozwijana przez Microsoft, ale nie tylko – sam projekt jest open-source i rozwijany na GitHubie.

Po instalacji oferuje niewiele więcej ponad możliwość edycji tekstu – rozszerza się go wyspecjalizowanymi wtyczkami. Dzięki temu edytor pozostaje lekki i umie tylko to, co chcemy żeby umiał. Edytor nie wprowadza żadnych własnościowych formatów pliku projektu, tylko traktuje dany folder jako projekt. Zakłada sobie w nim katalog .vscode, gdzie grzecznie w JSONie trzyma konfigurację specyficzną dla projektu.

VSCode przetestowałem we współpracy z VBCC i działa świetnie, bo działa w oparciu o mój własny makefile. I tu jest cały szkopuł – nie zrobi on nic za Ciebie. Jest to dla niego na plus, bo każdy projekt, który przyszło mi budować, rządzi się swoimi prawami konfiguracji i budowania, więc nie wymaga jakichś dziwnych ujednoliceń pod jego widzi-mi-się i wewnętrzny sposób kompilacji, tylko wpisujesz, jakie polecenie ma wywołać przy komendzie “build” i już.

Są jednak rzeczy, które mnie trochę denerwują, ale idzie je wyeliminować:

  • Brak przejrzystego, jasnego schematu kolorów dla składni, ale można zdefiniować własny;
  • Można mieć jednocześnie otwarty tylko jeden projekt, ale to już wisi w issues od jakiegoś czasu, więc pewnie coś z tym zrobią.

Epitafium Code::Blocks

Sam C::B był bardzo fajnym IDE, które zajmowało niewiele miejsca na dysku, działającym z prędkością NPP-podobną. Niestety rozwój się ślimaczy, przez co używanie go jest nadal możliwe, choć już niewygodne. Konfiguracja do współpracy z innymi kompilatorami niż MinGW byłaby zapewne możliwa, ale jeśli nie znajduje się on na liście obsługiwanych kompilatorów, to konfiguracja staje się koszmarna.

C::B popełnił ten błąd, że robił za dużo za użytkownika jednocześnie zbyt wolno się rozwijając, przez co skazywał go na ograniczoną funkcjonalność albo ciągłą walkę z IDE.

Zaszufladkowano do kategorii Uncategorized | Otagowano , , , , | Dodaj komentarz