Dla doświadczonego programisty Arduino czy czegoś innego?

11

Moje tło:

Zrobiłem oprogramowanie od dłuższego czasu i jestem mniej więcej biegły w C, C ++, Java, Ruby, Erlang, Haskell, Lua i Python. Wziąłem również zajęcia z elektroniki laboratoryjnej, ale oprócz jednego krótkiego laboratorium z pompą, chodziło tylko o uzyskanie sygnału do i A / D, a stamtąd do x86 z LabView ( nie mój wybór środowisk programistycznych) Chciałbym wrócić do majsterkowania przy sprzęcie z myślą o automatyzacji domu. (Myślę, że mogę zrobić lepiej niż ten za mniej niż $ 500)

Pytanie:

Miałem zamiar obciąć zęby na Arduino, ale im więcej czytam, tym bardziej wydaje mi się, że główną zaletą tego systemu jest to, że jest łatwy do zaprogramowania. Czy to dobre miejsce dla faceta programistycznego (który wciąż musi kupić lutownicę), czy może jest coś, co bardziej by mi odpowiadało?

(PS Mam więcej czasu niż pieniędzy)

John F. Miller
źródło

Odpowiedzi:

4

Jeśli chodzi o płyty ewaluacyjne mikrokontrolera gotowe do użycia poza bramą, istnieje oczywiście rodzina arduino. ale weź także pod uwagę starter msp430 za 4,30 USD. dobry zestaw instrukcji i podobny w działaniu do avr z nastawieniem na niską moc / koszt. Za 20 USD można uzyskać wykrycie stm32f4 (nie mylić z wykrywaniem linii wartości stm32 lub rodziną stm8), które jest ogólnie niższe niż zapłaciłbyś za użyteczne arduino (35-50 $), ale krąży wokół arduino 168 MHz, zmiennoprzecinkowe jednostki, pamięci podręczne itp. W górnej części przedziału cenowego arduino jest inne ramię mbed (mbed.org), które prawdopodobnie jest najbliższe wrażeniom piaskownicy arduino.

Jeśli chcesz pozostać w standboksie i po prostu wywoływać api, arduino jest prawdopodobnie tam, gdzie chcesz mieszkać, istnieje mega dla większej wydajności lub iść z klonem leaflabs, który jest oparty na ramieniu, ale stara się zapewnić doświadczenie piaskownicy arduino.

Możesz uzyskać znacznie większą wydajność, uderzyć za złotówkę itp., Jeśli weźmiesz na siebie więcej odpowiedzialności i wiedzy o tym, co się dzieje. Polecam wszystkie trzy platformy (avr, msp, arm / thumb) i wielu dostawców (avr i msp są zablokowane, ale ramię jest sprzedawane przez wszystkich z różnymi urządzeniami peryferyjnymi i I / O). Na przykład możesz być przyzwyczajony do platformy, która nie ma podciągnięć na liniach GPIO i musisz używać zewnętrznych komponentów, w których inny układ lub sprzedawca zapewnia to na chipie w porównywalnym punkcie cena / wydajność. Podobnie możesz polubić bit portu szeregowego lub magistrali spi, ale przekonasz się, że za te same pieniądze, moc, rozmiar itp. Jakiś inny sprzedawca ma sprzęt do pomocy w tym interfejsie.

jeśli nic innego nie leży w twoim najlepszym interesie jako programisty i kogoś, kto chce zająć się elektroniką hobbystyczną, aby dowiedzieć się więcej o tym, co dzieje się poza piaskownicą. Jako sposób na wejście do tego świata hobby elektroniki arduino jest bardzo wygodnym przejściem od programowania aplikacji w systemie operacyjnym. Sparkfun ma teraz kilka zestawów, które zawierają interfejs szeregowy i kilka urządzeń peryferyjnych, jest zestaw lilypad (platforma arduino) i może zestaw pro, oba nie są tak naprawdę wielkością osłony arduino. Sparkfun sprzedaje detaliczne pudełka i wiele innych smaków arduinos, uno itp. (wspomniane wyżej tablice ST i MSP należy zacząć od strony internetowej ti lub st lub przejść na github.com/dwelch67, a ja mam linki do różnych tablic w mojej przykłady).

old_timer
źródło
8

Z dnia na dzień jestem również programistą. Około dziesięć lat temu zacząłem ze znaczkami BASIC od Parallax, a po długim czasie wróciłem do projektów osadzonych. Początkowo spojrzałem na Arduino i jego różne części i zdałem sobie sprawę, że mogę po prostu ominąć cenę Arduino i wziąć kilka ATMega168 i zacząć od nowa. Działa to w przeważającej części, jednak często napotykałem problemy, w których posiadanie gotowej płyty byłoby fajne, ponieważ nie mogłem zepsuć podstawowego zestawu.

W końcu zamówiłem Arduino i uwielbiam wszystko na temat tablicy i bibliotek. Nie jestem fanem „IDE”, więc klikam „Użyj zewnętrznego edytora” i używam IDE wyłącznie do kompilacji i flashowania oprogramowania na płycie. Zwykle zaczynam projekt lub pomysł od płyty Arduino, a następnie umieszczam go w mega układzie. Pomaga to w obniżeniu kosztów dzięki użyciu tylko niezbędnych części do projektu, ale nadal pozwala mi szybko wymyślić prototyp.

Powodzenia!

Michael Dillon
źródło
6

Arduino to świetne wprowadzenie do programowania mikrokontrolera.

Istnieje duża różnica między oprogramowaniem do pisania na PC a oprogramowaniem do pisania dla mikrokontrolera.

Arduino byłby dobrym punktem wyjścia do poruszania się po interfejsach z urządzeniami peryferyjnymi itp. Bez konieczności angażowania się w specyficzne dziwactwa chipowe i tym podobne.

Ale, jak mówię, to wprowadzenie.

Zacznij od Arduino, a następnie przejdź do większych i lepszych rzeczy.

Bardzo często korzystam z rodziny mikrokontrolerów PIC, ale nadal mam swoje zaufane li'l Arduino, którego używam do szybkiego testowania pomysłów i testowania.

Majenko
źródło
6

Ponieważ „Arduino” obejmuje kilka rzeczy, myślę, że warto spojrzeć na nie osobno:

  • Po stronie sprzętowej urządzenie kompatybilne z Arduino to w zasadzie mikrokontroler ATMega z pewnym programem ładującym. Zwykle gotowa płyta kompatybilna z Arduino będzie również zawierać inne elektroniczne urządzenia pomocnicze, takie jak interfejs USB lub portu szeregowego, regulator napięcia, złącza pinów dla łatwego dostępu do pinów itp. Urządzenia sprzętowe są dość przystępne, jeśli chcesz mieć funkcjonalność USB i w połączeniu ze wstępnie zaprogramowanym bootloaderem oszczędza to potrzeby kupowania osobnego programatora do przesyłania oprogramowania. Tak, więc Arduino (i kompatybilne klony) są przydatne jako urządzenia sprzętowe podczas prototypowania; do ostatecznej wersji możesz zbudować własną, używając tylko potrzebnych części, więc nie musisz wkładać jednego kompletnego Arduino do każdego projektu.

  • Po stronie oprogramowania biblioteka Arduino jest jak każda biblioteka programowania, a jej przydatność zależy od twoich potrzeb. Osobiście uważam, że czasami jest przydatny do szybkiego prototypowania (np. Funkcjonalność portu szeregowego), ale jako doświadczony programista nie lubię wielu uproszczeń (zwłaszcza numeracji pinów). W każdym razie możesz łatwo korzystać z oryginalnych bibliotek AVR zamiast lub oprócz biblioteki Arduino, nawet jeśli programujesz dla urządzenia Arduino i / lub używasz Arduino IDE. Dlatego używaj dowolnych bibliotek Arduino, które uważasz za pomocne, zwłaszcza podczas tworzenia prototypów, ale w miarę postępów zapoznaj się z podstawowymi AVR (patrz źródła Arduino i karta katalogowa ATMega).

  • Wreszcie Arduino IDE to graficzne środowisko programistyczne z prostym edytorem, konsolą portu szeregowego, systemem budowania podobnym do „make” (ukrytym przed użytkownikiem) oraz (front-end) narzędzi do przesyłania oprogramowania na rzeczywiste urządzenie . Osobiście nienawidzę IDE i nigdy go nie używam, wolę pracować w wierszu poleceń, ale oczywiście jest to tylko kwestia osobistych preferencji.

Arkku
źródło
1
Nie wiem, jak mogą nazwać tę potworność IDE. To najbardziej przerażający kawałek [wymyślnie usunięty], jaki można sobie wyobrazić. Mam Anjuta prawie skonfigurować zrobić wszystko dla mnie teraz, że (nie bardzo) IDE Arduino robi.
Majenko
4

Twoje pytanie jest zbyt otwarte, aby dać jednoznaczną odpowiedź, więc wszystko, co możemy zrobić, to pokazać kompromisy.

Adruino to mikrokontroler pokryty cukrem, stępiony dla mas. Jest zoptymalizowany pod kątem szybkiego wykonywania podstawowych czynności przy minimum nauki.

W sercu arduino znajduje się zwykły mikrokontroler, którego można również użyć bezpośrednio. Zaletą jest to, że możesz wybrać swoją mikro dokładnie do tego, co chcesz zrobić, nie mieć niczyjej wyobrażenia o tym, co powinieneś zrobić między tobą a mikro, i możesz zrobić wszystko, co jest w stanie nagie mikro, co jest o wiele więcej niż wynurza się dzięki arduino abstrakcji. Minusem jest to, że faktycznie musisz się czegoś nauczyć, przeczytanie kilkuset stron arkusza danych to dopiero początek i nie dostaniesz natychmiastowej satysfakcji.

Tylko Ty możesz powiedzieć, co jest dla Ciebie lepsze. Czy chcesz objąć swojego wewnętrznego kretyna i być prowadzonym w błogości przez ogród na zawsze, spadając do powiedzenia „co?”, „Co?” I „Och, to takie słodkie!” do rzeczy elektronicznych? A może wolisz zejść długą ciemną ścieżką, aby wyjść z jedną migającą diodą LED po wielu trudach i problemach? Czy chcesz po prostu prowadzić samochód lub dowiedzieć się, jak działa silnik, aby uzyskać maksymalną wydajność i dostosować ją samemu?

Olin Lathrop
źródło
1
Olin, jesteś starą szkołą! Mam absolutnie na myśli to jako komplement ... Ale z szacunkiem nie zgadzam się z tobą w tej sprawie. Radzenie sobie z miernie zaprojektowanym oprogramowaniem dla źle pomyślanego systemu operacyjnego dodało zero do mojego zrozumienia elektroniki. W rzeczywistości pochłonęło wiele cennego czasu, kiedy mogłem uczyć się przydatnych rzeczy od dobrze znanych ludzi, takich jak ty. Mówię „Niech żyje Arduino!”
Kaelin Colclasure
2
@KaelinColclasure Twój komentarz jest dla mnie trochę mylący. Masz problem ze słabym oprogramowaniem i systemem operacyjnym, ale Olin wcale tego nie rozwiązuje. Jeśli cokolwiek, możesz zastanowić się, co arduino robi dla ciebie warstwa abstrakcji, tak jak OS jest warstwą abstrakcji. Nauka posługiwania się arduino niewiele pomaga, aby stać się lepszym inżynierem, ponieważ koszty ogólne spowodują dodatkowe koszty, które nie są potrzebne. Powiedziawszy to, uważam, że Arduino jest świetną platformą, ale nie należy jej uważać za zamiennik prawdziwego zrozumienia świata wbudowanej elektroniki.
Kellenjb
Yay analogie samochodowe! Olin, dla wielu ludzi nie chodzi o trudność i naukę drobiazgowej elektroniki i wyłanianie się jako inżynier. Wiele osób chce po prostu wybrać narzędzie, które pozwoli im osiągnąć cel i rozwiązać problem. Nauka elektroniki jest w wielu przypadkach środkiem do celu i nie jest celem samym w sobie. Nie wszyscy są w tej grze z tych samych powodów.
nemik
2
Tak? Więc o czym mówi ta mowa o „objęcie swojego wewnętrznego kretyna”? No chodź. Czy zamiast pisania własnego systemu operacyjnego jak Real Man ™ używasz swojego kretyna z systemem Windows, Linux lub OS X? Są to powlekane cukrem systemy operacyjne głupie dla mas.
nemik
1
@nemik: Objęcie swojego wewnętrznego kretyna było żartem, podobnie jak wędrowanie długą, ciemną ścieżką ... Oczywiście w obu z nich jest też trochę prawdy.
Olin Lathrop,
4

Jako programista zdecydowanie wolę programować w języku, który jest używany przez wiele innych osób, w ten sposób dostępnych jest wiele książek, artykułów, rówieśników itp., Które pomagają mi się uczyć.

W świecie komputerów jednopłytkowych Arduino jest najpopularniejsze z największym powodzeniem. Jest to doskonały wybór dla twojego pierwszego mikrokomputera.

Biorąc pod uwagę, jak tanie są te rzeczy (większość kosztuje mniej niż 50 USD), możesz rozważyć zakup więcej niż jednego rodzaju.

Dla kogoś, kto zna Microsoft Visual Studio i C #, Netduino jest doskonałym wyborem, ponieważ ma zestaw narzędzi, który już znasz.

Jeśli preferowanym środowiskiem jest Unix, może Ci się spodobać tablica taka jak Raspberry Pi, która ma się ukazać w styczniu 2012:

Co to jest Raspberry Pi? Raspberry Pi to komputer wielkości karty kredytowej, który można podłączyć do telewizora i klawiatury. To sprawny mały komputer, którego można używać do wielu czynności wykonywanych przez komputer stacjonarny, takich jak arkusze kalkulacyjne, edytor tekstu i gry. Odtwarza także filmy w wysokiej rozdzielczości. Chcemy, aby dzieci na całym świecie uczyły się programowania.

Kiedy urządzenie będzie można kupić? Mieliśmy nadzieję, że Raspberry Pi będzie dostępny do zamówienia do końca 2011 roku. Nadal spodziewamy się, że przed końcem roku będziemy sprzedawać niektóre z naszych pierwszych partii beta testów (miej oko na stronę po Bożym Narodzeniu); do głównej produkcji przejdziemy w styczniu.

Ile to będzie kosztować? Model A kosztuje 25 USD, a Model B 35 USD.

Naprawdę dobra wiadomość jest taka, że ​​dostępnych jest wiele tanich mikrokontrolerów, z których coraz więcej wychodzi.

Wreszcie jest Launchpad Texas Instruments MSP-430, który jest dostępny w cenie 4,30 USD z bezpłatną wysyłką. W tak niskiej cenie, jak możesz tego nie kupić?

JonnyBoats
źródło
4

Zacznij od Arduino, aby rozwinąć swój pomysł i stworzyć minimalny działający prototyp i po prostu nauczyć się obsługiwać podstawy, których potrzebujesz do swojego produktu (silniki, czujniki, szeregowy do komunikacji).

Później, gdy chcesz więcej funkcji (urządzenia USB, Ethernet), przejdź na układy ARM Cortex serii M. 32-bitowy ARM oznacza, że ​​są bardzo wydajne, a teraz często tańsze i mają więcej urządzeń peryferyjnych niż wyższej klasy 8 lub 16 bitów, takie jak AVR i PIC. Mbed NXP (http://mbed.org) to bardzo delikatne wprowadzenie do tej platformy, jeśli pochodzisz z Arduino.

nemik
źródło
2

Kiedy ludzie mówią, że Arduino jest „prosty do zaprogramowania”, tak naprawdę mają na myśli to, że łańcuch narzędzi po prostu działa. Działa na komputerze Mac, działa na systemie Windows i działa na systemie Linux. Podłączasz swoją tablicę, piszesz kod, ładujesz go i gotowe.

Aby zaoferować trochę anegdotyczny kontrast, ja po prostu „uaktualniłem” do STK600 firmy Atmel i ich środowiska programistycznego AVR Studio 5. Działa tylko w systemie Windows, więc musiałem zainstalować VMware i uruchomić go na komputerze Mac. Potem musiałem zainstalować wyrafinowany sterownik USB Jengo, co zajęło dzień na przeczytanie wybrednych postów na forum. Potem musiałem dowiedzieć się, dlaczego mogłem rozmawiać z płytą programistów z IDE, ale nie z kartą córka ATmega2560 dostarczoną z STK600 ... (Kabel JTAG został źle podłączony, ponieważ wykonałem ilustrowany samouczek na temat Sieć, która okazała się mieć obraz pokazujący kabel podłączony do tyłu).

Do tej pory nie napisałem wiersza kodu w AVR Studio 5, ale prawdopodobnie spędziłem z nim więcej czasu na manipulowaniu nim niż przez cały czas przy użyciu Arduino IDE. I napisałem dziesiątki szkiców Arduino.

Język, w którym programujesz, to w zasadzie C ++ z odrobiną wstępnego przetwarzania. Z twoim doświadczeniem nie będziesz miał problemów z przeszczepieniem szkiców, które chcesz później, w „pro” środowisku, jeśli zajdzie taka potrzeba. Dla mnie potrzeba pojawiła się tylko wtedy, gdy przestałem majstrować przy sprzęcie Arduino i zacząłem projektować własną płytę. YMMV, oczywiście ...

Mam nadzieję że to pomoże. :-)

Kaelin Colclasure
źródło
3
Nie chcę cię zaczepiać ... ale znów się z tobą nie zgadzam. Powodem, dla którego ludzie mówią, że Arduino jest prosty do zaprogramowania, jest to, że w zasadzie dodali warstwę abstrakcji, której inaczej byś nie dostał. Przywołujesz również C ++, co jest bardzo rzadkie w świecie osadzonym. Czasami jest to potrzebne w przypadku konkretnych projektów, ale dodaje również pewne koszty ogólne, których po prostu nie możesz mieć, gdy próbujesz zmniejszyć każdy grosz.
Kellenjb
@Kellenjb, mogę kodować C ++ prawie bez narzutu, czasami sekcje mogą mieć nawet 10%, ale wiele sekcji z narzutem 0. Ale tak, jest to rzadkie, ponieważ musisz zwracać większą uwagę na to, co robisz ze swoim językiem, ale poczekaj, to samo dotyczy C. Wcześniej widziałem, jak użytkownicy próbowali malloc () w c na osadzonych, aby uzyskać niezbyt dobre wyniki.
Kortuk
1

Arduino tworzy elastyczną platformę zejścia, zapewniającą A / D, D / A (przynajmniej PWM) wiele cyfrowych I / O, programowalną diodę LED na płycie, złącze szeregowe do USB oraz gotowe moduły dostępne dla wiele innych rodzajów sprzętu. Jeśli chcesz skorzystać z własnych możliwości uczenia się, nie potrzebujesz go. Jeśli chcesz, aby platforma uruchomiła coś dla zabawy lub gdy projektujesz tanią wersję sprzętową tego produktu, jest gotowa do działania, gdy jesteś. Są to decyzje projektowe, strategiczne i ekonomiczne, które są w pełni uzasadnione, aby podejmować je w sposób odpowiadający twoim celom. Nie ma nic „kretyńskiego” w dokonywaniu kompromisów - tak robią inżynierowie - i powinni to robić - każdego dnia.

JRobert
źródło
1

Doświadczenie Johna prawie dokładnie pasuje do mojego 15 lat temu, kiedy zrezygnowałem z nauczania informatyki (w zasadzie Programowania w Asemblerze i C) dla studentów. Uświadomiłem sobie wtedy, że nadążanie za postępami w informatyce byłoby zbyt drogie, więc moja żona zasugerowała powrót do elektroniki jako hobby, ponieważ podobało mi się bycie inżynierem elektrykiem w latach 50. Zrobiłem to, chociaż spotkałem tranzystory tylko na krótko i nigdy nie widziałem wzmacniacza operacyjnego, więc miałem wiele zachwycającej nauki. Uwielbiałem język asemblera, a kiedy Microchip Pics pojawił się w połowie lat 90., uzależniłem się od nich.

Nie mogę ich porównać z Arduino, o którym nic nie wiem, ale zaletą korzystania z Pics jest to, że konfiguracja jest tania, ponieważ Microchip dostarcza wszystkie informacje za darmo, z doskonałym IDE, i możesz nauczyć się z nich korzystać , tak jak ja, z tego, co publikują. Możesz zacząć od domowego programisty, wielu projektów w Internecie, więc rozpoczęcie od kilku żetonów Picka kosztowałoby zaledwie kilka funtów. Polecam jednak PicKit 2, który ma wiele wbudowanych funkcji ułatwiających tworzenie programów. Być może nie PicKit 3, zobacz:

http://www.eevblog.com/2009/10/21/eevblog-39-pickit-3-programmerdebugger-review/ Chociaż zostało to zaktualizowane, zobacz uwagi do tego dokumentu.

Na zdjęciach jest duża liczba książek, ale niektóre z nich są śmieciami, uważaj. Aby ułatwić rozpoczęcie, doskonałym wprowadzeniem do Pic jest:

„Projektowanie systemów wbudowanych za pomocą mikrokontrolerów PIC: zasady i aplikacje” [Książka w miękkiej okładce] Tima Wilmshursta, 22-66 £ na Amazon, która obejmuje zarówno Asemblera, jak i C. Przez jakiś czas unikałem C, ponieważ wydawało się, że zabiera to intymność ze sprzętem , który daje Asembler, ale dzięki kompilatorowi C dostarczonemu przez Microchip można również wygenerować kod Asemblera.

Aby uzyskać ogólny, dobry, techniczny (nie bojący się matematyki) zasięg nowoczesnej elektroniki, zalecam: „Practical Electronics for Inventors” 2 / E [Paperback] Paula Scherza, 19-95 funtów na Amazon.

Zapłaciłem odpowiednio 26-99 GBP i 22-99 GBP za te książki w sklepach i wcale tego nie żałuję.

Nie mogę tutaj wystarczająco dużo opisać, chętnie bym korespondował e-mailem na ten temat: [email protected] (i na wszelki wypadek jestem bardzo ostrożny w kwestii tego, co czytam, pobieram lub odpowiadam).

Harry Weston
źródło