esp8266 oraz nodeMCU w Arduino IDE

Istnieje bardzo prosty i szybki sposób na rozszerzenie funkcjonalności i obsługi środowiska Arduino IDE o nowe płytki. Wystarczy w Ustawieniach wpisać odpowiedni link, poprzez który za pomocą JSONa oprogramowanie pobierze właściwe rozszerzenie.

Dzięki tej operacji Arduino IDE zacznie obsługiwać bezpośrednio moduły esp8266 oraz nodeMCU, które korzysta z ESP.

I krok: dopisanie w ustawieniach właściwego linku (PLIK->PREFERENCJE)

http://arduino.esp8266.com/stable/package_esp8266com_index.json

ustawienia

Oczywiście trzeba zapisać zmiany oraz uruchomić ponownie uruchomić IDE.

II krok: odnalezienie i wybranie „płytek” do zainstalowania

(NARZĘDZIA -> PŁYTA -> MENADŻER PŁYTEK…)

wybór płytki

III krok: po wyborze Menadżera Płytek pojawi się okienko

menadżer płytek

 

Należy wybrać install (w prawym dolnym rogu okienka, tuż ponad zamknij)

Po tych działaniach powinna się pojawić w menu płytek lista nowych układów.

nowe menu

Miłej zabawy. Moduły ESP8266 oraz nodeMCU można za niewielkie pieniądze kupić np tutaj:

https://kamami.pl/moduly-wifi/559667-modul-z-esp8266-nodemcu.html

https://kamami.pl/moduly-wifi/235041-esp-01-modul-wifi-z-esp8266-i-antena.html

przymocowanie Arduino / Raspberry Pi do płytki uniwersalnej

Większość projektów, które buduję w domu opieram o płytki uniwersalne – przeważnie stykowe. Z Arduino lub Raspberry Pi łączę płytkę uniwersalną kabelkami i na takim pająku się bawię. Bardzo często jednak takiego pająka muszę przenieść, przesunąć lub po prostu przepiąć do innego komputera. I tutaj robi się problem, ponieważ bardzo łatwo coś rozłączyć – płytka z mikrokontrolerem w jedną stronę, a płytka uniwersalna w drugą. I pozamiatane.

Kolejna porażka, w której połowa układu mi się rozłączyła wpadłem na prosty i skuteczny sposób. Poniżej na zdjęciach go prezentuję.

Specjalnie przylutowałem więcej niż jeden pin, żeby konstrukcja była stabilniejsza. Ponieważ montaż (w tym przypadku Arduino) odbywa się w poprzek płytki uniwersalnej, to zwracam uwagę na fakt, że również w poprzek płytki są połączone ze sobą piny styków. Dlatego część goldpinów, która wsuwa się do płytki jest poobcinana (górne zdjęcie) – inaczej robiłyby zwarcie / nieprawidłowo działały.

Arduino na płytce stykowej

Arduino na płytce stykowej

2015-05-28 20.04.15

wspólna przestrzeń warsztatowa w Warszawie

Tym razem nietypowo – zwracam się do Was drodzy Czytelnicy z pytaniem/apelem.

Od jakiegoś czasu rozglądam się za przestrzenią coworkingową dla siebie, ale i towarzystwem do realizacji wspólnych projektów. Są problemy elektroniczne czy programistyczne, które zdecydowanie efektywniej realizuje się w kooperatywie, niż samemu. Szukam więc osób o podobnych zainteresowaniach, ale i miejsca. Jeśli udałoby się zebrać grupę kilku-kilkunastu osób/zapaleńców, to byłby to pierwszy krok do budowania swojego warsztatu.

Ważne dla mnie jest:
– dobre skomunikowanie miejsca (blisko centralnych stacji metra),
– wsparcie członków przedsięwzięcia,
– wzajemna chęć pomocy,
– komunikatywność.

Oczywiście płeć, wiek i doświadczenie nie mają znaczenia. Z przyjemnością poświęcę swój czas na edukowanie innych, ale mam nadzieję, że i mnie będzie miał kto edukować.

Ze swojej strony mogę zaoferować:
– doświadczenie w organizowaniu wspólnej przestrzeni,
– opracowanie zasad, etc wspólnego działania,
– wkład sprzętowy (masa części, arduino, raspberry pi, przyzwoity oscyloskop), etc.

Jeśli również masz potrzebę współdziałania lub szukasz podobnego miejsca, to pisz lub dzwoń: przemyslaw(at)kabelkowo.pl lub 510-095-095. Dzięki!

przedświąteczne porządki i mały konkurs (rozdaję LaunchPad’y)

Cześć,

przed Świętami zabrałem się za porządki i inwentaryzację swojego warsztatu. Okazało się, że sporo mam na magazynie zamienników Arduino, a jeszcze więcej oryginalnych Launchpad’ów od TI.com. Ponieważ wiem, że i tak z wszystkiego nie skorzystam, to chciałbym Wam 1-2 sztuki oddać. Oczywiście w dobre ręce. Konkurs jest bardzo prosty i oparty o kreatywność:

Napisz w komentarza do niniejszej notki dlaczego akurat Ty chcesz dostać wybraną płytkę lub opisz co ciekawego na takowej zbudujesz (najlepiej z wykorzystaniem platformy, którą opisujesz) lub udostępnij niniejszy wpis u siebie na facebooku, google plus, twitterze i w komentarzu poniżej zostaw linka do tego wpisu (koniecznie musi być publiczny, żebym miał okazję go zobaczyć).

Konkurs trwa do końca dnia 14 grudnia 2014 roku – żeby zwycięzca lub zwyciężczyni mieli szansę otrzymać przesyłkę jeszcze przed świętami.

ps: Jeśli konkurs załapie i będzie dużo fajnych zgłoszeń, to postaram się regularnie rozdawać kawałki swojego warsztatu, które zalegają mi w szufladach.

ps2: Większość zestawów jest nowa lub np. 1-2 razy uruchomiona / podłączona do zasilania. W zestawach 430g2 jeśli procek był przeze mnie używany, to wymienię przed wysyłką na nowy.

Zestawy, które m.in. posiadam (oparte o procki):

– msp430g2xxx,
– msp430fr5969,
– msp430f5529,
– lm4f120x,
– tm4c123g…

Pamiętajcie, że LaunchPad’y mają swoje środowisko programistyczne Energia identyczne z Arduino IDE. Dostępne jest pod tym adresem: http://energia.nu/

ps4: Ponieważ regularnie użytkownicy próbują spamować w komentarza reklamując jakieś badziewie, to komentarze są moderowane – wszystkie czytam i te, które nie zawierają reklamy własnych produktów akceptuję.

Powodzenia!

AKTUALIZACJA (w dniu publikacji wpisu)

Zapomniałem dodać: ceny większości w/w zestawów wahają się w przedziale $10-$25 + najważniejsze: jeśli osoba/osoby, które wygrają zbudują i opublikują u siebie lub wyślą do mnie do publikacji (obojętnie) notkę z wykorzystaniem wygranego zestawu, to doślę (wg mnie ciekawszemu projektowi) moduł LCD 430BOOST-SHARP96 – wart $20!

spark core (lepsza wersja arduino z wifi)

spark_io

Spark Core wpadł mi w ręce już dość dawno. Zbudowałem nawet na nim półautomatykę do akwarium, ale trochę się tam marnował – płytka stworzona jest do dużo wyższych celów, niż decydowanie czy rybki powinny mieć już widno lub pokazywanie jaką mają temperaturę wody poprzez stronę www.

Czy jest Spark Core?

Spark Core to w pełni funkcjonalne środowisko projektowe dla początkujących, jak i zaawansowanych konstruktorów. Projekt rozwinięty został dzięki pomocy Kickstartera, gdzie osiągnął spektakularny sukces.

System jest kompatybilny z Arduino, posiada sieć wifi w standardzie 802.11 b/g, przyjazne API, kompatybilność z płytkami stykowymi i możliwość programowania przez wifi. Ostatnia funkcjonalność jest o tyle ciekawa, że w module można podmieniać program w dowolnej lokalizacji – ważne, żeby był podłączony do internetu.

Parametry techniczne to:
– 32-bitową jednostkę STM32 taktowaną zegarem 72MHz na architekturze ARM Cortex M3
– 128KB pamięci flash i 20KB pamięci RAM
– zintegrowany moduł Texas Instruments SimpleLink CC3000 Wi-Fi
– EEPROM (przeznaczony dla konfiguracji CC3000)
– 2MB zewnętrznej pamięci flash,
– zasilanie 3.3V (wbudowany regulator zasilania)
– typowy pobór prądu na poziomie 50mA
– maksymalny pobór prądu (w peaku) 300mA (np podczas zdarzeń transmisji danych)
– może być programowany i zasilany przez kabel micro USB
– posiada 8 pinów I/O
– posiada 4 kanały (piny) PWM
– posiada 8 pinów I/O analogowych
– obsługuje UART (Serial), SPI i I2C sprzętowo
– zasięg Wi-Fi to 30-100m

spark core

Jak zaprogramować Spark Core?

Pierwsze, co jest inne, to że IDE jest w wersji webowej. Trzeba wejść na stronę projektu, zalogować się, wejść w ustawienia i za pierwszym razem skonfigurować połączenie z urządzeniem. W tym momencie niezbędne jest podłączenie fizyczne. Wymaga tego konfiguracja poprzez terminal – trzeba uzyskać token, który następnie dodajemy w IDE oraz skonfigurować sieć (ręcznie podaje się nazwę sieci, kodowanie i hasło). Następnie system się resetuje i to wszystko. Od razu działa.

Jak to jest z kompatybilnością z Arduino?

Podobnie jak w samym Arduino. Niby standard, ale płytki typu Uno, Yun czy Mega średnio do siebie pasują (zgodnością pinów). Biblioteki pod różnymi platformami sprzętowymi nie zawsze w ten sam sposób się zachowują. Podobnie jest w projekcie Energia.no, gdzie głównie chodzi o zachowanie zgodności składni, a nie 100% przenoszalność bibliotek.

spark-pinout

Co jeszcze jest w tym ciekawego?

Poza możliwością zdalnego programowania przez sieć i kompaktowości rozwiązania (płytka jest chyba mniejsza niż Arduino mini) wyróżnia się ponadprzeciętna intuicyjność oraz bardzo dobra dokumentacja.
Zbudowana społeczność rośnie, autorzy nie zapomnieli o wzorowym wsparciu w postaci not dokumentacji i narzędzi do komunikacji pomiędzy uczestnikami projektu (forum, etc).
Dodatkowo można kupić shieldy dla Spark Core i w bardzo prosty sposób rozbudować go o kilka przekaźników czy zasilanie bateryjne. Jest też shield shield – płytka, która jest shieldem dla Sparka i Arduino jednocześnie – dzięki niej można wykorzystać już posiadane moduły od 8-bitowego starszego brata (ważne, żeby tylko sprawdzić kompatybilność i wykorzystanie wyprowadzeń).

Jeśli ktoś byłby zainteresowany zakupem, to proszę dać znać (namiar w KONTAKT) – może razem zamówimy i podzielimy koszty transportu po równo.

pocket #2: programowanie MSP430 z Launchpad, AVR (bez IDE) z Arduino, zegarek LED i elektroniczna waga WIFI

Oto kolejna część projektów, które zapisałem w swoim pockecie, jako ciekawe i interesujące. Zgodnie z poprzednim artykułem (Arduino alarm, ne555, Teensy, bsp430, Nanino i Arduino tutorials) postanowiłem się dzielić wybranymi – może ktoś z Was znajdzie dla siebie coś inspirującego.

Linkuję do wpisów na forach, blogach i innych serwisach elektronicznych oraz z zakresu Do It Yourself.

elektronika_hash2

Zaczynam od wpisów starszych (w zasadzie jednych z początkowych na liście), aczkolwiek poniższe opisy uzupełniam o aktualny stan, który się dzieje wokół produktów, oprogramowania czy też projektów.

1) Programowanie mikrokontrolerów Texas Instruments przy pomocy zestawu TI Launchpad MSP430 – w zasadzie jest to dość proste rozwiązanie, ponieważ wszystkie zestawy Launchpad mają wbudowany programator, który można odłączyć (zwykle goldpiny) od reszty zestawu (niestety nie zawsze da się rozdzielić PCB). Niemniej pod powyższym linkiem znajduje się dobrze zrobiony wideo-poradnik dla osób dopiero rozpoczynających przygodę z tymi zestawami.

2) Programowanie AVR przy użyciu Arduino, ale tylko jako programatora (pomijając IDE Arduino przy tworzeniu kodu) – bardzo ciekawy manual (z linkami do wielu źródeł uzupełniających – jak choćby sposobów obliczania fusebit dla AVR) rozpoczęcia przygody z poważnym programowaniem AVR (niektórzy twierdzą, że Arduino jest jak niegdyś bardzo popularny Bascom; osobiście uważam, że jest w tym trochę prawdy, ale z zastrzeżeniem, że popieram – każdy język i środowisko jest dobre, jeśli umie się z niego korzystać).

3) Przenośny zegarek LED (mieszczący się w dłoni) – bardzo dobrze dopracowany projekt oparty o AVR ATmega645P zegarka, który pokazuje czas na 132 diodach LED (60 odpowiedzialnych za minuty, 60 odpowiedzialnych za sekundy i 12 za godziny). Autor udostępnia do projektu na swoim githubie (link w artykule o zegarku) wszystkie źródła – łącznie z projektem obudowy do druku 3D!

zegarek LED

4) Ostatnim ciekawym projektem z mojego pocketu w dzisiejszym wpisie jest elektroniczna waga podpięta poprzez Arduino i WiFi do dokumentów googla. Trochę trudno czyta się kod ze względu na używanie przez autora nazw zmiennych i opisów kodu po włosku. Niemniej projekt wart jest przeanalizowania i wykorzystania we własnych rozwiązaniach.

Miłego kabelkowania! 

Intel Galileo by Arduino – czyli edukacja wg Intela (pierwsze wrażenia)

Nowość? Super – lubię nowości! Jak tylko dostałem info od Nettigo, że będą mieć Arduino Galileo w sprzedaży, to od razu stanąłem w kolejce. Zestaw kupiłem, kilka dni poużywałem (dość powierzchowne działania testowe) i jestem mądrzejszy o nową platformę oraz bez 300zł w kieszeni:)

arduino-galileo

Pierwsze wrażenia, czyli ‚unboksing’ Intel Galileo

Wielkość pudełka wskazywała, że będzie to całkiem pokaźny zestaw. Niestety w środku oprócz samej płytki Galileo znajduje się tylko zasilacz z wymiennymi końcówkami – chyba na wszelkie światowe standardy. Zasilacz 2A na 5V – standard. Niestety chyba do mojego zestawu zapomniało się komuś włożyć kabla USB, albo po prostu go nie dają. Przydałoby się też zamiast tych super końcówek do zasilania dać przelotkę z microUSB na gniazdo USB-A – niby na płytce jest host USB, ale właśnie z gniazdem microUSB. Adaptery takie można za 5-10zł kupić w sieci, ale z przesyłką to dodatkowe 15-20zł. Za 300zł oczekiwałem bardziej rozmyślnego podejścia do użytkownika. Zestaw ponoć nazywany jest edukacyjnym.

A co ma w środku?

Dużo. I to dość mocno ratuje ten zestaw. Takie trochę słabsze Raspberry Pi, ale z wieloma gadżetami od Arduino. Pełną specyfikację znajdziecie na stronie Arduino Certified – Intel Galileo. Mnie zainteresowały następujące:
– procek hiper-super-wypas Quark SoC1000 – 32bit, Pentium Class, ~1,2DMIPS, rdzeń taktowany 400MHz,
– pełna kompatybilność wyprowadzeń i napięć z Arduino (oparta o Arduino UNO R3),
– wbudowany RTC (zegar czasu rzeczywistego) z wyprowadzeniem goldpinów na płytce dla baterii,
– złącza RJ45, microSD, dodatkowy port RS232 (w złączu mini-jack), 2 x USB (jeden host, drugi client), 256KB SRAM, 256MB DDRAM, 8MB flash, mini-PCIe.

Najciekawsze złącze Galileo, czyli mini-PCIe

W pierwszym odruchu powiedziałem – po cholerę! Ale chwilę po tym przypomniałem sobie jak tanie są karty sieciowe, modemy 3G czy dyski SSD na to złącze i zapiałem z zachwytu. To jest tak przewaga Galileo względem innych rozwiązań Arduino – nie dość, że prawie wszystko jest pod ręką, to do tego za kilka zł można mieć jeszcze więcej.

Rzeczy dziwne i niezrozumiałe, czyli wady zestawu

Złącze host USB w postaci gniazda mikroUSB oraz brak przelotki do tego. Rozumiem oszczędność miejsca, na płytce, ale zdecydowanie bardziej wolałbym zamiast tysiąca standardów wtyczek zasilania jedną, dodatkową, tanią przejściówkę.

(niepotwierdzone) Programowanie do pamięci SRAM. Programuję – działa, resetuję – nie działa. Po uruchomieniu zestawu z linuksem na karcie SD działa OK. Zdecydowanie muszę to zweryfikować.

Procesor SoC nachodzący na powierzchnię przestrzeni dla shieldów. Niestety w przypadku montowania jakiś dodatkowych płytek nie wchodzi w grę użycie większego radiatora, a ten zdecydowanie jest potrzebny. Procesor w trybie jałowym (uruchomiony linuks Poky z karty SD, bezczynny) nagrzewa się do około 70st.C. Niewiele pomaga założenie malutkiego radiatorka widocznego powyżej. Schłodzenie sprężonym powietrzem na chwilę obniżyło temperaturę o kilkadziesiąt stopni.

galileo-temp

Kolejnym problemem jest dedykowana wersja środowiska programistycznego IDE dla niniejszego zestawu. Obecnie dostępne jest w wersji 1.5.3 i można je pobrać ze strony Intela. Trochę dziwi fakt potrzeby uruchamiania z sudo tego IDE, ale cóż – z zaleceniami producenta się nie dyskutuje:)

Podsumowanie – czy warto kupić Arduino Intel Galileo?

Póki co mam mieszane uczucia. Niby wypas, dużo na pokładzie, ale jakoś tak wszystko niezorganizowane, słabo opisane oraz z wsparciem, ale chyba nie najlepszym na stronie producenta. Trochę żałuję wydanych pieniędzy (tak, dałem się zakupom impulsywnym), aczkolwiek skoro już jest, to w końcu trzeba nauczyć się prostych środowisk embedded linux i zacząć efektywnie używać VI oraz OPKG zamiast NANO i APT-GET:)

Z czasem też pojawi się więcej opracowań na platformę i będzie zdecydowanie łatwiejsze dotarcie do przykładów i rozwiązań. Trzymam kciuki.

Przydatne miejsca / linki

http://arduino.cc/en/ArduinoCertified/IntelGalileo – oficjalna strona projektu w domenie Arduino

http://www.intel.com/content/www/us/en/intelligent-systems/galileo/galileo-overview.html – oficjalna strona projektu w domenie Intel

https://communities.intel.com/community/makers/demosprojects/content?itemView=thumb – galeria projektów opartych na Galileo na stronie Intel

https://communities.intel.com/message/208564#208564 – włączenie telnetu (putty/console) za pomocą prostego programu z poziomu Arduino IDE (bez potrzeby uruchamiania większej wersji linuksa z karty SD)

https://learn.sparkfun.com/tutorials/galileo-getting-started-guide/bigger-linux-image – opis uruchomienia „dużego” linuksa z poziomu karty SD (dodam od siebie, że karta ma być sformatowana na system plików fat32)

https://communities.intel.com/docs/DOC-22272 – przykłady dla „dużego” linuksa

https://communities.intel.com/thread/48009 – tutorial do przykładów dla Arduino IDE

http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#usingpoky – bardzo dużo o „dużej” wersji linuksa na Galileo (Yocto Project – Poky)

http://www.malinov.com/Home/sergey-s-blog/intelgalileo-programminggpiofromlinux – opis jak sterować GPIO z poziomu linuksa

tydzień z pocketu #1: arduino alarm, ne555, teensy, bsp430, nanino i arduino tutorials

arduino mini

Regularnie korzystam z Pocketu – narzędzia, które pozwala na „odłożenie” ciekawego artykułu do przeczytania na później. Ponieważ wrzucam tam tylko najciekawsze (wg mnie oczywiście) artykuły z różnych blogów, serwisów internetowych czy też portali dla elektroników i majsterkujących, to postanowiłem zacząć się nimi dzielić.

arduino mini

Zaczynam od wpisów starszych (w zasadzie jednych z początkowych na liście), aczkolwiek poniższe opisy uzupełniam o aktualny stan, który się dzieje wokół produktów, oprogramowania czy też projektów.

Pierwszą treścią, która wpadła do Pocketu był „Zabezpieczamy dom, czyli jak zrobić alarm z odświeżacza powietrza” autorstwa Łukasza Więcka. Niewątpliwie bardzo nieszablonowe podejście do tematu alarmów, które ma głównie za zadanie spłoszyć złodzieja i/lub powiadomić otoczenie (np.: sąsiada) o intruzie. Łukasz co prawda wykorzystał do tego stosunkowo drogą płytkę arduino, ale nie stoi nic na przeszkodzie, żeby wstawić tam sam mikrokontroler lub kupić arduino mini – na ebay można to dostać za niecałe 3 dolary.

Kolejnym ciekawym artykułem był opis wykonania układu NE555 z wykorzystaniem tranzystorów i rezystorów. Układ został opisany na elektrodzie i autor twierdził, że działał poprawnie. Polecam przy okazji przeczytanie całego wątku i obejrzenie (jest w linkach) układu uA741 wykonanego tą samą „technologią”.

Ciekawostką było też pojawienie się na Kickstarterze projektu Teensy, czyli taniego zestawu developerskiego opartego o mikrokontrolery 16- i 32-bitowe. Do tego środowisko programistyczne oparte jest o środowisko Arduino (istnieje nawet spora zgodność programów napisanych w tym środowisku). Obecnie jest już dostępnych kilka wersji tego zestawu.

Skoro już jesteśmy przy szybkich prockach i alternatywach dla obecnego prawie wszędzie (w zastosowaniach amatorskich) Atmela, to godne obserwowania i polecenia jest rozszerzenie (toolchain) dla mikrokontrolerów MSP430 (jedna z moich ulubieńszych platform) o nazwie BSP430. Opis i pliki do pobrania znajdują się na githubie. Co najważniejsze, to projekt cały czas jest rozwijany (w chwili pisania tego wpisu miał ponad 1000 commitów).

Niniejsze zestawienie otwarł projekt oparty o Arduino, więc i je zamknie. Projekt Nanino, to ekonomiczna wersja Arduino oparta o mikrokontroler ATmega328. Najważniejszymi założeniami była prostota i koszt stworzenia płytki. Została zaprojektowana jednostronnie, z minimalną ilością elementów (przewlekanych), zgodnie z wyprowadzeniami klasycznego Arduino oraz z fragmentem płytki uniwersalnej (przy niskim koszcie istotne jest zawarcie jej „w komplecie”). Co prawda autor pisząc post w 2012 roku zapowiedział aktualizacje, ale póki co chyba nie udało mu się tego zrobić. Niemniej cała dokumentacja jest dostępna, więc jeśli ktoś ambitniejszy, to może pociągnie projekt dalej.

W temacie Arduino zachęcam również do przejrzenia tutoriali na Youtube w wykonaniu twórcy platformy, Massimo Banzi’ego dostępnych na kanale rswwwchannel.

Miłego kabelkowania!

ubuntu 64bit & problem z arduino IDE

Przy okazji ostatniej „wymiany” systemu operacyjnego (z Minta na Ubuntu) postanowiłem w końcu sprawdzić wersję 64-bitową. Cannonical na stronie pobierania Ubuntu sugeruje wersje 64-bitowe, więc chyba są już na tyle stabilne, że warto spróbować. Niestety okazało się, że Arduino IDE przestało działać na nowej wersji systemu.

Opisana sytuacja nie była weryfikowana na innym komputerze, aczkolwiek po ilości zapytań w sieci mogę wnioskować, że nie jestem odosobnionym przypadkiem.

arduino console

Moje środowisko pracy

– nie instalowałem IDE Arduino poprzez instalator systemu, ponieważ chcę korzystać z tego samego środowiska na różnych komputerach,
– w związku z tym IDE Arduino 1.0.5 i 1.5.5 oraz przy okazji Energia (środowisko IDE oparte o Arduino dla mikrokontrolerów TI.com) mam w dedykowanym katalogu na Dropbox,
– sketchbooki i dodatkowe biblioteki (libraries) mam w tym samym katalogu (podzielone dla poszczególnych wersji IDE), dzięki czemu wszędzie tam, gdzie mam dostęp do Dropbox‚a mam też dostęp do swoich projektów,
– rozwiązanie z wieloma komputerami sprawdza się tylko pod systemami linuksowymi (bezwzględna ścieżka dostępu – głównie używana przez sketchbooki zawsze wygląda tak samo: /home/user/Dropbox/elektronika/),
– Arduino IDE zawsze odpalam z konsoli (poleceniem ./arduino wykonanym w odpowiednim katalogu).

Problemy, które się pojawiły

Boldem zaznaczyłem istotne informacje.

java.lang.UnsatisfiedLinkError: /home/user/Dropbox/elektronika/arduino-1.0.5/lib/librxtxSerial.so: /home/user/Dropbox/elektronika/arduino-1.0.5/lib/librxtxSerial.so: niewłaściwa klasa ELF: ELFCLASS32 (Possible cause: architecture word width mismatch) thrown while loading gnu.io.RXTXCommDriver
Exception in thread „main” java.lang.UnsatisfiedLinkError: /home/user/Dropbox/elektronika/arduino-1.0.5/lib/librxtxSerial.so: /home/user/Dropbox/elektronika/arduino-1.0.5/lib/librxtxSerial.so: niewłaściwa klasa ELF: ELFCLASS32 (Possible cause: architecture word width mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
(…)
at processing.app.Base.main(Base.java:195)

Rozwiązanie problemu

Wychodzę z założenia, że dobrze zadane pytanie w wyszukiwarce, to połowa sukcesu. I tym razem przekonałem się, że to prawda – już w pierwszym wyniku znalazłem wątek, który był strzałem w dziesiątkę:

http://forum.arduino.cc/index.php/topic,3607.0.html

W kilku miejscach użytkownicy pisali o potrzebie prawidłowego linkowania do biblioteki: librxtxSerial.so, co wiązało się z weryfikacją zainstalowania odpowiedniego pakietu oraz utworzenia dowiązania pomiędzy lokalizacjami plików:

sudo apt-get install librxtx-java
ln -sf /usr/lib/librxtxSerial.so lib/librxtxSerial.so

U mnie pomogło. Jeśli mimo wszystko będziecie mieć problem – piszcie, w grupie zawsze łatwiej rozwiązuje się problemy.

problem z wyświetlaczem lcd 1604a (arduino i biblioteka LiquidCrystal.h)

Najbardziej popularnym wyświetlaczem LCD dla elektroniki jest model 1602 na sterowniku HD44780. Jednak czasem potrzeba odrobinę więcej i tutaj przychodzą wyświetlacze 1604 oraz 2004. Ja znalazłem w swoich szpargałach 1604a i od razu zdecydowałem podłączyć go do Arduino.

Podłączenie zrealizowałem na magistrali 4 bit pod wolne porty, podświetlanie ograniczyłem rezystorem i wgrałem jakiś przykład dostępny w środowisku programistycznym. Przykład działał prawidłowo, póki wyświetlałem coś w pierwszej linijce. Wrzucenie czegoś do kolejnych powodowało jakieś dziwne rozjazdy, wyświetlanie się wartości w złych miejscach i lekki chaos na wyświetlaczu.

Naturalnym krokiem było ustawienie jakiegoś krótkiego tekstu w każdym wierszu i obserwowanie reakcji wyświetlacza. Pierwszy i drugi wyświetliły się OK, a kolejne dwa były przesunięte i zaczynały się od 5 kolumny. Najprostszym rozwiązaniem było wpisanie w pozycję kolumn w 3 i 4 wierszu wartości ujemnej jako początkowej. Problem rozwiązany.

1604a arduino

W sumie z braku czasu nie analizowałem przyczyny takiego zachowania wyświetlacza. Jeśli ktoś z Was ma pomysł/wiedzę, to zapraszam do wyjaśnienia.

(w kolejnym kroku będę weryfikować czy podobnie wyświetlacz zachowuje się sterowany przez I2C oraz po podłączeniu do Raspberry Pi)

Kod sterujący:

/*
Podlaczenie (plytka MEGA2560):
* LCD RS pin do pinu 23
* LCD Enable do pinu 27
* LCD D4 do pinu 29
* LCD D5 do pinu 31
* LCD D6 do pinu 33
* LCD D7 do pinu 35
* LCD R/W do GND
*/

#include <LiquidCrystal.h>

LiquidCrystal lcd(23, 27, 29, 31, 33, 35);

void setup() {
lcd.begin(16, 4);
lcd.setCursor(0, 0);
lcd.print(„wiersz1 wiersz1”);
lcd.setCursor(0, 1);
lcd.print(„wiersz2”);
lcd.setCursor(-4, 2);
lcd.print(„wiersz3 wiersz3”);
lcd.setCursor(-4, 3);
lcd.print(„wiersz4 wiersz4”);
}

void loop() {
lcd.setCursor(8, 1);
lcd.print(millis()/100);
}