niedziela, 23 listopada 2014

BTE14-04 (+sterowniki) Klon Arduino Uno za 15zł - czy warto?

Cześć!

Już jakiś czas temu planowałem zakupić coś zgodnego z pinologią Arduino. Miałem co prawda komputerek Intel Galileo z rozkładem pinów Arduino, ale nie był to ani dobry komputerek, ani dobre Arduino. Przeglądając strony Aliexpress znalazłem różne klony różnych wersji tych otwartoźródłowych płytek. Zdecydowałem się na coś najtańszego oraz kompatybilnego z UNO R3. Znalazłem płytkę za 4,5$ co była całkiem spoko opcją, jedynym jej brakiem był brak kabla USB, który i tak miałem. Jest to płytka oznaczana jako BTE14-04. Chińczyk się szybko uwinął i w 10 dni po zamówieniu miałem już ją u siebie.


Rzut okiem
Tak wygląda omawiany klon.

Płytka wygląda na dobrze wykonaną, laminat nie przypomina w żadnym stopniu tego z produkcji garażowej. Wszystko trzyma się dobrze, nawet wtyk USB sprawia wrażenie że wytrzyma swoje. Czy wyrobi się po jakimś czasie? Wyjdzie w praniu.
Wbudowane są 4 ledy: od zasilania, TX i RX, oraz podpięta pod 13 pin (standard pod demo Hello World - migającej diody).
Zasilanie zewnętrzne działa poprawnie, stabilizator AMS1117 ogarnia do 12V, wyżej nie testowałem (nota katalogowa mówi max 15V oraz prąd max 1A). 


Software

Widok z panelu sterowania
Po wpięciu urządzenia pod USB, mój system (Windows 8.1) wykrył i zainstalował sterowniki bez problemów. W przypadku 'niższego' systemu trzeba pobrać własnoręcznie:
http://goo.gl/UJc30b (Dzięki Dominik za linka! :))
W menadżerze urządzeń w zakładce porty pojawiło się kolejne urządzenie USB-SERIAL CH340. Pod portem znalezionym przy tej nazwie będzie się zgłaszał nasz klon i ten port trzeba będzie wybrać przy dłubaniu się w Arduino IDE.

Pobieramy najświeższe Arduino z oficjalnej strony http://arduino.cc/en/main/software. Instalujemy, w narzędziach wybieramy płytkę Arduino Uno i port pod którym się zgłosiła płytka i tyle. Można spokojnie kodzić :) Przetestowałem kilka przykładów, wszystko chodzi. Mogę z czystym sumieniem polecić tą płytkę każdemu zainteresowanemu zakupem.

Niedocenione Arduino

"Kanapka" z shieldem ze stykówką :)
Nie miałem wcześniej styczności z 'hardwarowym' Arduino, bawiłem się tylko trochę z ATB. Nie dostrzegłem specjalnego potencjału, tyle że musiałem szukać który pin megi odpowiada pinowi programowemu z IDE. Teraz bawiąc się z tym prawdziwym Arduino, stwierdzam że jest genialne w swojej prostocie. Wraz z nakładką z płytką stykową jest fajną małą (6x5cm) platformą do testów. Pełno przykładów, jeśli masz pomysł to po prostu składasz je do kupy wedle uznania. Kto nie testował, polecam sprawdzić. Taka moja krótka opinia, najprawdopodobniej w przyszłości poświęcę szerszy artykuł tejże platformie.

Pozdrawiam :)

sobota, 1 listopada 2014

[BETA] Wykres temperatury po WWW - Malinowy projekt użytkowy

Witajcie cześć i czołem!

[Uwaga! Projekt w wersji beta, czyli autor był zbyt leniwy by go uporządkować i pousuwać bugi.]

Mieszkając w domu jednorodzinnym do grzania przeważnie mamy piec C.O. Pracę tego pieca trzeba nadzorować, mieć pogląd na temperaturę, co się dzieję, czy się nie zagotował. Do tej pory w moim domu służył do tego celu dedykowany pecet, stara dobra Dell'ka z rodziny Optiplexów w połączeniu z jakimś termometrem z wykresem na USB od chińczyka z non stop bugującą się aplikacją. Sezon grzewczy mamy dość długi, ok. 4-5 miesięcy, a pecet chodził 24h na dobę. Przydałoby się tu rozwiązanie mniej prądożerne i tu przyszło mi do głowy zastosować malinę.

Nadruk na obrazku przy alarmie?
Czemu nie:)
Założenia projektu: Generator wykresów z dwóch termometrów, z jakąś formą alarmu, czy to sms, czy to miganie dźwięk, cokolwiek. Nie wiedziałem jeszcze co to będzie, ale wiedziałem że tablet zostanie użyty jako mobilny podgląd tychże wykresów, z włączanym ekranem na stałe.

Podłączanie i implementacja czujników DS18B20 w Raspberry Pi jest bajecznie prosta, plug and play i mamy pomiar automagicznie.
Z wykresem jest pewna rozkmina. Jakiś program okienkowy, czy w terminalu czy co? Z pisaniem softu stricte pod PC nie mam żadnego doświadczenia więc szukałem jakiegoś prostego rozwiązania. Znalazłem, ba, nawet zalążek projektu który chciałem uzyskać. Posłużył mi on za bazę do mojego zastosowania.
http://webshed.org/wiki/RaspberryPI_DS1820
Na powyższej stronie znajdziemy także jak sprawdzić czy podłączone czujniki działają i parę innych podstaw.

Wykres na tablecie? Czemu nie!
Mój projekt bazujący na powyższym zalążku składa się z 3 elementów:
- skryptu Pythona stanowiącego główną bazę zlecającego wykonanie pomiaru, narysowanie wykresu, sprawdzenie czy Malina wciąż jest połączona z siecią i paroma innymi dodatkami
- programu RRDtool wykonującego wykresy na podstawie wartości pomiarów
Strona programu: http://oss.oetiker.ch/rrdtool/
- serwera www z obsługą PHP

Każdy postaram się omówić w miarę szczegółowo, aby każdy mógł zrozumieć jak to działa. Działam na Raspbianie, Python w wersji 2.7.3, wiadomo standard. Jest to wersja rozwojowa, można sporo rzeczy poupraszczać, ale jest sprawna. Ja tam żyję zasadą jeśli coś jest głupie, ale działa, to nie jest głupie :D

Zacznijmy od wgrania zależności komendami w terminalu:
sudo apt-get update (opcjonalnie, jeśli kolejne komendy nam nie ruszają z miejsca)
sudo apt-get install rrdtool (program odpowiedzialny za tworzenie wykresów)
sudo apt-get install apache2 php5 php5-gd (serwer www + php5 z jednym modułem który nam się przyda)

Wrzuć poniższą paczkę ode mnie [link]: http://goo.gl/8E8fLC
Zawartość folderu www do /var/www/, pozostałe pliki wraz z folderem term do /home/pi/
Podpinamy dwa czujniki DS18B20 zgodnie z instrukcją. Odczytujemy ich numery ID z konsoli po wklepaniu komendy:
cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
Powinniśmy otrzymać tyle wyników w formie np. 28-000004c00e62 ile podpięliśmy czujników. Wpisujemy numerek pierwszego do pliku get_temp.pl i drugiego get_temp2.pl w folderze term. 
Odpalamy terminal, wpisujemy komendę:
sudo python temp.py 

Plik generuj_baze.sh tworzy wzorcową bazę (jeden plik dla jednego czujnika) do której będą zapisywane wyniki pomiarów z czujników temperatury. Ja w paczce dorzuciłem wygenerowane od siebie, niemniej sprawdź jak się je wytwarza.

Po odpaleniu skrypt sprawdza kolejno:
1. Czy Malina wciąż jest połączona przez WiFi - jeśli nie, ponawia połączenie i zapisuje godzinę rozłączenia. Tak chciałem sprawdzić o której godzinie router dobiera nowe ip. Wszystko pod net.sh
2. Odpytuje czujniki DS18B20. get_temp.pl get_temp2.pl
3. Zleca wykonanie dwóch wykresów przez RRDTool. graph_temp.sh Oraz generowanie dwóch czarnych wykresów (opcjonalnie, do popróbowania) graph_temp_black.sh
Takie cudo.
4. Sprawdza czy nie jest przekroczona temperatura, jeśli jest, zmienia zawartość strony z wykresem ze zwykłej na alarmową.

Wchodzimy na stronę [ip_naszej_maliny]/temp.php i jeśli wszystko jest w porządku naszym oczom powinny ukazać się dwa wykresy jak u mnie. Strona automatycznie odświeża się co pół minuty, czyli co tyle co ile generowany jest nowy pomiar.
Możemy także wejść na [ip_naszej_maliny]/black.php i zobaczyć wykresy w wersji czarnej. Sam do końca nie wiem które są lepsze, zależy od sytuacji.

Jak działa alarm? Po krótce opisze.
Po sprawdzeniu warunku komenda bashowa kopiuje wzór alarmowy strony z wykresami do strony domyślnej. Alarm.php -> Temp.php Wzór ten nadrukowuje na wykresie napis ALARM i sprawia że wykres ten miga.
Nie rozkminiałem za bardzo PHPa, ale takim prostym mykiem nie potrzebujemy tworzyć niesamowitych skryptów w tym języku, które by sprawdzały czy cośtam nie zgłosiło potrzeby zmiany obrazka etc...
Jedynie musiałem rozwiązać problem nadrukowania obrazka na obrazek, przegniłem deko czasu, ale udało się :) Jak to zrobić, prześledz kod stron po kolei. Kiedy alarm minie, skrypt kopiuje z powrotem wzór normalny do normal.php -> temp.php.

Patent jest fajny, można użyć go jako dodatku do domu inteligentnego czy innych bajerków :) Nie jest to jedyna droga, widziałem już na internecie parę projektów pokrewnych, dla każdego coś dobrego.
Planuje go jeszcze rozszerzyć pod kątem konfiguracji strony z wykresem, generowanie wykresu czarnego co też jest niezłym patentem. Trzeba go dopracować, poskładać może te skrypty sh w jeden. Niemniej patent działa, testowałem go u siebie przy C.O. przez parę dni.

Na koniec wszystkie linki:
Paczka z projektem ode mnie http://goo.gl/8E8fLC
Bardzo fajna dokumentacja do RRDTool, tam można konfigurować sobie do woli serio https://calomel.org/rrdtool.html
Projekt z którego zerżnąłem szkielet http://webshed.org/wiki/RaspberryPI_DS1820
Fanpage AvrLand, sporo warsztatowych zajawek ode mnie, czasem wrzucam ciekawostki na które natrafię w sieci etc... zachęcam do lubienia :) https://www.facebook.com/avrland
Mój nowy projekt na VPS: vps.avrland.ovh

Może trochę chaotycznie, jak coś nie halo pytajcie śmiało :)

Pozdrawiam,
Marcin

niedziela, 5 października 2014

HD44780 z Maliną bez kombinacji - poradnik cz. 2

Dżem dobry!

Dobrym prostym rozszerzeniem możliwości Maliny jest klasyczny wyświetlacz dwuwierszowy HD44780. Jest mnóstwo rozwiązań obsługi na necie, większość bazująca na ręcznie dolepianych komendach do programu. Ja tego nie lubię, wolę podłubać sobie tworząc nowy soft niż rozkminiać to co już rozkminione. Szperałem po necie i znalazłem najprostsze w implementacji rozwiązanie obsługi HD44780 w Pythonie. Dostępne na stronie https://pypi.python.org/pypi/RPLCD/0.3.0
Propsy dla autora, Malinowa społeczność w dużej mierze przypomina społeczność Arduino - dostajecie naprawdę dobrą wędkę i tylko Wasza rola w tym, by złowić nią jak najwięcej ryb :)
Jako że połączenie LCD na stykówce było średnio komfortowe, zrobiłem specjalny moduł z potencjometrem od kontrastu, wyprowadzeniami zasilania i pinów komunikacyjnych.

Tak to wygląda w praktyce.

Aby biblioteka zaczęła śmigać, trzeba wypowiedzieć 3 zaklęcia konsolowe w poniższej kolejności:

sudo apt-get install python-setuptools
sudo easy_install pip
sudo pip install RPLCD

Na tą intencję przygotowałem swój testowy skrypt do Pythona:
http://goo.gl/2HzDEc (forma pliku)
http://goo.gl/Wr4jJr (forma copy-paste) 



Złącze maliny w wersji B+
Skrypt wystarczająco skomentowałem, więc z interpretacją nie powinno być problemów :) Miałem rozkminę z jednym faktem, a mianowicie z trybami wyboru pinów GPIO. Dostępne są dwa:
GPIO.setmode(GPIO.BCM) - wybieramy pin po numerze GPIOxx
GPIO.setmode(GPIO.BOARD) -wybieramy pin po numerze na złączu od 1 do 40. Oczywiście te piny które są oznaczone jako GPIO :D

Świetną rozpiskę pinów i ściągawkę do poleceń w Pythonie znajdziecie w poniższym pdfie:
http://raspi.tv/download/RPi.GPIO-Cheat-Sheet.pdf
Polecam pobrać wydrukować, zawiesić gdzieś w widocznym miejscu, sporo ułatwia sprawę zanim nauczymy się na pamięć który pin jest który :)

Tymczasem zaczęły się studia, artykuły na blogu będą pojawiać się rzadziej. Niemniej postaram się zachować jakąś ciągłość, mam jeszcze pomysł co by się przydało opisać i postaram się go spełnić.

 Jakieś pytania, sugestie, groźby? :P

~Mesho

sobota, 13 września 2014

Moje początki z Raspberry Pi - poradnik cz.1


Cześć!

Tak jak wspominałem na fejkbuku, dokonałem wymiany Galileła na Raspberry Pi. Jak na mój gust to było bardzo dobre posunięcie, ponieważ po prawie miesiącu zabawy z prezentem od wujka Gates'a zdałem sobie sprawę, czemu rozdawał je za darmo. Z poważnych wad Galileo poza małą funkcjonalnością mogę wymienić spory apetyt na prąd nawet w trybie bezczynności, co za tym idzie płytka mocno się grzeje. Tych którym nie dano było się przekonać dlaczego darmo rozdają, odsyłam do strony z porównaniem tych dwóch płytek:
http://pl.mouser.com/applications/open-source-hardware-galileo-pi/

Jedyną rzeczą (co wyszperałem) którą ma Galileo, a nie ma Malina jest wbudowany przetwornik analogowo cyfrowy. Czy to wybitne ogranicza funkcjonalność? Oceńcie to sami. Po piątym dniu działania z Maliną widzę że jest to genialny sprzęt. Nie dlatego że jest to demon prędkości, ale ze względu na mnogość zastosowań jakie nam ta płytka daje.

Sprzęt kupiłem w sklepie http://botland.com.pl spodobała mi się jakość obsługi i cena wysyłki która była niższa niż u głównych dystrybutorów na Allegro. Dokupiłem także kabel RCA co polecam wszystkich kupujących Malinę B+, jako że w tej wersji płytka ma połączone analogowe wideo i dźwięk.

Compacto AK-66
Po pierwszym odpaleniu, musiałem parę rzeczy poustawiać żeby sprzęt mi działał jak zechcę. Przytoczę najważniejsze kroki do zrobienia według mojego scenariusza: Raspberry Pi Model B+ łączone przez WiFi za pomocą karty TL-321G, kontrolowane za pomocą SSH i VNC. Przetestowałem dodatkowo wtyk Wifi MT4217 - działa bez zarzutów :)
System oczywiście Raspbian. Korzystam z bezprzewodowej klawiatury Compacto AK-66 która ma przy okazji myszkę w postaci kulki - polecam, sprawdza się do tego celu bardzo dobrze.


Na początek podłączyłem sprzęt pod telewizor, kablem cinch. NTSC jest domyślnym trybem nadawania obrazu z maliny przy Raspbianie.


Znalezione.
Otóż: ja olałem sprawę podłączania Maliny przez złączę ethernet i wybrałem WiFi. Listę http://elinux.org/RPi_USB_Wi-Fi_Adapters
działających wtyków można znaleźć tutaj:
Jeśli jest wspierany, wtykamy i powinien być już widoczny jako wlan0 w terminalu za pomocą polecenia iwconfig.

Tak to powinno wyglądać.
Dla własnej wygody ustawiamy stałe IP i przy okazji wprowadzamy dane naszego routera SSID i hasło. Bardzo ładnie zostało to opisane na tej stronie: http://botland.com.pl/content/71-jak-ustawic-statyczne-ip-w-raspberry-pi
Uruchamiamy ponownie sprzęt i pod koniec ładowania powinien wyskoczyć przypisany przez nas adres.
Jeśli tak to spoko, powinniśmy móc się teraz połączyć z naszego normalnego PC-ta przez SSH programem PuTTY, wpisując przypisane IP. Możemy już odłączyć Malinę od telewizora i zarządzać nią z komputera.

Pulpit odpalony, nic tylko się logować :)
Standardowo, jak to w Debianie bywa, na wszelki wypadek wklepujemy: sudo apt-get update
Potem instalujemy serwer VNC, dzięki któremu będziemy mieli środowisko graficzne z Maliny, na normalnym PC. Wypowiadamy czar: sudo apt-get install tightvncserver
Po zainstalowaniu włączamy konfigurację: tightvncserver Wprowadzamy hasła potrzebne nam do logowania się w kliencie VNC.

Tak to wygląda.
Potem wpisujemy vncserver :1 -geometry 1280x1024. Pierwszy to port na którym uruchamiamy serwer VNC, drugi to jak się domyślacie rozdzielczość z jaką będzie pracował nasz wirtualny pulpit.
Pobieramy program VNC Viewer ze strony https://www.realvnc.com/download/viewer/
Wpisujemy IP z portem na którym odpaliliśmy pulpit, łączymy, ignorujemy ostrzeżenie o braku zabezpieczeń i powinien ukazać nam się pulpit.


Odpalamy Pythona

Na normalnie odpalonym interfejsie graficznym uruchamiamy po prostu IDLE Pythona z pulpitu, niemniej jeśli korzystamy z wirtualnego pulpitu nie zadziała nam skrót umieszczony fabrycznie. Klikamy prawym na IDLE, wybieramy Leafpad, odpala nam się edytor tekstu. Dodajemy w czwartej linijce po Exec=, polecenie gksu, jak na załączonym przeze mnie screenie. Zapisujemy i już po tej przeróbce odpalenie IDLE powinno pójść bez problemów. Dostaniemy ostrzeżenie że został uruchomiony program bez hasła roota, klikamy OK, możemy także zaznaczyć żeby więcej się nie pojawiało. 
Ciąg dalszy nastąpi, wolę podzielić to na jakieś rozsądne części niż tworzyć jeden wielki artykuł. Na pewno będzie o programowaniu w Pythonie, ogarnianiu LCD HD44780 et cetera - standard :)

Moje pytanie do Was:
Czy taki rodzaj tutoriali Wam odpowiada? Czy są jakieś kwestie o których warto wspomnieć?

Peace!

niedziela, 24 sierpnia 2014

Intel Galileo - konfiguracja, pierwsze testy

Cześć i czołem!

Sprawdzam sobie ostatnio cóż to za prezent Microsoft mi sprawił, możliwości jego są spore,
aczkolwiek nie kosmiczne. Na pierwszy rzut oka widzę większą pamięć, 8MB flash to w porównaniu do 8KB na Atmedze8 to pieruńsko dużo. Połączenie możliwości aplikacji z Windows API z Arduino też brzmi ciekawie.
Prosy narzekają że ta płytka jest do kitu, że powolna, że 1wire nie działa, łee wolę Malinę co za crap mi przysłali i tego typu historie. Co bardziej cwani zawiedzeni jakością płytki powystawiali je na alleDROgo i pochodne, jak to pisali na wykopach "bo mogą". Ja uważam że tak nie wypada, nie po to je rozdawali.

Dwa tryby

Z tego co już rozkminiłem, płytka w wersji "od wujka Gates'a" może śmigać w dwóch trybach: jeden pod kontrolą Windowsa, drugi jako emulowane Arduino, gdzie możemy sobie w czystym Arduino na spokojnie działać. Emulator jak to emulator może niedomagać, ale lepszy rydz niż nic.
Przy pierwszym normalnie odpalamy z kartą pamięci w urządzeniu i podpinamy się przez ethernet RJ-45. Przy drugim kartę wyjmujemy przed uruchomieniem i wpinamy się kablem z wtykiem Micro USB pod złącze USB CLIENT w płytce. Sterowniki pod Galileo Arduinowe można znaleźć tutaj: https://communities.intel.com/docs/DOC-22226
Są one w paczce razem ze przygotowanym środowiskiem Arduino, więc nic tylko pobierać i śmigać.
Ucieszył mnie ten drugi tryb, jako że i tak o Arduino miałem zahaczyć ponieważ uważam, że drzemie w tej platformie spory potencjał. Zamówiłem i czekam sobie z tej intencji na prosty shield ze stykówką, będzie nieco wygodniej.

Korzystając z Windowsa na Intel Galileo, możemy zlecać mu rozkazy za pośrednictwem Telnetu. Można skorzystać z tego wbudowanego w windę co pokazuje oficjalny poradnik, ja jednak wolę uniwersalne PuTTY.
Po skończeniu zabawy zalecane jest wyłączenie płytki przez wpisanie komendy:  
shutdown /s /t 0
Z tym zamykaniem przyszedł mi do głowy pewien pomysł, żeby zrobić program śmigający jako proces w tle i mający przycisk podpięty jako przerwanie, pod którym wysyłana jest komenda do wyłączenia urządzenia. Ot taki wyłącznik ażeby mniej maltretować palce wstukując komendę. Niemniej dodatkowy proces w tle korzystający ze strony sprzętu kompletnie ścina odpalany przez nas program który tworzymy, debugujemy i z niego korzystamy. Być może jest to kwestia napisania programu, nie wiem, może ktoś wie? ;)


Pierwsze programy

Stykówka wraca do łask.

 Pierwsza rzecz, która mi przyszła do głowy to zegar. Poszperałem w sieci jak najprościej odczytać z windowsa godzinę, wyszperałem i taki prosty pierwszy przykład powstał.
http://goo.gl/xtFguA <- Link do pliku main (po wejściu można odczytać zawartość w przeglądarce)
Starczy dorzucić libsy od LCD: http://ms-iot.github.io/content/16x2LCD.htm

Dodatkowo, zaczynają się pojawiać kolejne przykłady na oficjalnej stronie: http://ms-iot.github.io/content/SampleApps.htm

Braki
Nie znalazłem ani słowa w dostarczonym od Microsoftu SDK o przerwaniach, prawdopodobnie jeszcze nie zostało to zaimplementowane do bibliotek. Zamiast tego mamy "przepiękne" delay'e na milisekundy i mikrosekundy.
Na standardowym Arduino przerwania są możliwe pinach 2,3. Być może, czy raczej na pewno dałoby się przeportować do Visuala biblioteki od przerwań z Arduino. Niemniej ja nie mam ochoty spędzać kolejne parę wieczorów nad czymś, czego nie jestem pewien że zrobię. Już wolę pobawić się na sprawnym sofcie w czystym Arduino.
Brak możliwości użycia 1wire trochę boli, niemniej jak internety mówią, jest to problem hardware'u a nie softu. Po prostu nie ogarnia tego.

A może jednak Linux?
Działczy
Jest dość szeroki poradnik na temat bawienia się w Galileo na Linuxie. Porzucając memorkę z Windowsem poza tym że ładowany jest emulator Arduino, rusza także zalążek Linuxa wbudowany w płytkę. Domyślnie nie ma z nim kontaktu ani przez ethernet, ani przez USB. Najprostszą drogą do połączenia się z Linuxem jest odpalenie telnetu komendami terminalowymi. Działa, można pokombinować też z Linuxem. Wszystko ładnie zostało opisane tutaj:
https://communities.intel.com/message/208564#208564 
Pobierając obraz linuxa ze tej strony (SD-Card Linux Image) i wrzucając go na kartę można poszerzyć linuxa o te parę dodatkowych komend, szmerów bajerów. Na tej stronie wspominają o możliwości wgrania debiana na Galileo, trzeba wykonać parę gwizdów, ale chyba w tym kierunku będę działał.

Peace

czwartek, 14 sierpnia 2014

Intel Galileo w ramach programu Internet of Things


Cześć i czołem!

Jakiś miesiąc temu z hakiem znajomy (dzięki Nit!) podesłał mi informację że Microsoft zbiera chętnych do stworzenia społeczności programistów-konstruktorów tworzących różne urządzenia na platformie Intel Galileo. Czy to express do kawy sterowany przez internet czy to jakiś system do domu inteligentnego, tyle pomysłów ile głów. Dla tych, którzy zostali uznani za wiarygodne osoby przesłali za darmo płytkę Intel Galileo. Miesiąc temu kiedy zbierali chętnych na te płytki, zapisałem się także i ja, a co tam myślę sobie, fajny sprzęt a ja i tak chciałem kupić podobny, konkurenta Raspberry Pi. Tydzień temu dostałem maila że gratulację, wysyłamy do Ciebie Galileo, a wczoraj zawitał do mnie kurier z paczką. Trochę się zdziwiłem że dali dla takiego świeżaka jak ja i nie odrzucili mojego zgłoszenia, jako że było ich mnóstwo, zwłaszcza z naszego kraju, gdzie wszystko co darmowe jest mocno pożądane. Studia na kierunku elektronika i telekomunikacja za pasem, a na mojej uczelni właśnie nie ma Galileo, więc jak najbardziej się przyda.

W formularzu był jeden podpunkt w którym trzeba było pokrótce opisać przykładowy projekt, jaki byśmy stworzyli na tej płytce. Zaproponowałem dom inteligentny, sterowanie wentylacją, podgląd temperatur przez internet, takie szmery bajery, kto wie, może kiedyś wykonam coś w tym guście, jak tylko ogarnę nieco bardziej te Galileo.

Per aspera ad astra

Tak wygląda zestaw z programu IoT
Jak to w Microsofcie bywa, błędy się pojawiają. Nie powinienem się dziwić - soft koniec końców jeszcze nie wydany, ale trochę podirytowała mnie ilość przeszkód na początku. Na wstępie pojawiły się problemy z SDK, Visual Studio Express 2013. Stworzyłem pierwszy przykładowy projekt "Hello world", kompilator swoje tłumaczył, przesyłał program na płytkę i zaszła pora na debugowanie. Po prostu nie działało, poświęciłem ze 3 wieczory na konfigurację remote debuggera, nie pomogło. No to wybrałem się po support do źródła.
Oficjalna strona projektu zaprowadziła mnie do 3 opcji pomocy łotutaj. IRC na którym nikt się słowem nie odzywa, Stack Overflow w którym na zapytania pod tagiem WindowsOnDevices niby się community ma pomagać, jednak po moim wołaniu o pomoc był jedynie czeski film - nikt nic nie wiedział. Trzecia opcja to raportowanie bugów na Microsoft Connect, tam także się udałem, konto założyłem do programu dołączyłem. Strona do zgłaszania bugów, z nieznanych przyczyn nazywa się Centrem Opinii, whatever, zwał jak zwał. Gdzie zaraportować? Klikając w opinie w tym "Centrum opinii" przesyła nas do nie działającej strony: 
https://connect.microsoft.com/windowsembeddedIoT/Feedback
Co do licha?
Ktoś z forum MSDN oświecił mnie że i tutaj siedzi bug bo link do listy bugów jest zbugowany i wygląda właściwie tak:
https://connect.microsoft.com/windowsembeddedIoT/feedbackdetail
Strona z formularzem do przesyłania bugów jest TUTAJ
Okej zgłosiłem, czekam na odpowiedź, cierpliwość mi się kończy, a Linux kusi żeby pogonić z mojego Galileo Windowsa i wprowadzić pingwina.

Niemniej poczekam, dam szansę, jak to przy wersjach testowych nie wszystko musi działać. Jak mówi obecna licencja SDK od Microsoftu, pre-release jest do końca września tego roku, obecnie widzę że coś na oficjalnej stronie majstrują. Jeśli nastaną jakieś postępy, dam znać. Posta
 
Update - nowa nadzieja

Postanowiłem wykonać krok ostateczny, wgrałem nową instalację Windy i IDE zaczęło chodzić tak jak powinno. Mogę już normalnie debugować, testować bajerować. Szkoda że po 5 wieczorach rozkminiania problemu, który koniec końców nie został rozwiązany. Niemniej działa i następny artykuł będzie o podstawach obsługi, jakimś początkowym kodzeniu dla tych, co także otrzymali Galileo od Microsoftu w ramach programu Internet of Things.

Lista linków na koniec:
http://dev.windows.com/en-us/featured/Windows-Developer-Program-for-IoT <- oficjalna strona programu Internet of Things
https://www.facebook.com/avr4fun <- fanpage mojego bloga na Facebooku. Zachęcam do lajkowania, często wrzucam na niego różne zajawki, tego co się w moim warsztaciku dzieje :)

wtorek, 15 lipca 2014

Komendy AT, wysyłanie SMS PDU MODE - rozkminiamy po trochu


Cześć i czołem!

"Zestaw" do testów
Rozszerzenie mikrokontrolera o moduł GSM lub coś co będzie za niego służyć daje nam spore pole do popisu. Od alarmów z domu przed zalaniem/przegrzaniem pieca, przez sterowanie oświetleniem, aż po otwieranie bramy automatycznej skądkolwiek zasięg GSM pozwoli. Do uzyskania tych efektów mamy dwie drogi - albo zakupić moduł GSM, albo wykorzystać stary aczkolwiek działający telefon. Pierwsza nie zawsze tania, druga kusząca, o ile walają się nam stare komórki po domu. Obie można sterować na pomocą komend AT.

Czym są komendy AT? Są to takie zaklęcia, dzięki którym możemy "przejąć" kontrolę nad telefonem. Wypowiadamy je za pośrednictwem portu UART'u, a ich efektem może być jakaś akcja, lub odpowiedź na pytanie. Przeglądając internet możemy natrafić na spore "księgi zaklęć", ja postaram się przytoczyć przydatne, przetestowane na Ericssonie T20, który jest moim królikiem doświadczalnym przy tematyce GSM.


Sprawa jest o tyle fajna, że tym "czarodziejem" nie musi być człowiek, a np. mikrokontroler, czy komputer. Podpinamy piny Rx i Tx (jak to jest w UART) do telefonu i śmiga. Najlepszym polem do pierwszych testów jest terminal działający z portem COM komputera, kto jeszcze nie zna, polecam gorąco program PuTTY.

Stronka pobierania PuTTY:
http://goo.gl/OHa6HH

Lista przydatnych zaklęć AT, (rozszerzę ją jeśli znajdę jakieś ciekawe):
ATD <numer-telefonu>; najzwyklejsze wykręcenie numeru i dzwonienie, baza do najprostszego alarmu, należy pamiętać o średniku na końcu np: ATD 123456789;
ATH odłożenie słuchawki
AT+CBC zwraca nam stan baterii
AT+CSQ zwraca nam jakość sygnału
AT+CKPD="<klawisz>" emulacja klawiatury, można za jej pomocą "ręcznie" sterować telefon
Dla Ericssona T20:
S - zielona słuchawka YES
E - czerwona słuchawka NO
< , > - klawisz w lewo i w prawo
C - wiadomo, c klawisz od kasowania
Od 0 do 9, * oraz # - normalne klawisze do wystukiwania numeru telefonu
AT+CMGF=? dostępne tryby wysyłania smsów, jeśli zwróci nam +CMGF: (0) to mamy tylko PDU, jeśli +CMGF: (0, 1) wygrałeś, masz prostszy TEXT MODE. Niestety większość starych telefonów posiada tylko PDU, więc jeśli chcemy wysyłać sms'y są dwie opcje. Albo dorwać taki co nadaje TEXT MODE, albo rozkminić PDU MODE.


Przy TEXT MODE nadawanie sms'ów jest banalane:
AT+CMGS="+48123123123" wciskamy enter lub przesyłamy znak ASCII 13
>Tekst wiadomości wciskamy CTRL+Z lub przesyłamy znak ASCII 26

 Zainteresowanych odsyłam do dokumentacji w google, gdyż chcę się skupić na aspekcie wysyłania SMS'ów w trybie PDU.

Przy PDU mode sprawa wygląda tak:
AT+CMGS=<długość komunikatu>
jw. ENTER/ASCII 13
> <zakodowany komunikat>
jw. CTRL+Z/ASCII 26

Przykład:
AT+CMGS=25
> 0011000B918466515076F80000AA0CD437485D9ED341D3E6D405 

Takie czary. Pod całym komunikatem jest schowane wszystko. Numer centrum SMS, numer odbiorcy, czas ważności sms'a, jak i sama treść sms'a. Myślę sobie wtf, kto to zrobił, a komu to potrzebne? Znalazłem translator który tłumaczy z trybu tekstowego na PDU i odwrotnie.

PDU <-> TEXT translator:
http://twit88.com/home/utility/sms-pdu-encode-decode

Pierwsze wnioski: Nie potrzeba podawać numeru centrum SMS. Komenda która podaje translator AT+CMGW= służy do zapisania wiadomości w telefonie, potem trzeba wysłać komendą AT+CMSS=1. Jeśli chcemy od razu wysłać potrzeba użyć AT+CMGS=<długość komunikatu> i pozostałe elementu jak podałem wyżej.

Teraz aby wysłać wiadomość mamy dwie opcje:
Albo generujemy sobie parę "gotowców" - przygotowanych komunikatów i podpinamy je pod jakąś reakcje w programie, co też jest jakimś rozwiązaniem, albo tworzymy funkcję do której podamy numer odbiorcy oraz treść sms'a a ona sobie go już przetłumaczy na swój język. Własny translator okaże się przydatny gdy zechcemy przesyłać jakąś zmienną, temperaturę, godzinę, cokolwiek.


Funkcja nadawania SMS
Poszperałem, pokombinowałem, ze 100 kompilacji programu później udało się mi osiągnąć pierwszy cel - funkcja wysyłania SMS w trybie PDU. Bazowałem na artykule ze strony http://goo.gl/gGJhTs tylko że tam argumenty były rozbite, wymagało to paru przeróbek.
Ja jako że się grzebać przy tych argumentach nie będę, jedyną wartością jaką będę zmieniać to numer i treść sms'a, postanowiłem maksymalnie ją uprościć i doprowadzić do postaci używalnej przy zwykłym uC AVR.
Jeszcze jedna poprawka polegała na dodaniu zera przed liczbę mniejszą od 16 (równą 0x0F lub mniej), bez tego po prostu komunikat nie działał.

Przyznam szczerze że procederu tłumaczenia samej treści sms'a średnio ogarniam, komu to potrzebne i w jakim celu ktoś to stworzył. Niemniej działa, funkcja wygląda mniej więcej tak (screen obok).

Do funkcji sendsms przekazujemy treść sms'a i numer, oba parametry w postaci łańcucha znaków. Co do numeru trzeba zrobić jeden gwizd, oznaczyłem to w źródłach:

Mamy numer: 48123456789
Dodajemy F na końcu: 48123456789F
Zamieniamy cyfry w kolejnych parach miejscami:  8421436587F9

Wszystko co trzeba opisałem w prostym testowym programie, jak coś to pytać :)

Testowy program:
http://goo.gl/r5oCKp

Następny cel do osiągnięcia - odczyt sms'ów w trybie PDU, tak więc stay tuned for more :)

Spodobało się? 
Zostaw komentarz, daj lajka, powiedz babci. Zrób cokolwiek. Umieram z braku feedback'u.
https://www.facebook.com/avr4fun <- Odwiedź fanpage
https://www.youtube.com/user/Marcin19941 <- Sprawdź co podziewa się na moim kanale youtube, wrzucam tam czasem zajawki projektów :)

Peace!

czwartek, 10 lipca 2014

Moduł kompasu HMC5883L - podstawy



GY-273 cena ok. 3$
 Cześć i czołem!

Przeglądając Aliexpress natrafiłem na wiele różnych modułów, o które możemy wzbogacić swoje projekty. Od żyroskopów, przez czujniki ultradźwiękowe aż po magnetometry. Jest tego. Zdecydowałem się na rozkminienie magnetometru HMC5883L znanego też pod nazwą GY-273, urządzenia do pomiaru pola magnetycznego ziemi. Komunikacja bez zbędnych dodatków, za pomocą I2C, czy jak kto woli TWI. Podłączone, musi działać.




Ma dwie podstawowe wady:
- duża wrażliwość na przechył, najdrobniejszy powoduje przekłamania rzędu 10 stopni
- nieproporcjonalność wyświetlanego wyniku, w rzeczywistym zakresie 0-180 pokazuje 0-240, oraz rzeczywiste 180-360 pokazuje jako 240-360. Da się to poprawić, zapraszając odrobinę matematyki do naszego programu, co też uczyniłem.

LCD kompatybilny z Nokia 3310/5510

Moduł zwraca wartości trzech wektorów, x,y,z - do kompasu potrzebne są x i y. Nie zagłębiałem się w dalszą teorie, w sumie na lekcjach geografii aż tak głębokich rozkmin nie było.
Po wykonaniu paru obliczeń, arcus tangensów i wypowiedzeniu zaklęcia zwraca nam się wartość kąta odchylenia od kierunku północy. Posiłkując się wiedzą i bibliotekami z googla zacząłem działać.




Tak się prezentuje prototyp

Miałem wizję zrobić mały prototyp, który mógłby pokazywać wstępnie wartość cyfrową, a później jakąś graficzną. W połączeniu z małym ekranikiem kompatybilnym ze lcd od Nokii 3310/5510, powstało małe urządzenie. I wyświetlacz i magnetometr nie tolerują napięcia 5V, zalecane jest 3V. Zamontowałem na prototypową płytkę baterię 3V CR2025 wraz z podstawką, co sprawiło że urządzenie stało się mobilne. Mikrokontroler Atmega8A który użyłem może pracować w zakresach napięć 2.7-5.5V, więc i on także nadaje się do tego projektu. Wyświetlacz pracuje przez programowe SPI, tak aby nie gryzł się z ISP procka podczas programowania. Dlaczego miałby się gryźć? Odsyłam tu do poradnika mistrza Yody Kardasia: https://www.youtube.com/watch?v=CX9r0GwkFU0

Rozwój jego niestety stanął na braku pamięci w procku, nie wiem czy da się coś zmniejszyć, ale rachuj nie rachuj, operacje na liczbach zmiennoprzecinkowych zabierają sporo pamięci. Może przy okazji następnego zamówienia elektroniki, wezmę Atmegę168, która ma 2x więcej pamięci od klasycznej megi8. Na tą chwilę pozostanie taki zalążek projektu.

Proces obliczania kąta można znaleźć w linku który podałem powyżej, nie chcę robić copy-paste, a pragnę się skupić na tym co sam opracowałem.

Jak poradzić sobie nie nieproporcjonalnością wyniku? W C++ odnajdziemy gotową funkcję map(), jako że pracuję w czystym C pokusiłem się o własne obliczenie.

Schemat (bez złącza KANDA ISP)

 Dla wartością kąta mniejszej od 240°:
kąt poprawiony = 179 * (kąt / 240);

Dla wartości kąta większej od 240° (tutaj posiedziałem nieco zanim rozkminiłem):
kąt poprawiony = (((kąt-240)/120)* 180)+180;
 



Co do kompasu, zapewne skończę za tym zabawę, niemniej co do wyświetlacza graficznego Nokia 3310/5510 nie powiedziałem ostatniego słowa. Mały, prosty w implementacji, niedrogi, jak na mój gust ma potencjał, który postaram się w nim obudzić.

Dla zainteresowanych wrzucam źródła programu, w miarę ogarnięte, jako że wszystkie są otwarte i ogólnodostępne nie powinni mnie za to udostępnianie zamknąć. Jeśli dorwę bogatszego w pamięć proca zgodnego pinowo z Atmega8, będę je rozwijał dalej. Tymczasem mam na głowie jeszcze co najmniej 3 (większe niż ten) projekty, które postaram się jeszcze w lipcu opisiać :)
Źródła -> http://goo.gl/VczIdt
Schemat -> http://goo.gl/a6WkPt

Jeszcze na koniec dorzucę reklamę, jeśli nie lajkujesz fanpage'a tego bloga, zapraszam do polubienia:
https://www.facebook.com/avr4fun
3 lajki do stu, jeśli będą chętni i będzie stówka, zorganizuje konkurs w którym będą do wygrania moduły nRF24l01 i przetworniki cyfrowo-analogowe TDA1543. Jaki to będzie konkurs, jeszcze nie wiem, jednakże mam zbyt dużą tendencje do chomikowania elektroniki. I to by było na tyle, do następnego!

Pozdrawiam

wtorek, 8 lipca 2014

Powiew świeżości


Cześć i czołem!

Czasem tak jest, że w życiu i nie tylko, potrzeba wprowadzić jakieś zmiany. Brak feedback'u jest głównym powodem tych zmian. Tymczasem jak nasz naród, jak to nasz naród, przychodzi po cebule i nie zostawia żadnego śladu po sobie. Żadnego. Średnio zagląda tu 15 unikalnych użytkowników dziennie. Może coś robię nie tak, stąd ta próba zmian.


 Co zrobię?

Na początku, usuwam wszystkie płatne linki, na których i tak nic nie zarobiłem. Poprzednie zostały wyłączone z zarabiania, następne będą skracane przez http://goo.gl/ dla mojej wiadomości ile osób to pobiera. A pobiera trochę, chyba to co tworzę nie jest totalnym crapem, skoro nikt się nie skarży?
Od tej pory zmienię mój blog ze zbioru projektów na dziennik konstruktora. Wcześniej był nim fanpage na facebook'u, niemniej teraz będą pojawiać się tam zajawki tekstów z bloga. Będę starał się, by były wciąż na poziomie. Więcej schematów, więcej opisów, aby ktoś z moich tworów czegoś się nauczył. Takie są plany.
Wyszedłem z cienia, bawię się obecnie stylami i kolorystyką, co sądzicie o obecnej? Trochę pogrzebałem w wyglądzie, można przerobić dosłownie wszystko, niemniej będę dążyć by było czytelnie i przyjemnie dla ok.

To jest w sumie tyle co chciałem napisać w sprawie zmian, do następnego posta :)

Peace!

wtorek, 20 maja 2014

Zakupy na Aliexpress - parę porad

Czołem!

Jako że udało mi się przeprowadzić parę zakupów na Aliexpress, zwanym chińskim allegro postanowiłem, że opiszę tu co warto wiedzieć przy ich przeprowadzaniu. Nie będzie to stricte poradnik krok po kroku lecz parę istotnych informacji.

Kupując na Aliexpress, najlepiej płacić kartą płatniczną z walutą w dolarach, gdyż jest to waluta obowiązująca w tym sklepie (są także inne, ale $ jest tu główną opcją). Nie zapłacimy wtedy pieruńskiej prowizji jak w przypadku przelewu do Chin. Nie ma też paypala, który też ułatwiłby sprawę.
Serwis ten jest godny uwagi, można kupić na nim sporo elementów elektronicznych (i nie tylko) taniej niż na Allegro. Samej obsługi strony myślę że wyjaśniać nie trzeba, nie znalazłem jakiegoś kroku nie do przejścia :)



Konto

Najwygodniej posiadać jest dwa konta bankowe: jedno główne złotówkowe, z którego będziemy zasilać drugie walutowe. Posiadam oba w T-Mobile Usługi Bankowe (były Alior Sync), na tą chwilę, a mam je prawie rok, mogę je z czystym sumieniem polecić. Karta jest darmowa, konto jest darmowe, wypłaty z bankomatów wszystkich także. Bez haków. Chyba że zrobią jakiś gwizd w umowach i zaczną ciągnąć kasę. Jednak jak na razie się na to nie zapowiada, więc można to potraktować jako bezpieczną ofertę. Uwaga, przy robieniu konta walutowego bierzemy kartę debetową, która posłuży do płacenia na Aliexpress. Karta debetową jest tylko z nazwy, bo żeby zejść poniżej kreski musimy odpalić kolejną umowę, kredyt odnawialny czy coś. Normalnie ile masz tyle wydasz, ani grosza więcej.



Skąd tu zdobyć dolary? #update



 Przelew własny
Przelew własny na konto walutowe
Pierwszym prostszym sposobem, który polecam na początek jest przelew bezpośrednio z konta na konto. Na próbę, żeby zapoznać się z mechanizmem całej machineri aliexpress, znajdź jakiś przedmiot za 3-4 dolary, przelej złotówki na walutowe i zapłać kartą. Co prawda kawałeczek boczku bo jakieś 15 groszy na dolarze odkroi sobie bank, jednak kupując coś za 3-4 dolary będziemy w plecy "aż" o jakieś 50 groszy. 


Przykład na dzień 9.01.2015r.:
Cena sprzedaży dolara od Cinkciarza 3,57zł
Cena sprzedaży dolara bezpośrednio w banku 3,79zł 
Różnica 0,22zł/1$ 




Zwykła karta od konta w złotówkach
Zapomniałem dodać, że na Aliexpress możemy płacić zwykła kartą złotówkową tak jak będąc na wakacjach za granicą. Prowizja w praktyce wychodzi podobna, czasem niższa od przelewu własnego. 
 


Cinkciarz lub inny kantor internetowy


Wypróbowałem Cinkciarza, obsługa jest banalnie prosta, po skonfigurowaniu konta w złotówkach i konta w dolarach możemy kupić walutę i sfinansować zakup albo z przedwcześnie załadowanego "portfela" na tym portalu albo przez konkretny przelew dla danej transakcji. Kiedy wybierzemy przelew i przygwoździmy wymianę, nie ma zmiłuj transakcja jest wiążąca i musimy ją opłacić (jest o tym ostrzeżenie przed ostatnim krokiem). Minimum do zakupienia to 10 USD, jest po normalnej cenie nie jak w opcji wyżej. Jak najbardziej główna opcja przy grubszych zakupach.

Zamówione, co dalej?

Od góry: koperta wysłana zwykłym listem, niżej poleconym.
W większości wypadków, a chyba w 100% drobnicy elektronicznej wysyłka jest darmowa, chińską pocztą. 6 na 7 zamówionych przeze mnie przedmiotów przyszło listem poleconym, jeden zwykłym, który wydobyłem ze skrzynki. Oba sposoby można śledzić po paru dniach od zakupu, linki i numery są dostępne w szczegółach zakupu na samym Aliexpress. Tracking podpinany jest także pod stronę śledzenia poczty polskiej, więc bez problemów można sprawdzić kiedy możemy się spodziewać paczki. Najdłużej czekałem na zamówienie, które przyszło listem zwykłym bo jakieś 25 dni, te polecony przychodzą w około dwa tygodnie. Na pewno gdy coś potrzebujemy na szybkiego lepszą opcją będzie allegro lub lokalny sklep, lecz jeśli chcemy coś taniej, warto rozważyć zakup bezpośrednio z Chin.




 Co warto, co mniej?

To co tygryska elektronika interesuje najbardziej, czyli wszelaka drobnica elektroniczna, ogrom czujników, dodatków do mikrokontrolerów można kupić w cenach nieprzekraczających 10zł. O tyle ciekawiej że wybór jest nieco większy niż na naszym rodzimym allegro a co za tym idzie, możemy powiększyć kolekcje dodatków do eksperymentów o wiele ciekawych bajerów. Dużo taniej można zakupić rzeczy hurtem, np. timer 555 sto sztuk wyniósł mnie 15 groszy za sztukę, gdzie na allegro cena waha się w okolicach 50 groszy.  


Ważne!
Niektóre ceny są na chłopski rozum zbyt niskie, oferują je sprzedawcy bez komentarzy, którzy jak wieść internetowa niesie są oszustami na których trzeba uważać. Większość tych cwaniaków proponuje opłacenia transakcji poza mechanizmem Aliexpress. Nie dajcie się naciąć. Jednakże dopóki płacicie przez machinerie konkurenta naszego Allegro, jest bezpiecznie. Jeśli gościu nie zgłosi że wysłał paczki w przeciągu paru dni, kasa wraca. Jeśli w przeciągu dwóch miesięcy nic do Ciebie nie przyjdzie kasa wraca. Można? Można.

Przykład?
Na dzień niepodległości w Chinach wypadał dzień singla, który był pretekstem do wyprzedaży jak na Black Friday. Razem z ludkami z grupy FB Malinowe Pi znaleźliśmy bardzo tani moduł Arduino GSM. Za tani, ale 20zł i pewniak że jeśli jest to wałek kasa wróci sprawiły że grzechem byłoby nie spróbować. Okazało się że jednak był to fake, po paru dniach przyszła informacja że "Seller failed to ship order." (czy coś takiego) i że hajs wróci z powrotem na konto. I wrócił.
 Aukcje prawdziwych sprzedawców mają zawsze parę, paręnaście zamówień, kilka komentarzy pod nimi i z takich polecam korzystać.

I na tym zakończę moje odrobinę chaotyczne skróty myślowe, ale to co chciałem przekazać przekazałem. Jeśli macie jakieś pytania, zadawajcie je w komentarzach pod postem.

Peace,
M.

sobota, 8 lutego 2014

Podstawowa obsługa LCD TFT 3,2" HY-320 SSD1289

 Cześć!


Otóż w moje łapki wpadł wyświetlacz 3,2 cala HY-320 z dotykiem, bazujący na sterowniku SSD1289. Poświęciłem bodaj trzy lub cztery wieczory na jego uruchomienie, już miałem się poddać gdyż nie było widać jakichkolwiek efektów, jednak porada jednego użytkownika z forum.atnel.pl okazała się kamieniem zakończającym moje udręki związane z inicjalizacją wyświetlacza. Pozostała mi z niej puenta że trzeba szukać błędów tam gdzie się ich nie spodziewamy.
Historię "choroby" możecie zobaczyć tutaj: http://forum.atnel.pl/topic5747.html

Otóż wszystko działa jak powinno, włącznie z dotykiem, banan na twarzy był niesamowity kiedy udało mi się rozkminić ten problem :)


Załączam przykładowy program dzięki któremu uda się go uruchomić i coś wyświetlić każdemu:
http://adf.ly/1665682/lcd-ssd1289

Kod w najważniejszych miejscach jest z dodanymi komentarzami, jeśli czegoś nie rozumiesz, pytaj w komentarzach pod tym postem. W obecnej wersji działa rysowanie za pomocą dotyku, wyświetlają się współrzędne X i Y, kasuje rysunek po wciśnięciu "Czyść"  oraz wyświetla się przykładowa akcja po wciśnięciu pola z napisem "Klik".

Wiele pozostało do dopracowania, jednak myślę że nawet w tym stopniu przyda się przekazana ode mnie takowa "wędka". Jeśli doprowadzę te biblioteki do jakichś diametralnych poprawek, zarzucę je na blogu.

Podłączenie wyświetlacza w tym przykładzie, można je zmienić w pliku pins.h

Użyty mikrokontroler: Atmega32A
Częstotliwość taktowania: 16MHz

LCD                     Mikrokontroler
DB0 do DB7   <-> PORTC0 do PORTC7
DB8 do DB15 <-> PORTA0 do PORTA7
CS   <->    PORTD7
RD  <-> PORTD6
WR <-> PORTD5
RS  <->  PORTD4
REST <-> PORTD3

T_CLK <-> PORTB0
T_DIN <->  PORTB1
T_DO <-> PORTB2
T_IRQ <-> PORTB3



Jednak parę uwag ode mnie, przeczytaj przed ruszeniem z miejsca:

Sam wyświetlacz można zasilać napięciem 3,3V oraz 5V, posiada wewnętrzny stabilizator.

Napięcie na liniach I/O LCD musi być w przedziale 1.4V – 3.6V, co za tym idzie nie można podłączyć ich bezpośrednio do mikrokontrolera zasilanego 5V!!!, gdyż ulegnie on uszkodzeniu.
Tak więc albo stosujemy jakiś bufor np. 74LVC245 albo zasilamy wszystko 3,3V.
W przykładzie używam mikrokontrolera Atmega32A, który może być zasilany napięciem 3,3V.

Dla bezpieczeństwa żeby nic nam się nie skichało nie podłączać pinów I/O LCD do linii programowania ISP mikrokontrolera. Starczy że programator AVR'a będzie dawał sygnały na poziomie 5V, i już LCD umarł w butach :(
Dobrze opowiedział o problemach używania pinów ISP Mirosław Kardaś w swoim wideo-poradniku: http://www.youtube.com/watch?v=CX9r0GwkFU0

Pozdrawiam!

poniedziałek, 13 stycznia 2014

Atmegan.blogspot.com gra dla WOŚP

 

Cześć i czołem, kluski z rosołem!

Mamy co roku tą tradycję WOŚP. Co roku coś tam wrzucamy do puszek. A ja w tym roku postanowiłem że dorzucę swoją cegłę w postaci aukcji na allegro. Wiele złego słychać o tej akcji, mówi się że większość kradną, że idzie Owsiakowi na Ferrari. Mam to w dupie.



Wystawiłem kostkę LED, nad której produkcją jak i programem przesiedziałem parę jak nie paręnaście dobrych godzin. Jeśli ktokolwiek zdecyduje się na wsparcie tej akcji przez licytację tej misternej konstrukcji, dorzucę mu kod źródłowy. I schemat, aby się mógł połapać. Zaczynamy od 20zł. Czy to dużo? Myślę że nie, jak na ilość pracy jak i elementy do stworzenia projektu + możliwość wsparcia fajnej akcji jaką jest WOŚP to niewiele.

Link do aukcji WOŚP:
http://aukcje.wosp.org.pl/avr-kostka-led-3-3-od-atmegan-blogspot-com-i955849


Filmik prezentujący obecny soft mojej produkcji:


Peace,
Marcin

czwartek, 9 stycznia 2014

Świąteczny projekt z konkursu - prosta lampka led RGB


Czołem!

Oto mój projekt który brał udział w konkursie ze strony mikrokontolery.blogspot.com, nie zajął specjalnej lokaty, jednak uważam że jego prostota sprawia że jest genialny i powinien zająć chociaż pudło. Taak, mam lekki butthurt z tego powodu, niemniej warto rzucić na niego okiem. Lub mięsem na widok tak nieprofesjonalnego rozwiązania:

http://mikrokontrolery.blogspot.com/2011/03/DIY-Lampka-LED-RGB-by-Mesho.html

piątek, 3 stycznia 2014

Dwa lata - podsumowanie

Cześć!

Poniższy tekst będzie miał charakter drobnego podsumowania, w grudniu mija drugi rok od początku
moich przygód z mikrokontrolerami. Dziesiątki zaprogramowanych proców, setki kompilacji softu, a ja wciąż czuję że to dopiero wierzchołek góry lodowej. Choć zaczynając zabawę z tymi scalakami nie myślałem że będę tworzyć takie cuda jak gadające zegary czy nawet kostki LED, to czułem że będzie to pasja w której będę mógł zadziałać więcej.



Pierwsza stykówka, pierwsza migająca dioda. Emocje sięgnęły granic kiedy pierwszy program wylądował w pierwszym mikrokontrolerze, teraz kiedy patrzę na ten filmik widzę, że nawet podkład dźwiękowy oddaje właśnie te emocje :)

Feedback, człowieku!
Na blogu codziennie wpada około 10 unikalnych użytkowników. Wpada, biorą to co u mnie jest i idą dalej. Bez żadnego znaku. Komentarza. Czegokolwiek, głupie "hej dzięki za pomysł, fajne projekty masz tutaj" sprawiłoby że chęć do wrzucenia kolejnego by była jeszcze większa. Jeżeli czytasz to użytkowniku, śledzisz moje projekty, daj jakiś feedback, lajka na fejkbuku cokolwiek. Abym wciąż miał wiarę że to co wrzuca przydaje się innym. Ten blog to nie tylko moje swojego rodzaju portfolio, ale też miejsce z projektami, które będą potrafiły kogoś zainspirować, zachęcić do bani czy jak kto woli pasji, jaką są mikrokontrolery.

Plany na przyszłość?
W przyszłym roku chce rozpocząć rozkminianie wyświetlaczy LCD TFT, być może z dotykiem, zależy jaki zdarzy mi się zakupić. Na pewno chciałbym zajrzeć dalej do tematu dostawki ethernet do mikrokontrolerów, może udałoby się stworzyć urządzenie sterowane przez internet, dajmy na to z komórki. Blog się rozwija, pojawiają się zleceniodawcy co mnie bardzo cieszy, powoli stawiam swoje pierwszy kroki w freelancerskich projektach :)


Pozdrawiam i życzę szczęśliwego nowego roku 2014! :)