Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 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 wyjaz…

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…

Programowanie AVR cz. ostatnia: Wyświetlacz 3D (LED Cube) 4x4x4 - ciekawy wizualnie, modny gadżet z ogromnymi możliwościami.

Pora kończyć cykl wpisów dydaktyczno-eksperymentalnych na temat programowania AVR-ów. Koniec jednak powinien być mocny. No to będzie.

Przed Wami oto:
Wyświetlacz 3D, czyli LED Cube, o rozmiarach 4 x 4 x 4.


000. Pomysł
Kostką diod LED, sterowaną dowolnym mikrokontrolerem, zainteresował mnie parę lat temu jeden z absolwentów. Było to jeszcze w czasie, gdy mój powrót do lutownicy nie był praktycznie brany pod uwagę - zajmowałem się wyłącznie softwarem, a programowania mikrokontrolerów uczyłem z wykorzystaniem gotowych, zamkniętych zestawów (DSM-51 - fajnie pomyślana i zrobiona rzecz, niestety bazująca na lekko przestarzałej i przez wielu krytykowanej technologii). Gdy w zeszłym roku zająłem się AVR-ami pomyślałem sobie - czemu nie? Przejrzałem kilka rozwiązań, przyglądnąłem się możliwościom różnych mikrokontrolerów i... znalazłem coś odpowiedniego dla siebie.
Czym właściwie jest popularny LED Cube, lub też wyświetlacz LED 3D? Otóż jest to eleganckie i efekciarskie urządzonko pozwalające na…

Programowanie AVR cz. 10: Modyfikacja mikroprocesorowego sterownika wyświetlacza alfanumerycznego LCD (układ HD44780 lub odpowiednik) z dostępem przez łącze szeregowe (i błędy!)

Błędy zdarzają się nawet w najprostszym kodzie, niestety. Program sterownika do wyświetlacza szeregowego, o którym pisałem jakiś czas temu, też się błędów nie ustrzegł. Przy okazji zmodyfikowałem ten program w celu poprawnej obsługi wyświetlacza 16*2. Dotychczas wykorzystywałem dwa odzyskane ze złomu wyświetlacze jednowierszowe o fizycznej organizacji 16*1, ale logicznie każdy z nich składał się z dwóch wierszy po osiem znaków - stąd konieczność wprowadzenia udziwnionego polecenia mapowanego na bascomowskiegoLocate'a i stąd błędy, które się przemknęły podczas testów. Być może wzięło się to z rzadko wykorzystywanego w jednowierszowym wyświetlaczu pozycjonowania tekstu.
W każdym razie, po zmianie wyświetlacza na model o bardziej popularnym formacie prezentacji tekstu, program wymagał kilku przeróbek, dlatego też i błędy zostały wyłapane i poprawione.

Oto poprawiony i zmodyfikowany program (BASCOM):

Warto przetestować ten zmodyfikowany wyświetlacz - szczególnie funkcjonalność, która…

Pilot do lustrzanek Nikona - przeróbka projektu z serwisu Majsterkowo.pl

Jeden z moich ulubionych serwisów (dla którego wyłączam AdBlocka ;-)), czyli majsterkowo.pl, zamieścił na swoich wirtualnych łamach jakiś czas temu artykuł prezentujący projekt pilota do lustrzanek Nikona, wykonany w oparciu o Arduino (http://majsterkowo.pl/elektronika-dla-artystow-czyli-pilot-ir-do-nikona/). Autor tego projektu wykorzystał zapewne opis sekwencji zwalniającej migawkę, umieszczony pod tym adresem: http://www.sbprojects.com/projects/nikon/index.php (reverse engineering rządzi, nie ma co).
W każdym razie artykuł i opis projektu jest świetny i rzeczywiście program bardzo dobrze działa na moim Leonardo. Idąc jednak w kierunku wskazanym przez autora, postanowiłem zaimplementować jego rozwiązanie na czymś prostszym i tańszym. I możliwie mobilnym. Ze względu na szalenie nieskomplikowany charakter programu i małą jego zasobożerność, wybrałem do implementacji malutki mikrokontroler, jeden z moich ulubionych, ATtiny 2313.
Początkowe próby napisania odpowiedniego wsadu w BASCOM-i…

Arduino i wyświetlacz LCD sterowany przez UART

Być może niektórzy z Was pamiętają mój moduł wyświetlacza sterowany przez port szeregowy. Fajna rzecz - jeśli wolno mi się w ten sposób pochwalić - pozwalająca ocalić cenne wyprowadzenia mikrokontrolera od "zajęcia" przez sterownik wyświetlacza zgodny z HD44780 i wysyłać dane do prezentacji na ekraniku LCD przez zaledwie dwie linie (w tym tylko jedno wyprowadzenie mikrokontrolera - TxD; druga linia to masa).
Odchodząc na chwilę od Noduino (choć właściwie można by pokombinować z wyświetlaczem i w tym kierunku - o ile Noduino na to pozwoli) postanowiłem sprawdzić, jak Leonardo poradzi sobie z moim wyświetlaczem. W tym celu pozwoliłem sobie zmodyfikować jeden z załączonych do IDE Arduino programów przykładowych i przygotować małe demko, którego kod źródłowy prezentuję poniżej:


Zadaniem programu jest wyświetlanie kolejnych znaków ze zbioru podstawowego ASCII oraz ich kodów w systemie dziesiętnym, szesnastkowym i binarnym. Kod odrobinę udziwniony, ponieważ musiałem go dostosować …

Arduino Leonardo i Noduino - kilka poprawek w kodzie i wszystko pięknie działa.

Tak, wbrew deklaracjom zaopatrzyłem się jednak w płytkę prototypową Arduino - wybór padł na wersję Leonardo z ATmegą 32u4 na pokładzie i wysokim profilem (czyli z wlutowanymi złączami).
Pierwszą rzeczą, jaką zrobiłem, było oczywiście podłączenie urządzonka do peceta i sprawdzenie, czy działa - program testowy, domyślnie wgrany do Leonarda, zaczął elegancko zaśmiecać bufor portu szeregowego. Czyli wszystko OK. Potem odbyła się próba migania dostępną na płytce diodą LED - również bez problemów. Można więc zaczynać zabawę.
Mimo zakupu Arduino nadal twierdzę - żeby nie było nieporozumień - że umiejętność wykorzystywania w projektach "czystych" mikrokontrolerów daje dużo więcej możliwości, wspartych i ograniczonych jedynie naszą kreatywnością. Problem może wystąpić tylko w przypadku, gdy brakuje gotowych bibliotek (dla C czy BASCOMa) do obsługi konkretnych układów (np. wyświetlaczy) lub dostarczających określonych, "wysokopoziomowych" funkcjonalności. Pod tym względem w…

Midnight hacking, czyli jak z powrotem udźwiękowić pewne rozszerzenie do Chromium.

Zapewne wielu użytkowników Google+ i przeglądarki Chrome/Chromium ma zainstalowany dodatek Replies and more for Google+.
Jedną z ciekawszych moim zdaniem funkcjonalności jest wizualne i dźwiękowe powiadamianie o hm... powiadomieniu G+:


Okazało się, że gdy zmigrowałem z Chrome do Chromium (ponieważ Chrome już mi wyświetla komunikat o zakończeniu publikowania aktualizacji dla mojej wersji ubunciaka - owszem, muszę zaktualizować system do kolejnego LTS-a, ale chwilowo nie dysponuję wolnym czasem, a tego typu komunikaty mnie denerwują) wspomniany plugin przestał dźwięczeć...
Wystarczyła jednak poprawka w pliku:
~/.config/chromium/Default/Extensions/<identyfikator rozszerzenia Replies and more for Google+>/<numer wersji>/background.js
gdzie wiersz:
audio.src = chrome.extension.getURL("chime.mp3");
zamieniłem na:
audio.src = chrome.extension.getURL("chime.ogg");
i wszystko wróciło do normy, czyli powiadomienia wyskakiwały z dźwiękiem.
Autor rozszerzenia oczywiś…

Programowanie AVR cz. 9: Mierzymy temperaturę.

Co prawda w zamierzeniu miał to być obszerny artykuł na temat pomiaru temperatury przez układ mikroprocesorowy na bazie ATmegi 48P, ale po dłuższych przemyśleniach doszedłem do wniosku, że o wiele lepiej będzie po prostu pokazać schemat układu i listingi programów, z niewielkim, niezbędnym komentarzem.

Mając do dyspozycji mikrokontroler ATmega 48P możemy zbudować prostu termometr na co najmniej dwa sposoby. Pierwszy z nich może się opierać na odczytywaniu temperatury z wewnętrznego sensora, jednak aby uzyskać w miarę zadowalające wyniki, należy przeprowadzić kalibrację - szczegóły znajdziecie w specjalnie tej tematyce poświęconym dokumencie, dostępnym na stronach firmy Atmel.
Poniższy listing pokazuje, jak możemy wykorzystać wewnętrzny sensor (wyniki wyświetlane są na "szeregowym" LCD mojej produkcji):

Kalibracji dokonałem z grubsza, nie dysponując ani możliwością uzyskania znacznej różnicy temperatur, ani też dobrym termometrem wzorcowym. Zauważmy, że z wbudowanym czujniki…

RaspberryPi: kwestia zasilacza.

Przypuszczam, zresztą chyba dość trafnie, że znakomita większość z nas, użytkowników RaspberryPi, zasila swoje urządzonka z prostych zasilaczy impulsowych (przetwornic, jak kto woli), dostępnych za kilkanaście do kilkudziesięciu złotych w marketach czy serwisach aukcyjnych. Albo kupionych wcześniej, jako element wyposażenia innych urządzeń - tak jest np. w moim przypadku, kiedy zauważyłem, że do zasilania RPi doskonale się nada ładowarka do czytnika.
Urządzenia te spełniają najczęściej podstawowe założenia dotyczące wydajności pożądanej przez RPi (napięcie 5V, pobór prądu około 750mA) - tabliczki znamionowe jak jeden mąż mówią, że będzie na wyjściu 5V z maksymalną wydajnością prądową do 1A. I zwykle dają radę. Ja jednak dawno, dawno temu straszyłem, że sam sobie zrobię zasilacz do maliny. I owszem, zrobiłem, ale z wyżej wymienionego powodu zmienił się target - układ został zaadaptowany do zasilania moich prototypów i eksperymentów mikroprocesorowych. Oprócz 5V daje też 3,3V (bo miałem…

RaspberryPi: serwer wydruku.

I to by było na tyle - więcej pisać nie trzeba, bo też i filozofii specjalnie w tym nie ma... Ale jakby ktoś potrzebował, służę uprzejmie.

Od jakiegoś czasu zastanawiam się nad zakupem serwera wydruku, nawet mógłby pracować z drukarką wyposażoną w łącze równoległe (moja akurat ma i USB i Centronicsa), niestety ciągle blokuje mnie cena - jak na niewielki stopień komplikacji i niezbyt zaawansowaną technologię ciągle za wysoka, nawet w przypadku printserverów LAN-owskich. Wczoraj, grzebiąc bezmyślnie w internetach, natknąłem się na artykuł poświęcony malinie i gdzieś na początku przeczytałem, że ludzie robią z RaspberryPi przeróżne ustrojstwa, w tym centra multimedialne, serwery wydruku... I tu dostałem nagłej eureki... Przecież malina u mnie się ostatnio nudzi, a drukarkę udostępniam laptopowi żony przez komputer stacjonarny, który musi być włączony itd., a jest to - jak na porządną stacjonarkę przystało - kobyła i bomba energetyczna... A RaspberryPi, zasilany z zasilacza impulsowego, ż…

RaspberryPi: odbiór informacji lokalizacyjnych oraz aktualnego czasu z modułu bezprzewodowego GPS (Bluetooth).

Kolega na swoim blogu wspomniał parę dni temu o synchronizacji zegara RaspberryPi z sygnałem czasu przekazywanym przez satelity systemu GPS (http://guzik.net.pl/blog/2013/03/mobilne-raspberry-pi/). Wystarczyło :-)
Bawiąc się "Mailną" zapomniałem (no jak mogłem???) właśnie przekształcić ją w komputerek-nawigację, choć może to zbyt mocne określenie. Chodzi o to, żeby RaspberryPi przekonać do współpracy z bezprzewodowym modułem GPS Nokia LD-3W. Z takiej współpracy mogą wyniknąć dwie korzyści (co najmniej):
ciągle aktualizowany odczyt informacji o lokalizacji;synchronizacja zegara "Maliny" z czasem satelitarnym (poprzez ntp; RaspberryPi nie ma RTC z podtrzymaniem bateryjnym - jeśli ktoś chce, to kolega, będący autorem linkowanego wyżej bloga, opisał pokrótce, jak dodać taki sprzętowy zegar). Mając współrzędne i masę innych, ciekawych informacji dotyczących położenia, puszczając wodze fantazji i dodając odrobinę kreatywności, można wręcz stworzyć sobie całkiem niezły kom…

[Rozwiązanie] Samsung GT-C3322: "błąd logowania" i "błąd sieci" podczas próby skorzystania z wbudowanego klienta Twittera (i zapewne też Facebooka).

Parę miesięcy po zakupie telefonu Samsung GT-C3322 (czytaj o moich spostrzeżeniach z pierwszego dnia użytkowania), świetnie działająca dotychczas natywna (wbudowana) aplikacja kliencka Twittera nagle zaczęła - podczas próby zalogowania się w serwisie - wyrzucać komunikaty "Błąd logowania" i "Błąd sieci"... Po kilku godzinach prób z różnymi konfiguracjami, mieszaniem w koncie na Twitterze, zrobieniu sobie przerwy i zalogowaniu się (nieudanym oczywiście) po kilku dniach, w końcu dałem sobie spokój - i tak bez większych problemów używałem Twittera przez przeglądarkę (Opera Mini). Jednak co jakiś czas, łudząc się nadzieją, że coś się naprawiło, próbowałem się zalogować... Tiaaa...
Przedwczoraj jednak stwierdziłem, że nie może tak być, że telefon ma jakąś funkcjonalność, którą z przyjemnością bym wykorzystał, a ona jak na złość nie działa. Kombinowałem nawet, czy przypadkiem ekipa Twittera nie namieszała znowu w API, albo czy nie pomogłaby aktualizacja oprogramowania t…

Programowanie AVR cz.8: Przetwornik analogowo-cyfrowy oraz modulacja szerokości impulsu.

Dziś kolejny wgląd w wyposażenie mikrokontrolera ATmega48P - tym razem przyglądamy się wbudowanemu w układ przetwornikowi analogowo-cyfrowemu oraz - dostępnej również w modelach ATtiny - modulacji szerokości impulsu realizowanej przez timery.

Artykuł ten jest w pewnym sensie wstępem do następnego, który pojawi się już wkrótce, a którego tematykę zdradziłem na końcu.

Przetwornik A-C (skrót spotykany w anglojęzycznej literaturze to ADC od Analog to Digital Converter) to układ pozwalający na zamianę wartości napięcia (elektrycznego sygnału analogowego ;-)) na liczbę. W przypadku mojej ATmegi przetwornik ma rozdzielczość 10-bitową, co oznacza, że wartość napięcia podawanego na wejście przetwornika może być po konwersji zapisana jako liczba z przedziału od 0 do 1023 (musimy użyć zmiennej word do zapamiętania tej liczby). Jeśli jesteśmy w posiadaniu mikrokontrolera w obudowie PDIP 28-wyprowadzeniowej, to mamy do dyspozycji sześć kanałów (niezależnych wejść) przetwornika A-C, przyporządkowan…

Czego zazdroszczę amerykańskim kolegom?

Dlaczego akurat amerykańskim? Nie wiem, ale jakoś tak większość książek informatycznych, jakie przewinęły mi się przez ręce, była napisana przez właśnie autorów ze Stanów.

Bo znów bloguję o pisaniu książek. Informatycznych oczywiście.

Zatem obiektem mojej zazdrości jest czas, który niejednokrotnie autorzy zza oceanu dostają od swoich wydawnictw na napisanie bądź dokończenie książki. Ileż to razy czytałem w jakże charakterystycznych dla autorów z Nowego Świata podziękowaniach dla żon, ojców, matek, mężów, przyjaciół itp. że są szalenie wdzięczni za cierpliwość, jaką wspomniane osoby miały dla nich przez cały rok, kiedy to ich myśli były skierowane wyłącznie na książkę, nad którą pracowali... Rok! Marzenie. Ja najwięcej czasu to chyba ze trzy miesiące miałem - nie pamiętam dokładnie, musiałbym rzucić okiem na umowy. Krótki czas jest z jednej strony uzasadniony - we współczesnej informatyce zmiany zachodzą tak szybko, że jeżeli wyda się książkę o danej technologii, oprogramowaniu, języku…

Niesamowicie prosty czujnik zmierzchowy.

Tym razem zero programowania, będzie natomiast nostalgiczno-wspomnieniowy układzik, lekko zmodyfikowany.
Otóż kilka dni temu rozmawialiśmy w gronie znajomych o różnego rodzaju czujnikach zmierzchowych i czujnikach ruchu. Ponieważ należę do tych wariatów, co to hołdują jeszcze owej przestarzałej i kompletnie odrealnionej dziś zasadzie: "po co kupować, gdy można zrobić", stwierdziłem, że poskładam takie coś (czujnik zmierzchowy; sensor ruchu faktycznie lepiej nabyć, choćby ze względu na rozmiary ;)) i być może podłączę do jakiegoś mikrokontrolera. Przypomniało mi się też przy okazji, że znalazłem ostatnio w elektronicznych śmieciach stary fotorezystor (dla niewtajemniczonych: element zmieniający rezystancję, czyli opór elektryczny, pod wpływem działania strumienia światła) RPP130, jeden z kilku pozostałych po montowanych wieki temu układach tranzystorowych do zdalnego sterowania pracą urządzeń za pomocą latarki... No OK, nie było to specjalnie rozbudowane zdalne sterowanie ;)

Programowanie AVR cz. 7: Mikroprocesorowy sterownik wyświetlacza alfanumerycznego LCD (układ HD44780 lub odpowiednik) z dostępem przez łącze szeregowe.

Podłączenie wyświetlacza alfanumerycznego na układzie HD44780 (lub podobnym) do mikrokontrolera wymaga użycia w najlepszym przypadku sześciu wyprowadzeń. Jeżeli musimy wykorzystać mały mikrokontroler, np. ATtiny2313, stracimy sporo linii, które mogłyby służyć do realizacji innych funkcjonalności. Zasygnalizował mi to swego czasu znajomy, który właśnie m. in. z tego powodu nie przepada za LCD.
Można jednak wykonać małe obejście, które pozwoli na wykorzystanie do połączenia wyświetlacza z mikrokontrolerem dwie linie (czyli dwa wyprowadzenia), przy założeniu istnienia wspólnego obwodu zasilania. Z pomocą przychodzi nam sprzętowy port szeregowy UART, będący na wyposażeniu większości mikrokontrolerów AVR. Ma on ponadto kompletne wsparcie w BASCOMie, a podejrzewam, że jego wykorzystanie w języku C również nie nastręcza problemów.
Założenie projektu, który przedstawiam w tym artykule, jest proste: zrealizować mikroprocesorowy sterownik wyświetlacza, który znaki do wyświetlania oraz zbiór pod…