czwartek, 11 lipca 2013

RaspberryPi: pierwsze (moje) próby z zasilaniem bateryjnym.

Jedna z pierwszych myśli, jakie pojawiają się zaraz po zakupie RaspberryPi, to: jak efektywnie zasilić nasze urządzenie z baterii lub akumulatorów? Można wypróbować kilka sposobów – zwykle zaczynamy od regulatora liniowego (scalonego stabilizatora napięcia) 7805 z zestawem czterech kondensatorów (diody nie trzeba) i sześciu paluszków AA (R6 – 1,5V). Jednak to rozwiązanie nie jest zbyt efektywne, a efektywność, rozumiana tutaj jako jak najdłuższy czas pracy bez konieczności wymiany baterii (o stratach energii, zamienionej przez stabilizator na ciepło, nie wspomnę), to zagadnienie dla nas kluczowe.
Można więc, a w zasadzie należy, spróbować techniki impulsowej.
Inspiracją dla moich eksperymentów był artykuł w serwisie – a jakże – majsterkowo.pl, poświęcony akumulatorowej ładowarce do smartfona. Dla własnych potrzeb, a poniekąd też z powodu braku kilku części (mój ulubiony sklep nie był w stanie sprowadzić mi paru ważnych elementów, a ładowarkę potrzebuję na już – z powodu urlopu i wyjazdu ;-)), zmodyfikowałem trochę cały układ.
Najpierw kilka słów o budowie ładowarki/zasilacza. Lista części jest dosyć krótka – potrzebujemy:

  • przetwornicę DC/DC 5V o odpowiedniej wydajności prądowej – ja zastosowałem elegancki układzik Pololu S7V8F5, który w trybie step down daje radę wycisnąć do 1A przy sprawności ok. 80%;
  • kondensator np. 47μF, wlutowany między wyprowadzenia VIN a GND przetwornicy;
  • rezystor podciągający 100kΩ, wlutowany pomiędzy wyprowadzenia VIN a ~SHDN przetwornicy;
  • kawałek przedłużacza USB (gniazdo);
  • wyłącznik;
  • dwa koszyczki na trzy baterie AA (potrzebujemy sześć baterii – napięcie początkowe ok. 9V);
  • jakaś obudowa ;-)
Łączymy wszystko zgodnie ze specyfikacją i... już możemy podładowywać sobie telefon...

...oraz podłączyć malinę :-)

Przygotowałem sobie prościutki układ pomiarowy – czyli podłączyłem woltomierz, który podawał mi aktualny odczyt napięcia na bateriach. Baterie co prawda nie były pierwszej świeżości (już raz, dla testów, ładowałem z nich telefon), ale po włączeniu przetwornicy, jeszcze bez obciążenia w postaci maliny, dały 9,12V:




Po włączeniu Raspberry'ego napięcie oczywiście siadło. Na zdjęciu poniżej wynik pomiaru po 21 minutach pracy (czas pracy widoczny na ekranie w tle):


Testowałem malinę przez około pół godziny, lekko ją tylko obciążając aktualizacją oprogramowania i przyznam, że efekt jest umiarkowanie zadowalający. Pod koniec testów napięcie na bateriach spadło do około 7,66V. "Martwić się" powinniśmy dopiero gdzieś w okolicy 6V, czyli za około następne pół godziny, jeśli spadek napięcia postępowałby liniowo.

Czy jest to koniec problemu zasilania bateryjnego maliny? Nie wiem. Zastosowanie baterii alkalicznych zdaje się być rozwiązaniem dosyć drogim. Można ewentualnie pomyśleć o "beczkach" R20, które powinny zapewnić większą wydajność lub wykonać testy na akumulatorach. Idąc dalej, można by przekształcić układ w rodzaj zasilacza bezprzerwowego (UPS) i dodać do systemu maliny kontrolę poziomu napięcia – któryś z blogujących kolegów coś takiego już robił z wykorzystaniem dodatkowych układów i szyny GPIO mailny.

Oczywiście kolejny krok to podłączenie do przetwornicy ogniw słonecznych – mam dwa, kiepskiej jakości, wydłubane ze zużytych lampek ogrodowych, dające w sumie, w maksymalnym słońcu, 4,2V, ale to trochę za mało... Kolega parę dni temu doradził mi, żeby zakupić kilka-kilkanaście lampek solarnych w markecie i wykonać sobie matrycę ogniw – pomyślę, ale już nie w tym sezonie.

czwartek, 4 lipca 2013

Android i zewnętrzny moduł GPS

Od kilku dni jestem w posiadaniu smyrfona z Androidem 4.1.1 na pokładzie. Kwestie związane z wyborem systemu roztrząsałem już na G+, a ten artykuł tutaj ma konkretny temat, więc nie będę wyjaśniał po raz n-ty. Po prostu zwyciężyły popularność i ekosystem oraz przywiązanie do produktów sieciowych Google. Mniejsza.

Zbliża się sezon urlopowy :-) Moi podopieczni już mają wakacje, a ja wyjeżdżam wkrótce. W każdym bądź razie wakacje to podróże - samochodem, rowerem, na piechotę, żaglówką, motorówką, samolotem... Zaawansowane urządzenia mobilne przyzwyczaiły nas już do usług lokalizacyjnych, z których najważniejszą jest GPS (na dalszym planie mamy A-GPS, lokalizacje w oparciu o sieci WiFi itp.). Często korzystamy z programów, które w coraz ciekawszy sposób wiążą naszą lokalizację, pobraną z np. GPS-a, z przeróżnymi danymi, nieraz ocierając się o AR.
Każdy współczesny smartfon, a przynajmniej znakomita ich większość, wyposażona jest we wbudowany odbiornik sygnału lokalizacyjnego (GPS, GLONASS). Czasem jednak korzystanie z wbudowanego odbiornika bywa kłopotliwe, na przykład:

  • długo łapie tzw. fix, czyli ustala pozycję; bywa, że trwa to kilka-kilkanaście minut i się nie udaje (mam tak np. w aparacie fotograficznym);
  • trzymamy telefon w kieszeni, pod wieloma warstwami ubrań itp. - wszystko to osłabia siłę sygnału GPS;
  • każdy wbudowany w telefon dodatkowy ficzer bardzo egoistycznie podchodzi do baterii; odbiornik GPS również ostro drenuje zasoby energii naszego smartfona.
Być może są to wady nieco naciągane - wielu z Was ma całkiem niezłe doświadczenia z wbudowanymi odbiornikami GPS - ale jednak czasem występują. Szczególnie w obszarze zabudowanym ;-)

O ile w pierwszym przypadku wszystko zależy od jakości modułu (i poniekąd od oprogramowania, jak się domyślam), o tyle w drugim jako alternatywa świetnie się może sprawdzić zewnętrzny moduł GPS, z którym nasz telefon może się komunikować przez Bluetooth. Możemy wtedy trzymać telefon w dowolnym, najwygodniejszym dla nas miejscu, a odbiornik GPS tam, gdzie będzie najlepiej łapał sygnał.

W jaki sposób przekonać urządzenie z Androidem do współpracy z zewnętrznym modułem GPS?
Rzecz nie wydaje się być trudną.

Najpierw sparujmy odbiornik GPS z naszym smartfonem czy tabletem - czynność, której chyba nie trzeba szerzej wyjaśniać. Ja posłużę się moim starym, dobrym, wielokrotnie już wspominanym na tym blogu modułem Nokia LD-3W.

Po sparowaniu znajdujemy w menu ustawień Androida Opcje programistyczne. Włączamy je, zgadzamy się na ryzyko (bo system się upewnia) i zaznaczamy opcję Pozorowanie lokalizacji:


Następnie pobieramy i instalujemy aplikację Bluetooth GPS (ze sklepu Google Play). Uruchamiamy, wybieramy nasz moduł GPS (wcześniej sparowany), włączamy go (czasem trzeba najpierw uruchomić aplikację, a potem moduł GPS) i klikamy Połącz (Connect). Czekamy chwilę (dosłownie chwilę - u mnie np. rzecz działa się w budynku, przy zamkniętym oknie - moduł leżał na parapecie) i mamy rezultat:


Teraz rzecz najważniejsza: zaznaczamy Enable Mock GPS Provider. Jeśli wybraliśmy wcześniej pozorowaną lokalizację (w Opcjach programistycznych), to możemy teraz ukryć aplikację i uruchomić cokolwiek, co potrzebuje usług lokalizacyjnych - sprawdzałem z Foursquare, Star Chart i kilku innymi programami. Ważne jest, żeby wyłączyć wszystkie wbudowane usługi lokalizacyjne.

Sam program Bluetooth GPS ma jeszcze kilka ekranów, które mogą zaciekawić bardziej dociekliwych, ot choćby "mapkę" satelitów:


czy pokazywanie naszego położenia na mapie:


a nawet śledzenie logu kolejno przesyłanych linii NMEA ;-)

Okazuje się, że wszystko ładnie działa (no dobra, będę szczery - raz tylko tak namieszałem, że musiałem zrobić reboota ;-))! 
Udanej zabawy zatem i pełnych przygód podróży (z nawigacją w kieszeni ;-)).