Pobierz - Politechnika Poznańska

Transcription

Pobierz - Politechnika Poznańska
Zygmunt Kubiak
Instytut Informatyki
Politechnika Poznańska
Dokumentowanie projektu
Freemind
http://freemind.sourceforge.net
Ułatwia dokumentowanie pomysłów, analizowanie
zależności między nimi, pozwala na ich ocenę i
selekcję
Fritzing
http://fritzing.org/
Pozwala dokumentować prototypy, dzielić się nimi,
tworzyć schematy poglądowe, schematy ideowe i
płytki drukowane projektowanych aplikacji – zawiera
wsparcie dla Arduino
Inkscape
http://inkscape.org
Prosty w użyciu program do tworzenia grafiki
wektorowej. Mimo że oprogramowanie Inkscape
skierowany jest głównie do grafików, dzięki
precyzyjnym narzędziom doskonale nadaje się do
szkicowania pomysłów związanych z projektami
01-2014
Zygmunt Kubiak
2
Fritzing
http://fritzing.org/download/
01-2014
Zygmunt Kubiak
3
Fritzing
http://fritzing.org/download/
01-2014
Zygmunt Kubiak
4
Fritzing
http://fritzing.org/download/
01-2014
Zygmunt Kubiak
5
Fritzing
http://fritzing.org/download/
01-2014
Zygmunt Kubiak
6
Fritzing
http://fritzing.org/download/
01-2014
Zygmunt Kubiak
7
Firmata
http://firmata.org/wiki/
Uniwersalny protokół komunikacyjny, umożliwiający
sterowanie mikrokontrolerami z poziomu
komputera – może sterować pracą Arduino
Może sterować takimi urządzeniami jak silniki,
serwomechanizmy czy wyświetlacze
01-2014
Zygmunt Kubiak
8
Firmata
http://firmata.org/wiki/
Program – Firmata_test
http://www.pjrc.com/teensy/firmata_test/firmata_test/firmata_test.exe
http://firmata.org/wiki/Examples
https://github.com/firmata/arduino
01-2014
Zygmunt Kubiak
9
Firmata
http://firmata.org/wiki/
Najważniejsze funkcje biblioteki Firmata
01-2014
Zygmunt Kubiak
10
Firmata
http://firmata.org/wiki/
Firmata to projekt zainicjowany przez Hansa
Christopha Steinera
Jest prostym systemem operacyjnym dla Arduino,
kontrolowanym za pośrednictwem transmisji
szeregowej
Firmata jest ładowany do Arduino, a następnie z
pomocą innego języka można kontrolować stan
modułu Arduino i połączonych z nim układów, bez
aktualizacji kodu
Oprogramowanie Firmata jest wykorzystywane w
środowiskach Processing, openFrameworks, Cinder,
Python, Ruby, Pd i innych platformach
programistycznych
01-2014
Zygmunt Kubiak
11
Processing
www.processing.org
Processing - multimedialne środowisko
programowania, oparte na języku Java, stworzone
dla projektantów, artystów i innych osób, które
bez zagłębiania się w szczegóły dotyczące
programowania chcą tworzyć grafikę, animacje i
interakcje.
Można używać klas i metod z Javy. Działa w
systemach Windows, Linux i Mac OS X
Niewielka ilość Processing umożliwia realizację
złożonych zadań, jak połączenie z zewnętrznym
urządzeniem przez port szeregowy lub sterowanie
kamerą
Istnieje również Processing dla urządzeń z
Androidem i Processing dla języka JavaScript
01-2014
Zygmunt Kubiak
12
Processing
www.processing.org
01-2014
Zygmunt Kubiak
13
Techniki testowania kodu
Metodyka wytwarzania sterowanego testowami
(ang. Test-Driven Development)
Artykuł : Ian Dees, Testing Arduino Code,
PragPub, 2011
(https://pragprog.com/magazines/201104/testing-arduino-code)
Ben Rady i Rod Coffin, Continuous Testing: with
Ruby, Rails, and JavaScript, The Pragmatic
Bookshelf, Raleigh i Dallas, 2011
Np. podczas pisania skryptów języka Python
warto przygotować testy jednostkowe (np. przy
użyciu narzędzia py.test)
Dla Ruby i Rails warto rozważyć użycie Rspec
(David Chelimsky, Dave Astels, Zach Dennis, Aslak
Hellesøy, Bryan Helmkamp i Dan North, The RSpec
Book,The Pragmatic Bookshelf, Raleigh i Dallas,
2009
01-2014
Zygmunt Kubiak
14
Techniki testowania kodu
Dla Arduino:
https://pragprog.com/magazines/2011-04/testing-arduinocode
https://code.google.com/p/arduinounit/
https://github.com/mmurdoch/arduinounit
https://code.google.com/p/arduino/wiki/ArduinoTestSuite
http://puredata.wikispaces.com/
Brak oficjalnego emulatora dla Arduino, m.in. dla
tego, że sprzętowa platforma Arduino jest tania
W systemie Windows są dostępne emulatory:
Virtual Breadboard (http://www.virtualbreadboard.net),
Emulare (http://emulare.sourceforge.net/)
01-2014
Zygmunt Kubiak
15
Biblioteka ArduinoTestSuite
Projektowanie sterowane testami (ang. Test-Driven
Development, TDD)
W metodzie TDD projekt programistyczny dzielony jest
na niewielkie fragmenty, dla których przygotowywane są
testy sprawdzające działanie każdej funkcji.
Programowanie rozpoczyna się dopiero po przygotowaniu
testów.
Biblioteka ArduinoTestSuite stała się kluczowym
narzędziem projektowania dla Arduino.
ArduinoTestSuite udostępnia standardowe metody i
funkcje, które można wykorzystać do przetestowania
szkicu przed załadowaniem go do Arduino – co pozwala
uniknąć ewentualnych uszkodzeń zewnętrznych
urzadzeń.
Biblioteka jest ciągle rozwijana
01-2014
Zygmunt Kubiak
16
Biblioteka ArduinoTestSuite
Aktualnie dostępne testy
ATS_begin
Inicjuje proces testowania
ATS_end
Kończy proces testowania
ATS_PrintTestStatus
Wydruk statusu testu
ATS_Test_DigitalPin
Testuje dany port wyjściowy
ATS_Test_PWM
Testuje wyjście z generatora PWM
ATS_Test_AnalogInput
Testuje wejście analogowe
ATS_Test_EEPROM
Testuje obsługę pamięci EEPROM
ATS_Test_Serial_LoopBack
Testuje ruch wchodzący i wychodzący na
portach szeregowych
ATS_GetFreeMemory
Zwraca ilość wolnej pamięci dostępnej
dla Arduino
01-2014
Zygmunt Kubiak
17
Platformy
W przypadku realizacji rozwiązań typu Internet
przedmiotów (ang. Internet of Things) pojawia się
problem komunikacji z tymi urządzeniami –
operatorzy Internetu czasem blokują porty
wychodzące aby uniemożliwić instalowanie
serwerów dedykowanych na popularnych portach,
jak FTP, HTTP (i HTTPS) czy SMTP
Warto zwrócic uwagę na platformy dostępne za
pośrednictwem prostych interfejsów API usług
sieciowych np.:
Pachube
http://www.pachube.com,
Exosite
http://www.exosite.com,
Yaler
http://www.yaler.org.
A także Xively,
01-2014
Zygmunt Kubiak
18
Yaler
01-2014
Zygmunt Kubiak
19
Android
Ważny system m.in. dla systemów wbudowanych
Pakiet Android Open Accessory Kit – ADK (2011 r.),
umożliwia obsługę takich funkcji jak aparat, GPS,
Bluetooth, WiFi
(http://developer.android.com/guide/topics/usb/adk.html)
Wielu producentów elektroniki wprowadza na rynek
urządzenia zgodne z ADK
Projekt Google: Android@Home – propagowanie
Android jako bazowej technologii dla inteligentnych
domów
Android SDK – zestaw narzędzi (SDK, ang. Software
Development Kit) dla programistów przeznaczony do
tworzenia aplikacji na platformę Android
(http://developer.android.com/sdk)
01-2014
Zygmunt Kubiak
20
Android
Narzędzia ADK składają się z dwóch części: protokołu
oraz sprzętu dla wybranego urządzenia – pojawiły się
płyty Arduino (zgodne z ADK) wykorzystujące układ
ATMega 2560
Istotą oprogramowania ADK jest możliwość
zaprogramowania urządzenia z interfejsem USB w taki
sposób, że samo nawiązuje połączenie z chwilą
podłączenia do komputera. W płycie Arduino Mega efekt
ten osiąga się dzięki zastosowaniu procesora USB z
interfejsem SPI.
Dostępne są nakładki umożliwiające dodawanie nowych
funkcjonalności ADK do innych płyt Arduino, np. UNO
Urządzenie, które ma współpracować z ADK (np.tablet)
musi być wyposażone w wersję 2.3.4 systemu Android
lub nowszą, lecz nie stanowi to jeszcze gwarancji
powodzenia. Aby ostatecznie potwierdzić zgodność,
należy wyszukać na stronie Google Play ADK demo kit.
01-2014
Zygmunt Kubiak
21
Android
Brak wyników wyszukiwania oznacza, że urządzenie nie ma
zainstalowanych niezbędnych bibliotek.
Przed rozpoczęciem programowania należy skonfigurować
środowiska Android i Arduino.
W środowisku Arduino potrzebna jest jeszcze biblioteka
obsługująca protokół ADK. Jest ona dostępna na stronie
Arduino labs (plik
http://labs.arduino.cc/uploads/ADK/GettingStarted/Ard
uinoADK-beta-001.zip).
01-2014
Zygmunt Kubiak
22
Android
W spakowanym pliku ZIP znajdują się pliki aplikacji
Processing i biblioteki Arduino.
Aplikacje dla systemu Android można tworzyć w
środowiskach Processing (http://processing.org) lub
Eclipse (http://eclipse.org).
Programowanie w środowisku Processing jest podobne do
Arduino. Środowisko Eclipse oferuje więcej
funkcjonalności.
Podczas tworzenia kodu dla systemu Android w środowisku
Eclipse musisz pamiętać o dwóch różnych stylach
programowania: Java i XML. Java jest głównym językiem
programowania i podstawą każdej aplikacji Android.
Natomiast kod XML służy do określenia wyglądu aplikacji,
wyświetlanych obiektów i tekstu.
01-2014
Zygmunt Kubiak
23
Android
Korzystanie z ADK Arduino jest podobne do użycia
bibliotek do transmisji szeregowej.
Biblioteka dodana do środowiska Arduino IDE jest oparta
na bibliotekach Circuit@Home i w odróżnieniu od innych
dostępnych bibliotek oferuje łatwy sposób deklarowania i
inicjowania połączenia z urządzeniem.
01-2014
Zygmunt Kubiak
24
openFrameworks
www.openframeworks.cc
Oprogramowanie openFrameworks jest zbiorem
bibliotek języka C++, przeznaczonych do prostej obsługi
audio, wideo i grafiki
Biblioteki zawierają mechanizmy do łatwego łączenia
komputera z zewnętrznymi urządzeniami i modułami
Arduino
Biblioteki umożliwiają rozwijanie pomysłu bez
konieczności programowania na najniższym poziomie .
Dostępny jest kod źródłowy, który może być używany
jako wzorzec do dalszej rozbudowy.
Zastosowanie bibliotek openFrameworks i Arduino
pomaga w budowaniu środowiska testowego dla sprzętu i
oprogramowania
Wada – należy zdawać sobie sprawę, że tworzone w ten
sposób rozwiązania nie oferują produkcyjnej jakości i
nie są na tyle niezawodne i zoptymalizowane, aby mogły
być używane masowo.
01-2014
Zygmunt Kubiak
25
Uber Home Automation w/Arduino & Pi
http://www.instructables.com/id/Uber-Home-Automation/
01-2014
Zygmunt Kubiak
26
openHAB
Otwarte oprogramowanie dla automatyzacji domu
Pracuje w Windows, MacOS Xlub Linux z Java 1.7 lub
nowsze
Współpracuje z platformami wbudowanymi: Raspberry
Pi, BeagleBone Black, UDOO, Cubietruck
01-2014
Zygmunt Kubiak
27
openHAB
Otwarte oprogramowanie dla automatyzacji domu
Pracuje w Windows, MacOS Xlub Linux z Java 1.7 lub
nowsze
Współpracuje z platformami wbudowanymi: Raspberry
Pi, BeagleBone Black, UDOO, Cubietruck
01-2014
Zygmunt Kubiak
28
openHAB
Komunikacja w openHAB
01-2014
Zygmunt Kubiak
29
SmartHome
http://www.eclipse.org/smarthome/
Otwarte oprogramowanie dla automatyzacji domu
01-2014
Zygmunt Kubiak
30
Literatura
1. Riley M.: Inteligentny dom. Automatyzacja
mieszkania za pomocą platformy Arduino,
systemu Android i zwykłego komputera, Helion,
2013.
2. Igoe T.: Spraw, by rzeczy przemówiły.
Programowanie urządzeń elektronicznych z
wykorzystaniem Arduino, Helion, 2013.
3. Anderson R., Cervo D.: Arduino dla
zaawansowanych, Helion, 2014.
4. Evans M., Noble J., Hochenbaum J.: Arduino w
akcji, Helion, 2014.
01-2014
Zygmunt Kubiak
31
Książki dotyczące Arduino aktualnie (10.2014)
dostępne w j.polskim
1.
2.
3.
4.
5.
6.
Riley M.: Inteligentny dom. Automatyzacja
mieszkania za pomocą platformy Arduino, systemu
Android i zwykłego komputera, Helion, 2013.
Igoe T.: Spraw, by rzeczy przemówiły.
Programowanie urządzeń elektronicznych z
wykorzystaniem Arduino, Helion, 2013.
Anderson R., Cervo D.: Arduino dla zaawansowanych,
Helion, 2014.
Evans M., Noble J., Hochenbaum J.: Arduino w akcji,
Helion, 2014.
Boxall J.: Arduino. 65 praktycznych projektów,
Helion, 2013.
Banzi M.: Wprowadzenie do Arduino, Helion, 2014.
01-2014
Zygmunt Kubiak
32
Książki dotyczące Arduino aktualnie (10.2014)
dostępne w j.polskim, cd.
7.
8.
9.
10.
11.
12.
Gertz E., Di Justo P.: Monitorowanie otoczenia z
Arduino, Helion, 2014.
Monk S.: Arduino dla początkujących. Podstawy i
szkice, 2014.
Monk S.: Arduino i Android. Niesamowite projekty.
Szalony geniusz, Helion, 2014.
Jon L.: Arduino i projekty LEGO. Zadziwiające
projekty LEGO sterowane przez Arduino, Helion,
2013.
Westerfield M.: Projekty elektroniczne na iPhone i
iPad. Niekonwencjonalne gadżety z technologią
Arduino i techBASIC, Helion, 2014.
Monk S.: Zabawy z elektroniką. Ilustrowany
przewodnik dla wynalazców i pasjonatów, Helion,
2014
01-2014
Zygmunt Kubiak
33
Dziękuję
Zygmunt Kubiak
34
092006