Tecrübeli bir programcı Arduino ya da başka bir şey için mi?


11

Geçmişim:

Bir süredir yazılım yaptım ve C, C ++, Java, Ruby, Erlang, Haskell, Lua ve Python'da az çok uzmanım. Ayrıca laboratuar elektroniğinde bir ders aldım, ancak bir pompa ile kısa bir laboratuvar oluşturduktan sonra, A ve D'ye bir sinyal almak ve oradan LabView ile bir x86'ya ( programlama ortamları seçimim değil ) istiyorum ev otomasyonuna yönelik donanımlarla tekrar uğraşmak. (Ben o zaman daha iyisini yapabiliriz bu az sonra 500 $)

Soru:

Bir Arduino'da dişlerimi kesecektim, ama ne kadar çok okursam, o sistemin ana avantajı gibi hissettiriyor, programlamanın basit olmasıdır. Bu, (hala bir havya alması gereken) bir yazılımın başlaması için iyi bir yer mi yoksa bana daha uygun bir şey var mı?

(PS Paradan daha fazla zamanım var)

Yanıtlar:


4

Mikrodenetleyici değerlendirme panoları kapıdan kullanıma hazır olduğu sürece, elbette arduino ailesi var. msp430 fırlatma rampasını da 4,30 dolara düşünün. iyi talimat seti ve düşük güç / maliyet doğru yalın ile avr performans benzer. 20 $ için genellikle kullanılabilir bir arduino (35 $ - 50 $) için ödeyeceğinizden daha az olan ancak arduino 168Mhz, kayan nokta etrafında daireler çalıştıran stm32f4 keşfini (stm32 değer satırı keşfi veya stm8 ailesi ile karıştırılmamalıdır) alabilirsiniz. Arduino fiyat aralığının üst ucunda, muhtemelen arduino sandbox deneyimine en yakın olan başka bir kol olan mbed (mbed.org) var.

Bir standbox içinde kalmak ve sadece api arama yapmak istiyorsanız arduino muhtemelen yaşamak istediğiniz yerde, daha fazla performans için mega var veya kol tabanlı ama arduino sandbox deneyimini sağlamaya çalışan leaflabs akçaağaç ile gitmek.

Neler olup bittiğiyle ilgili biraz daha fazla sorumluluk ve bilgi alırsanız, çok daha fazla performans elde edebilir, paranız için patlama yapabilir, vb. Üç platformun (avr, msp, arm / thumb) ve birden çok satıcının (avr ve msp kilitli olduğunu, ancak kolun farklı çevre birimleri ve G / Ç olan herkes tarafından satıldığını) öneririm. Örneğin, gpio hatlarında çekme işlemi olmayan ve başka bir çip veya satıcının çip üzerinde benzer bir fiyat / performans noktasında sağladığı harici bileşenleri kullanmanız gerekebilir. Aynı şekilde, bir seri bağlantı noktasını veya spi veriyolunu vurarak biraz da hoşunuza gidebilir, ancak aynı para, güç, boyut vb.

başka bir şey değilse, bir programcı ve sanal alanın dışında neler olup bittiğiyle ilgili daha fazla bilgi edinmek için hobi elektroniğine girmek isteyen biri olarak sizin yararınıza olacaktır. Bu hobi elektronik dünyasına girmenin bir yolu olarak arduino, bir işletim sistemindeki uygulama programlamasından çok rahat bir geçiş. Sparkfun şimdi seri arayüzü ve bazı periperhals içeren bazı kitleri var bir lilypad kiti (bir arduino platformu) ve belki bir pro kiti, her ikisi de önemliyse arduino kalkan form faktörü değildir. sparkfun perakende kutulu ve arduino, uno, vb birçok diğer lezzetleri satıyor (yukarıda belirtilen st ve msp panoları ti veya st web sitesinde başlamalı veya github.com/dwelch67'ye gitmeliyim ve örnekler).


8

Ayrıca her geçen gün yazılım yapan biriyim. Yaklaşık on yıl önce Parallax'tan BASIC pulları ile başladım ve uzun bir aradan sonra yakın zamanda gömülü projelere geri döndüm. Başlangıçta Arduino'ya ve farklı parçalarına baktım ve sadece Arduino tahtasının fiyat etiketini geçip ATMega168'leri alıp tekrar başlayabileceğimi fark ettim. Bu çoğunlukla işe yaradı, ancak temel montajı bertaraf edemediğim için önceden oluşturulmuş bir tahtaya sahip olmanın güzel olacağı sorunlara sık sık rastladım.

Sonunda bir Arduino sipariş ettim ve tahta ve kütüphaneler hakkında her şeyi seviyorum. Ben "IDE" hayranı değilim, bu yüzden 'Harici Editör Kullan' tıklayın ve IDE sadece derleme ve yazılımı panoya yanıp sönen kullanmak. Genellikle Arduino kurulu ile bir proje veya fikir başlatıyorum ve daha sonra bunu bir mega çipin içine yerleştiriyorum. Bu, bir proje için sadece gerekli parçaları kullanarak maliyetleri düşürmeye yardımcı olur, ancak yine de hızlı bir şekilde bir prototip üretmeme izin veriyor.

İyi şanslar!


6

Arduino, bir mikro denetleyiciyi programlamaya harika bir giriş niteliğindedir.

PC için yazılım yazma ile mikrodenetleyici için ürün yazılımı yazma arasında büyük bir fark vardır.

Arduino, belirli çip tuhaflıkları ve benzeri şeylerle uğraşmak zorunda kalmadan başınızı çevre birimleri vb.İle arayüz oluşturmak için iyi bir başlangıç ​​noktası olacaktır.

Ama dediğim gibi, bu bir giriş.

Arduino ile başlayın, sonra daha büyük ve daha iyi şeylere geçin.

PIC mikrodenetleyiciler ailesini oldukça kullanıyorum, ancak fikirleri denemek ve işleri hızlı bir şekilde test etmek için kullandığım güvenilir li'l Arduino'm hala var.


6

“Arduino” birkaç şey içerdiğinden, bunlara ayrıca bakmak yararlı olabilir:

  • Donanım tarafında, Arduino uyumlu bir cihaz temelde belirli bir önyükleyiciye sahip bir ATMega mikrodenetleyicisidir. Genellikle hazır bir Arduino uyumlu kart, USB veya seri port arabirimi, voltaj regülatörü, pimlere kolay erişim için pim başlıkları vb.Gibi diğer destek elektroniklerini de içerir. USB işlevlerini ve önceden programlanmış önyükleyici ile birlikte, yazılımınızı yüklemek için ayrı bir programcı satın alma ihtiyacınızı ortadan kaldırır. Yani, evet, Arduino (ve uyumlu klonlar) prototipleme sırasında donanım cihazları olarak kullanışlıdır; son yapı için sadece ihtiyacınız olan parçalarla kendiniz inşa etmek isteyebilirsiniz, bu yüzden her projeye bir tam Arduino koymanız gerekmez.

  • Yazılım tarafında, Arduino kütüphanesi herhangi bir programlama kütüphanesi gibidir ve kullanışlılığı ihtiyaçlarınıza bağlıdır. Şahsen ben hızlı prototipleme (örneğin seri port işlevselliği) için bazen yararlı buluyorum, ancak deneyimli bir programcı olarak ben basitleştirmeler (özellikle pin numaralandırma) birçok sevmiyorum. Her durumda, bir Arduino cihazı için programlayıp / veya Arduino IDE'yi kullansanız bile, Arduino kütüphanesi yerine veya ona ek olarak orijinal AVR kütüphanelerini kolayca kullanabilirsiniz. Bu nedenle, özellikle prototip oluştururken yararlı bulduğunuz Arduino kitaplıklarını kullanın, ancak devam ederken temel AVR'yi öğrenin (Arduino kaynakları ve ATMega veri sayfasına bakın).

  • Son olarak, Arduino IDE, yazılımınızı gerçek cihaza yüklemek için basit bir editör, seri port konsolu, "make" benzeri bir yapı sistemi (kullanıcıdan gizlenmiş) ve (ön uç) araçlara sahip grafiksel programlama ortamıdır . Şahsen IDE'den nefret ediyorum ve asla kullanmıyorum, komut satırında çalışmayı tercih ediyorum, ama açıkçası bu sadece kişisel tercih meselesi.


1
Bu canavarlığa nasıl IDE diyebileceklerini bilmiyorum. Bu en korkunç parçası [küfür silinmiş] akla gelebilecek. Anjuta, Arduino'nun (çok değil) IDE'sinin yaptığı gibi neredeyse benim için her şeyi yapmaya ayarladım.
Majenko

4

Sorunuz düz bir cevap için çok açık uçlu, bu yüzden yapabileceğimiz tek şey size ödünç vermek.

Adruino, kitleler için dilimlenmiş şeker kaplı bir mikrodenetleyicidir. Temel şeyleri hızlı bir şekilde halletmek için en az şey öğrenmek zorunda kalacak şekilde optimize edilmiştir.

Bir arduino'nun kalbinde, doğrudan da kullanabileceğiniz sıradan bir mikrodenetleyici bulunur. Avantajı, mikrounuzu tam olarak yapmak istediğiniz şey için seçebilmeniz, başkasıyla siz ve mikro arasında ne yapmanız gerektiği hakkında fikrinizin olmaması ve çıplak mikro'nun yapabildiği her şeyi yapabilmenizdir. arduino soyutlama ile ortaya çok daha fazla. Dezavantajı, aslında bir şeyler öğrenmek zorunda kalacaksınız, birkaç 100 sayfalık veri sayfasını okumak sadece bir başlangıç ​​ve anında tatmin olmayacaksınız.

Sizin için neyin daha iyi olduğunu sadece siz söyleyebilirsiniz. İç moronunuzu kucaklamak ve sonsuza dek "ha?", "Ne?" Ve "Ah bu çok sevimli!" elektronik şeylere? Yoksa çok fazla sorun ve beladan sonra tek bir yanıp sönen LED ile ortaya çıkmak için uzun karanlık yolda ilerlemeyi tercih eder misiniz? Sadece arabayı sürmek mi yoksa motorun nasıl çalıştığını öğrenmek istiyor musunuz, böylece maksimum performans elde edip kendiniz ayarlayabiliyor musunuz?


1
Olin, sen eski okulsun! Bunu bir iltifat olarak kesinlikle kastediyorum ... Ama sana bu konuda saygıyla katılmıyorum. Kötü tasarlanmış bir işletim sisteminde vasat tasarlanmış bir yazılımla uğraşmak, elektronik anlayışımı sıfırladı. Aslında benim gibi bilgili insanlardan faydalı şeyler öğrenebileceğim günler geçirdi. "Yaşasın Arduino!" Diyorum.
Kaelin Colclasure

2
@KaelinColclasure Yorumunuz benim için kafa karıştırıcı. Kötü yazılımlar ve işletim sistemleriyle sorun yaşıyorsunuz, ancak Olin buna hiç değinmiyor. Herhangi bir şey varsa, arduino'nun sizin için ne yaptığını düşünebilirsiniz, bir işletim sisteminin bir soyutlama katmanı gibi bir soyutlama katmanı. Bir arduino kullanmayı öğrenmek, daha iyi bir mühendis olmanıza yardımcı olmak için çok az şey yapar, çünkü ek yük gerekli olmayan ekstra maliyetlerle sonuçlanır. Bununla birlikte, Arduino'nun harika bir platform olduğunu düşünüyorum, ancak gömülü elektronik dünyasını gerçekten anlamak için bir yedek olarak düşünülmemelidir.
Kellenjb

Yay araba analojileri! Olin, birçok insan için bu, elektronların azgın cesaretini öğrenmek ve öğrenmek ve bir mühendis olmak için ortaya çıkmakla ilgili değil. Birçok insan sadece hedeflerine ulaşmalarını ve problemlerini çözmelerini sağlayan bir araç seçmek istiyor. Elektroniği öğrenmek birçok durumda bir amaç için bir araçtır ve sonun kendisi değildir. Sizinle aynı nedenlerle herkes bu oyunda değil.
nemik

2
Evet? Peki "iç moronunu kucakla" hakkında ne konuşur? Hadi. Real Man ™ gibi kendi işletim sisteminizi yazmak yerine Windows veya Linux veya OS X çalıştıran iç moronunuzu kucaklıyor musunuz? Bunlar kitleler için dilimlenmiş şeker kaplı işletim sistemleridir.
nemik

1
@nemik: İç moronunuzu kucaklamak bir şakaydı, tıpkı uzun karanlık yoldan aşağı inmek gibi ... Elbette her ikisinde de bazı gerçekler var.
Olin Lathrop

4

Bir programcı olarak, birçok insan tarafından kullanılan bir dilde programlamayı tercih ederim, bu şekilde öğrenmeme yardımcı olacak çok sayıda kitap, makale, akran vb.

Tek kartlı bilgisayar dünyasında Arduino, en büyük destekle en popüler eller aşağı. İlk mikrobilgisayarınız için mükemmel bir seçimdir.

Bu şeylerin ne kadar ucuz olduğu düşünüldüğünde (çoğu 50 $ 'dan azdır), birden fazla tür almayı düşünebilirsiniz.

Microsoft Visual Studio ve C # ile tanışan biri için Netduino , zaten bileceğiniz bir araç zincirine sahip olduğu için mükemmel bir seçimdir.

Tercih ettiğiniz ortam Unix ise, Raspberry Pi gibi Ocak 2012'de piyasaya sürülecek bir tahta isteyebilirsiniz :

Raspberry Pi nedir? Raspberry Pi, TV'nize ve klavyenize takılan kredi kartı boyutunda bir bilgisayardır. Bu, e-tablolar, kelime işlemci ve oyunlar gibi masaüstü bilgisayarınızın yaptığı birçok şey için kullanılabilen, yetenekli küçük bir bilgisayardır. Ayrıca yüksek tanımlı video oynatır. Programlamayı öğrenmek için tüm dünyadaki çocuklar tarafından kullanıldığını görmek istiyoruz.

Cihaz ne zaman satın alınabilecek? Raspberry Pi'nin 2011 yılı sonuna kadar siparişe sunulmasını umuyorduk. Yine de ilk beta kart grubumuzdan bazılarını yıl sonundan önce açık artırmayı beklemekteyiz (Noel'den sonra sitede bir göz atın); Ocak ayında ana üretime geçeceğiz.

Kaça mal olacak? Model A'nın fiyatı 25 dolar ve Modelin fiyatı 35 dolar.

Gerçekten iyi haber, her zaman daha fazla çıkan düşük maliyetli mikro denetleyicilerin çok olmasıdır.

Sonunda ücretsiz kargo ile 4,30 $ için kullanılabilir Texas Instruments MSP-430 Launchpad var. O kadar ucuz bir fiyata, nasıl con satın almıyorsunuz?


4

Fikrinizi ortaya çıkarmak ve minimal bir çalışma prototipi yapmak için Arduino ile başlayın ve sadece ürününüz için ihtiyacınız olan temel bilgilerle (motorlar, sensörler, iletişim için seri) arayüz oluşturmayı öğrenin.

Daha sonra daha fazla işlevsellik (USB aygıtları, Ethernet) istediğiniz gibi ARM Cortex M serisi yongalarına geçin. 32 bit ARM, AVR'ler ve PIC'ler gibi üst düzey 8 veya 16 bit yongalardan çok güçlü ve şimdi daha ucuz ve daha fazla çevre birimine sahip oldukları anlamına gelir. NXP'nin mbed'i (http://mbed.org), Arduino'dan geliyorsanız bu platforma çok nazik bir giriş.


2

İnsanlar Arduino'nun "programlaması kolay" olduğunu söylediklerinde, aslında kastettikleri şey, sadece temel olarak çalışıyor. Bir Mac üzerinde çalışır, Windows üzerinde çalışır ve Linux üzerinde çalışır. Tahtanızı takarsınız, kodunuzu yazarsınız, yüklersiniz ve gider.

Biraz anekdot kontrast sunmak için kendimi Atmel'in STK600'üne ve AVR Studio 5 geliştirme ortamına "yükselttim". Sadece Windows üzerinde çalışıyor, bu yüzden Mac bilgisayarımda VMware'i kurup çalıştırmam gerekiyordu. Sonra titiz forum mesajlarını okumak bir gün sürdü titiz Jengo USB sürücüsünü yüklü almak zorunda kaldı. Sonra neden IDE'den dev kartla konuşabileceğimi bulmak zorunda kaldım, ancak STK600 ile birlikte gelen ATmega2560 kız kartıyla değil ... (JTAG kablosu yanlış takıldı, çünkü Kablonun geriye doğru bağlandığını gösteren bir resim olduğu ortaya çıkan web.)

Şimdiye kadar AVR Studio 5 ile bir kod satırı yazmadım, ancak muhtemelen Arduino IDE'yi kullanarak toplam zamanımdan daha fazla zaman harcadım. Ve onlarca Arduino eskizini yazdım.

Programladığınız dil temel olarak küçük bir ön işleme sahip C ++. Arka planınızla, ihtiyaç duyulması halinde daha sonra "profesyonel" bir ortama istediğiniz eskizlerin nasıl nakledileceğini bulmakta sıfır sorun yaşayacaksınız. Benim için ihtiyaç, Arduino donanımıyla uğraşmanın ötesine geçti ve kendi kartımı tasarlamaya başladığımda ortaya çıktı. YMMV, elbette ...

Bu yardımcı olur umarım. :-)


3
Seni seçmemek ... ama sana tekrar katılmıyorum. İnsanların bir Arduino'nun programlamak için basit olduğunu söylemelerinin nedeni, aslında başka türlü alamayacağınız bir soyutlama katmanı eklemeleridir. Ayrıca C ++ 'ı getirirsiniz, bu gömülü dünyada görmek çok nadirdir. Bazen belirli projeler için gereklidir, ancak her kuruşu kesmeye çalışırken sahip olamayacağınız bazı ek yükler de ekler.
Kellenjb

@Kellenjb, neredeyse hiç ek yükü olmadan C ++ kodlayabilirim, bazen bölümler% 10'a kadar olabilir, ancak 0 ek yükü olan birçok bölüm olabilir. Ama evet, bu nadirdir, çünkü dilinizle ne yaptığınıza daha fazla dikkat etmek zorundasınız, ancak bekleyin, aynı C'de de geçerlidir.
Kortuk

1

Arduino, A / D, D / A (en azından PWM gibi) çok sayıda dijital I / O, kart üzerinde programlanabilir bir LED, seri-USB ve hazır modüller sağlayan esnek bir adım adım platform oluşturur. diğer birçok donanım türü. Öğrenme deneyimi için kendinize ait olmak istiyorsanız, buna ihtiyacınız yoktur. Bir platformun sadece eğlenmek için veya bir şeyin düşük maliyetli donanım sürümünü tasarlarken bir şeyler hazırlayıp çalıştırmasını istiyorsanız, o zaman gitmeye hazırsınız. Bunlar, hedeflerinize ne şekilde olursa olsun mükemmel şekilde geçerli olan tasarım, stratejik ve ekonomik kararlardır. Ödünleşmek konusunda "moronik" hiçbir şey yoktur - mühendisler her gün bunu yapar ve yapmaları gerekir.


1

John'un deneyimi, 15 yıl önce bilgisayar bilimi (temel olarak Meclis Dili Programlama ve C) öğretiminden lisans öğrencilerine emekli olduğumda neredeyse benimkiyle eşleşiyor. Sonra bilişimdeki gelişmelere ayak uydurmanın aşırı pahalı olacağını fark ettim, bu yüzden eşim 1950'lerde Elektrik Mühendisi olmaktan hoşlandığım için bir hobi olarak Elektronik'e geri dönmeyi önerdi. Transistörlerle kısa bir süre tanışmış ve hiç bir op-amp görmemiş olmama rağmen bunu yaptım, bu yüzden yapacak çok keyifli bir öğrenim gördüm. Meclis Dili sevgimi korudum ve 90'ların ortasında Microchip Pics ortaya çıktığında onlara bağlandım.

Onları hiçbir şey bilmediğim Arduino ile karşılaştıramıyorum, ancak Pics'i kullanmanın bir avantajı, Microchip'in tüm bilgileri ücretsiz, parlak bir IDE ile sağlaması ve bunları kullanmayı öğrenebilmeniz için kurulumun ucuz olmasıdır. benim yaptığım gibi, yayınladıklarından. Ev yapımı bir Programcı ile başlayabilirsiniz, internette çok sayıda tasarım, bu yüzden başlamak için birkaç Pic çip için sadece birkaç kiloya mal olacak. Ancak, program geliştirmeyi kolaylaştırmak için birçok yerleşik özelliğe sahip PicKit 2'yi öneriyorum. Belki de PicKit 3 değil, bkz:

http://www.eevblog.com/2009/10/21/eevblog-39-pickit-3-programmerdebugger-review/ Bu güncellenmiş olmasına rağmen, bu referanstaki notlara bakın.

Pics hakkında çok sayıda kitap var, ama bazıları çöp, sakının. Kolay bir başlangıç ​​için Pic'e mükemmel bir giriş:

Tim Wilmshurst tarafından "Gömülü Sistemler Tasarlamak: Prensipler ve Uygulamalar" [Ciltsiz kitap] Tim Wilmshurst, Amazon'da 22-66 £ ve hem Assembler hem de C'yi içeriyor. Assembler verir, ancak Microchip tarafından sağlanan C derleyicisi ile üretilen Assembler kodunu da görebilirsiniz.

Genel, iyi, teknik (Maths'ı koymaktan korkmuyorum) modern elektronik kapsamı için tavsiye ederim: Amazon'da 19-95 £ Paul Scherz tarafından "Pratik Mucitler için Pratik Elektronik" 2 / E [Ciltsiz].

Dükkanlardaki bu kitaplar için sırasıyla 26-99 £ ve 22-99 £ ödedim ve hiç pişman değilim.

Burada yeterince ele alamıyorum, bu konuda e-posta ile yazışmaktan memnuniyet duyarım: 417weston@gmail.com (ve her ihtimale karşı okuduğum veya indirdiğim veya cevapladığım konusunda çok dikkatliyım.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.