Czy powinienem kupić Netduino lub Arduino?


17

Zastanawiam się nad zakupem NetDuino do niektórych domowych projektów hobby.

Czy ktoś z was z niego korzystał i jakie było jego doświadczenie?

Czy zamiast tego powinienem spojrzeć na Arduino lub FreeDuino (czy coś zupełnie innego)?

Postanowiłem trzymać się NetDuino ze względu na moją znajomość języka C #, ale nie jest to wymagane.

Dzięki

PS. Nie jestem pewien, czy należy do wiki społeczności, czy nie (doceniamy wskazówki).


5
Co chcesz zrobić z tablicą? To wpłynie na twój wybór.
Toby Jaffey,

3
Mikrokontroler ARM7 na NetDuino i 8-bitowy AVR na Arduino należą do zupełnie innej klasy. To tak, jakbyś pytał, czy kupić serwer, czy netbook. Jednak spowalniasz serwer, uruchamiając nieodpowiednią maszynę wirtualną - wydajność będzie podobna i używasz obu narzędzi do tego samego zadania. Czy naprawdę potrzebujesz tej warstwy abstrakcji?
Kevin Vermeer

@reemrevnivek - "źle dopasowany" uh ... to jest warstwa abstrakcji, ale na pewno nie jest źle dopasowana (i naprawdę nie jest to vm).
Connor Wolf,

2
@Fake Name Wygląda na to, że netduino (TinyCLR) nie ma kompilatora JIT. Jest to więc VM / interpreter. tinyclr.com/faq/#13
Toby Jaffey

1
Maszyny wirtualne są tym, na czym działają Smalltalk, Java, Python itp. Oznacza dowolną abstrakcyjną maszynę, na której działa zestaw instrukcji inny niż „goły metal”. Nie tylko zwirtualizowany komputer.
Joe Koberg,

Odpowiedzi:


16

Uwielbiam C # i uważam, że korzyści płynące z produktywności w C # z Visual Studio są bardzo silnym czynnikiem na korzyść Netduino. Nie kupowałbym puchatek Netduino, ponieważ „C # nie jest dla mikrokontrolerów / środowisk osadzonych”, jak wskazują inne odpowiedzi tutaj.

Za pomocą Netduino możesz tworzyć wspaniałe projekty i dowiedzieć się wiele na temat podłączania różnych fizycznych urządzeń wejściowych i wyjściowych, podobnie jak Arduino lub „bare metal” i bezpośrednie zarządzanie MCU AVR, PIC lub innych mikrokontrolerów.

Powiedziawszy to, trzymam się Arduino z następujących powodów:

  • Lepsze wsparcie społeczności. Arduino ma po prostu znacznie więcej próbek, przykładów i większą społeczność, z której można czerpać.
  • Netduino nie ma historii wychodzącej poza drogie podejście do tworzenia zestawów / prototypów. Zamierzasz wdrożyć interaktywną wystawę sztuki wymagającą kilkudziesięciu mikrokontrolerów obsługujących Twój kod? Przygotuj się na wydanie 35 USD za Netduinos. Z Arduino możesz prototypować na Arduino, a następnie zaimplementować go na mikroprocesorze AVR bez systemu MCU za mniej niż 10 USD za sztukę.

Powiedziałbym więc, że jeśli twoje umiejętności C są zakurzone lub nieistniejące, kochasz C # i Visual Studio, i po prostu chcesz majstrować przy kilku projektach hobbystycznych, które nie będą musiały być skalowane do miejsca, w którym koszt staje się większym problemem, przejdź do Netduino.

Jeśli czujesz się komfortowo w C lub radzisz sobie z nim przy pomocy próbek kodu i społeczności, i chcesz być bliżej metalu i patrzeć, jak w końcu odejść od „prototypowego” podejścia Netduino i Arduino, idź Arduino na początek.


1
Wiem, że to trochę stara odpowiedź, ale chciałem dodać, że ponieważ Netduino jest w pełni open source (w tym sprzętem), możesz kupić uC od każdego i sflashować na niego oprogramowanie układowe Netduino. Możesz więc użyć platformy Netduino w produkcie produkcyjnym.
Unkwntech,

„Twoja wiedza na temat C # jest prawie bezużyteczna na wbudowanej platformie, więc nie kładź na tym zbytniej wagi”. - Co za głupia rzecz do powiedzenia. Netduino jest osadzone, kołysze się i jest C # ...
Jonesome Reinstate Monica

11

Twoja wiedza na temat C # jest prawie bezużyteczna na wbudowanej platformie, więc nie kładź na tym zbytniej wagi.

Wybrałbym Arduino lub jeden z klonów, nie dlatego, że .Net jest diabłem, ale dlatego, że tego używają wszyscy inni, więc będziesz miał dużo łatwiej uzyskać pomoc i przeszukiwać kod ludzi.

Kiedy już zmoczysz stopy, na wszelki wypadek rozgałęźnij się i spróbuj różnych rzeczy.


Czy opowiadasz się za językiem Wiring używanym w Arduino, czy też wymykasz się kodowi C w avrfreaks i przyczyniasz się do tego ?
Kevin Vermeer

1
@reemrevnivek Arduino jest po prostu C ++ z niektórymi bibliotekami. Nie klasyfikowałbym tego jako „języka” - to C ++ z dołączonym nagłówkiem i stopką
Toby Jaffey

Ups, mam na myśli okablowanie.
Kevin Vermeer

Uważam to za nieco dziwne, że prawie wezmę „Gdy już zmoczysz stopy, jak najbardziej rozgałęzią się” jako sugestię, aby zacząć od Netduino, ponieważ element programowania powinien być o wiele mniejszym problemem - pozwalając rozwijać potrzebne „inne” umiejętności.
Murph

1
Zły komentarz, dren.dk jest po prostu zły. Ja i wielu innych używam netduino i C # przez cały dzień.
Jonesome przywraca Monikę

7

Obecnie mam do dyspozycji Arduino, mbed, a na koniec Netduino do celów programistycznych / hobbystycznych. Nigdy nie lubiłem pracować z Arduino, być może dlatego, że edytor nie jest zbyt dobry i zdecydowanie jestem rozpieszczany jako programista C #. Kiedy otrzymałem mój mbed, podobało mi się znacznie lepsze opracowywanie, ale debugowanie jest nadal bolesne, ponieważ musisz użyć instrukcji print, aby dowiedzieć się, co się dzieje.

Podczas opracowywania produktu lub po prostu wkręcania się, znaczna większość czasu na początku spędzana jest na debugowaniu ... a gdy debugujesz, chcesz mieć punkty przerwania. Bardzo trudno mi wrócić do sprzętu osadzonego, który nie oferuje żadnych punktów przerwania.

Nie mam jeszcze doświadczenia z JTAG, ale każda mikro, które widziałem do tej pory (oprócz modułów RabbitCore) wymaga, aby umożliwiało debugowanie za pomocą punktów przerwania. Wyobraź sobie moje zdziwienie, kiedy podłączyłem dziś Netduino i byłem w stanie przejść przez mój kod w VS2010! Byłem z tego bardzo zadowolony.

Osobiście nie martwiłbym się rozmiarem powierzchni, złem platformy .NET i Microsoft itp. Chciałbym tylko móc debugować szybko i skutecznie, więc mogę po prostu załatwić sprawę .



@kurtnelle brzmi, jakbyś zalecał, aby nie używać .NET MF?
Dave

@Dave, tak jestem. Jest tak tylko dlatego, że próbowałem starego 8-bitowego mikrokontrolera opartego na c i bardzo mało zrobiłem przy dużym wysiłku.

@kurtnelle, ale z .NET MF właściwie robię dużo przy bardzo małym wysiłku.
Dave

2
@Dave, przepraszam za wcześniejszą odpowiedź dyslektyczną; Jestem zwolennikiem .NET MF

5

Jako użytkownik BasicStamp od prawie 20 lat i użytkownik NetDuino tylko przez 2 tygodnie (nigdy nie korzystałem z Arduino), powiedziałbym, że NetDuino to świetna platforma. Dwie główne cechy, które lubię: łatwość programowania (i punkty przerwania!) W VisualStudio oraz wysokiej rozdzielczości ADC na płycie to kluczowe powody. Kilka tarcz Arduino, które wypróbowałem ze SparkFun, doskonale współpracowało z NetDuino.


4

Osobiście nie jestem fanem C # lub .NET. Jestem luddite C. Tak więc mój wybór sprowadza się do tego, że ma funkcje sprzętowe, których chcę (flash, RAM, szybkość zegara, liczbę ADC, liczbę timerów itp.).

To powiedziawszy, mogę sobie wyobrazić, że C # / .NET jest przydatny do szybkiego prototypowania:

  • Obsługa ciągów będzie prawdopodobnie znacznie prostsza
  • Serializacja RPC i obiektów jest prawdopodobnie łatwa. Podejrzewam, że możesz po prostu przepchnąć obiekty C # przez łącze szeregowe. RPC prawdopodobnie „po prostu działa”
  • Przenośność - .NET jest maszyną wirtualną, więc kod powinien działać na innych płytach, a nawet na komputerach PC
  • Odśmiecanie upraszcza wiele algorytmów do implementacji

Oczywiście wszystko to kosztuje:

  • Ślad kodu jest większy (szczególnie gdy weźmiesz pod uwagę biblioteki standardowe)
  • Zużycie pamięci RAM jest wyższe (wszystko jest obiektem, czy wszystko jest wpisane?)
  • Śmieciarka prawdopodobnie wtrąca się w wydajność w czasie rzeczywistym
  • Jeśli funkcja sprzętowa nie jest obsługiwana przez biblioteki .NET, nie możesz jej użyć (chyba że sam ją zaimplementujesz, do czego potrzebujesz C / C ++, zobacz komentarze)

A przede wszystkim, wykorzystując swoje umiejętności C # na platformie osadzonej, tak naprawdę nie uczysz się niczego na temat urządzeń osadzonych.

Tak, załatwi sprawę - ale gdzie jest w tym zabawa?


Zastanawiam się, jak trudno jest łatać biblioteki .NET używane w NetDuino za pomocą nowej funkcji. Wygląda na to, że używają C ++ do zbudowania swojego zestawu .NET SDK, znacznie w SecretLabs.NETMF.Hardware / Stubs - pliki źródłowe . Westchnienie.
Kevin Vermeer

@reemrevnivek Nie mój pomysł na zabawę. Jeśli łatasz środowisko uruchomieniowe, równie dobrze możesz zacząć od C / C ++
Toby Jaffey,

1
@Joby - Jestem luddytą C jak ty, ale chciałem tylko podkreślić, że było to możliwe - Powiedziałeś „Jeśli funkcja sprzętowa nie jest obsługiwana przez biblioteki .NET, nie możesz jej użyć”, co nie jest do końca prawdą.
Kevin Vermeer

1
Czy rzeczywiście widziałeś jakieś testy? Trudno mi sobie wyobrazić, że 16-bitowy 8-MHz działa z tą samą prędkością, co 60-MHz 32-bitowy mikro. Zwłaszcza, że ​​biblioteki Arduino również spowalniają działanie - żadna z nich nie jest tak naprawdę zoptymalizowana pod kątem szybkości. Ma także obiekty (jeśli nie tyle, ile są używane w .NET). Czy różni się znacznie od Arduino? Jeśli nie ma biblioteki Arduino obsługującej tę funkcję ... musisz ją zaimplementować (wywołując bezpośrednio rejestry sprzętowe itp.)
davr

@davr Edytowana odpowiedź
Toby Jaffey

3

Znalazłem mbed jest cudownym zamiennikiem Arduino.

Biblioteka oprogramowania jest bardziej zorientowana na C ++, wraz z całym składniowym cukrem przeciążenia operatora przypisania. Dodatkowo system jest skonfigurowany tak, że użytkownicy mogą publikować i dokumentować biblioteki kodów, które można następnie łatwo wyszukiwać i importować do projektów.

Inną dobrą cechą jest możliwość traktowania urządzenia jako pamięci USB i po prostu umieszczania .binplików bezpośrednio na dysku.

Niestety, IDE jest porównywalne z arduino. Jest także online . Jest to zarówno bardzo dobre (można go używać na dowolnym komputerze, nie wymaga instalacji), jak i bardzo złe (nie można go łatwo przeprogramować bez połączenia z Internetem).

Koszt płyty wynosi 60 USD, ale mają one program sponsorski, w ramach którego przekażą deski na ciekawe projekty, pod warunkiem udokumentowania postępów i upublicznienia kodu źródłowego.


Podoba mi się pomysł sponsorowania - muszę się tym zająć.
Dave

2

Jestem przede wszystkim programistą C #. Kupiłem Arduino zamiast Netduino ze względu na dostępność kodu źródłowego. Nie byłoby łatwo zintegrować Netduino z elektronicznymi klockami Arduino, ponieważ będziesz musiał przepisać niektóre próbki od zera.


2

Czytając „C # nie nadaje się do wbudowanych platform”, pamiętaj, że ludzie w wieku powyżej pewnego wieku już słyszeli, że przynajmniej raz mówili o „C”, a potem znowu o C ++ za życia…

Oczywiście jest to monumentalnie „marnotrawstwo” podstawowych możliwości procesora, ale zdolność do uruchamiania bezczynnej pętli 1000 razy szybciej niż potrzebujesz, a nie 10 razy szybciej niż nigdy nie uczyniłeś nikogo bogatym.


Bezczynne pętle nie są istotne. Istnieje kilka zastosowań MCU, w których liczą się cykle, na przykład przechwytywanie lub generowanie sygnału wideo, tworzenie własnego oscyloskopu, analiza FFT sygnału wejściowego w czasie rzeczywistym i wiele innych. Możesz dla nich zapomnieć o C #. Z drugiej strony, jeśli twoje wymagania dotyczą bardziej tworzenia „oprogramowania typu PC tylko w małym pakiecie”, wówczas C # i .NET MF wcale nie są złym wyborem ...
avra

2
... Dla takiego doświadczenia wolałbym wybrać wbudowaną kartę ARM opartą na systemie Linux, ale jest to temat na inną dyskusję. Chodzi o to, że dla kogoś, kto właśnie wkracza do świata osadzonego w tle C #, .NET MF wcale nie jest złym pierwszym krokiem.
avra

1

Jeśli chcesz poczuć goły metal i na przykład być w stanie bezpośrednio generować lub przechwytywać sygnał wideo, tutaj liczy się każdy cykl, a AVR / Arduino pozwoli ci to zrobić. Jeśli chcesz wyższego poziomu abstrakcji, wyższego poziomu programowania i komfortu debugowania, śmieciarza i możesz żyć z faktem, że podobnie jak w Windows nie kontrolujesz wszystkiego, wybierz NetDuino lub FEZ Domino. Ponieważ oba mają ARM w swoim sercu, założę się, że w razie potrzeby możesz zabić .NET MF na płycie i flashować goły kod ARM GCC bezpośrednio z jakiegoś środowiska Eclipse, takiego jak IDE, za pomocą małego debuggera JTAG. Zbadaj trochę. Problemem może być to, że jeśli brakuje nagłówka JTAG, musisz wykonać lutowanie.


C i C ++ nie są wystarczająco dobre dla wideo. Do tego będziesz potrzebować Verilog :)

Istnieje co najmniej 10 projektów, które tworzą wideo za pomocą samego oprogramowania. Większość z nich jest czarno-biała lub szara, ale są nawet kolorowe i systemy gier z wideo wygenerowanym przez oprogramowanie AVR. Istnieją również projekty OSD. Istnieje również kilka przykładów przechwytywania klatek wideo w niskiej rozdzielczości za pomocą AVR bez FPGA. Wystarczy google wokół ...
avra

Kiedy mówię wideo, mam na myśli 24-bitowy kolor 1080p. Czy może to zrobić wbudowany C ++?

0

Po bardzo długiej przerwie w elektronice i programowaniu wróciłem do niego z powodu projektu, który jeden z moich synów realizuje na uniwersytecie. Nauczyłem się elektroniki, gdy lampy były normą, i programowania za pomocą przełączników (ustawianie adresu, ustawianie danych, ładowanie, przechowywanie, binarnie) i kart dziurkowanych. Z biegiem lat nauczyłem się i wykorzystywałem każdy postęp w języku elektronicznym i programistycznym, który wymagał wiele skoncentrowanego wysiłku i czasu. W związku z tym jestem bardzo wdzięczny za postępy w mikrokontrolerach i ich niewiarygodnie niską cenę, w tym płyty programistyczne, takie jak Arduino, Netduino itp. Argumenty dotyczące Arduino kontra Netduino itp. Przypominają mi takie bitwy Microsoft vs Apple, takie jak jako linia poleceń vs GUI. Nie ma znaczenia, która platforma, język programowania itp. Jest używany, o ile jest odpowiedni do wyniku.


-1

Jeśli .net MF dał biblioteki, które są zdolne do tego, co potrafi czysty kod maszynowy / metalowy, ... to jedyna abstrakcja (. Net MF) staje się dobra. Oprócz zajmowania większej powierzchni i prowadzenia GC (co powinno uczynić go wydajnym?)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.