Arietta – mniejszy konkurent Raspberry

image

Arietta to małe płytki wielkości kciuka na procesorze ARM z możliwością uruchomienia na nich Linuksa. Zaletą płytek jest 29 pinów GPIO które zawierają rozmaite sprzętowe funkcje. Od wejść analogowych i wyjść PWM po interfejsy USB i SPI.

Dziś opiszę jak zainstalować na Ariettcie Linuksa i jak nawiązać z nimi komunikację.

*Instalacja Linuksa*
Płytka działa na znanej i lubianej dystrybucji Debian. System operacyjny dostarczamy podobnie jak w innych płytkach na karcie micro SD.

Instalacja jest prosta. Wystarczy pobrać plik obrazu systemu i zapisać go na karcie SD.

Pobieramy obraz stąd: http://static.nettigo.pl/arietta.zip

Otwieramy terminal i wpisujemy: sudo dd if=arietta.img of=/dev/sdX BS=1M gdzie X to literka oznaczająca kartę pamięci, zwykle będzie to b lub c (przy tym punkcie należy uważać, żeby nie nadpisać sobie zawartości dysku).

Czekamy, aż plik obrazu zostanie wgrany na kartę, może to potrwać kilka minut. Po wrzuceniu systemu możemy włożyć kartę do slotu na płytce i podłączyć Ariettę do komputera.

Arietta G25 po podłączeniu przez USB do komputera wykrywana jest jako nowy interfejs sieciowy. Umożliwia to połączenie się po SSH przed skonfigurowaniem modułu WiFi. Do podłączenia się potrzebny będzie kabel microUSB.

Uruchamiamy terminal i za pomocą ulubionego edytora (pamiętając o sudo), edytujemy plik /etc/network/interfaces

Dodajemy następujące linijki:

allow-hotplug usb0 iface usb0

inet static address 192.168.10.20

netmask 255.255.255.0

Zapisujemy plik i wychodzimy z edytora.

Jeżeli używamy Ubuntu, nie ma takiej potrzeby, wystarczy kliknąć na ikonę połączenie i wybrać nowe urządzenie.

Wkładamy kartę pamięci z wgranym systemem do slotu na płytce. Podłączamy kabel do Arietty i komputera. Jeżeli po około 2 sekundach zacznie migać czerwona dioda na płytce, będzie to oznaczało, że system zaczął się poprawnie ładować. Odczekujemy ok. 5 sekund, otwieramy terminal i wpisujemy: dmesg Jeżeli jedna z ostatnich linijek będzie wyglądała mniej więcej tak: “[54496.170891] usb 1-1: Product: RNDIS/Ethernet Gadget”, wiemy, że system wykrył nowy interfejs sieciowy.

Wpisujemy: ifconfig i sprawdzamy, czy faktycznie mamy interfejs o nazwie usb0.

image

Jeżeli nie, to musimy “podnieść” go ręcznie wpisując: sudo ifup usb0. Sprawdzamy łączność, wpisując: ping 192.168.10.10 Jeżeli wszystko poszło dobrze, powinniśmy otrzymać odpowiedź z płytki. W tym momencie możemy zalogować się na Ariettę. Otwieramy terminal i wpisujemy: ssh root@192.168.10.10 Po chwili zostaniemy poproszeni o podanie hasła, wpisujemy więc “acmesystems” (uwaga, nie widać wpisywania żadnych znaków).

image

Od teraz mamy dostęp do płytki za pomocą SSH lub interfejsu webowego.

[Artur]

Błąd programowania Arduino

Jeśli nie mogłeś zaprogramować swojego Arduino, a program wyświetlił taki błąd:

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, exprct=0x14, resp=0x51

To istnieje spora szansa na naprawę urządzenia.

Autor bloga redhotEngineer’s Blog miał podobny problem i postanowił podzielić się nie tylko rozwiązaniem, ale też sposobem jak do tego doszedł.

Najpierw trzeba sprawdzić, czy do kontrolera Arduino dochodzą sygnały z interfejsu szeregowego.
W tym celu trzeba przed podłączeniem do komputera:

  1. połączyć piny cyfrowe 0 (RX) i 1 (TX) ze sobą;
  2. połączyć pin RESET z GND w sekcji POWER.

Po podłączeniu Arduino do komputera płytka odeśle wszystko co do niej wyślesz w niezmienionej formie. Żeby to sprawdzić wystarczy włączyć Arduino IDE, potem Monitor portu szeregowego i coś wysłać. Jeśli to co było wysłane pojawi się w polu odebranych danych, to znaczy, że ustawiłeś dobry port, przewód USB oraz układy komunikacji są dobre.

Cała wina spada teraz na kontroler. Mógł zostać uszkodzony, jego program rozruchowy odpowiedzialny za programowanie może nie działać.
Jeśli program, który wgrałeś do Arduino wcześniej działa – miga diodami, steruje tym czym miał sterować to znaczy, że kontroler działa.

Autor odkrył, że w tych przypadkach kontroler z komputerem nie mogą się dogadać, bo port szeregowy nadaje z inną prędkością niż komputer chce odbierać. Uszkodzony okazał się rezonator kwarcowy, który ustala częstotliwość kontrolera.

Wystarczyło wymienić go na inny o częstotliwości 16 MHz i płytka wróciła do dawnej świetności.

sprae

Konfiguracja modułu Bluetooth HC-05

image

Dostępny w naszym sklepie moduł Bluetooth HC-05 można skonfigurować według własnych upodobań. Wpis ten powstał w związku z zawiłością, z którą mieliśmy do czynienia w trakcie zmiany ustawień.

Najpopularniejsze obecnie moduły to HC-05 oraz HC-06. W tym wpisie poruszymy HC-05, jako, że z nim prowadziliśmy boje – bo te są w naszej ofercie. W internecie można się natknąć na dużo poradników jak połączyć moduł z Arduino, ale jest też sporo informacji jak skonfigurować moduł, niestety nie zawsze była informacja jakiego modułu tyczą się komendy.

Zacznijmy od początku.

Aby móc skonfigurować moduł, musimy wejść w tryb komend AT. W tym celu zanim podłączymy zasilanie zwieramy pin34 do Vcc(3.3V), tak ustawiony moduł uruchamiamy i obserwujemy diodę LED, która powinna migać co 2s. Jeżeli częstotliwość migania jest szybsza to znaczy, że moduł nie wszedł w tryb AT. Należy sprawdzić jeszcze raz połączenia i uruchomić ponownie. Czasem tak może być.

W wypadku gołych modułów Bluetooth to ten pin opisany KEY(34) (zdjęcie poniżej). Powyżej znajduje się zdjęcie modułów Bluetooth ze zintegrowanym adapterem do płytek stykowych. Pin 34 jest wyprowadzony na pole lutownicze zaznaczone czerwoną strzałką (nie jest podłączony do pinu znajdującego się tuż obok!).

image

Jeżeli udało nam się uruchomić tryb AT możemy przejść do przeprogramowania modułu Bluetooth. Istnieją dwie metody, jedna łączymy się przez jakiś moduł USB-Serial, bądź wykorzystujemy do tego celu Arduino.

My zajmiemy się podłączeniem do Arduino. Po pierwsze należy wgrać program, który nam ułatwi komunikację (w trybie AT moduł działa z prędkością 38400) i do tego celu użyjemy SoftwareSerial.

    /*

AUTHOR: Hazim Bitar (techbitar)
DATE: Aug 29, 2013
LICENSE: Public domain (use at your own risk)
CONTACT: techbitar at gmail dot com (techbitar.com)

*/
#include 
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
  Serial.begin(9600);
  pinMode(9,OUTPUT); digitalWrite(9,HIGH);
  Serial.println("Enter AT commands:");
  mySerial.begin(38400);
}
void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

Pin RX modułu Bluetooth podłączamy do pinu 11, pin TX do pinu 10, a pin 34 (KEY) do pinu 9 Arduino. Po wgraniu powyższego programu Arduino ustawi pin KEY w stan wysoki co powinno objawić się jak już wcześniej podaliśmy stabilnym miganiem diody co 2s. Jeśli tak będzie otwieramy monitor portu szeregowego, wybieramy prędkość 9600 i możemy rozpocząć komunikację z naszym Bluetoothem.

Spis komend:

AT : Sprawdzenie połączenia

AT+NAME : Wyświetla nazwę modułu

AT+ADDR : Wyświetla adres modułu

AT+VERSION : Wyświetla wersję oprogramowania

AT+UART : Wyświetla prędkość transmisji

AT+ROLE: Wyświetla tryb pracy modułu(1=master/0=slave)

AT+RESET : Resetuje moduł i wychodzi z trybu AT

AT+ORGL : Przywraca fabryczne ustawienia

AT+PSWD: Wyświetla standardowe hasło

Jeżeli chcemy zmienić nazwę modułu na jakąś bardziej wyszukaną, wystarczy wpisać:

“AT+NAME=NASZA NAZWA”

Tak samo jest jeśli chcemy zmienić prędkość transmisji:

“AT+UART=115200,1,0”  , wartość bitu STOP 1, wartość bitu parzystości 0 (można zmieniać według uznania).

Zmiana hasła ze standardowego na nasze:

“AT+PSWD=2987”  hasło zmieniono z 1234 (standardowe hasło) na 2987.

Więcej informacji o komendach można znaleźć w pliku pdf
http://www.instructables.com/files/orig/FKY/Z0UT/HX7OYY7I/FKYZ0UTHX7OYY7I.pdf

Wykrywanie ilości szeregowych lampek LED

Wcześniej opisywałem sterowane interfejsem szeregowym lampki LED

Tim na swoim blogu cpldcpu przedstawił świetną koncepcję na wykrywanie ile jest podłączonych lampek LED do Arduino.

Koncepcja jest prosta i genialna czyli hackerska ;-). Wszystko opiera się na tym, że im więcej lampek świeci na biało tym większy spadek napięcia zasilania procesora Arduino.

Mierzenie napięcia zasilającego procesor opisywałem już wcześniej.

Można zastosować 2 strategie.

  • Zapalasz kolejne lampki, aż napięcie przestanie spadać – znaczy to, że już więcej nie ma. Autor odkrył, że można tak zbadać do 16 lampek.
  • Zapalasz kolejne lampki, gasząc poprzednią tak długo, aż napięcie wróci do poziomu przed włączeniem.


Wykres pochodzi z bloga Tim-a

W ten sposób można wykrywać nie tylko ilość, ale też gdzie się przepaliła dioda, albo gdzie jest zerwane połączenie.

Pojedyncze szeregowe lampki LED, jak i cały łańcuch kupisz w Nettigo. Dobre do zrobienia ozdób choinkowych lub własnego efektu na świąteczne przystrojenie domu.

sprae

Przeniesienie systemu YUN na kartę microSD

Arduino YUN jest wygodnym połączeniem Linuxa z Arduino Leonardo. Jednym z mankamentów gołego Arduino YUN jest mała ilość miejsca na dysku flash wbudowanym w YUN (ok 7 MB). Można to łatwo zmienić, korzystając z karty microSD.

image

W tym celu trzeba przygotować Arduino YUN do pracy z kartą. Nie jest to skomplikowane, ale kilka kroków jest niezbędne.

Po pierwsze Arduino YUN musimy mieć pod ręką, procedura zmiany jest przystosowana do zrobienia tego korzystając z podłączenia kablem USB, nie da się tego zrobić przez WiFi (tzn korzystając z gotowca od Arduino Team).

Po drugie Arduino musi być skonfigurowane tak, aby mieć dostęp do Internetu. Podczas procedury przenoszenia systemu ściągnie kilka programów.

Gdy te warunki są spełnione, ściągnąć trzeba szkic YunDiskSpaceExpander (jeżeli link nie działa, to strona z której został pobrany to http://arduino.cc/en/Tutorial/ExpandingYunDiskSpace) i umieścić go w folderze z Waszymi szkicami.

Podłączamy Arduino YUN kablem USB, czekamy aż się uruchomi, wsadzamy kartę microSD, ładujemy szkic do Arduino, uruchamiamy monitor portu szeregowego. Upewnić się trzeba, że jest ustawiony na prędkość 115200 oraz tryb wysyłania znaku nowej linii po naciśnięciu Enter (opcja Newline).

Odpowiadamy na pytania, w tym dotyczącym ilości megabajtów jest pewna pułapka 😉 Pytanie nie dotyczy ile miejsca na karcie ma zająć YUN. Po zakończeniu procesu karta zostanie podzielna na dwie części jedna zostaje zajęta na system plików YUN a druga część sformatowana zostanie tak by ‘zrozumiał’ ją komputer z Windowsem. O rozmiar tej drugiej części pyta się szkic. Czyli jeżeli mamy kartę 8 GB i podamy rozmiar 2048MB (2G) karta zostanie podzielna na część 6 GB na której będzie system plików dostępny dla Arduino YUN, a 2GB będą przeznaczone na system plików rozumiany przez Windowsa. Dzięki temu możemy przenosić jakieś dane między YUN a komputerem (przekładając kartę SD).

Dekoder alfabetu Morse’a z Arduino

Alfabet Morse’a był stosowany za czasów telegrafu. Kiedy jeszcze nie umieliśmy przesyłać głosu za pomocą kabli i fal radiowych. Dziś jeszcze stosuje się go w krótkofalarstwie. Tam, gdzie możliwości przesyłu głosu są za słabe ze względu na zakłócenia lub dużą odległość.

Alfabet Morse’a przedstawia wszystkie litery alfabetu i cyfry za pomocą kombinacji dwóch znaków – kropki i kreski. Kropka oznacza zwykle nadanie krótkiego sygnału, a kreska długiego. Sygnał może być przedstawiany w formie światła – stosowane w statkach na morzu, prądu w przewodzie – stosowane w telegrafie lub nadawanie fali radiowej – w radiostacji.

Napis Nettigo w kodzie Morse’a będzie wyglądał następująco:

-. . - - .. --. ---
N E T T I G O

Więcej o tym kodzie możesz dowiedieć się z Wikipedii

Nicola Cimmino stworzył dekoder alfabetu Morse’a z Arduino.

Ukłąd dekoduje fale dźwiękowe przedtsawiające kropki i kreski na litery i przesyła je przez Serial do komputera. Autor zastosował tam ciekawe algorytmy detekcji fal i dekodowania alfabetu, które opisał na stronie projektu.

Połaczenie układu jest proste. Mikrofon wraz ze wzmacniaczem podłaczony jest do wejścia analogowego A0. Do pinów 2, 3 podłączone są światła LED sygnalizujące wykrycie kropki lub kreski. Wyjściem Serial/USB zdekodowane litery wędrują do komputera.

sprae

Gry na Beagle Bone Black

Cape [peleryna] – odpowiednik Arduinowego Shielda w BeagleBone Black.
W serwisie CircuitHub pojawił się właśnie Cape do BBB dodający funkcjonalność przenośnej konsoli do gier. Wygląd jest wzorowany na tradycyjnym Game Boy-u.

Zdjęcie pochodzi z serwisu CircuitHub

Cap wyposażony jest w:

  • Wyświetlacz o rozdzielczości 320×240
  • analogowy joystick;
  • 2 przyciski;
  • czujniki położenia w postaci 3d akcelerometru, żyroskopu i magnetometru;
  • wyjścia słuchawkowego;
  • wejścia mikrofonowego;
  • pojemnika na 4 baterie AAA

Wraz z płytka Beagle Bone potrafi emulować następujące konsole:

  • NES;
  • GameBoy;
  • GameBoy Color;
  • GameBoy Advance;
  • Sega Master System;
  • Sega Game Gear;
  • oraz natywnie uruchomić grę Doom.

Nakładka kosztuje aż $100, ale jeśli chciałbyś mieć ładny, gotowy i estetyczny wkład do swojego urządzenia to myślę, że warto.

W sklepie Nettigo dostępna jest oczywiście sama płytka kontrolerów Beagle Bone Black w nowym wydaniu.

sprae

Raspberry PI model A+

Ponieważ premiera Raspberry Pi w wersji B+ przyniosła spore zmiany, tylko kwestią czasu było kiedy owe zmiany zagoszczą w modelu A.

image
Obrazek pochodzi z bloga Raspberrypi.org

I stało się. Pojawiła się nowa płytka Raspberry Pi model A+.

Rozmiar płytki to 65×56 mm. Wyposażona jest w 40-pinowe złącze GPIO znane z modelu B+. Posiada 1 port USB-Host do podłączania peryferiów. Ma wyjście HDMI oraz audio/video w postaci wtyczki mini jack 3,5 mm. Sygnał audio zawiera mniej szumów ponieważ przeprojektowano jego system zasilania. Zasilanie jest rozwiązane przez port mikro USB oraz przetwornicę impulsową – dzięki czemu są mniejsze straty przy zasilaniu bateryjnym. Jako pamięć mamy do dyspozycji gniazdo na karty micro-SD.

Układ wyposażony jest w ten sam procesor co poprzednie modele. Do procesora podłączona jest pamięć RAM o pojemności 256 MB. Jest to wartość zupełnie wystarczająca nawet do rozbudowanych skryptów w Pythonie.

Oryginalna cena płytki ma wynosić $20. Chociaż “kierownictwo” mówi bym doliczył VAT i inne koszta 😉

Modelu A+ jeszcze nie mamy, jednak jeśli chciałbyś kupić nowy bogatszy model B+ to zapraszamy do zakupów:

sprae

Przesyłanie danych przez wyjście słuchawkowe

Gordon Williams jest twórcą płytki kontrolera – Espruino Pico. Oferuje ją na Kickstarterze. Płytka charakteryzuje się tym, że jest programowalna w JavaScript.

Ale ja nie o tym.

Jest coraz więcej urządzeń komputerowych, które coraz trudniej podłączyć do kontrolerów, a co za tym idzie – naszych wynalazków. Tablety, zegarki, Chromebooki i inne sprzęty. Mają wystarczająco dużo mocy by obsługiwać duży system operacyjny, ale za mało miejsca na nasze hobby.

Duża część z nich posiada komunikację radiową Bluetooth. Jeśli robisz pro urządzenie, możesz skorzystać z dostępnych modułów BT z Nettigo.

Problem polega na tym, że wysyłanie danych przez BT jest dość trudne. Trzeba dobrze programować w języku urządzenia – Javie, Swift lub C#.

Gordon Williams połączył kilka faktów i wpadł na pomysł jak to zrobić łatwiej. Pomyślał, żeby podłączyć kontroler do wyjścia słuchawkowego gadżetu i zamiast muzyki wysyłać dane.

Od strony elektronicznej układ jest bardzo prosty. Składa się z kondensatora elektrolitycznego 1 uF i rezystora 47 kOhm.


Obrazek pochodzi ze strony forum.espruino.com

Urządzenie podłącza się do wejścia analogowego kontrolera.

Układ jest dostosowany do urządzeń o napięciu poziomów logicznych 3,3 V. Wymaga wejścia analogowego z włączonym wewnętrznym rezystorem pullup.

Zasada działania jest prosta. Gdy z układu wychodzi napięcie 1,546 V to znaczy, że nadawana jest 1 logiczna. Gdy napięcie jest poniżej 1,166 V to znaczy że nadawane jest 0 logiczne.

Od strony programu nadającego, zaskoczenie jest jeszcze większe. Do nadawania danych wystarczy przeglądarka internetowa z obsługą biblioteki WebAudio – czyli Firefox, Chrome, Safari i inne oparte na silniku Webkit. WebAudio sprawia, że przeglądarka może generować wydajnie dowolne zaprogramowane dźwięki.

Gordon wymyślił, że będzie nadawał dane szeregowo z prędkością 9600 bodów. Jeden bit startu o wartości 0, 8 bitów danych i 2 bity stopu o wartości 1.

Dlaczego piszę o tym tak ogólnie i nie dostarczam w tym wpisie gotowych rozwiązań? Bo chciałem, ciebie zainspirować byś wykorzystał swoją ulubioną płytkę kontrolera do odbierania danych przez wyjście audio 🙂

Jeśli ci się uda, napisz o tym na swoim blogu i podziel się z nami swoim rozwiązaniem. Ja też zamierzam się włączyć do zabawy. Kto wie, może uda się uzyskać nawet większą szybkość transmisji.

Na koniec dodam sztuczkę. Jeśli chcesz włączyć rezystor pullup w wejściu analogowym Arduino napisz w funkcji “setup” pinMode(A0, INPUT_PULLUP);.

Jeśli tego ci mało, autor zamieścił też schemat komunikacji 2 kierunkowej. Można ją wykorzystać w urządzeniach, które mają gniazdo mini jack z 4 wyprowadzeniami – do zestawu słuchawek z mikrofonem.

Obrazek pochodzi ze strony forum.espruino.com

Oczywiście schemat jest dostosowany do układów o napięciu 3,3 V. Jeśli masz układ o poziomach logicznych 5 V, musisz dostosować dzielnik napięcia dla mikrofonu do wartości około 1 V.

Powodzenia w eksperymentach
Sprae

Arietta G25 – 29 GPIO z Linuksem

Artietta G25 to kolejna sprytna płytka kontrolera wielkości kciuka. Ta ma wymiary 5,3 na 2,5 cm.
Na tak małej przestrzeni znajduje się kontroler ARM A9 firmy Atmel działający z prędkością 400 MHz oraz 128 (za 20 Euro + VAT) lub 256 MB (za 30 Euro + VAT) pamięci RAM. Parametry pozwalają na uruchamianie na niej Linuksa za pośrednictwem wbudowanego czytnika kart mikro SD.

image
Zdjęcie pochodzi ze strony Acmesystems.it

Płytka wyposażona jest w dużą ilość pinów. Wyprowadzone są one na łatwe w użyciu pola lutownicze 2×20 pinów o standardowym wygodnym rastrze 2,54 mm. Można tam wlutować gniazdo lub wtyk goldpin.
Do swojej dyspozycji masz tam 29 pinów cyfrowych GPIO mających poziomy logiczne 3,3 V oraz 3 interfejsy USB.

Niektóre piny GPIO mają podwójną funkcję. Dodatkowo mogą pełnić rolę:

  • 3 interfejsów szeregowych RS232 (TTL 3,3V)
  • 2 interfejsów i2c
  • interfejsu SPI z 4 pinami CS
  • 4 wejść analogowych o rozdzielczości 10 bitów
  • Interfejsu i2s do generowania cyfrowego wyjścia aufio
  • 4 wyjść PWM
  • 4 interfejsów 1-Wire

Płytka zasilana jest przez wbudowane gniazdo mikro USBm piny 5V lub 3.3V. Gniazdo USB pozwala także na dostęp do Linuksa uruchomionego na płytce. Dodatkowo jest wejście VBat umożliwiające podtrzymanie zegarka za pomocą baterii, gdy płytka nie jest zasilana.

Dodatkowe piny pozwalają dołączyć moduł Wi-Fi, kosztujący 7 Euro + VAT.

image
Zdjęcie pochodzi ze strony Acmesystems.it

Wszystkie funkcje i wyprowadzenia są udokumentowane na stronie producenta. Płytkę można programować w każdym języku programowania dostępnym na Linuksa i obsługującym procesory ARM. Np. C++, Python, NodeJs, Java, PHP, Bash. Zgodnie z ideą U***a wszystkie interfejsy płytki są plikiem.

sprae