środa, 21 października 2015

Kicad – daily build install

Do robienia płytek na rynku liczą się głównie moim zdaniem 3 oprogramowania:
→ Altium Designer - super skuteczny, lecz niestety drogi
→ Pads - również bardzo dobry i szczęśliwie tańszy
→ Kicad - darmowy i dobry, przy okazji mocno rozwijany

Uwaga: Eagle nie jest dobrym softem, dostaje 2 na starcie za ciulowo rozwiązane połączenia ścieżek na schemacie. Po tym jak miałem nie popodłączane pady nie zapłacił bym za to by móc robić w nim płytki grosza, pomijając np. ciężkie dodawanie nowego komponentu, czy możliwość rysowania ścieżki na ścieżce (sic!) w layoucie. W skrócie – jeśli ktoś chce profesjonalnie robić elektronikę w Eaglu to daję mu krzyżyk na drogę.

Z uwagi na to że Altium jest nieprzystępnie drogi, pads na start również, Kicad zostaje dla nas oczywistym wyborem. Poza tym jak to brzmi: używam oprogramowania współ tworzonego w Cernie.

Uwaga: Chcąc mieć najbardziej wypasioną wersję Kicada najlepiej mieć wersję z daily build'ów, albo z stabilnego developmentu. Nie wiem jak teraz, ale rzeczy takich jak push and shove – którego nie da się nie pokochać, nie było do niedawna w oficjalnych stable releasach. Pomijając że wersja na Windowsa była delikatnie przedpotopowa :)

Instalacja Kicada w wersji daily build a nie żyli spokojnie długo i szczęśliwie ma jedną główną zaletę i jedną główną wadę:
→ zaletą jest możliwość używania nowych, lepszych narzędzi. np. tool'a do rysowania ścieżek mikrofalowych, czy ukochane push and shove.
→ Wadą jest konieczność pamiętania o ctrl+s ponieważ potrafi się czasem wywalić. Najlepiej też postawić sobie repozytorium by pamiętać też poprzednie wersje płytek – serio, to naprawdę może się przydać.

Instalacja:
Wchodzimy na:
https://launchpad.net/~js-reynaud/+archive/ubuntu/kicad-package-daily-stable
Wybieramy naszą dystrybucję linuxa i wybieramy ppa (w moim przypadku był to Thrusty 14.04). Następnie ppa trzeba skopiować ppa i dodać do naszego systemu, zaktualizować źródła i zainstaloawć kicada:

sudo add-apt-repository "deb http://ppa.launchpad.net/js-reynaud/ppa-kicad/ubuntu trusty main"
sudo apt-get update
sudo apt-get install kicad
Pogrubioną czcionką to co musimy podmienić z ww. strony.

Jeśli update nie przechodzi pomyślnie prawdopodobnie Twojemu package managerowi nie zgadzają się klucze. By je bezboleśnie dodać z automatu możemy zainstalować:

sudo apt-get install y-ppa-manager

I użyć go (okienkowo) do dodania klucza. Wchodząc w → Zaawansowane → Dodaj brakujące klucze GPG .

To wszystko czego trzeba by móc używać Kicada, czy warto? Z moich doświadczeń wynika że tak. Używanie go wymaga użytkowania skrótów klawiszowych – co początkowo utrudnia naukę, jednak finalnie bardzo zwiększa efektywność. Jeśli potrzebujemy narzędzia, a nie mamy na nie zbytnio pieniędzy do wydania – jest to praktycznie jedyny dobry wybór rozwiązania standalone.

piątek, 16 października 2015

Chińska elektronika

Używam chińskich: miernika, stacji lutowniczej i kilku innych rzeczy. O ile chińskie rzeczy kojarzą się z potoczną "chińszczyzną" otworzenie drukarki termicznej mnie zaskoczyło.

Zrobione na pierwszy rzut oka jakościowo i bez pierdół ( ARM0 inside ).












ps. Jasne zawsze można coś poprawić ale szajs to nie jest z pewnością.

wtorek, 13 października 2015

Debugowanie urządzenia USB.

W ~połowie : jak ustawić dbmon + wireshark na linuxie.

Port USB jest w każdym kompie i o ile przejście przez Windows Drivers hell skutecznie odstrasza mnie od prób na Windowsie, tak próby używania USB na linuxie są mniej bolesne. Protokół jest dużo trudniejszy od RS232 - jednak możliwości też są proporcjonalnie większe, łącznie z tym że jeśli ma się USB na procku, to może ono i symulować RS'a.

Do pierwszej zabawy z USB polecam attiny13 + libusb-1.0 + qtcreatora + poczytanie: http://www.beyondlogic.org/usbnutshell/usb1.shtml .
Avrusb pod attiny13 dorobił się genialnego tutoriala na codeandlife.com i odpalenie go krok po kroku nie nastręcza żadnych trudności. libusb-1.0 ma przejżystą dokumentację w doxygenie i czytelne przykłady w internecie. QtCreator daje nam bardzo przyjemną możliwość debugowania i dość bezproblemowe dodawanie bibliotek do projektu. Wreszcie beyondlogic.org funduje wszystkie niezbędne informacje by móc zacząć.

Do następnych zabaw używam STM32F103 - ot mam taką płytkę. Uruchomienie nie jest już tak bezproblemowe i dobrze opisane w necie, niestety nie znalazłem też dobrze przygotowanych przykładów pod wygodne darmowe środowisko - przykłady st przyjemnie buduje się jedynie w płatnych środowiskach takich jak Keil ( który btw ma bardzo ubogo zrobione IDE, chociaż nadal więcej opcji debugu ). Przynajmniej taka jest moja opinia :)

Po uporaniu się z kompilacją przykładu dla STM'ki należy podłączyć ją pod USB i ... sprawdzić czy komputer wykrywa urządzenie, jeśli tak - wtedy dopiero możemy stwierdzić że kompilacja przeszła poprawnie. Chociaż nadal nie możemy być w 100% pewni czy aby napewno wszystkie ustawienia są dobre. By to sprawdzić komenda:

lsusb -v

pokaże nam wszyskie urządzenia podłączone po usb razem z ich opisem, id etc. etc. ( tu odsyłam do linku z beyondlogic ). Te informacje są wystarczające by zrobić apkę używającą libusb-1.0 piszącą / czytającą z naszego użądzenia.

Będziemy musieli:
1) Połączyć się z urządzeniem
2) odebierać / wysyłać
3) Zamknąć urządzenie

Mając problemy z pakietami podczas transmisji przydatnym narzędziem może okazać się usbmon + wireshark.
usbmon jak nazwa wskazuje monitoruje nam urządzenia usb. Dzięki niemu możemy podglądać co jest wysyłane do urządzenia i co wysyła nam urządzenie spowrotem. Ponieważ USB jest trudniejsze niż UART i ciężej tu strzelać na hybił narzędzie to może dostarczyć nam wiele wskazówek - a jeśli nie, używanie jego ma bardzo dobrą rolę edukatorską :)
Wireshark pokaże nam pakiety usb w ładnej formie, pozwoli na wygodne filtrowanie treści i przedstawi informacje w wersji słownomuzycznej a nie raw data.

Niestety konfiguracja środowiska pod debug zmieniła się dość znacznie. Pocieszajace że na znacznie prostrzą, mniej pocieszające że dość ciężko jest się do niej dokopać.

Konfiguracja na szybko - komendy do terminala:

1) sudo apt-get install wireshark
2) sudo dpkg-reconfigure wireshark-common
3) sudo usermod -a -G wireshark $USER
4) addgroup usbmon
5) gpasswd -a $USER usbmon
6) echo 'SUBSYSTEM=="usbmon", GROUP="usbmon", MODE="640"' > /etc/udev/rules.d/99-usbmon.rules
7) sudo reboot
--- restart kompa --- dla zaawansowanych: zrób reload udev + logout i login na urzytkownika ( reload udev był już tu poruszany )
by używać za każdym razem przed uruchomieniem wiresharka dla celów usb:
8) sudo modprobe usbmon
9) wireshark (albo odpal z ikonki - wszystko jedno)

Tłumaczenie:
ad.1 ) instalujemy wiresharka
ad.2 ) instalujemy dostępy dla normalnych śmiertelników dla wiresharka - innaczej musimy odpalac go z sudo
ad.3 ) dodajemy naszego usera do grupy wireshark, która może używać wiresharka bez uprawnień administratora (patrz ad.2)
ad.4 ) dodajemy nową grupę usbmon - która może używać usbmon bez uprawnień administratora
ad.5 ) dodajemy naszego usera do grupy usbmon
ad.6 ) dodajemy nowy udev dla naszej grupy - uwaga, możemy dodać go dla grupy wireshark i olać pkt 4 i 5
ad.7 ) robimy ponowne wczytanie ustawień w wersji na pałkę.
ad.8 ) montujemy usbmon
ad.9 ) włączamy wiresharka - tu już możemy wybrać nasze urządzenie usb.

By wybrać odpowiednie urządzenie USB musimy mieć jego bus nr i nr urządzenia. Dostarczy nam tego nieoceniona komenda lsusb.
Bus { 1-9 } odpowiada usbmon { 1-9 } , gdy włączymy śledzenie odpowiedniego Bus'a trzeba szukać informacji od odpowiedniego urządzenia. Najwygodniej dodawająć filtry w Wiresharku. Krótkie intro do okienek wiresharka innym razem.

Historia poszukiwań - sekcja 'dla dociekliwych' :
Szukając informacji o debugowaniu usb:
Pod: http://superuser.com/questions/743350/how-to-use-usbmon-for-knowing-amount-of-data-transferred-from-usb-pendrive
Pierwsze dwie odpowiedzi tłumaczą jak używać usbmon i lsusb w bardziej wylewny niż tu sposób. 3 Odpowiedź jest moja :)
Pod: https://wiki.wireshark.org/CaptureSetup/USB
Jest opis wiki "jak to się je", przy czym jest dla starych kerneli. O tym jak to się robi "współcześnie" nie ma już nic.
Pod: http://askubuntu.com/questions/326597/enabling-usbfs-in-ubuntu jest ciekawa dyskusja, która nam niestety nie pomoże.
Pod: http://ubuntuforums.org/showthread.php?t=1432598 - ta też nam nie pomoże, ale dowiemy się od którego kernela wzwyż nie mamy usbfs .
Pod: http://stackoverflow.com/questions/4971719/usb-sniffing-with-wireshark
swojski autor przemo_li daje quick&dirty wireshark i usbmon setup - perełka ;)
Pod: https://ask.wireshark.org/questions/7523/ubuntu-machine-no-interfaces-listed jest ładnie przedstawiony sposób nice way / unnice way dodawania grupy dla wiresharka.


ps:
http://security.stackexchange.com/questions/37927/can-a-connected-usb-device-read-all-data-from-the-usb-bus

ps2:
narzędzia:
- usbmon
- good board with usb device on it
- libusb
Dają świetne możliwości do podglądania urządzeń komunikujących się po usb i ... hackowania ich. Enjoy!

poniedziałek, 14 września 2015

Rok

Minął rok od trzech kluczowych zmian w moim życiu: miałem znaleźć pracę, zmienić tryb studiów, oświadczyć się... jak wyszło?

1) Z oświadczynami było najprościej - wybranka wybrała wolność i odeszła z innym, nie było więc komu.
Plusy:
→ Więcej wolnego czasu
→ Powrót do sportu
→ Wyszedłem do ludzi
Minusy:
→ Złamane serce + czasowe zidiocienie emocjonalne
→ Nie spotkałem typa, nadal chwilami chciałbym mu w ryj dać.

2) Ze  studiami było trochę trudniej - samo przepisanie ocen zajęło tyle, ile otrzęśnięcie się z szoku pourazowego z pkt pierwszego. Pół roku. Ale przeniosłem się i szczęśliwie mogę dalej w nieskończoność kończyć drugiego inżyniera! Plusem przeniesienia się na zaoczne jest to że niestety dzienne nie oferowały tego czego chciałem się nauczyć, dawały za to ogromny narzut kolejnych niepotrzebnych mi rzeczy.
Plusy:
→ Skończę to co zacząłem
→ Paradoksalnie mając solidne podstawy tak więcej się nauczę
Minusy:
→ Stracone weekendy
→ Żadziej, ale jednak bywają dupne przedmioty

3) Najważniejsze na koniec czyli praca. Pierwsza miała być na dłużej - ale okazało się że było to krócej niż się spodziewałem, nie polecam przychodzić do pracy gdy szykują się restrukturyzacje ;) Najciekawsza sytuacja jaka mnie spotkała: dostałem zlecenie na skończenie projektu razem z ... kolegą który nie pracował od miesiąca. Tak jest gdy za szybko zwalnia się ludzi.
Pierwsza praca dość mocno otworzyła przede mną drzwi - jak szukałem po lekko ponad pół roku złożyłem 1 raz CV byłem na 3 rozmowach i finalnie stanąłem nad dylematem "Co wybierać bo przecież się nie rozdwoję?!" Jest to oczywiście też specyfika branży i po części obranego przeze mnie kierunku dalszego rozwoju.
Plusy:
→ Pieniądze i niezależność
→ Fajni ludzie
→ Rozwój
Wady:

→ Mniej czasu
→ Mniej sił
→ Groźba "zastania" się

O czym może innym razem ;)