Arduino Zero – kolejne ciekawostki

Redakcja Hack a day natrafiła podczas targów Maker Faire na stoisko firmy Atmel na którym Bob zdradził im kilka szczegółów dotyczących Arduino Zero.

Oprócz tego co znasz z poprzedniego wpisu o Arduino Zero, Bob zdradził dodatkowo:

  • Arduino Zero ma natywny port USB podłączony bezpośrednio do kontrolera. Jak w Leonardo może on udawać różne urządzenia. Może też pracować jako Host USB i kontrolować inne urządzenia jak aparaty fotograficzne, klawiatury, myszy, smartfony.
  • Port debug będzie używał otwartego protokołu debugu i będzie współpracował z programami Atmel Studio, OpenOCD oraz GDB. Arduino IDE też ma obsługiwać, ale na razie tego nie robi.
  • Jak pisałem wcześniej kontroler ma 6 interfejsów szeregowych. Bob zdradził, że można każdemu wybrać protokół z dostępnych Serial, TWI, SPI. Dodatkowo każdy interfejs można podpiąć do dowolnego pinu kontrolera. Za wyjątkiem pinów USB.
  • Dowiedzieliśmy się też po co jest tajemnicze złącze SWD znajdujące się w prawym dolnym rogu Arduino Zero. Służy ono do programowania i debugowania urządzeń, które zbudujesz na bazie kontrolera SAMD21. Więc dodają za “free” programator.

Niestety Bob nie zdradził kiedy dokładnie pojawi się AZ i ile będzie kosztować.

Wpis o Arduino Zero na Hack a day

Arduino Zero – klasyka w nowym wydaniu na blogu Nettigo

sprae

Adam Savage – 10 przykazań twórcy

Oglądałeś kiedyś Pogromców Mitów na Discovery?
Dwóch panów Adam i Jamie, którzy tworzyli wynalazki by udowodnić czy wydarzenia z różnych legend mogły być prawdziwe.

Po za programem zajmują się efektami specjalnymi w filmach. Mało kto wie, że Adam jest też szalenie utalentowanym konstruktorem. Ale o tym później.

Adam Savage wygłosił przemówienie na Maker Faire. Można je obejrzeć tu:

Określa w nim 10 przykazań twórcy:

  1. Zacznij coś robić. Może to być dowolna rzecz jaką sobie wymyślisz z dowolnej dziedziny. Człowiek różni się tym od zwierząt, że potrafi używać narzędzi i opowiadać historię. Więc stwórz historię twojej twórczości z użyciem narzędzi – nabierz doświadczenia.
  2. Zrób coś użytecznego. Coś co usprawni twoje życie. Zrób coś z rzeczami, których używasz na co dzień, by działały lepiej, używało się ich wygodniej i były przyjemniejsze w interakcji.
  3. Zacznij teraz! Pewnie masz różne umiejętności i masę pomysłów. Pewnie masz też masę wymówek o tym czemu ich nie zrealizować. Adam radzi by zacząć je realizować teraz, z rzeczy które masz pod ręką. On widział wiele wspaniałych przedmiotów zrobionych z materiałów, które niby się do tego nie nadawały.
  4. Znajdź swój cel. Każdy musi mieć jakiś cel do zrealizowania, wiedzieć co chce osiągnąć. Gdy masz projekt tego co chcesz osiągnąć, wtedy tworzy się łatwiej.
  5. Pytaj. Zadawaj pytania, proś o pomoc, o porady, pytaj o opinię. Znajdź kogoś, komu ufasz i zapytaj “Co myślisz o mojej pracy?”. Znajdź swojego mentora, nauczyciela, kogoś z kogo opinią się liczysz i pytaj go, jak on potrafi tworzyć. 
  6. Dziel się. Pokazuj swoje wynalazki, dziel się doświadczeniem. Nie ma nic gorszego, gdy ktoś stworzy coś fajnego i powie “Nie mogę powiedzieć jak to jest zrobione. To tajemnica”. Nie twórz sekretów, ochrona pomysłów jest nieopłacalna. Jeśli myślisz, że sposób w jaki tworzysz czynią ciebie interesującym człowiekiem, to jesteś w błędzie. Dziel się swoim doświadczeniem, bo ktoś może je udoskonalić i wszyscy na tym zyskają. 
  7. Naucz się, że zniechęcenie i porażki to normalny element każdego projektu. Jeśli zrozumiesz, że tak jest, będziesz mógł kontynuować pracę nad projektem, bo zrozumiesz siebie.
    Jesteś zniechęcony, jest niedzielna noc, a projekt dąży do porażki. Nie martw się tak bardzo. Jutro może będzie trudniej zacząć, ale będziesz miał już doświadczenie.
    Adam mówi, że przez 70% czasu pracy nad projektem martwi się, że nie wie co robi i że nienawidzi tego co buduje. Ale brnie dalej, bo wie, że takie myśli to normalka. Mówi też, że im bliżej jest końca projektu tym bardziej się boi. Bo on lubi tworzyć, a nie kończyć.
    Jeśli zrozumiesz jak działa zniechęcenie, to stanie się ono twoim przyjacielem i będziesz umiał z tym żyć.
    Mówi też, że głupio jest ponosić porażki, to zniechęcające, ale zrozum, że to jest element budowy każdego projektu.
  8. Rób dokładne i uważne pomiary. Musisz wiedzieć gdzie zastosować większą, a gdzie mniejszą tolerancję pomiarów. Jeśli coś ma do siebie ściśle pasować to musi być dokładne. Jeśli może być luźne, możesz zastosować mniejszą dokładność. Róźnica między zawodowym konstruktorem i amatorem jest taka, że ten pierwszy robi dokładne pomiary.
  9. Rób rzeczy dla innych ludzi. Największą przyjemność twórca czerpie z tego, że rzecz którą stworzył może przekazać komuś innemu. Że może mu podarować ten kawałek czasu, który spędził na jej przygotowywaniu, tą historię powstawania i skupienie. Zatem sprawiaj by twoich rzeczy używali inni ludzie.
  10. Adam stwierdził, że jeśli mógłby się przenieść w czasie i powiedzieć coś sobie w młodości to powiedziałby “Używaj więcej chłodziwa!”. Chłodny metal obrabia się łatwiej niż rozgrzany ;-).

Porady są bardzo inspirujące i pewnie przydadzą się przy niejednym projekcie z udziałem Arduino.

Reszta nagrania to ciekawe pytania od publiczności. Polecam.

A ty jakie masz historie z pracy nad swoimi wynalazkami?

Na Youtube jest kanał Tested, który współtworzy Adam Savage i pokazuje w nim jak tworzy różne przedmioty inspirując innych.

Kanał Tested na Youtube

sprae

Interfejs dotykowy w Arduino

Dzięki bibliotece CapacitiveSensor możesz sterować programem dotykając kawałka metalu podłączonego do jednego z pinów.

Biblioteka do działania wymaga 2 pinów, rezystora i kawałka metalu jako elektrody.

Od oporu rezystora zależy czułość układu. Powyżej 10 Mega Ohm-ów urządzenie wykrywa nie tylko dotyk, ale i zbliżenie ręki. Dzięki czemu można zrobić estetyczny przełącznik, chowając elektrodę za kawałkiem drewna. Wtedy dotykając odpowiedniego miejsca np. na drzwiach możesz aktywować funkcje programu otwierającą je.

Tu mały przykład jak za pomocą czujnika podłączonego do pinów 10 i 11  sterować lampką LED wbudowaną w Arduino.

#include <CapacitiveSensor.h>

// Deklarowanie sensora podłączonego do pinów 10 i 11
CapacitiveSensor touch = CapacitiveSensor(10, 11);

void setup()
{
  // Ustawienie pinu diody L jako wyjście
  pinMode(13, OUTPUT);
}

void loop()
{
  // Sprawdzenie czy dotknąłem elektrody
  if (touch.capacitiveSensor(30) > 100)
  {
    // Jeśli tak to włączenie diody
    digitalWrite(13, HIGH);
  }
  
  delay(100);
}

sprae

Gry na Raspberry Pi bez Linuksa

Jak każdemu wiadomo Raspberry Pi, to płytka działająca na systemie operacyjnym Linux. Daje jej to ogromne możliwości. Od obsługi wielozadaniowości po sieć i grafikę 3D.

Jednak są ludzie, którym to nie wystarcza. Chcą programować  swoje “rabarbary" bez udziału systemu operacyjnego, zajmując się wszystkimi rejestrami urządzeń i budową własnego systemu operacyjnego. Tak samo zaczynał Linus Torvalds, który chciał napisać program terminala na PC, a wyszedł mu system operacyjny Linux ;-).

Jedną z takich osób jest cumana. Jego ostatnie hobby to programowanie gier na Raspberry bez udziału systemu operacyjnego. Na razie są to proste gry typu PacMan, jednak pakiet bibliotek wciąż się rozwija.

Główną zaletą takiego programowania jest wysoka optymalizacja i dużo większa szybkość uruchamiania po podłączeniu zasilania.

Istnieją też inne projekty oparte na takim podejściu do Raspberry, takie jak tani emulator stacji dysków do starych komputerów – amigadrive.

Blog cumana

Github z kodami źródłowymi projektów cumana

Rasbperry Pi w ofercie Nettigo

Zasięg XBee

Jeśli zastanawiałeś się jaki zasięg mają różne wersje modułów XBee, to Sparkfun przygotowało odpowiednie podsumowanie.

XBee to moduły komunikacji radiowej. Ich specjalny protokół pozwala na tworzenie sieci modułów (mesh) w których mogą one przesyłać między sobą dane i automatycznie uzgadniać parametry transmisji.

Dostępne w sklepie Nettigo XBee Series 2 ma zasięg około 100 m, zaś XBee Pro 868 ma zasięg około 10 km. Oczywiście zasięg jest teoretyczny i zmniejsza się po napotkaniu na drodze przeszkód.

Porównanie modułów XBee na stronie Sparkfun

Moduły i akcesoria XBee w sklepie Nettigo

sprae

Arduino Zero – klasyka w nowym wydaniu

Po wypasionym Arduino Tre z zespołu Arduino wyszła jeszcze jedna niespodzianka. Jest nią Arduino Zero.
To odnowiona wersja klasycznej linii Arduino jaką znasz z modeli UNO, Leonardo lub dawnej niezniszczalnej Duemilanove.

image

Zdjęcie pochodzi z bloga Arduino

Nowa płytka ma nowy procesor. W miejsce 8 bitowych kontrolerów ATmega z rdzeniem AVR, wchodzi nowa 32-bitowa rodzina SAMD21 z rdzeniami ARM-M0+. Nowy procesor będzie pracował z częstotliwością 48 MHz (3x większą niż wcześniejsze). Do twojej dyspozycji będzie 256 kB pamięci Flash (8x więcej) i 32 kB pamięci RAM (16x więcej).

Nowe płytki pracują z napięciem 3,3 V tak jak Arduino DUE. Biorąc pod uwagę, że większość tworzonych dzisiaj elementów pracuje z takim napięciem, to raczej zaleta niż wada. Niestety wyjścia cyfrowe mają mały prąd obciążenia – 10 mA w stanie niskim i 7 mA w stanie wysokim. Przez to ciężko będzie podłączyć bezpośrednio diody LED i rozświetlić je w pełni (20 mA). 

Obserwując zdjęcia płytki można zauważyć, że teraz mamy wyjścia PWM na każdym pinie cyfrowym, oprócz pinów Serial. Reszta pinów ma takie samo znaczenie jak wcześniej.

Zauważyć też można, że są dwa złącza micro USB. Jedno jest tradycyjnym wirtualnym portem szeregowym, do komunikacji programu z komputerem.
Drugie oznaczone jest napisem Debug.

Debug pozwala na podglądanie działania programu na kontrolerze. Nie wiem na ile pozwoli Arduino IDE, ale tradycyjny debug pozwala na:

  • Wykonywanie programu krok po kroku – program wykonuje kolejne linie kodu w tempie jakim chcemy obserwować co się dzieje z kontrolerem.
  • Pokazanie gdzie się wywalił program.
  • Zatrzymanie programu w dowolnym momencie (breakpoint) i podgląd wartości wszystkich zmiennych.

W nocie katalogowej kontrolera można dostrzec o wiele więcej peryferiów niż oferuje płytka, lecz bez schematu nie wiadomo czy ich sygnały będą dostępne.
Te, które chciałbym wyróżnić to:

  • 6 portów szeregowych
  • Interfejs cyfrowego dźwięki i2s
  • 14 wejść analogowych o rozdzielczości 12 bitów (4096 poziomów)
  • 10 bitowe wyjście analogowe
  • 12 kanałów DMA – pozwalają na automatyczne bez udziału procesora komunikowanie się między urządzeniami kontrolera
  • Zegar RTC – automatycznie zlicza godziny, minuty i sekundy oraz obsługuje budzik
  • CRC32 – automatycznie tworzy sumę kontrolną do weryfikacji danych.

Zatem będzie co hackować 😉

Opis Arduino Zero na blogu Arduino

Opis Arduino Zero na blogu Atmel

Nota katalogowa kontrolera SAMD21G

Duże zdjęcie Arduino Zero

sprae

INPUT_PULLUP

Jak korzysta się z Arduino od lat, to często drobne usprawnienia  umykają naszej uwadze.

Aby włączyć wbudowany w port cyfrowy Arduino rezystor podciągający wystarczy skorzystać z komendy pinMode(INPUT_PULLUP), nie trzeba tego robić w dwóch krokach (mode INPUT i potem write HIGH).

Zauważone dzięki: http://adam-radziak.blog.pl/2014/05/15/cos-dla-poczatkujacych/

Komenda pinMode: http://arduino.cc/en/Reference/PinMode

[witek]

Zdjęcie CC: https://www.flickr.com/photos/80085826@N03/9190344737

Raspberry Pi jako nadajnik obrazu z drona

Jakiś czas temu interesowałem się FPV. To takie hobby w którym do zdalnie sterowanego samolotu lub wielowirnikowca doczepia się kamerę i patrzy na świat z jego punktu widzenia, niczym pilot.

Na początku używało się do tego systemów kamer płytkowych  z nadajnikami, pierwotnie przeznaczonymi do monitoringu. Ci bardziej utalentowani konstruktorzy wykorzystywali kontrolery, takie jakie znajdują się w Arduino. Za ich pomocą czynili prawdziwe cuda. Tworzyli systemy instrumentów pokładowych nakładające na obraz z kamery różne informacje o locie. Niektórzy budowali też systemy autopilotów, wyciskając możliwości tamtych kontrolerów na maksa.

Dziś mamy wydajne i tanie Raspberry Pi, do którego można podłączyć kamerę. Znalazłem projekt, który za pomocą tej niewiarygodnej płytki potrafi transmitować obraz i nakładać na niego dane z instrumentów pokładowych.

Obraz transmituje w sieci WiFi za pomocą protokołu UDP w formacie H264.

Zatem jeśli budujesz robota, drona lub cokolwiek innego co wymaga monitorowania przez kamerę z danymi telemetrycznymi na obrazie – masz już gotowca.

Projekt RaspiFPV na Github

Rasbperry PI w sklepie Nettigo

Kamera do Raspberry Pi w sklepie Nettigo

Kamera do filmowania nocą do Raspberry Pi w sklepie Nettigo

sprae

Wejście analogowe w Raspberry Pi

Co zrobić, gdy za pomocą Raspberry Pi chciałbyś zmierzyć napięcie?
Zawsze możesz dokupić Arduino i podłączyć je do USB w Rasp. Znalazłem tańsze rozwiązanie. Jest nim przetwornik analogowo-cyfrowy MCP3008.

Ma on 8 wejść analogowych i każde wejście przetwarza z 10 bitową dokładnością (rozpoznaje 1024 poziomy napięcia). Co przy napięciu 3,3 V daje dokładność na poziomie 0,00322 V.

W internecie znalazłem dobry i przystępny opis tego jak podłączyć przetwornik do Raspberry Pi i dokonywać pomiarów różnych czujników za pomocą programów napisanych w języku Python.

Blog Raspberry Pi Spy – Analogue Sensors On The Raspberry Pi Using An MCP3008

Nota katalogowa czujnika

Raspberry Pi w sklepie Nettigo

sprae