Sterowanie panelami LED z poziomu mikrokontrolera pyMCU
Matryce LED są dość popularne. Za ich pomocą można tworzyć panele i banery reklamowe z np. animowanym tekstem. Włączanie bądź wyłączanie diody LED przez mikrokontroler to nie problem. Gdy diod będzie 64 albo i więcej to efektywne zarządzanie wszystkimi diodami LED stanie się problematyczne. Rozwiązaniem tego problemu są jednak sterowniki diod LED, które zmniejszają drastycznie ilość pinów potrzebnych do zarządzania panelem. Niektóre z nich obsługują także np. przewijanie tekstu. W tym artykule przedstawię układ z matrycą LED 8x8 i sterownikiem MAX7219.

Możliwości i osiągi mini-komputera pcDuino
pcDuino to połączenie mikro-komputera z Arduino. Mówiąc dokładniej jest to miniaturowy komputer zgodny z Arduino i pozwalający wykonywać kod pisany z myślą o płytkach z tej rodziny. Jest to jeden z wielu dostępnych obecnie na rynku komputerów z procesorami ARM. Główne wyróżniki tego projektu to dość niska cena i spore możliwości prototypowania układów elektronicznych (w tym wspomniana zgodność z kodem pisanym dla Arduino). Z drugiej strony konkurencja w tym segmencie jest duża. Jak wypadnie pcDuino?
Czujnik zbliżeniowy dla robotów
Żeby swobodnie poruszający się robot nie wpadł na ścianę, albo inną przeszkodę potrzebuje czujnika odległości, czy też czujnika zbliżania się. Opisywałem już ultradźwiękowy czujnik odległości, który potrafił określić odległość od przeszkody. Są jednak prostsze czujniki wykorzystujący diody podczerwone i fotodiody czułe na podczerwień. Można wykorzystywać je w robotach, albo jako czujniki stanu urządzeń - np. czy drzwi są otwarte czy zamknięte. Nie są w stanie zmierzyć odległości, ale potrafią określić czy przeszkoda jest blisko czy daleko.

Analogowe joysticki do sterowania mechaniką i elektroniką
Do sterowania różnymi urządzeniami, jak np. serwomechanizmami, czy silnikami przydają "pokrętła", suwaki i temu podobne interfejsy wykorzystujące potencjometry. Żeby było łatwiej sterować np. wspomnianymi silnikami wymyślono joysticki łączące funkcjonalność dwóch lub więcej potencjometrów. Proste "analogowe" joysticki to nic innego jak dwa potencjometry pracujące w dwóch prostopadłych osiach. Pozwala to jednym kontrolerem sterować płynnie dwoma parametrami na raz. W przypadku prostego samochodu zabawki oś Y odpowiadałaby za prędkość i kierunek (na przód, do tyłu), a oś X za kierunek prawo-lewo.
Na rynku dostępnych jest masa płytek z takimi joystickami. Oprócz dwóch potencjometrów zazwyczaj mają też wbudowany przycisk uruchamiany przez wciśnięcie gałki joysticka. Bardzo łatwo wykorzystać je w układach elektroniczno-mechanicznych i w tym artykule pokaże jak to zrobić.
Integracja aparatury pomiarowej z Raspberry Pi poprzez LabJack U3
Tym razem wpis gościnny autorstwa Blisa poświęcony urządzeniu pomiarowemu LabJack U3, które może współpracować z Raspberry, komórką, czy zwykłym PCtem.
Komputer Raspberry Pi w połączeniu z kartą pomiarową uzyskuje całkowicie nową funkcjonalność. Użycie popularnej Maliny pozwala stworzyć mały systemem akwizycji, obróbki oraz prezentacji danych pomiarowych pochodzących z szerokiej rodziny przetworników zarówno analogowych jak i cyfrowych. Niewielkie zapotrzebowanie na energię elektryczną umożliwia zasilanie takiego układu z wykorzystaniem źródła prądu stałego (np. akumulator 12V z przetwornicą DC-DC) co czyni go mobilnym i wszechstronnym rozwiązaniem np. do monitoringu zmiennych środowiskowych.
Z pośród wielu dostępnych kart pomiarowych, wybór padł na kartę LabJack U3 ponieważ łączy się ona z komputerem przez port USB i jest z niego zasilana. Sterowniki dla systemu operacyjnego Linux oraz biblioteki i przykłady użycia karty w Pythonie są dostępne na stronie producenta. Posiada ona szereg pinów cyfrowych jak i 12-bitowe piny analogowe pozwalające z dużą rozdzielczością mierzyć sygnały elektryczne.

Zaktualizuj swoje Django!
Dzisiaj wydano kolejne aktualizacje frameworka Django od 1.4 po gałąź rozwojową z poprawkami usuwającymi lukę pozwalającą przeprowadzić atak denial-of-service (DOS). Warto więc jak najszybciej zaktualizować kopie Django w swoich projektach. Te nie aktualizowane od dłuższego czasu załapią się także na wcześniej mniejsze poprawki, które ukazały się nie tak dawno temu.
Sterowanie silnikami krokowymi i serwomechanizmami za pomocą pyMCU
Serwomechanizmy, czy serwa znajdziemy w zdalnie sterowanych zabawkach, gdzie np. będą skręcać koła pojazdu, czy unosić lotki samolotu. Silniejsze i większe serwa znajdziemy w różnych układach automatyki, czy maszyn. Mogą np. poruszać chwytakami i ich ramionami na linii produkcyjnej. W uproszczeniu serwo to silnik, przekładnie i elektroniczny układ potrafiący ustawiać silnik w ściśle określonej pozycji. Proste serwa mogą obracać się w ograniczonym zakresie (np. 180 stopni), ale są też serwa ciągłe zdolne do ciągłego ruchu w daną stronę. Serwa można także wykorzystać przy konstrukcji robotów kroczących, np. heksapodów - czyli mechanicznych pajęczaków.
Silniki krokowe przydają się tam gdzie potrzebujemy precyzji ruchu a nie prędkości zwykłych silników na prąd stały. Pod wpływem impulsu elektrycznego silnik przesuwa się o jeden krok. W zwykłych silnikach bez np. enkoderów nie da się tak precyzyjnie sterować ruchem silnika. Silniki krokowe znajdziemy w różnych maszynach precyzyjnych, np. CNC.
Sterowanie silnikami DC za pomocą pyMCU i sterownika DRV8833
Silniki prądu stałego mają różnorakie zastosowania. Znajdziemy je w robotach, czy wielu urządzeniach domowego użytku. Konstruując roboty, np. samochody wyposażymy je w dwa czy cztery silniczki, których zadaniem będzie poruszanie pojazdu. W najprostszym przypadku możemy włączać i wyłączać zasilanie. Nie pozwala to jednak na kontrolę prędkości obrotów silnika, czy na jazdę wstecz. Żeby rozwiązać problem sterowania silników DC opracowano sterowniki silników - układy scalone z mostkiem H. Na rynku dostępnych jest wiele płytek z takimi sterownikami. Różnią się ilością obsługiwanych silników, interfejsem, czy maksymalnym amperażem obsługiwanych silników. Niektóre wbudowane są w płytki do kompleksowej obsługi robotów (shieldy Arduino, RaspiRobot, PicoBorg, Rover 5).
W tym artykule przedstawię sterownik Pololu DRV8833 obsługiwany przez pyMCU. Jest to tani sterownik obsługujący dwa silniki o niewielkiej mocy (takie jak w prostych zestawach robotów dla Arduino, czy Raspberry). Inne sterowniki obsługuje się podobnie jak nie identycznie.
Testowanie aplikacji webowych różnymi przeglądarkami za pomocą Selenium
Selenium służy do testowania aplikacji webowych. Bez problemu odpalimy webdriver Firefoksa. A co jeśli chcemy testować inną przeglądarką? Dla przykładu chcemy by Selenium odwiedziło podany adres URL i zrobił zrzut ekranu. W tym artykule pokażę jak skonfigurować różne webdrivery dla Selenium pod Pythonem na Linuksie.
Python i elektronika - ciąg dalszy i plany na przyszłość
Na ostatnim PyWawie prezentowałem możliwości współpracy Pythona z elektroniką. Wcześniej opublikowałem już kilka artykułów dotyczących m.in. PyMCU. W najbliższym czasie planuję zająć się też co nieco elektroniką na Raspberry Pi wliczając w to płytki rozszerzające takie jak Gertboard. Kolejny punkt na mapie to Arduino i pcDuino - ale bardziej pod kątem współpracy z Pythonem niż zawzięte programowanie w C.
Ogólnie chcę znaleźć/określić najlepsze platformy do łączenia Pythona i elektroniki - czy to z wykorzystaniem wyłącznie Pythona, czy Pythona wspomaganego kodem C (gdy to pierwsze rozwiązanie nie da rady w danym przypadku). Popularyzacja łatwej w oprogramowaniu elektroniki zwiastuje że już niebawem pojawią się projekty wykorzystujące ją. Największy nacisk położony zostanie zapewne na łączność/działanie bezprzewodowe.
Po prezentacji znalazłem jeszcze jeden ciekawy projekt - TinkerForge. Tak jak Phidgets oferuje wysokopoziomowe API w Pythonie (a nawet w PHP), które wygląda na bardzo proste w użyciu. Płytki (bricks) mierzą 4 x 4 cm i można je łączyć ze sobą tworząc wierze. Do płytek można podłączać "bricklets" - np. czujniki, panele LCD, czy wejście/wyjścia analogowe i cyfrowe. Surowego GPIO tam nie uświadczymy.

Równie ciekawy może być projekt na Kickstarterze - HackRF - radio programowalne dla zakresu od 30 MHz do 6 GHz mogące nadawać jak i odbierać. Czy będzie to obsługiwane jakość z poziomu Pythona na razie trudno powiedzieć.
Poniżej slajny z mojej prezentacji (wideo też się pojawi w pewnym momencie):