Śledzenie programu na Arduino Zero Pro z GDB i openOCD

Arduino dzięki swej prostocie ma mnóstwo zalet. Osobom mającym doświadczenie z programowaniem na początku może sprawiać problem brak debugera, czyli narzędzia pozwalającego podglądać działanie programu w kontrolerze. Można podejrzeć/zmieniać wartości zmiennych, wykonywać komendy krok po kroku. Mówiąc krótko sprawdzić, czemu program nie działa jak powinien. Przy bardziej złożonych programach jest to nieoceniona pomoc.
Arduino nie dysponuje takim narzędziem. Jedyna dostępna metoda to wysyłanie komunikatów przez obiekt Serial.

Arduino Zero Pro na ratunek

Od dziś dostępny na Nettigo jest nowy model Arduino Zero Pro. Płytka ta ma na pokładzie 32 bitowy procesor ARM Cortex-M0. Nowością jest złącze do śledzenia działania programów.
Arduino Zero Pro jest wyposażony w dodatkowy układ, który przez dodatkowy port USB daje funkcjonalność debugowania bezpośrednio na płytce.

Jak zacząć śledzenie

Testy prowadziliśmy na komputerze z Linuxem, jednakże, całość oprogramowania niezbędnego do pracy jest częścią Arduino IDE, i dlatego metoda opisana powinna działać na każdym OS na którym działa Arduino IDE.

Arduino ORG

Pierwsza ważna sprawa, musimy mieć zainstalowane Arduino IDE ze strony Arduino.org a nie jak dotychczas z Arduino.cc – w tej chwili (maj 2015) tylko to IDE ma wsparcie dla Arduino Zero Pro.

Ściagamy i instalujemy Arduino IDE 1.7.3 lub nowsze. Następnie potrzebujemy, by IDE było bardziej rozgadane niż zazwyczaj, dlatego otwieramy ustawienia (Ctrl+,) i szukamy opcji Show verbose option during i zaznaczamy przy compilation.

Do testów na warsztat weźmiemy szkic Blink. Otwieramy go (menu Files/Examples/01. Basic/Blink). Arduino Zero podłączamy kablem micro USB do portu PROGRAMMING, w IDE wybieramy płytkę i port (też programming) i wgrywamy program na płytkę (Ctrl+U).

OpenOCD

Konsorcjum ARM opracowało dla procesorów Cortex-M0 standard komunikacji nazwany CMSIS (dla ciekawskich – link) i istnieje otwarte oprogramowanie obsługujący ten standard.

Pozwólcie że przedstawię – OpenOCD. Arduino IDE jest dostarczane razem z OpenOCD, dlatego nic nie trzeba instalować.

Uruchomienie OpenOCD

Mając wgrany na Arduino nasz Blink, przechodzimy do katalogu, gdzie rozpakowaliśmy Arduino IDE i wydajemy komendę (to jest jedna linia):

./hardware/tools/OpenOCD-0.9.0-dev-arduino/bin/openocd -s hardware/tools/OpenOCD-0.9.0-dev-arduino/share/openocd/scripts/ -f hardware/arduino/samd/variants/arduino_zero/openocd_scripts/arduino_zero.cfg

Uruchamiasz OpenOCD. Paramter po -s wskazuje na katalog, w którym jest zestaw plików konfiguracji samego OpenOCD. Po -f jest lokalizacja pliku konfigurującego OpenOCD dla Arduino Zero. Prawidłowy rezultat powinien wyglądać tak:

Open On-Chip Debugger 0.9.0-dev-g1deebff (2015-02-06-13:06)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'cmsis-dap'
adapter speed: 500 kHz
adapter_nsrst_delay: 100
cortex_m reset_config sysresetreq
Info : CMSIS-DAP: SWD  Supported
Info : CMSIS-DAP: JTAG Supported
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : CMSIS-DAP: FW Version = 01.1F.0118
Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 1 TDO = 1 nTRST = 0 nRESET = 1
Info : DAP_SWJ Sequence (reset: 50+ '1' followed by 0)
Info : CMSIS-DAP: Interface ready
Info : clock speed 500 kHz
Info : IDCODE 0x0bc11477
Info : at91samd21g18.cpu: hardware has 4 breakpoints, 2 watchpoints

GDB

OpenOCD jest gotowe do pracy. Nasłuchuje one na portach 4444 i 3333. Do tego pierwszego możemy się podłączyć telnetem, ten drugi jest dla protokołu GDB.

GDB to otwarte oprogramowanie do śledzenia wykonywania programu (debugger). Jest również dołączone do Arduino IDE. To jest o tyle istotne, że GDB musi być skompilowane ze wsparciem dla architektury ARM.

By móc śledzić program potrzebujemy pliku w formacie ELF z programem i informacjami opisującymi jego strukturę.
Plik taki powstaje podczas kompilacji kodu i jest przechowywany w tymczasowym katalogu. By uzyskać plik, jeszcze raz skompilujemy program, tym razem tylko weryfikacja (Ctrl+R). W jednej z ostatnich linii pojawi się ścieżka do pliku z rozszerzeniem .elf.

Poglądowy obrazek (zwróć uwagę, że konsola została przesunięta w prawo. bo linie się nie zawijają automatycznie):
image

Uruchamiamy GDB, w katalogu gdzie jest arduino IDE wydajemy komendę:

./hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gdb -d examples/01.Basics/Blink/

Katalog podany po opcji -d jest miejscem, gdzie GDB będzie szukało kodu naszego programu, by móc wyświetlać nam informacje o wykonywanym kodzie w przyjazny dla nas sposób. Po uruchomieniu GDB powinniśmy otrzymać linię poleceń tego programu.

GNU gdb (GNU Tools for ARM Embedded Processors (Arduino build)) 7.6.0.20140228-cvs
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
For bug reporting instructions, please see:
.
(gdb) 

Ninejszy artykuł nie jest instrukcją jak korzystać z GDB, pokażę tylko niezbędne rzeczy by rozpocząć śledzenie programu na Arduino.

Teraz poinformujemy GDB gdzie znajdzie skompilowany program, który będziemy śledzić:

(gdb) file /tmp/build4557814640826011475.tmp/Blink.cpp.elf
Reading symbols from /tmp/build4557814640826011475.tmp/Blink.cpp.elf...done.
(gdb) 

Komenda file służy do podania ścieżki do tego pliku, ścieżka to ta skopiowana z konsoli Arduino IDE.

GDB musimy powiedzieć, że nasz program jest wykonywany gdzie indziej:

(gdb) target remote localhost:3333
Remote debugging using localhost:3333
0x00000000 in ?? ()
(gdb) 

Teraz jesteśmy gotowi przejąć kontrolę nad programem, spójrzcie na ten zapis sesji z GDB:

(gdb) monitor reset halt
target state: halted
target halted due to debug-request, current mode: Thread 
xPSR: 0x21000000 pc: 0x000028b8 msp: 0x20002c08
(gdb) monitor reset init
target state: halted
target halted due to debug-request, current mode: Thread 
xPSR: 0x21000000 pc: 0x000028b8 msp: 0x20002c08
(gdb) l loop
19    // initialize digital pin 13 as an output.
20    pinMode(13, OUTPUT);
21  }
22  
23  // the loop function runs over and over again forever
24  void loop() {
25    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
26    delay(1000);              // wait for a second
27    digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
28    delay(1000);              // wait for a second
(gdb) b 25
Breakpoint 1 at 0x4120: file Blink.ino, line 25.
(gdb) cont
Continuing.
Note: automatically using hardware breakpoints for read-only addresses.

Breakpoint 1, loop () at Blink.ino:25
25    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
(gdb) c
Continuing.

Breakpoint 1, loop () at Blink.ino:25
25    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
(gdb) 

I tak monitor reset halt wysyła komendę do zdalnego urządzenia, aby zatrzymało wykonywanie programu (po wydaniu tej komendy dioda na Arduino Zero przestaje migać). monitor reset init przywraca procesor do stanu ‘zerowego’ tak by rozpocząć pracę na nowo.

l loop wyświetla nam kod funkcji loop (dlatego potrzebowaliśmy wskazać GDB, gdzie jest katalog z naszym szkicem). Polecenie b 25 ustawia punkt przerwania wykonywania w linii 25, a polecenie cont wznawia (a ponieważ wykonaliśmy monitor reset init to rozpocznie działanie od początku) wykonywanie programu na Arduino.

Jednak nim zapali się dioda, to procesor dotrze do linii 25, której kod ma właśnie zaświecić tę diodę i debugger zatrzyma wykonywanie programu. Kolejne polecenie c to skrót od cont wznowi działanie programu. Wykona się pełen cykl, dioda się zaświeci na sekundę, zgaśnie i procesor znowu dotrze do lini 25 i zatrzyma wykonywanie programu.

Co dalej?

To była bardzo prosta demonstracja jak korzystać z możliwości, jakie otwiera przed Wami Arduino Zero Pro. Osoby mające doświadczenie z GDB mogą już śmiało zamówić Zero. Pozostałych zachęcamy do prób, bo GDB warto opanować, ten krótki film pokaże Wam, jak wyglądało debugowanie Blinka na żywo.

Gdy działa już GDB nie ma problemu, by skorzystać z graficznego interfejsu, jakie istnieją do tego programu. Na przykład DDD (tym razem musicie doinstalować ten program, nie jest on częścię Arduino IDE)

By go uruchomić, trzeba tylko wskazać mu właściwą wersję GDB (tą z Arduino IDE):

ddd --debugger "hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gdb -d examples/01.Basics/Blink/"

ESP8266 i Arduino IDE

Gdy przed Tobą stoi potrzeba podłączenie jakiegoś mikrokontrolera do sieci WiFi, od niedawna masz zupełnie nowe możliwości dzięki małym modułom ESP8266. Te moduły mogą pracować jako bramki do WiFi dla µC, albo jako moduły w pełni samodzielne, z możliwością programowania.

ESP w Nettigo

image

Od kilku dni poszerzyła się oferta modułów ESP8266 w Nettigo, więc jeżeli poszukujesz jakieś z większa ilością dostępnych GPIO to mamy coś dla Ciebie

ESP8266 i Arduino IDE

Dotychczas najpopularniejsza metodą na programwowanie ESP jako samodzielnego modułu, było skorzystanie z firmware, które rozumie język lua, jednak niedawno pojawiła się możlwiość korzystania z Arduino IDE, razem ze znanymi funkcjami takimi jaki digitalWrite, digitalRead. Jak to można zrobić? O tym w tym wpisie.

Kilka słów przypomnienia

Po pierwsze, moduły ESP działają na max 3.6v i komunikują się w logice 3v. Pamiętajcie o tym, ponieważ ESP można uszkodzić podłączając napięcie większe niż 3.6v.

Po drugie, w sieci dostępnych jest wiele różnych modułów ESP8266 charakteryzujących się różną ilością portów GPIO, jednak zasad uruchamiania i podłączania jest taka sama dla wszystkich.

O tym jak podłączyć ESP8266 i zmienić oprogramowanie znajdziecie w naszym poprzednim wpisie o ESP8266.

Arduino IDE

W tym wpisie zajmiemy się możliwością oprogramowania naszego modułu z poziomu Arduino IDE. Na chwilę obecną (połowa kwietnia 2015) dostępne jest oddzielnie IDE (bazowane na kodzie oryginalnego IDE), jednak możemy mieć nadzieje, że w niedługiej przyszłości będą dostępne paczki, które będzie można dograć do oryginalnego Arduino IDE. Znacznie to ułatwi postępowanie, jeżeli nie będziecie musieli mieć specjalnego IDE do programowania ESP. Sytuacja jest bardzo dynamiczna i projekt się szybko rozwija.

W celu zaprogramowania ESP przez IDE należy pobrać paczkę z Githuba. Oprogramowanie dostępne jest na Windowsa, Linuxa (tylko 64 bit) oraz MacOSa.

Po pobraniu paczki rozpakowujemy ją do wybrango foldery i w przypadku systemu Windows odpalamy IDE klikając na arduino.exe. W przypadku systemów Linux oraz MacOS odpalamy IDE z konsoli komendą:

./arduino

Zanim przejdziemy do wgrywania pierwszego programu mała uwaga, numery pinów ESP8266 odpowiadają numerom pinów w IDE, czyli GPIO0=pin0, GPIO2=pin2, itd. Jak wspomnieliśmy na samym początku w zależności od rodzaju modułu użytkownik będzie miał dostęp do większej lub mniejszej ilości pinów GPIO.

Podłaczenie ESP

Podłączamy nasze ESP do konwertera, pin GPIO0 zwieramy do masy (robimy to za każdym razem kiedy będziemy chcieli wgrać nowe oprogramowanie). Sprawdzamy połączenia i jeśli wszystko jest w porządku ostatnim krokiem jest podłączenie zasilania.

Odpalamy nasze wcześniej pobrane IDE, które z wyglądu nie różni się zbytnio od oryginalnego. W przypadku odpalania IDE na linuxie należy zwrócić uwagę, gdyż pobrana paczka przeznaczona jest na system 64bit. Istnieje możliwość pobrania źródła i zbudowania sobie programu używając polecenia:

  $ git clone [https://github.com/esp8266/Arduino.git](https://github.com/esp8266/Arduino.git)
  $ cd Arduino/build
  $ ant dist

Kiedy rozwiniecie zakładkę “Board” ukaże wam się moduł ESP8266. W zakładce “Port” wybieramy port szeregowy, jako który pojawił się nasz konwerter USB-serial.

Przetestujmy działanie na przykładzie znanego wszystkim “blinka”. Po wybraniu menu File/Examples/01. Basics/Blink jedyna zmiana jaką musimy wprowadzić to zamiana pinu 13 na pin 2. Kompilujemy, jeśli żadnych błędów nam IDE nie zwróci, to możemy załadować program do ESP8266.

Po wgraniu programu odłączamy zasilanie, zdejmujemy zworkę łączącą GPIO0 z masą i możemy ponownie podłączyć zasilanie. Wbudowana w ESP dioda powinna migać. Dzięki temu mamy pewność, że nasz program działa – cały proces przeszedł pomyślnie.

Na chwilę obecną działają funkcje: pinMode, digitalRead, digitalWrite ale jak pisałem wcześniej sytuacja jest dynamiczna i mamy nadzieję, że już wkrótce autorzy projektu przeniosą obsługe kolejnych poleceń.

Obsługa GPIO

GPIO0-GPIO15 mogą być ustawione jako wejście, wyjście, wejście z pullup, wyjście z otwartym drenem. GPIO16 może być ustawione tylko jako wejście/wyjście.

Przerwania można używać za pomocą komendy attachInterrupt, detachInterrupt i dotyczy każdego pinu z wyjątkiem GPIO16.

Komunikacja ESP z komputerem przez port Serial

Tryb Serial działa tak samo jak w standardowym Arduino, można przesyłać tekst i będzie on odbierany.

WiFi (biblioteka ESP8266)

Aby móc korzystać z sieci, najpierw trzeba ja skonfigurować.Interfejs do tej biblioteki jest wzorowany na biblitece WiFi od Arduino. Poniżej znajdują się najważniejsze różnice pomiędzy oryginalną, a zmodyfikowaną biblioteką WiFi. reszta funkcji powinna działać bez problemów


WiFi.mode(m): ustaw tryb na WIFI_AP, WIFI_STA, lub WIFI_AP_STA. Są to odpowiednio tryby Access Point, klienta WiFi i mieszany

w zależności od trybu pracy różni się ustawianie adresu MAC karty sieciowej WiFi.macAddress(mac) jest dla STA, WiFi.softAPmacAddress(mac) jest dla AP.

podobnie z adresem IP: WiFi.localIP() jest dla STA, WiFi.softAPIP() jest dla AP.

WiFi.RSSI() nie działa obecnie

WiFi.printDiag(Serial) wyświetla informacje diagnostyczne

użyj WiFi.softAP(ssid) w celu ustawienia własnej otwartej sieci (w trybie z AP), dostęp bez hasła

użyj WiFi.softAP(ssid, passphrase) w celu ustawienia sieci WPA2-PSK zbezpieczonej hasłem

WiFiServer, WiFiClient i WiFiUDP działają i zachowują się tak samo jak w oryginalnej bibliotece.

W IDE dołączone zostały 4 przykłady z użyciem zmodyfikowanej biblioteki.

I2C

Działa jedynie tryb master, a Wire.setClock nie został jeszcze dopracowany do końca (problemy z ustawieniem częstotliwości). Jeśli ktoś chce próbować, przed użyciem I2C należy skonfigurować piny używając komendy Wire.pins(int sda, int scl), np. Wire.pins(0, 2); dla modułu ESP-01.

SPI

Na chwilę obecną prowadzone są testy nad HSPI (na GPIO12-15). Więcej informacji można znaleźć na stronie Sermusa, gdzie jest np. informacja dotycząca podłączenia wyświetlaczy ILI9341 do ESP

OneWire

Działa bez większych problemów. Biblioteka została zaadoptowana do działania z ESP. Oryginalnie była to biblioteka przeznaczona na Teensy

Inne biblioteki działające z ESP

Podsumowanie – ESP8266, Arduino i nie tylko

Jeżeli projekt bedzie się nadal tak rozwijał jestem pewien, że wkrótce wsparcie dla ESP na Arduino IDE będzie znacznie bardziej kompletne. Ale nawet w dzisiejszym kształcie może być ciekawą alternatywą. Zwłaszcza dla osób znających Arduino IDE a z różnych powodów nie mogących/nie chcących przesiąść się na nowe środowisko/język.

W tej chwili w Nettigo możecie kupić:

  • ESP8266-01 moduł ESP z dwoma portami GPIO, antena (PCB) na płytce
  • ESP8266-07 wersja z 9 GPIO, antena (ceramiczna) na płytce oraz gniazdo UF.L
  • ESP8266-12 wersja z 9 GPIO, antena (PCB) na płytce
  • opcjonalny adpater do ESP-07 i ESP-12 tak by można łatwo korzystać z modułów ESP-07 i ESP-12 np w płytce stykowej

Revision 2015

Jak co roku w święto Wielkiej Nocy odbyło się demoscenowe party Revision. Jak zwykle przyciągnęło wielu utalentowanych twórców, którzy wyciskają ostatnie soki z różnych komputerów by pokazać swój kunszt programistyczny i artystyczny.

By było sprawiedliwie, produkcje podzielone są na kategorie. Tą, która najbardziej nas interesuje jest Wild. Trafiają tam dema nie mieszczące się w żadnej innej kategorii. Wraz z popularyzacją DIY i OpenHardware mamy tam coraz więcej przedstawicieli naszego hobby. Używają głównie płytek kontrolerów Arduino i Raspberry PI.

W tym roku wygrało świetne demo pc-10: Panda³ stworzone przez ludzi z Panda Cube.

Demem steruje płytka Arduino Mega 2560. Wszystko co widzisz opiera się na znanych z naszego sklepu Adresowanych Diodach LED
Ramka została wydrukowana na drukarce 3D, a reszta to akrylowe szybki, które rozświetlają LED-y.

Resztę produkcji z Revision 2015 znajdziesz na stronie Pouet.net

Jeśli chcesz stworzyć coś podobnego, mamy dla ciebie części:

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

Arduino mierzy puls

Podobno puls to bardzo ważna rzecz przy ćwiczeniach. W poradnikach często jest napisane, że trzeba osiągnąć odpowiednie tętno zależne od wieku, by ćwiczenia były efektywne.

Thomas Novotny odkrył jak genialnie i prosto można mierzyć puls za pomocą głośniczka piezo.

Głośnik Piezo to metalowa membrana z kryształem kwarcu. Gdy podłączysz do niego napięcie kryształ odkształca membranę. Częsta zmiana napięcia sprawia, że taki głośnik generuje dźwięk.

Gdy sam naciśniesz na membranę głośnika piezo to odkształcony kryształ pod nim sam wygeneruje impuls elektrostatyczny. Dzięki tej właściwości powstało już wiele projektów, takich jak zamek do drzwi reagujący na pukanie, czy elektroniczna perkusja reagująca na uderzenie pałeczek.

Thomas odkrył, że przepływająca w palcu krew sprawia, że palec delikatnie pulsuje. Przyłożony do palca głośnik Piezo generuje impulsy elektryczne zgodne z tętnem serca.

Głośnik piezo mierzący tętno z palca – Zdjęcie pochodzi z bloga ohnitsch.net

Wykres napięcia generowanego przez głośnik piezo przyłożony do palca – Zdjęcie pochodzi z bloga ohnitsch.net

Głośnik można podłączyć do wejścia analogowego Arduino i GND równolegle z rezystorem o wartości kilku Mega Ohmów. Potem mierzyć impulsy za pomocą funkcji analogRead.

Na blogu jest również program obliczający puls.

Płytkę Arduino kupisz zaś w Nettigo.pl

sprae

Agent nadaje, centrala odbiera. Agent już piąty dzień jedzie na pastylce 300 mAh i mamy nadzieję, że misję w polu jeszcze będzie kontynuował!

Co tam panie w Arduino?

Osoby odpowiedzialne za projekt Arduino pokłóciły się. Główna firma Arduino LLC postanowiła, że będzie licencjonować produkcję płytek lokalnym producentom w wielu krajach.

Dotychczasowy producent płytek – Smart Project nie mógł się na to zgodzić. Zmienili nazwę na Arduino SLR i zaczęli produkować własne płytki Arduino. Założyli też własną stronę internetową http://www.arduino.org/
Nie ma się co im dziwić, uważają siebie za jednego z współtwórców platformy, a zmiana planów na produkcję globalną zmniejszy ich udziały w produkcji płytek, co za tym idzie dochody.

Obecnie trwa spór o nazwy w sądach.

Dużo bardziej wyczerpującą analizę sytuacji najdziesz we wpisie Cyryla Sochackiego w portalu Dobre programy.

sprae

Jak przesłać dane z gier symulacyjnych do Arduino

Wiele osób chciałoby dorobić do symulatora własną deskę rozdzielczą. Pewnie jeszcze więcej marzy o fotelu wyposażonym w silniki symulujące przeciążenia działające w grze. Problem polega na tym, że każda gra ma inny interfejs do komunikacji z takimi urządzeniami. Trzeba go rozkminiać na własną rękę.

Nic straconego. Powstał projekt SimTool, który pozwala na łatwe wysyłanie danych w jednolity sposób z kilkudziesięciu różnych gier.

Program pozwala wybranie danych z gry, zbalansowanie ich oraz wysłanie przez port COM do Arduino w postaci prostych szablonów danych. Do programu można podłączyć nawet 6 kontrolerów Arduino, gdyby komuś zabrakło pinów 😉

Arduino odbiera dane i steruje silnikami, deską rozdzielczą i innymi podzespołami w jakie wyposażony jest twój symulator.

Program można dostać zbierając punkty na forum projektu SimTool, lub płacąc opłatę miesięczną lub roczną.

Na podstawie programu zrobiono już kilka fajnych projektów

Kontrolery Arduino oraz inne pasujące do SimTools znajdziecie oczywiście w Nettigo.pl

sprae

Maszyna do szycia sterowana przez Arduino

Tradycyjne maszyny do szycia bardzo ułatwiły i przyśpieszyły proces tworzenia ubrań. Ubrania stały się trwalsze i ciekawsze.

image
Maszyna do szycia – Zdjęcie pochodzi ze strony upcraft.it

Maszyny do szycia mają różne rodzaje ściegów. Ścieg to wzorek nici zszywający materiał. Niektóre ściegi pomagają stworzyć trwalsze połączenie, a inne fantazyjne stosuje się tylko do ozdoby.

image
Ściegi – Zdjęcie pochodzi ze strony upcraft.it

Ściegi wykonywane są przez skomplikowane systemy mechaniczne kół zębatych, krzywek i popychaczy.

image
Mechanika maszyny do szycia – Zdjęcie pochodzi ze strony upcraft.it

Andrew Lewis wpadł na pomysł by zastąpić te skomplikowane mechanizmy przez serwomechanizmy sterowane przez Arduino.

image
Serwomechanizm zamiast mechanizmu maszyny – Zdjęcie pochodzi ze strony upcraft.it

image
Arduino sterujące serwami – Zdjęcie pochodzi ze strony upcraft.it

Projekt jest świetny. Pokazuje jak współczesna technika pozwala uprościć stare mechanizmy i sprawić by były one bardziej funkcjonalne. Ruch Open Hardware zapewnia nam, że urządzenia będą działały tak jak my tego chcemy. Jedynie wyobraźnia i umiejętności są tu granicą.

Więcej o projekcie dowiedziesz się ze strony autora:

Części do rozbudowy własnej maszyny kupisz w sklepie Nettigo.pl

sprae

Gniazdko elektryczne sterowanie dźwiękiem

Na stronie czasopisma Make pojawił się projekt włącznika sterowanego dźwiękiem. Działanie polega na tym, że wystukując lub klaskając odpowiednią melodię, włączasz lub wyłączasz jakieś urządzenie.

Obwód wejściowy jest prosty. Składa się z mikrofonu elektretowego, rezystora 100 kOhm, rezystora 10 kOhm oraz kondensatora ceramicznego 0,1 uF.  Wyjście obwodu podłączone jest do wejścia analogowego A0 w Arduino.

Szczegóły budowy dostępne są na stronie Make:

Melodyjkę którą trzeba wystukać można zmienić w tablicy secretCode programu. Liczby w tablicy odpowiadają długości przerw między stuknięciami.

Moduły potrzebne do budowy można kupić w Nettigo

sprae