Arduino przechodzi grę Timberman

Timberman to polska gra na telefony. Jej bohaterem jest drwal, który rąbie drzewo. Zadaniem gracza jest ustawianie tak drwala, by nie przygniotła go gałąź.

Gra jest nudna i nadaje się do umilania czasu w długiej kolejce po jakiś nikomu niepotrzebny papier ;-). Ale twórcom DIY to nie wystarczy. Lepiej stworzyć automat, który sam będzie bił kolejne rekordy.

Arduino Plays Timberman Faster from Valentin Heun on Vimeo.

Urządzenie zrobił Valentin Heun. Do jego budowy potrzebne są:

  • 2 przekaźniki z tranzystorami sterującymi, rezystorami i diodami
    Podłączone do pinów 4 i 8
  • przełącznik do rozpoczynania gry
    Podłączony do pinu 7
  • fototranzystor
    Podłączony do pinu A0
  • Arduino UNO
  • elektrody wycięte z miedzianej siatki

Schemat pochodzi ze strony ArduinoPlaysTimberman

Urządzenie do działania wymaga naszej obecności. Trzeba trzymać koniec przewodu, który przechodzi przez przekaźniki do elektrod na ekranie. W ten sposób symulujesz prawdziwą pojemność i oporność ciała ludzkiego, którą wykrywa ekran dotykowy. Może ty udoskonalisz układ, by pracował samodzielnie?

Zasada działania jest prosta. Fototranzystor przyczepiony do ekranu wykrywa kiedy pojawia się gałąź z prawej strony. Robi to dzięki temu, że zmienia się jasność ekranu w tym miejscu. Gdy ją wykryje, to za pomocą symulacji dotyku przenosi drwala na lewą stronę. Gdy gałąź nie pojawia się z prawej, wtedy przenosi drwala na prawą stronę.

sprae

PenguPilot – Linux kieruje dronami

Jeśli chcesz stworzyć wielowirnikowego drona na Raspberry PI to właśnie nadarzyła się okazja.

PenguPilot to zestaw programów, które można uruchomić na płytkach z kontrolerami obsługującymi Linuksa. Oprogramowanie pozwala na stabilizację drona, automatyczne nawigowanie nim po wyznaczanych celach, gromadzenie telemetrii (czarna skrzynka), zdalne sterowanie oraz konfigurację.

Wszystkie elementy PenguPilota są modułowe i otwarte, zatem każdy może je dostosować do swoich potrzeb. Do prawidłowego działania wymagane są poprawki na jądro pozwalające na pracę w czasie rzeczywistym (PREEMPT/PREEMPT_RT).

Obecnie wspierane płytki to:

  • Gumstix
  • ODROID U3
  • Respberry PI

Gumstix Overo Quadrotor running PenguPilot on Linux from Tobias Simon on Vimeo.

Jak widać PenguPilot świetnie radzi sobie ze stabilizacją drona.

Cały projekt bardzo mi się spodobał. Ma świetną infrastrukturę i budowę. Każdy fan Linuksa i modeli latających może się z niego wiele nauczyć. Jeśli połączyć go z poprzednio opisywanym projektem transmisji obrazu z nałożoną telemetrią to byłby wypas :-).

Oczywiście części do swojego wielowirnikowca kupisz w Nettigo

sprae

Tapuino – emulator magnetofonu do C64

Ponieważ “Gimby nie znajo” zacznę od historii.
Najpopularniejszym komputerem przez całe lata ‘80 był Commodore C64. Gdy go wymyślono miał całkiem niezłe możliwości. Dziś nie ma ich z czym porównać, bo nawet stare telefony są od niego lepsze, a Arduino jakieś 64 razy wydajniejsze. C64 do dziś jest używany przez fanów retro gier z europy środkowej i bliskiego wschodu, gdzie zdobył największą popularność. Używają go też muzycy chiptune (jak Lukhash) oraz demoscenowcy.

Z resztą sam zobacz co można wycisnąć z 1 MHz procesora i 16 kolorów. Dla zrozumienia klimatu jest to nagranie z pokazu na żywo.

Fani retro grania na oryginalnej maszynie mają coraz trudniej. Dyskietki i kasety z grami w wielu przypadkach nie dają się już odtworzyć. Dlatego w internecie powstają ich kopie cyfrowe do odtwarzania w emulatorach.

Powstają też przystawki do starych komputerów umożliwiające wgrywanie programów z nowocześniejszych nośników jak karty Flash SD. Na początku  przystawki były dość drogie, jednak społeczność Open Hardware zrobiła tańsze odpowiedniki na Arduino.

Historia tych odpowiedników uzmysławia jakie zalety ma otwartość projektu. Na początku powstało Uno2iec i Uno2tap udające stacje dysków oraz magnetofon. Te projekty wniosły do społeczności opis jak komunikować Arduino z C64. Uno2tap było na tyle niedoskonałe, że wymagało komputera, który wysyłał dane przez USB.

Zdjęcie pochodzi z bloga 1337 Beef

Na bazie tych projektów powstał kolejny – Tapuino, który nie wymaga już komputera, a grę do wczytania wybiera się na wyświetlaczu za pomocą przycisków.

Do zbudowania urządzenia potrzebne są:

  • Płytka Arduino
  • 4 przyciski
  • Optoizolator/Transoptor
  • Wyświetlacz obsługiwany przez LiquidCrystal z interfejsem I2C/TWI
  • Czytnik kart SD

Urządzenie odczytuje z karty pamięci SD standardowe pliki kaset TAP. W obecnej wersji umożliwia także zapis do nich. Ciekawe co powstanie na bazie tego projektu.

sprae

Fritzing 0.9.0

Fritzing to program do robienia schematów dla twórców DIY “Zrób to sam”. Potrafi tworzyć estetyczne schematy koncepcyjne w sam raz do wklejenia na bloga, schematy ideowe oraz projekty płytek drukowanych.

Niedawno pojawiła się nowa wersja oznaczona numerem 0.9.0. Nowością pod maską jest użycie bibliotek graficznych Qt 5, dzięki czemu operacje graficzne programu powinny znacznie przyspieszyć.

Miłą niespodzianką są dodatkowe części w katalogu podzespołów. Wśród nich są popularne ostatnio płytki kontrolerów:

  • Arduino YUN
  • Raspberry PI A, B, B 2.0 (nie ma jeszcze B+ [czyżby zaskoczenie?])
  • Intel Galileo
  • Teensy 3.0 i 3.1

Program można pobrać ze strony fritzing.org. Działa on na platformach Linux 32/64 bit, Apple OS X i Windows.

sprae

Elektryczny Gokart na Arduino

Zdjęcie pochodzi z serwisu instructables.com

Użytkownik postanowił podzielić się w serwisie Instructables wnioskami z budowy elektrycznego gokarta.

Jego napęd to modelarski silnik Savox BSM5065 450Kv, który oryginalnie służy do napędzania modeli helikopterów i waży około 0.5 kg.
Sterowanie napędu to moduł Hobbywing Xerun 150A. Oryginalnie służący do sterowania silnikami modeli samochodów.
Zasilanie to trzy potrójne baterie ogniw LiPo o pojemności 5000 mAh.

Gokart ma maksymalną prędkość 50 km/h i dzięki silnikowi elektrycznemu ogromne przyspieszenie. Dodatkowo wyposażony jest w ledowe światła przednie, kierunkowskazy, światło cofania i czerwone tylne.
Hamowanie jest realizowane dynamicznie przez silnik.
Pojazd ma zaprogramowane 8 biegów dla lepszej kontroli “gazu”.

Całością steruje Arduino z shieldem TFT 320×240 i kilkoma dodatkowymi elementami sterującymi.
Silnik jest kontrolowany za pomocą biblioteki do sterowania urządzeniami modelarskimi Servo.h. Przyspieszenie reguluje się potencjometrem zamontowanym w kierownicy i podłączonym do jednego z wejść analogowych Arduino.

Projekt ma w sobie jeszcze sporo niespodzianek jak np. przycisk “Faster Than Light” ;-).

Teensy 3.1 jak trzymać dane w pamięci Flash.

Teensy mimo swoich rozmiarów ma dużo pamięci jak na kontroler.
Pamięci RAM jest 64 KB. Trafiają do niej wszystkie zmienne programu i bibliotek.

Zmienna typu byte:

byte zmienna = 1;

Zajmuje 1 bajt. Takich zmiennych zmieści się w Teensy ponad 64 tysiące.

Zmienna typu int:

int zmienna = 1000;

Zajmuje 4 bajty, więc takich zmieścisz 16 tysięcy.

Wielokrotnością zmiennej są tablice, które pozwalają trzymać wiele danych pod jedną nazwą.

int tablica[4] = {2, 4, 6, 8};

Pod nazwą “tablica” znajdują się 4 liczby. Ponieważ tablica jest typu int, liczby zajmują w niej 4 (rozmiar int) * 4 (elementy tablicy) = 16 bajtów.

Pamięci Flash jest 256 KB. Czyli 4 razy więcej niż RAM. Znajduje się w niej głównie kod programu. Ta pamięć z punktu widzenia programu jest tylko do odczytu. Zapisuje się ja podczas wrzucania programu z komputera na Teensy.

W każdym programie są pewne zmienne, których dane nie będą zmieniane przez program. Są to np zmienne z numerami pinów, z napisami, obrazki lub wygląd czcionek dla wyświetlacza graficznego.

int ledPin = 13;char napis[] = “Ala ma kota”;
byte font[8] = {0x00, 0x01, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff};

Można łatwo sprawić, by te zmienne nie zajmowały pamięci RAM i znajdowały się tylko we Flash. Trzeba zrobić z nich stałe (tylko do odczytu). Robi się to bardzo prosto za pomocą etykiety “const”.

const int ledPin = 13;
const char napis[] = “Ala ma kota”;
const byte font[8] = {0x00, 0x01, 0x3, 0x7, 0xf, 0x1f, 0x3f, 0x7f, 0xff};

Tym prostym ruchem stałe, które program będzie odczytywał, będą trzymane w pamięci programu Flash i można ich używać jak dawnej.

Czemu się tym tak ekscytuje? Ponieważ w Arduino było mało pamięci RAM (2 kB). Żeby deklarować w jego programie stałe z pamięci Flash, trzeba było używać specjalnej etykiety PROGMEM. Aby odczytać stałe z takiej pamięci trzeba było używać specjalnych funkcji pgm_read_byte, pgm_read_world. W Teensy i na kontrolerach ARM jest prościej :-).

Dla kompatybilności Teensy 3.1 też potrafi obsługiwać bibliotekę “avr/pgmspace.h”. Więc nie trzeba przerabiać bibliotek dla Arduino korzystających z tego.

sprae

Arduino IDE 1.5.7 – jak używać Flash

Na początku lipca pojawiło się nowe Arduino IDE oznaczone numerem 1.5.7. Poprawiono w nim dużo błędów. Z praktycznych rzeczy, teraz masz możliwość używania znaków ’.’ i ’-’ w nazwach szkiców.

Pod maską zaktualizowano kompilator AVR-GCC do najnowszej stabilnej wersji 4.8.1. Dzięki czemu do pisania bibliotek można używać języka C++11.
Zaktualizowano też Avrdude do wersji 6.0. Jest to narzędzie do wysyłania programów do płytek Arduino i programowania kontrolerów AVR.

Twórcy IDE dodali też AVR-LIBC 1.8. Aktualizacja tego elementu wymaga najwięcej poprawek w naszych bibliotekach i programach. W nowej jego wersji zmieniono sposób używania pamięci Flash do przechowywania stałych danych programu.

Jeśli używasz tylko F() do przechowywania napisów w pamięci Flash np.:

Serial.println(F(“Ala ma kota”));

To nie masz się czego obawiać. Będzie to działało jak dawniej.

Więcej kłopotu masz, jeśli używałeś bardziej zaawansowanych technik jak:

prog_uchar tablica[] PROGMEM = {1, 2, 3, 4, 5, 6, 7};

Fragment tworzy tablicę typu unsigned char tylko do odczytu w pamięci Flash pod nazwą “tablica”.

W nowym IDE ten fragment wywoła błąd o treści:

“sketch_jul23a.ino:1:1: error: ‘prog_uchar’ does not name a type”

“błąd: ‘prog_uchar’ nie jest nazwą typu”

Lub w wielu przypadkach taki błąd:

“sketch_jul23a.ino:1:16: error: variable ‘tablica’ must be const in order to be put into read-only section by means of ’__attribute__((progmem))’”

“błąd: zmienna ‘tablica’ musi być stałą typu ‘const’ by mogla być w sekcji tylko do odczytu oznaczonej przez ’__attribute__((progmem))’”.

Wtedy ten kawałek kodu musisz zamienić na:

const byte tablica[] PROGMEM = {1, 2, 3, 4, 5, 6, 7};

Zamiast “byte” możesz wybrać inny typ, pasujący dla zmiennej.

Zatem jeśli zauważysz taki błąd w swoich programach, albo bibliotekach, których używasz, teraz możesz go łatwo poprawić.

Dopatrzyłem się też pewnej usterki w Arduino IDE pod Windows. Gdy klikasz w menu “Narzędzia”, menu wyświetla się z pewnym opóźnieniem. Nic nie szkodzi jeśli masz nowoczesne Arduino. Gorzej jeśli posiadasz model Duemilanove z układem USB typu FTDI. Wtedy menu może się pojawić nawet po kilkunastu sekundach.Twórcy Arduino IDE zrobili wykrywanie Arduino po kliknięciu w menu “Narzędzia” i kiepsko to napisali ;-). Jeśli też masz takiego laga, to się nie martw. Program się nie zawiesił.

sprae

Obudowy do Raspberry Pi za pół ceny

Od dziś, do odwołania, do każdego kupowanego Raspberry Pi model B można kupić obudowę za pół ceny!

Zasady (za każdym razem, pisząc Malina mamy na myśli Raspberry Pi model B):

  • tyle ile Malin, tyle obudów z rabatem
  • tylko jeden rodzaj obudowy (pierwszy na liście produktów w zamówieniu) dostaje rabat

Przykłady:

  • w koszyku jest Malina, obudowa RPi Tin przezroczysta i oficjalna biała. Rabat jest przyznawany w wysokości połowy ceny RPi Tin – bo jest tylko jedna Malina.
  • w koszyku są dwie Maliny, obudowa RPi Tin przezroczysta i oficjalna biała. Rabat jest przyznawany w wysokości połowy ceny RPi Tin – co prawda dwie Maliny, ale aplikacja tylko od pierwszej na liście liczy rabat,
  • w koszyku są dwie Maliny i dwie obudowy oficjalne białe. Rabat jest liczony dla obydwu obudów – bo dwie Maliny, dwie obudowy jednego rodzaju

Rabat ten jest uwzględniony też w cenie Starter kitu dla Raspberry Pi. Tutaj możesz zaoszczędzić w sumie 50 zł, kupując cały zestaw gotowy do pracy.

Raspberry Pi B+

image

Dziś dotarły do nas nowe wersje Raspberry Pi B+. Nowe zawsze lepsze, prawda? Cóż 4 porty USB zamiast dwóch to na pewno wygoda.

Jednak trudno nie oprzeć się wrażeniu, że wydanie tej nowej wersji to połączenie najgorszych praktyk świata open i closed source .

O co chodzi?

Wersja B+ różni się zdecydowanie pod względem układu wyjść. Oczywiście są cztery a nie dwa porty USB. Ale również zmieniono wszystko – położenie gniazda micro USB, HDMI, zmiana wyjść audio i video na jack 3.5 mm, inne położenie otworów montażowych. Czyli brak fizycznej zgodności wstecznej. Czy to problem? Tak długo jak używałeś Maliny do jakiegoś prototypu, rzuconej na płytkę stykową, może w jakimś kartonie – to nie jest problem, Jeżeli jednak stała się częścią większego projektu, gdzie do niej zostały dorobione obudowy, inne podzespoły – jest już znacznie gorzej… Zostajesz z zapasem obudów, musisz na szybko robić nowe projekty, modyfikować istniejące.

Dlaczego na szybko? Bo wprowadzając B+ wycofano z dnia na dzień B, zostało tylko to co jest na stanie u mniejszych dostawców (takich jak my).

Podsumujmy. Wprowadzono niezgodną wstecz nową wersję, wycofując jednocześnie starą i nie dając żadnego czasu przejściowego. Zmianę ogłoszono z dnia na dzień, nie anonsując jej  z wyprzedzeniem.

Jeśli prowadzisz jakikolwiek projekt (zarówno sprzętowy jak i programistyczny) to masz wzór jak dużych zmian nie należy wprowadzać.

Jeśli masz inne zdanie to zachęcam do wypowiadania się w komentarzach do tego postu.

PS. Jak donosi jeden z autoryzowanych dystrybutorów fundacja produkująca Raspberry pod wpływem “opinii publicznej” rozważa wznowienie produkcji modelu B, ale nie wcześniej niż we wrześniu i pod warunkiem, że społeczność złoży ‘wystarczająco dużo’ zamówień na starą wersję B….

[w]

Klocki z Nettigo

Uprzejmie donoszę, że w Nettigo robimy też własne klocki, by ułatwić ci budowę nowych urządzeń na bazie kontrolerów.

image

Nowym członkiem rodziny jest moduł sterowania silnikami. Kosztuje 19 zł.
Podłączysz do niego 2 zwykłe silniczki prądu stałego lub jeden silnik krokowy. Zatem jeśli budujesz robota, drukarkę 3d lub inne urządzenie napędzane silnikami – kup sobie moduł sterowania.

Można go podłączyć do każdego kontrolera. Arduino, Teensy, Raspberry PI. Działa z logiką 5 i 3,3 V.

Niedługo go opiszę.

Przypominam też o pierwszym naszym module – przekaźnika.

image

Ten kosztuje 12 zł.
Pozwala na sterowanie urządzeniami zasilanymi prądem z gniazdka 230 V. O tym jak go zaprogramować i wykorzystać z różnymi płytkami możesz przeczytać na stronach Akademii Nettigo.

Ja i WItek mamy pomysły na kolejne moduły, jednak wszystko zależy od twojego zainteresowania.Zdradzę ci w sekrecie, że mój pomysł polega na stworzeniu modułów, które ułatwiłyby zrobienie ładnego panelu kontrolnego z przyciskami i LED-ami.

sprae