Saya mengerti Arduino: sekarang apa?

18

Baiklah, saya sudah cukup bermain-main dengan Arduino sehingga saya merasa cukup nyaman dengannya. Apa pun yang dilakukan sekarang adalah lebih mempelajari elektronik daripada sisi Arduino-nya.

Apa langkah selanjutnya untuk pembelajaran saya? Arduino adalah gabungan programmer / pengontrol, jadi mungkin saya perlu memutus tautan itu dan mulai bekerja dengan chip pengontrol terpisah dari pengontrol, saya kira? Adakah yang bisa mengarahkan saya ke arah yang benar?

Chris B. Behrens
sumber
Apakah Anda memiliki tujuan atau proyek tertentu dalam pikiran?
Saya setuju. Bagi saya ini semua tentang menyelesaikan hal-hal tertentu. Arduino hanyalah alat seperti yang lainnya.
Dirk
Apa yang saya kerjakan sekarang adalah array LED multipleks. Tidak terlalu sulit di Arduino, tetapi saya ingin menyingkirkan roda pelatihan. Maksudku, pada akhirnya, ada chip ATmega168 di papan Arduino. Jika saya bisa mencari cara untuk menggunakannya secara langsung, saya pikir itu akan memuaskan apa yang saya coba capai.
Chris B. Behrens
Anda sebenarnya cukup langsung ke chip dengan Arduino. Tidak memiliki banyak driver atau apapun yang terpasang pada pin. Header langsung menuju ke sana. Mungkin breadboarduino?
AngryEE
@angryee - Saya pikir Chris bermaksud, memprogram chip ATmega secara langsung, tanpa pustaka Arduino IDE +, yang dapat dilihat sebagai roda pelatihan.
J. Polfer

Jawaban:

12

Saya setuju dengan Joby - Arduino hebat tetapi saya selalu merasa tertahan oleh kerangka kerja yang mengelilingi saya. Saya akan beralih menggunakan C langsung pada Arduino Anda dan membangun banyak fungsi perpustakaan yang mereka sediakan dari awal. Saya biasanya lebih suka kedalaman sebelum luas - jangan hanya mulai dari keluarga mikrokontroler lain dengan menggunakan kerangka kerja yang disediakan lebih. Pelajari sedikit lebih banyak tentang bagaimana menerapkan sendiri beberapa fungsi ini.

Mulailah dengan program yang berfungsi dan ganti panggilan perpustakaan Arduino dengan versi Anda sendiri satu fungsi setiap kali. Anda akan belajar banyak tentang register kontrol, pengaturan waktu, operasi bit, dll jika Anda belum melakukannya. Baca datasheet ATMega328 secara mendalam - semua yang Anda butuhkan ada di sana.

Coba IDE yang berbeda seperti AVR Studio atau Code :: Blocks. Pelajari rantai alat GCC. Cobalah teknik pengkodean yang lebih canggih - pengujian unit, cakupan, profiling, pemeriksaan serat / belat. Letakkan RTOS di Arduino.

Gabungan programmer / controller bukanlah tanda kelemahan - itu hanya pilihan desain. Satu-satunya 'kelemahan' yang bisa muncul darinya adalah kurangnya debugging di dalam sirkuit. Beli AVR Dragon dan Anda akan menjilatnya seharga $ 50.

AngryEE
sumber
9

Saya pikir apa yang harus dipelajari selanjutnya tergantung pada apa yang ingin Anda lakukan yang tidak bisa dilakukan Arduino. Yaitu, saya tidak bisa melihat banyak gunanya memprogram chip serupa untuk melakukan hal yang sama, tetapi dengan cara yang lebih sulit.

Berikut ini beberapa kelemahan Arduino:

  • Threading, artinya menjalankan dua bagian kode yang disisipkan sedemikian rupa sehingga sepertinya dijalankan pada saat yang sama
  • Barang-barang internet dengan bandwidth sedang atau tinggi, seperti streaming audio
  • Perhitungan serius, atau tugas yang membutuhkan perhitungan cepat untuk respons cepat
  • Apa pun yang menjadi lebih mudah dengan memiliki sistem file di sekitarnya, seperti membuat katalog atau menangani gambar

Saya bisa membayangkan dua arah:

  1. Papan tertanam yang lebih kuat dengan sistem operasi kecil, seperti Beagleboard atau Gumstix
  2. Memeras kinerja lebih banyak dari chip Atmega kecil menggunakan interupsi perangkat keras.

Saya dapat menambahkan lebih detail jika Anda berkomentar tentang arah mana yang lebih menarik. (Yang kedua pasti lebih murah.)

pingswept
sumber
Ini lucu ... memprogram chip serupa untuk melakukan hal yang sama, tetapi dengan cara yang lebih sulit adalah persis apa yang ada dalam pikiran saya :). Sedikit latar belakang - Saya seorang arsitek perangkat lunak dengan pengalaman bertahun-tahun. Perangkat lunak, perhitungan, sistem file ... itu semua hal yang mudah bagi saya. Yang benar-benar saya butuhkan untuk membenturkan kepala adalah elektronik. Alasan mengapa saya ingin bergerak melampaui Arduino adalah karena saya ingin dapat menghasilkan perangkat tujuan tunggal yang tidak memiliki overhead fisik (dan harga) papan Arduino. Saya pikir dari apa yang Anda katakan, # 2 adalah apa yang saya cari.
Chris B. Behrens
Wow ... komentar itu terdengar sangat egois. Saya tidak bermaksud seperti itu ... bagaimanapun juga, saya hanya bermaksud bahwa saya ingin menyingkirkan roda pelatihan perangkat keras yang diberikan Arduino kepada saya. Secara khusus, saya sedang bekerja pada array LED, mirip dengan LOLShield, meskipun saya pikir saya akan multiplex saja. Saya bisa melakukannya dengan Arduino, tetapi tanpa itu, saya perlu arahan. TIA.
Chris B. Behrens
Ah, lebih banyak hal elektronik daripada perangkat lunak ... hal. Mungkin Anda akan mendapatkan pengalaman menyenangkan melakukan interfacing / datalogging sensor. Ini tidak glamor tetapi untuk menghubungkan sensor ke papan Anda, Anda perlu belajar beberapa hal lagi tentang perangkat keras. Arduino tidak benar-benar memiliki banyak roda pelatihan perangkat keras - tentu saja tidak sebanyak perangkat lunak. Mungkin robot yang menggabungkan beberapa jenis sensor - ultrasound, jarak IR, poros encoder, dll. Tentu saja mungkin hanya dengan Arduino dan banyak lagi perangkat keras.
AngryEE
7

Pelajari I2C, SPI, 1wire dan coba antarmuka sensor dengan antarmuka seperti itu. Baca banyak lembar data dari sensor tersebut dan cobalah untuk memahami semua yang ada di dalamnya. Ajukan pertanyaan saat macet. Pelajari MODBUS (RTU / ASCII / TCP) atau protokol serupa yang dapat membuka perangkat Anda ke dunia begitu Anda menanamkannya di perangkat. Pelajari elektronik umum dan coba antarmuka relay, triacs, apa yang menarik dan tarik ke bawah, apa yang sumber dan tenggelam, cara menggambar skema dan menghubungkan driver dasar ke MCU Anda.

avra
sumber
6

Sebagai permulaan, Anda mungkin ingin pindah dari Arduino sebagai platform ke AVR sebagai platform. Yaitu, belajar bagaimana memprogram / menggunakan mikrokontroler AVR perawan untuk proyek Anda, bukan Arduino. Dengan begitu, Anda tidak perlu membeli papan Arduino lain untuk setiap proyek yang Anda lakukan, atau untuk melakukan proyek dengan teman. Ini adalah langkah yang cukup sederhana (Arduino hanyalah mikrokontroler Atmel AVR konvensional tetapi dengan papan khusus dan bootloader), tetapi merupakan langkah besar untuk menjual / memberikan proyek kepada teman-teman. Toolchain juga serupa: Anda menggunakan avr-gcc atau avr-g ++ dengan hubungannya dengan utilitas pemrograman untuk menginstal program Anda.

J. Polfer
sumber
Cukup mudah untuk memuat bootloader pada sebuah chip dan menyolder papan Anda sendiri jika Anda ingin memberikan sebuah proyek. Atau pesan kit RBBB seharga $ 12,50 ( goo.gl/0yqr ) tidak perlu membeli papan $ 30 + untuk setiap proyek Arduino.
Davorak