Prawdziwy komputer na nadgarstku

Pierwszy raz, kiedy uruchomiłem emulator procesora 6502 na Arduino, razem z językiem BASIC ogarnęło mnie niesamowite uczucie. Z jednej strony to powrót do dzieciństwa, do początków programowania. Z innej to niedowiarstwo, że w tak małym Arduino mieści się to, co kiedyś zajmowało całe biurko i przynosiło mnóstwo frajdy. Przecież to niemożliwe! 😉

Ostatnio pojawił się wysyp projektów idących jeszcze dalej. Do małych płytek Arduino UNO bohaterowie DIY dodali jeszcze więcej niespodzianek.

DAN64

Jest to komputerek oparty na Arduino UNO. Ma wbudowany emulator procesora 6502, język BASIC i monitor języka maszynowego. Ma wyjście obrazu typu Composite Video, dzięki któremu podłączysz komputerek do telewizora. Obsługuje klawiatury do PC z wtykiem PS2. Dodatkowym atutem jest obsługa magnetofonu. Może zapisywać i odczytywać programy za pomocą tych kultowych pisków, trzasków i zgrzytów.

Ponieważ Arduino miało zbyt mało pamięci by rozwinąć skrzydła, Juan Martinez – autor dodał jej więcej. Układ Microchip 23LCV512, podłączony do SPI zapewnia dodatkowe 64 KB RAM.

Arduino UNO jako APPLE II

Damian Peckett poszedł odrobinę dalej i postanowił stworzyć emulator realnego komputera jakim jest Apple II. Jest to pierwszy masowo produkowany komputer Apple, który stworzyli jego legendarni twórcy Jobs i Wozniak.

Jego emulator opiera się na Arduino UNO. Tym razem obraz wyświetlany jest na monitorze VGA. Klawiatura jak poprzednio to standard PS2. Jak w oryginalnym komputerze emulator obsługuje głośniczek do generowania dźwięków i wejście magnetofonowe do odczytywania programów Apple.

Apple II jako zegarek

W serwisie Instructables użytkownik Aleator777 zamieścił projekt, który jest satyrą na nowy produkt firmy Apple – zegarek.
Zegarek Apple 2 nie emuluje realnego komputera, ale sprawia wrażenie jakby napędzał go komputer Apple II. Autor nie miał czasu by stworzyć prawdziwą emulację.

W środku znajduje się już wydajne maleństwo – płytka kontrolera Teensy 3.1. Dodatkowo jest tam wyświetlacz 1,8″, odtwarzacz MP3, głośnik, akumulator LiPo, enkoder obrotowy i ładowarka indukcyjna. Zegarek, jak przypada na prawdziwy smartwatch działa jedynie 3 godziny ;-).

Myślę, że projekty są bardzo inspirujące. Szczególnie ten ostatni czeka na ciebie, byś dopisał mu prawdziwy emulator. Teensy 3.1 ma wydajność, aż nadto.
Jeśli chciałbyś powtórzyć jeden z tych wyczynów lub stworzyć własny – części do niego kupisz w sklepie Nettigo.pl

Syrena alarmowa

To co robi twórca Teensy ze swoją społecznością jest niesamowite. Jego mikra płytka z procesorem ARM to dowód na to, że produkcje niezależne dalej mogą szokować pomysłami i możliwościami przy stosunkowo niskiej cenie.

image

Właśnie odkryłem bibliotekę Audio.h. Służy do przetwarzania dźwięków w czasie rzeczywistym i jak się potem przekonasz jest bajecznie prosta.

Wszystko opiera się na klockach. Każdy klocek robi coś z dźwiękiem, odbiera z wejścia, filtruje, analizuje widmo, wzmacnia, odtwarza z pamięci i dużo dużo więcej.

Na specjalnej stronie WWW łączysz te klocki wirtualnymi przewodami, naciskasz Export i masz gotowy kawałek programu, który robi to co chcesz z dźwiękiem. Jak to nie jest super, to nie wiem co jest.

image

Na razie moje pomysły ograniczają się do zrobienia syreny alarmowej, efektu do gitary elektryczniej (rock!!!), wyświetlacza widma do wzmacniacza, odtwarzacza dźwięków z popularnych gier jako sygnał otwarcia drzwi do sklepu. Ale ty wymyślisz pewnie jeszcze bardziej niesamowite rzeczy. Np. dzwonek do drzwi z dźwiękiem karabinu plazmowego ;-D

Ponieważ najtrudniej jest zacząć, pokażę ci jak zrobić syrenę alarmową.

Wchodzisz na stronę edytora klocków

Syrena składa się z generatora sinusa – klocek “sine” i wyjścia audio – klocek “dac”. 

image

Jeśli zaznaczysz któryś z klocków, z prawej strony okna pokaże się krótka dokumentacja z opisem jego działania, funkcji programu lub gdzie jest jego wyjście na płytce.
Z niej dowiadujesz się jak zmieniać częstotliwość generatora sine1 i gdzie będzie wyjście dźwięku z przetwornika dac1.

Naciskasz przycisk “Export” i masz gotowy fragment programu do wklejenia w Teensyduino.

#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
AudioSynthWaveformSine   sine1;          //xy=448,203
AudioOutputAnalog        dac1;           //xy=597,203
AudioConnection          patchCord1(sine1, dac1);
// GUItool: end automatically generated code
// GUItool: begin automatically generated code

W funkcjach setup i loop trzeba dopisać co twój program będzie robił z tymi klockami.

void setup() {
 AudioMemory(10);
 sine1.amplitude(1.0);
}

Funkcja “AudioMemory” ustala wielkość bufora audio. Im mniejsza wartość, tym mniej zajętej pamięci i mniejsze opóźnienia audio, ale większe obciążenie procesora i mniej czasu na twój program w funkcji “loop”.

Metoda “sine1.amplitude” ustala głośność generowanego sygnału. 1.0 oznacza maksymalną głośność.

void loop() {
 for (word freq=100; freq<1000; freq++)
 {
   sine1.frequency(freq);
   delay(2);
 }

 for (word freq=1000; freq>100; freq–)
 {
   sine1.frequency(freq);
   delay(2);
 }
}

Syrena działa tak, że płynnie obniża i podwyższa częstotliwość sygnału. Częstotliwość ustala się za pomocą metody “sine1.frequency”. Wstawiłem ją w dwie pętle “for”. Jedna podwyższa częstotliwość od 100 do 1000 Hz, a druga ją płynnie zmniejsza. W funkcji “delay” ustala się szybkość tych zmian.

Teraz wystarczy podłączyć wzmacniacz do wyjścia DAC w Teensy 3.1 przez kondensator 10 uF.

image

Jeśli chcesz sobie ułatwić podłączenie urządzeń audio, mam też świetne rozszerzenie Teensy Audio Board. Jest to płytka wyposażona w wejście i wyjście audio oraz czytnik kart SD. Dzięki specjalistycznemu układowi zapewnia lepszą jakość przetwarzanego dźwięku. Na karcie SD można przechowywać sample do odtwarzania przez Teensy.

Jeśli spodobał ci się ten projekt, kup Teensy 3.1 w sklepie Nettigo

Nowa wersja Teensyduino

Pojawiła się nowa wersja Teensyduino współpracująca z najnowszym Arduino IDE 1.6.

Teensyduino to modyfikacja do Arduino IDE pozwalająca obsługiwać nim płytki kontrolerów Teensy.

Teensy są małe niczym kciuk, tanie, mają dużo pinów i możliwości Arduino DUE. Opisywałem je wcześniej na tym blogu pod tagiem #teensy

Nowe Teensyduino obsługuje też płytkę Teensy LC – tańszą wersję Teensy 3.1.

Płytki Teensy możesz kupić także w naszym sklepie Nettigo.pl

sprae

Nowe Teensy LC

Firma PJRC zademonstrowała nową płytkę kontrolera Teensy LC. Płytka nie zastępuje innych z tej rodziny, jest raczej uzupełnieniem oferty.

LC to skrót od angielskich słów Low Cost – niska cena. Płytka ma być czymś w rodzaju tańszej wersji Teensy 3.1.

Zdjęcie pochodzi ze strony PJRC

Procesorem płytki jest układ MKL26Z64VFT4, który zawiera w 32 bitowy rdzeń ARM M0+ o zegarze 48 MHz.  Układ ten jest mniej wydajny niż zastosowany w Teensy 3.1, ale za to dużo bardziej wydajny niż w płytkach opartych na kontrolerach AVR. Dodatkowo pobiera mniej prądu.

Parametry płytki to:

  • Procesor: MKL26Z64VFT4 (ARM M0+)
  • Zegar: 48 MHz
  • Pamięć Flash: 62 KB
  • Pamięć RAM: 8 KB
  • 27 pinów cyfrowych o poziomach logicznych 3,3 V
  • Pin 17 ma wyjście z poziomem logicznym 5V i obeniem 5 mA
  • Piny 5, 16, 17, 21 można obciążyć prądem 20 mA
  • 13 wejść analogowych o rozdzielczości 16 bitów
  • 1 wyjście analogowe o rozdzielczości 12 bitów
  • 10 wyjść PWM
  • 3 złącza szeregowe (RS232 TTL)
  • 2 złącza SPI
  • 2 magistrale I2C
  • magistrala I2S do cyfrowego dźwięku

Dodatkowo w układzie są 4 kanały DMA do komunikacji między pamięcią a wyjściami bez udziału procesora.

Układ pojawi się w ofercie w marcu. Tym czasem zapraszamy do zapoznania się z innymi układami rodziny Teensy w sklepie Nettigo.pl

Więcej informacji o o nowej płytce dowiesz się ze strony PJRC:

sprae

Teensy 3.1 jako oscyloskop i szybkie USB

Kevin Cuzner chciał zrobić oscyloskop z Teensy mierzący sygnały od 30 do 50 kHz. Natrafił jednak na problem – jak przepchnąć tyle danych do komputera przez USB.

Postanowił sam napisać od postaw obsługę USB przez rejestry kontrolera. Całą przygodę opisał we wpisie na blogu. Wpis zawiera dużo linków do treści uzupełniających wiedzę o USB i programowaniu od podstaw kontrolera w Teensy.

Oscyloskop który wyszedł z projektu potrafi próbkować od 500 do 800 tyś. sampli na sekundę:

Pozostało tylko napisać interfejs użytkownika 😉

sprae

Arduino Zero vs Teensy 3.1

Na stronie Arduino pojawiła się oficjalna specyfikacja Arduino Zero.

image
Arduino Zero – Zdjęcie pochodzi ze strony Arduino.cc

Sama płytka nie jest jeszcze dostępna. Twórcy oznaczyli ją opisem “Comming soon” [wkrótce]. Biorąc pod uwagę to, że Arduino Tre ma takie oznaczenie już chyba z pół roku, nie potrafię przewidzieć kiedy nastąpi oficjalna premiera.

Płytka ma być następczynią popularnych i znanych modeli UNO i Leonardo, obsługując ten sam format płytki.

Parametry techniczne przedstawiają się następująco:

  • Procesor: ATSAMD21G18 – 32 bitowy ARM M0+
  • Zegar: 48 MHz
  • Pamięć FLASH (programu): 256 kB
  • Pamięć SRAM (danych): 32 kB
  • Pamięć EEPROM (konfiguracji): 16 kB (udawana we FLASH)
  • Poziomy logiczne o napięciu 3,3 V
  • 14 wejść/wyjść cyfrowych
  • 12 wyjść PWM
  • 6 wejść analogowych o rozdzielczości 12 bitów
  • wyjście analogowe o rozdzielczości 10 bitów
  • maksymalne obciążenie wyjść cyfrowych 7 mA
  • cena: nieznana

Chyba największą zaleta płytki jest złącze debug, pozwalające na podgląd działania programu w kontrolerze w celu łatwiejszego wykrywania błędów. Oczywiście to tylko teoria, bo nie wiadomo jak to będzie działać. Może się okazać, że trzeba wykupić jakieś oprogramowanie, albo używać dziwnych skomplikowanych narzędzi.

Z drugiej strony mamy dostępną płytkę Teensy 3.1 stworzoną przez Paula z pjrc.com

image
Teensy 3.1 – Zdjęcie pochodzi ze strony pjrc.com

Mimo innego wyglądu płytka jest zbliżona funkcjonalnie do Arduino Zero. Programuje się ją za pomocą Arduino IDE z obsługą jego bibliotek. Paul dużo pracował ze społecznością nad zapewnieniem kompatybilności bibliotek.

Prametry techniczne Teensy 3.1:

  • Procesor: MK20DX256 – 32 bitowy ARM M4
  • Zegar: 72 MHz (możliwość przełączenia na 96 MHz)
  • Pamięć FLASH (Programu): 256 kB
  • Pamięć SRAM (Danych): 64 kB
  • Pamięć EEPROM (konfiguracji): 2 kB
  • Poziomy logiczne o napięciu 3,3 V, Toleruje napięcie 5 V
  • 34 wejścia/wyjścia cyfrowe
  • 12 wyjśc PWM
  • 21 wejść analogowych
  • 12 wejść dotykowych
  • 3x Serial, 2x i2c, 1x SPI
  • cena: 84 zł

Płytki Teensy dostępne w Nettigo.pl

sprae

Modem radiowy nRF24L01 – podłączenie do Teensy 3.1

Teensy 3.1 to świetny dodatek do tego modemu, ponieważ obydwie płytki mają zbliżone rozmiary. Można na ich podstawie zbudować naprawdę małe energooszczędne urządzenie.

Jeśli uważasz, że podłączenie Teensy do modemu jest jakimś problemem, to się mylisz ;-).

image

Wystarczy, że podłączysz ze sobą piny o tych samych nazwach,

Jeśli kupiłeś Teensy 3.1 w Nettigo to wraz z nim dostałeś ulotkę z wypisanym znaczeniem wszystkich pinów w Teensy.

  • do pinu 3.3 V podłączasz VCC modemu;
  • do pinu GND podłączasz GND modemu;
  • do pinu 7 podłączasz CE modemu;
  • do pinu 8 podłączasz CSN modemu;
  • do pinu 13 (SCK) podłączasz SCK modemu;
  • do pinu 11 (DOUT) podłączasz MOSI modemu;
  • do pinu 12 (DIN) podłączasz MISO modemu.

Twórca Teensy wykonał tu dobrą robotę, ponieważ numery pinów sygnałów SPI zgadzają się z numerami pinów na których są takie same sygnały w Arduino UNO.

Biblioteka RF24 z poprzedniego wpisu działa bez problemu z Teensy 3.1.

image

Oto moje połączenie Teensy 3.1 z modemem. Wszysto przetestowałem.
Jako ciekawostkę dodam, że w moim Teensy wlutowałem gniazda goldpin.

Części przydatne do połaczenia Teensy 3.1 z modemem mRF24L01 ze sklepu Nettigo:

sprae

Snap4Arduino – następca S4A

Opisując wczoraj Scratch dla Arduino – S4A czułem, że projekt mimo, że funkcjonalny to jest nieco opuszczony. Dziwiło mnie, że nikt nie zrobił poprawek do starego firmware dla Arduino do komunikacji z programem. To nie jest trudne.

Przeglądałem blog projektu i okazało się, że autorzy pracują nad czymś nowszym. Nowy projekt nosi nazwę Snap4Arduino. Środowisko jest bardzo podobne do Scratch, tak więc nikt nie będzie czuł się zagubiony.

Snap4Aruino na razie jest w wersji Alpha i u mnie był dość niestabilny. U ciebie może będzie lepiej, bo ja mam również system operacyjny w wersji testowej co pewnie pogłębiło niestabilność #życieNaKrawędzi ;-).

Program można pobrać ze strony projektu:

Działa z systemami operacyjnymi Windows, Linux i OS X.

By móc połączyć się z płytką kontrolera wymagane jest wczytanie do niej protokołu Firmata. To standardowy protokół obsługujący chyba wszystkie płytki Arduino i zgodne z nimi czyli np. Teensy.

Żeby go wczytać, wybierz w Arduino IDE menu: Plik > Przykłady > Firmata > StandardFirmata i wgraj do swojej płytki.

Snap4Arduino dzięki Firmata pozwala na dowolne wykorzystanie pinów kontrolera i  ich obsługa jest 7x szybsza niż w poprzednim projekcie.
Dodatkową zaletą jest to, że projekt został napisany w NodeJS, co pozwala na łatwe dodawanie klocków i rozwijanie programu.

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