Rozumiem Arduino: co teraz?

18

Dobra, bawiłem się wystarczająco dobrze z Arduino, że czuję się z tym całkiem dobrze. Wszystko, co zrobiono teraz, bardziej uczy się elektroniki niż jej strony w Arduino.

Jaki jest następny etap mojej nauki? Arduino to połączony programator / kontroler, więc prawdopodobnie muszę przerwać to łącze i zacząć pracę z układem kontrolera oddzielnym od kontrolera, tak myślę? Czy ktoś może skierować mnie we właściwym kierunku?

Chris B. Behrens
źródło
Czy masz na myśli konkretny cel lub projekt?
Zgadzam się. Dla mnie wszystko polega na wykonaniu określonych czynności. Arduino to po prostu narzędzie jak wszystko inne.
Dirk
To, nad czym teraz pracuję, to multipleksowana matryca LED. W Arduino nie jest to trudne, ale chcę pozbyć się kół treningowych. Mam na myśli, że na płycie Arduino jest układ ATmega168. Gdybym mógł wymyślić, jak bezpośrednio z tym pracować, myślę, że spełniłbym to, co próbuję osiągnąć.
Chris B. Behrens,
Z Arduino jesteś właściwie całkiem bezpośredni. Nie ma tylu sterowników ani niczego podłączonego do pinów. Nagłówki trafiają bezpośrednio tam. Być może breadboarduino?
AngryEE
@angryee - Myślę, że Chris ma na myśli, zaprogramuj chip ATmega bezpośrednio, bez bibliotek Arduino IDE +, które mogłyby być postrzegane jako koła treningowe.
J. Polfer,

Odpowiedzi:

12

Zgadzam się z Joby - Arduino jest świetne, ale zawsze czuję się przytłoczony ramami, którymi mnie otaczają. Chciałbym przejść do używania prostego C na twoim Arduino i zbudować wiele funkcji biblioteki, które one zapewniły od zera. Generalnie wolę głębię przed szerokością - nie zaczynaj od innej rodziny mikrokontrolerów, używając więcej dostarczonych frameworków. Dowiedz się więcej o tym, jak samodzielnie wdrożyć niektóre z tych funkcji.

Zacznij od działającego programu i zamień wywołania biblioteki Arduino na własne wersje, jedna funkcja na raz. Dowiesz się wiele na temat rejestrów kontrolnych, synchronizacji, operacji bitowych itp., Jeśli jeszcze tego nie zrobiłeś. Przeczytaj dogłębnie arkusz danych ATMega328 - wszystko, czego potrzebujesz, znajduje się w środku.

Wypróbuj inne IDE, takie jak AVR Studio lub Code :: Blocks. Poznaj zestaw narzędzi GCC. Wypróbuj bardziej zaawansowane techniki kodowania - testy jednostkowe, pokrycie, profilowanie, sprawdzanie kłaczków / szyn. Umieść RTOS na Arduino.

Połączony programator / kontroler nie jest oznaką słabości - to tylko wybór projektu. Jedyną „słabością”, która może z tego wynikać, jest brak debugowania w obwodzie. Kup smoka AVR, a będziesz go lizał za 50 USD.

AngryEE
źródło
9

Myślę, że to, czego należy się nauczyć, zależy od tego, co chcesz zrobić, czego Arduino nie może zrobić. Oznacza to, że nie widzę sensu w programowaniu podobnego układu do robienia tych samych rzeczy, ale trudniejszymi środkami.

Oto kilka słabości Arduino:

  • Wątkowanie, co oznacza, że ​​uruchomiono dwie sekcje kodu przeplatane tak, że wydaje się, że są one wykonywane jednocześnie
  • Średnie lub szerokopasmowe łącza internetowe, takie jak przesyłanie strumieniowe audio
  • Poważne obliczenia lub zadania wymagające szybkiego obliczenia w celu szybkiej reakcji
  • Wszystko, co jest łatwiejsze dzięki systemowi plików, np. Rejestrowanie danych lub obsługa obrazów

Mogę sobie wyobrazić dwa kierunki:

  1. Mocniejsze płyty wbudowane z małymi systemami operacyjnymi, takimi jak Beagleboard lub Gumstix
  2. Wyciskanie większej wydajności z małych układów Atmega za pomocą przerwań sprzętowych.

Mogę dodać więcej szczegółów, jeśli skomentujesz, który kierunek jest bardziej atrakcyjny. (Drugi jest zdecydowanie tańszy.)

pingswept
źródło
To zabawne ... programowanie podobnego układu do robienia tych samych rzeczy, ale trudniejszymi środkami jest dokładnie to, co mam na myśli :). Trochę tła - jestem architektem oprogramowania z wieloletnim doświadczeniem. Oprogramowanie, obliczenia, system plików ... to wszystko dla mnie łatwe. Naprawdę potrzebuję uderzyć głową w elektronikę. Powodem, dla którego chcę wyjść poza Arduino, jest po prostu to, że chcę być w stanie produkować urządzenia jednofunkcyjne, które nie mają fizycznego (i cenowego) obciążenia na płycie Arduino. Myślę, że z tego, co powiedziałeś, nr 2 jest tym, czego szukam.
Chris B. Behrens,
Wow ... ten komentarz brzmiał naprawdę egoistycznie. Nie miałem tego na myśli w ten sposób ... w każdym razie chciałem po prostu pozbyć się sprzętowych kół treningowych, które daje mi Arduino. W szczególności pracuję nad układem diod LED, podobnym do LOLShield, choć myślę, że zamiast tego go multipleksuję. Mogę to zrobić z Arduino, ale bez tego potrzebuję trochę wskazówek. TIA
Chris B. Behrens,
Ach, bardziej elektroniczne rzeczy zamiast oprogramowania ... rzeczy. Może masz jakieś fajne doświadczenie w pracy z interfejsem / rejestracją czujników. Nie jest to efektowne, ale aby połączyć czujniki z płytą, musisz dowiedzieć się jeszcze kilku rzeczy na temat sprzętu. Arduino nie ma tak wielu sprzętowych kół treningowych - z pewnością nie tak wielu jak oprogramowanie. Może robot, który zawiera kilka różnych rodzajów czujników - ultradźwięki, odległość IR, enkoder wału itp. Z pewnością możliwe tylko dzięki Arduino i wielu innym sprzętom.
AngryEE
7

Naucz się I2C, SPI, 1wire i spróbuj połączyć czujniki z takimi interfejsami. Przeczytaj wiele arkuszy danych takich czujników i spróbuj zrozumieć wszystko w nich. Zadawaj pytania, gdy utkniesz. Naucz się MODBUS (RTU / ASCII / TCP) lub podobnego protokołu, który może otworzyć twoje urządzenie na świat po osadzeniu go w urządzeniu. Naucz się ogólnej elektroniki i spróbuj połączyć przekaźniki, triaki, co jest podnoszone i rozwijane, co jest pozyskiwaniem i tonięciem, jak rysować schematy i podłączać podstawowe sterowniki do MCU.

avra
źródło
6

Na początek możesz chcieć przejść z Arduino jako platformy do AVR jako platformy. To znaczy, naucz się programować / używać dziewiczego mikrokontrolera AVR dla swoich projektów zamiast Arduino. W ten sposób nie będziesz musiał kupować kolejnej tablicy Arduino dla każdego projektu, który wykonujesz, ani do robienia projektów z przyjaciółmi. Jest to dość prosty krok (Arduino to zwykły mikrokontroler AVR Atmel, ale ze specjalną płytką i bootloaderem), ale jest duży do sprzedaży / przekazywania projektów znajomym. Zestaw narzędzi jest podobny: używasz avr-gcc lub avr-g ++ z make w połączeniu z narzędziem programistycznym do zainstalowania programu.

J. Polfer
źródło
Załadowanie modułu ładującego na chipie i lutowanie własnej płyty jest dość proste, jeśli chcesz oddać projekt. Lub zamów zestaw RBBB za 12,50 USD ( goo.gl/0yqr ) bez potrzeby kupowania płyty o wartości 30 USD + za każdy projekt Arduino.
Davorak,