Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2012

Programowanie AVR cz. 6: Czy ATmega z ATtiny mogą się jakoś dogadać?

Mogą. I to na wiele sposobów. Doświadczeni elektronicy od razu wskażą kilka - od prostego połączenia port-w-port począwszy.
Jednym z elementów wyposażenia mikrokontrolerów AVR, a dokładniej moich dwóch modeli ATtiny2313 i ATmega48P, jest zrealizowany sprzętowo port UART, zgodny logicznie z RS232 (jeśli chodzi o całkowitą zgodność, konieczne jest użycie układu dopasowującego napięcia - można użyć tranzystorów lub MAX232). Obsługa tego portu w BASCOMie jest banalnie prosta. Posłużmy się przykładem. Niech ATmega będzie nadajnikiem, który wysyła przez łącze szeregowe, w odstępach co ok. pół sekundy, kolejne duże litery alfabetu łacińskiego (a przy okazji każdy wysłany znak sygnalizuje zapalająca się na chwilę dioda - schematu i konstrukcji układu z poprzedniego posta nie zmieniałem); wysyłanie liter uruchamiane jest przyciskiem. ATtiny zaś, wyposażony w wyświetlacz LCD, będzie odbiornikiem, który podczas oczekiwania na znak wyświetla napis "Ready...", po odbiorze znaku wyświetla…

Kolejny Program do Blogowania - można pobierać ostatnią wersję.

Kilka dni po zamknięciu projektów i usunięciu plików z GitHuba (pisałem o tym na blogu) dotarły do mnie informacje, że ktoś chciałby jeszcze użyć mojego Kolejnego Programu do Blogowania. Biorąc pod uwagę to zainteresowanie udostępniłem do pobrania ostatnią wersję programu - proszę kliknąć TUTAJ :)
Należy jednak pamiętać, że jest to wersja w bardzo mocno początkowym stadium rozwoju, jej uruchomienie wymaga kilku zabiegów (opis w pliku README). I nie została nigdy przetestowana pod Windows, co istotne.


Programowanie AVR cz. 5: ATmega przybyła...

W tym artykule nie będzie nic nowego ani odkrywczego jeżeli chodzi o software - prezentowane programy są banalnie proste. Chodzi raczej o zastąpienie - przynajmniej na chwilę - mojego ulubionego procesorka ATtiny2313 nową ATmegą 48P. Zamówiłem kilka egzemplarzy tego bardziej zaawansowanego mikrokontrolera głównie dla wypróbowania jego możliwości i ficzerów. Na początku więc zmontowałem prosty układ z trzema diodami LED, napisałem programik, który miał powodować ich miganie, następnie zaś wyposażyłem procesor w oscylator kwarcowy 4MHz z kondensatorami blokującymi i odpowiednio ustawiłem fusebity. 4MHz - częstotliwość dużo niższa, niż ta, którą się ATmegom zadaje, ale chodziło mi o zachowanie kompatybilności w kontekście uzależnień czasowych (częstość przerwań timerów itp.) z układami projektowanymi na ATtiny. Inna rzecz, że tylko takie oscylatory mam w swoich śmieciach...
A propos śmieci - wygrzebałem w nich również dwie sztuki drivera mocy ULN2803 (uwaga: linki do kart katalogowych opi…

Zakończenie rozwoju programów z sekcji "Po godzinach"

Od jakiegoś czasu nie rozwijałem już Kolejnego Programu do Blogowania ani Odbiornika GPS. Podeszły wiek obu projektów, jak i porzucenie przeze mnie jakichkolwiek prac nad nimi, przyczyniły się do podjęcia decyzji o usunięciu repozytoriów z GitHuba. Egzekucja ułatwiona tym bardziej, że byłem jedynym programistą pracującym nad kodem tych aplikacji i nie było żadnych forków :)
Jak już napisałem na podstronie "Po godzinach", serdecznie dziękuję każdemu użytkownikowi, który poświęcił czas na przetestowanie tych programów.
Być może kiedyś wrócę do tych aplikacji - na dzień dzisiejszy raczej nie. Ale "nigdy nie mów nigdy", jak zwykł to podsumowywać James Bond.

RaspberryPi: wspólna klawiatura, wspólna mysz i ewentualnie wspólny monitor, czyli jak zachować spokój...

Zapewne wielu z Was używa na co dzień świetnego programu Synergy (http://synergy-foss.org/). Bo też wielu z Was spotkało się z sytuacją, kiedy to trzeba było w tym samym czasie (szachista powiedziałby: symultanicznie) obsługiwać dwa lub więcej komputerów. W moim przypadku, na szczęście, liczba fizycznych (znajdujących się w tym samym pomieszczeniu, a nawet na tym samym biurku) komputerów obsługiwanych równolegle nie przekroczyła dwóch - stacjonarny i laptop.
Żeby usprawnić sobie pracę najlepiej jest, przełączając się między komputerami, nie odrywać rąk od klawiatury i myszy - można ewentualnie spojrzeć na drugi monitor (do czego zresztą coraz częściej przychodzi nam się przyzwyczajać). Rozwiązań jest wiele - choćby różne wynalazki typu VNC, tyle, że zdalne pulpity, jak sama nazwa wskazuje, najlepiej sprawdzają się w pracy zdalnej (sieć o większym zasięgu, niż klasyczny LAN). Synergy zaś, mimo, że również wykorzystuje łącze sieciowe, służy po prostu do umożliwienia korzystania z jednej…

Programowanie AVR cz. 4,5: Poprawki związane z drobnym przeoczeniem.

Parę dni temu, tuż po publikacji poprzedniego wpisu (na temat zegara PCF8583P) zorientowałem się - przypadkowo, jak to zwykle bywa, ale też na skutek poczynionych obserwacji - że użyłem w układzie prototypowym egzemplarza mikrokontrolera z fusebitami ustawionymi domyślnie. Głównie chodzi tu o bity dotyczące częstotliwości taktowania i używanego generatora. Zaglądając w okienko pokazujące stan fusebitów zauważyłem, że mikrokontroler używa ciągle wewnętrznego generatora 8MHz z podziałem częstotliwości przez 8, czyli jest taktowany przebiegiem o częstotliwości efektywnej 1MHz. Do sprawdzenia stanu fusebitów skłonił mnie pomiar czasu pomiędzy kolejnymi przerwaniami timera nr 1 - skonfigurowałem go w pisanym właśnie programie jako timer, który powinien generować przerwanie co 1 sekundę. Jednak sekunda ta trwała nieco dłużej...

Na obrazku poniżej pokazane zostały prawidłowe wartości fusebitów dla układu taktowanego sygnałem z generatora stabilizowanego zewnętrznym kwarcem 4MHz, czyli takim,…

Programowanie AVR cz. 4: ATtiny2313 + PCF8583P + AT24C04 + I2C,czyli... zabrakło pamięci, ale jest zegar nastawiany "w locie".

Kontynuując zabawę z magistralą I2C (patrz: poprzedni artykuł o programowaniu AVR) i grzebanie w elektronicznym złomie, natknąłem się na niepozorny układ scalony PCF8583P, zamontowany wraz z - jak się domyśliłem - odpowiednim oscylatorem kwarcowym na prehistorycznej płytce uruchomieniowej, jeszcze chyba z czasów AT89C4051. Układ ten to zegar czasu rzeczywistego (RTC) wraz z kalendarzem i obsługa alarmów, zarządzany (programowanie, odczyt) poprzez magistralę I2C. Nie zastanawiając się długo postanowiłem dołączyć ten układ do systemu z poprzedniego wpisu, żeby stworzyć wypasiony zegar, kalendarz, budzik... Niestety, szybko okazało się, że mój ulubiony mikrokontroler ATtiny2313 ma zbyt mało pamięci FLASH, żeby pomieścić finezyjny kod, który zaczął mi wychodzić (żaliłem się już w moim streamie Google+). Dlatego też ograniczyłem program demonstracyjny do samego zegara - jedyny ficzer, jaki się pojawił, to nastawianie godziny i minuty "w locie" za pomocą dwóch przycisków. Oznacza …

Kalkulator CASIO fx-82ES PLUS i drażniący problem konwersji między systemami liczbowymi.

Jeśli już ktoś, kto zajmuje się informatyką i elektroniką cyfrową, decyduje się na zakup kalkulatora - często takie urządzenie bywa przydatne, a jak ktoś jest inżynierem, to posiadanie kalkulatora staje się nieodzowne (kalkulator to atrybut inżyniera) - chciałby, żeby jedną z jego podstawowych funkcjonalności była konwersja DEC->BIN->HEX->OCT->... A ponieważ tę funkcjonalność posiadają praktycznie wszystkie kalkulatory oznaczone napisem "scientific", nawet te bazarowe, zakupiłem kilka miesięcy temu wspomniany w tytule model, przejrzawszy wcześniej z grubsza jego funkcje. Właśnie - z grubsza. Okazało się, że kalkulatorek, który prowadzi obliczenia w zapisie naturalnym i jest naszpikowany wieloma funkcjami - w tym statystycznymi, potrafi obliczać wartości zadanej funkcji f(x) dla określonego przedziału x... nie ma wspomnianej konwersji!!! Miód po prostu... W pracy trzymam kalkulator za 12zł, który tę funkcjonalność posiada...
No ale trzeba sobie radzić. Oczywiście …

Programowanie AVR cz. 3: ATtiny2313, EEPROM AT24C04C i magistrala I2C. Oraz krótko o pewnej zapomnianej obietnicy.

000 wstęp

Głównym bohaterem tego posta jest magistrala I2C, zwana również interfejsem dwuprzewodowym (ang. Two-wire lub 2-wire interface). To proste łącze wykorzystywane jest w wielu ciekawych układach mogących współpracować z mikrokontrolerami i nie tylko. Można tu wspomnieć - żeby nie było, że użyłem słowa "wielu" bez pokrycia - choćby o układach pamięci, zegarach czasu rzeczywistego, przetwornikach AC/CA...
Co prawda "małe" mikrokontrolery nie mają dedykowanych linii dla I2C, ale dzięki środowiskom i bibliotekom dla programistów, zapewniającym pełną implementację m. in. protokołu I2C, mamy możliwość bezproblemowego wykorzystania dobrodziejstw tej magistrali posługując się uniwersalnymi liniami wejścia - wyjścia. Można też podjąć się samodzielnej implementacji obsługi tej magistrali - jeśli ktoś lubi takie wyzwania.

Na początek jednak warto przyjrzeć się samej idei i koncepcji magistrali I2C:
I2C w Wikipedii Dobrze by było też przeanalizować kartę katalogową ukła…

Programowanie mikrokontrolerów AVR cz. 2

Parę uwag na temat programowania w sensie wgrywania przygotowanego (skompilowanego) programu (wsadu) do pamięci flash mikrokontrolera ATtiny2313 (i nie tylko).
W pierwszym artykule na temat programowania AVR-ów założyłem, że dysponujemy płytką AVT3500 wraz z programatorem (kompatybilnym z STK500 v2) - płytka ta i programator wchodzą między innymi w skład zestawu do nauki programowania procesorów AVR. Nie każdy jednak ma dostęp do takiej płytki, czy też ma możliwość jej nabycia. Sam również postanowiłem uniezależnić się od tego zestawu - dotychczas używałem wypożyczonego z pracy. W związku z tym nabyłem (drogą kupna) polecany przez wielu użytkowników programator zgodny z USBASP i podłączyłem go do układu ATtiny2313 według wskazówek z artykułów:
Programowanie ATtiny2313 dla opornychProgramowanie mikrokontrolerów za pomocą programatora USBasp Wszystko działa elegancko - mogę zaprogramować układ bezpośrednio ze środowiska BASCOM-AVR oraz korzystając z avrdude (zarówno w systemach Linux, ja…

Programowanie mikrokontrolerów AVR cz. 0

Zwykle w okolicach początku roku szkolnego piszę o edukacji jako takiej - co bym zmienił, co jest złe, co dobre itp. Dziś, zamiast tego co zwykle, będzie prequel poprzedniego artykułu o programowaniu AVR-ów w BASCOM-ie, a w zasadzie krótka prezentacja, jak w najprostszy sposób zmontować nieskomplikowany układ z ATtiny2313 w roli głównej.
Najpierw koncepcja. Wykorzystamy dwa wyjścia mikrokontrolera do zapalania i gaszenia (na przemian) dwóch diod świecących lub - jak w moim przypadku - kolorków jednej diody dwukolorowej ze wspólną katodą. Żeby nie przesadzać (jeszcze bardziej - wszak taki układ można zmontować z dwóch tranzystorów, dwóch kondensatorów i kilku rezystorów) z przerostem formy nad treścią, wykorzystamy wewnętrzny zegar taktujący ATtiny (co prawda 8MHz, ale mocno niestabilny - tutaj jednak nie powinno to w niczym przeszkadzać), cały układ natomiast zasilimy z trzech baterii AA (3*1,5V). Potrzebny będzie zatem ATtiny2313, dwa rezystory 220 Ohm, jedna dioda świecąca dwukolor…

RaspberryPi jako domowy serwer WWW - test wydajności (cz.2: Raspbian)

Po kilku godzinach poświęconych na doprowadzenie świeżo pobranego Raspbiana do stanu używalności - czyli po doinstalowaniu niezbędnych pakietów oprogramowania i skonfigurowaniu sobie środowiska pracy - przystąpiłem do testów serwerów WWW. Zasady testowania były podobne, jak za poprzednim razem, jednak konfiguracja platformy nginx + PHP trochę się zmieniła. Otóż jak pisałem wczoraj na twitterze i G+, repozytoria Raspbiana są bogatsze, niż Debiana Squeeze - przynajmniej o php5-fpm (FastCGI Process Manager) oraz node.js (w wersji 0.6.19 - nie najnowsza, ale w zupełności wystarczy). W poprzednim rozwiązaniu nginx współpracował z PHP poprzez FastCGI za pośrednictwem "rozpylacza" spawn_fcgi, który skonfigurowałem do odpalania maksymalnie trzech procesów php5-cgi. W nowszym rozwiązaniu mamy już możliwość zainstalowania efektywnego "rozpylacza" w postaci właśnie PHP-FPM, który - przynajmniej w założeniach - powinien działać adaptatywnie, czyli odpalać odpowiednią liczbę pr…

RaspberryPi jako domowy serwer WWW - test wydajności (cz.1: Debian Squeeze)

W poprzednim wpisie na temat Raspberry Pi przedstawiłem sposób przekształcenia popularnej Maliny w domowy serwer WWW. Wykorzystałem nginksa, ponieważ jest lżejszy od apache, głównie dzięki  (ciągle jeszcze) nowatorskiej metodzie obsługi żądań, pozwalającej zaoszczędzić cenne zasoby skromnego systemu komputerowego, jakim niewątpliwie jest Raspberry Pi. Do tego oczywiście PHP5 i interfejs FastCGI, MySQL i SQLite. MySQL w wersji dostępnej w ramach dystrybucji Debian Squeeeze okazał się "odrobinę" za ciężki dla RPi, dlatego też, o ile to tylko możliwe, powinno się korzystać z SQLite lub innego, lekkiego rozwiązania - może któraś z NoSQL? Ale to już temat na osobny artykuł (NoSQL to nie moja działka) - wróćmy zatem do samego serwera webowego.
Bardzo ważna jest wydajność serwera WWW, rozumiana tutaj jako jego zdolność do sprawnego obsłużenia pewnej liczby żądań w jednostce czasu. Owszem, serwer domowy będzie obsługiwał co najwyżej kilka żądań w danym momencie, ale chodzi o sprawdz…

RaspberryPi jako domowy serwer WWW

000 pomysł

Stworzenie serwera domowych zasobów cyfrowych, czyli plików wszelkiej maści (chodzi o niewielką liczbę plików, do których chcemy mieć szybki dostęp; głównie zdjęcia i muzyka, ewentualnie jakieś dokumenty, faktury itp.) to jeden z pomysłów na wykorzystanie platformy RaspberryPi (http://www.raspberrypi.org/, dedykowane WiKi: http://elinux.org/R-Pi_Hub).

001 konfiguracja

Zaczynamy od podstawowej konfiguracji Debiana, dostępnego na stronie projektu w sekcji Downloads - wszystkie niezbędne czynności opisano np. na wskazanej wcześniej stronie WiKi.
Warto włączyć sobie obsługę karty muzycznej (nieprzydatna w serwerze, ale chcemy mieć pewność, że wszystko działa ;)) - najlepiej według opisu na stronie http://j.mp/M6oRuG. Pamiętać musimy, że w celu automatycznego uruchamiania dźwiękówki podczas startu systemu, należy uaktywnić moduł snd_bcm2835 w pliku /etc/modules.
Następny krok nie jest konieczny, ale można spróbować - chodzi o obsługę "kart" WiFi (w postaci dongla USB)…

Programowanie mikrokontrolerów AVR cz. 1

Niniejszym rozpoczynam serię artykułów, których celem będzie zgromadzenie i udostępnienie programów ilustrujących różne aspekty programowania mikrokontrolerów AVR. Nie ukrywam, że będzie to seria przeznaczona przede wszystkim dla uczniów technikum, dla których prowadzę zajęcia z układów mikroprocesorowych i z programowania mikroprocesorów. Zaczniemy oczywiście od podstaw i od prostych mikrokontrolerów (posiadamy platformy testowo-uruchomieniowe dla ATtiny2313, w planach na "powakacje" są również ATmegi); oczywiście programy będą dotyczyły na początku elementarnej problematyki działania układów mikroprocesorowych, komunikacji ze "światem zewnętrznym" i użytkownikiem.
A dziś jeden prosty program (na zachętę), który napisaliśmy z uczniami w środę, 25 kwietnia, na sucho, na tablicy - latająca małpka ("@" przemieszcza się dookoła ekranu). Jednak na zajęciach program był przedstawiony łopatologicznie, napisany "metodą inżyniera Nachamowa". Tutaj zaś po…

Samsung GT-C3322, czyli powrót do zwykłego telefonu.

Krótko trwała moja przygoda ze smartfonem, chociaż po Siemensie M50 (wiosna 2003 - lato 2006) Nokia E51 jest u mnie na drugim miejscu pod względem czasu użytkowania (wiosna 2009 - wiosna 2012), a niewątpliwie na pierwszym miejscu ze względu na intensywność użytkowania. I pewnie nie zrezygnowałbym z tego urządzenia ot tak, żeby wymienić na nowe, ale - niestety - od pewnego czasu miałem wrażenie, że bardzo słabo słyszę rozmówcę (tak, używałem tego telefonu do klasycznych rozmów, nie tylko przez Skype).
Szukałem czegoś w miarę nieskomplikowanego za całkowicie niewielkie pieniądze (300 - 400 zł). Niestety, ciężko znaleźć w tym przedziale cenowym coś interesującego, mimo moich skromnych wymagań. Zdecydowałem się jednak na telefon dość nowy, wprowadzony na rynek w październiku 2011 roku (o ile wierzyć serwisom specjalistycznym) i zaskakująco tani (259 zł w Euro AGD RTV), Samsung GT-C3322. W zasadzie dwie rzeczy zadecydowały o zakupie: możliwość obsługi dwóch kart SIM (mam dwa aktywne numer…

Stare źródła: Wii Remote jako miecz świetlny ;-)

Grzebiąc w katalogu z różnymi programami, których pisanie kiedyś zacząłem, ale z jakichś powodów nie dokończyłem, znalazłem programik pozwalający poczuć Moc Jedi z wykorzystaniem pilota-kontrolera do konsoli Nintendo Wii (Wii Remote), połączonego z pecetem (linux + Python) poprzez Bluetooth...
Program szalenie prosty, kaleki wręcz, w mocno początkowej fazie "rozwoju", kiedy to starałem się wyczuć i zrozumieć informacje zwracane przez akcelerometr. Pamiętam, że model zdarzeniowy, udostępniany przez cwiid dla Pythona, wyrzucał mi jakieś błędy, zastąpiłem go więc nieskończoną pętlą (tak swoją drogą, makabra).
Cała zabawa polega po prostu na włączeniu ustrojstwa i machaniu :-)

Kod źródłowy poniżej.



Oprócz odpowiednich bibliotek dla Pythona, trzeba również przygotować sobie pliki WAV z dźwiękami miecza (razem 12 - włączenie, buczenie w stanie spoczynku i dziesięć machnięć).

Niech Moc będzie z Wami!