Kategori: Artikel Pilihan » Elektronik Praktikal
Bilangan pandangan: 67360
Komen pada artikel: 7
Menyambung dan pengaturcaraan Arduino untuk pemula
Adakah mengkaji mikrokontroler kelihatan rumit dan tidak dapat difahami? Sebelum kemunculan Arudino, ia benar-benar tidak mudah dan memerlukan set programmer dan peralatan lain.
Apakah Arduino?
Ini adalah sejenis pembina elektronik. Objektif awal projek ini adalah untuk membolehkan orang ramai dengan mudah belajar bagaimana untuk memprogramkan peranti elektronik, sambil menumpukan masa minima kepada bahagian elektronik.
Perhimpunan litar yang paling rumit dan sambungan papan boleh dilakukan tanpa besi pematerian, dan dengan bantuan jumper dengan sambungan "father" dan "mother". Dengan cara ini, kedua-dua lampiran dan kad pengembangan boleh disambungkan, yang dalam leksikon arduinist itu hanya dipanggil "Shields".

Apakah arduino pertama yang dibeli untuk pemula?
Lembaga asas dan paling popular dipertimbangkan Arduino uno. Bayaran ini menyerupai kad kredit. Cukup besar. Kebanyakan perisai yang dijual adalah sempurna untuknya. Terdapat soket di papan untuk menyambungkan peranti luaran.

Di kedai-kedai tempatan untuk tahun 2017, harganya adalah kira-kira 4-5 dolar. Pada model moden, Atmega328 adalah hatinya.
Imej papan arduino dan fungsi penyahkodan setiap pin, pinout Arduino UNO
Mikrokontroler di papan ini adalah cip panjang dalam pakej DIP28, yang menunjukkan bahawa ia mempunyai 28 kaki.
Papan papan yang paling popular seterusnya hampir dua kali lebih murah daripada sebelumnya - 2-3 dolar. Ini adalah lembaga Arduino nano. Papan sebenar dibina oleh Atmega328 yang sama, mereka berfungsi sama dengan UNO, terdapat perbezaan saiz dan penyelesaian yang sepadan dengan USB, lebih banyak lagi nanti. Perbezaan lain ialah palam, dalam bentuk jarum, disediakan untuk menyambungkan peranti ke papan litar.

Bilangan pin (kaki) papan ini adalah sama, tetapi anda boleh melihat bahawa mikrokontroler dibuat dalam pakej TQFP32 yang lebih padat, ADC6 dan ADC7 ditambah dalam kes itu, dua lagi kaki "tambahan" mendua bas kuasa. Dimensinya agak padat - kira-kira saiz ibu jari tangan anda.
Papan ketiga yang paling popular adalah Arduino Pro Mini, ia tidak mempunyai port USB untuk menyambung ke komputer, saya akan memberitahu anda bagaimana untuk berkomunikasi sedikit kemudian.

Perbandingan Saiz Arduino Nano vs Pro Mini
Ini adalah motherboard terkecil dari semua yang dipertimbangkan, jika tidak, ia serupa dengan dua yang sebelumnya, dan Atmega328 masih jantungnya. Kami tidak akan mempertimbangkan papan lain, kerana ini adalah artikel untuk pemula, dan perbandingan papan adalah topik artikel yang terpisah.
Pinout Arduino Pro Mini, di bahagian atas, rajah sambungan USB-UART, pin "GRN" - disambungkan kepada litar semula mikropengawal, ia boleh dipanggil berbeza, yang mana perlu anda ketahui kemudian.
Ringkasan:
Jika UNO mudah untuk prototaip, maka Nano dan Pro Mini mudah untuk versi akhir projek anda, kerana mereka mengambil sedikit ruang.

Bagaimana untuk menyambung Arduino ke komputer?
Arduino Uno dan Nano bersambung ke komputer melalui USB. Pada masa yang sama, tidak ada sokongan perkakasan untuk port USB, penyelesaian litar penukaran peringkat, yang biasanya dipanggil USB-to-Serial atau USB-UART (rs-232), digunakan di sini. Pada masa yang sama, bootloader Arduino khas disalurkan ke mikrokontroler, yang membolehkan berkelip pada bas ini.
Dalam Arduino Uno, ligatur ini dilaksanakan pada mikropengawal dengan sokongan USB - ATmega16U2 (AT16U2). Ternyata mikrokontroler tambahan di papan itu diperlukan untuk menghidupkan mikrokontroler utama.
Di Arduino Nano, ini dilaksanakan oleh cip FT232R, atau analog CH340nya. Ini bukan mikrokontroler - ia adalah penukar tahap, hakikat ini menjadikannya mudah untuk memasang Arduino Nano dari awal dengan tangan anda sendiri.
Biasanya, pemandu dipasang secara automatik apabila papan Arduino disambungkan. Walau bagaimanapun, apabila saya membeli salinan Arduino Nano dari China, peranti itu telah diiktiraf, tetapi ia tidak berfungsi, pelekat bulat dengan data pada tarikh pelepasan terpaku pada penukar, saya tidak tahu sama ada ia dilakukan dengan tujuan, tetapi selepas mengelupasnya saya melihat penanda CH340.
Sebelum ini, saya tidak menemui ini dan berfikir bahawa semua penukar USB-UART dipasang pada FT232, saya perlu memuat turun pemandu, mereka sangat mudah dicari dengan permintaan "pemandu Arduino ch340". Selepas pemasangan mudah - ia berfungsi!
Melalui port USB yang sama, mikropengawal juga boleh dikuasakan, iaitu. jika anda menyambungkannya kepada penyesuai dari telefon bimbit, sistem anda akan berfungsi.
Apa yang perlu saya lakukan jika papan saya tidak mempunyai USB?
Arduino Pro Mini lebih kecil. Ini dicapai dengan mengeluarkan penyambung USB untuk firmware dan penukar USB-UART yang sama. Oleh itu, ia mesti dibeli secara berasingan. Penukar paling mudah pada CH340 (paling murah), CPL2102 dan FT232R, untuk kos jualan dari $ 1.
Apabila membeli, perhatikan apa voltan penyesuai ini direka untuk. Pro mini boleh didapati dalam versi 3.3 dan 5 V, pelompat sering terdapat pada penukar untuk menukar voltan bekalan.

Apabila berkelip Pro Mini, sebelum ia bermula, anda mesti mengklik RESET, bagaimanapun, dalam penukar dengan DTR anda tidak perlu melakukan ini, rajah sambungan dalam gambar di bawah.

Mereka disertai dengan terminal khas "Mama-Mama" (perempuan-perempuan).

Sebenarnya, semua sambungan boleh dibuat dengan menggunakan terminal tersebut (Dupont), kedua-duanya berada di kedua sisi dengan soket, dan dengan palam, dan pada satu sisi soket, dan pada palam lain.

Bagaimana untuk menulis program untuk Arduino?
Untuk bekerja dengan lakaran (nama firmware dalam bahasa arduino), terdapat persekitaran bersepadu khusus untuk membangunkan Arduino IDE, anda boleh memuat turunnya secara percuma dari laman web rasmi atau dari sumber yang ada tema, biasanya tidak ada masalah dengan memasangnya.
Inilah cara antara muka program kelihatan. Anda boleh menulis program dalam bahasa C AVR yang dipermudahkan untuk arduino, sebenarnya ia adalah satu set perpustakaan yang dipanggil Pendawaian, serta dalam AVR C asli. Menggunakannya memudahkan kod dan mempercepatkan kerjanya.
Di bahagian atas tetingkap terdapat menu yang biasa di mana anda boleh membuka fail, tetapan, pilih papan yang anda bekerjasama (Uno, Nano dan banyak lagi, banyak lagi) dan juga membuka projek dengan contoh kod siap pakai. Berikut adalah satu set butang untuk bekerja dengan firmware, kunci yang akan anda lihat dalam gambar di bawah.

Di bahagian bawah tingkap adalah kawasan untuk memaparkan maklumat tentang projek, status kod, firmware dan kehadiran ralat.
Asas pengaturcaraan Arduino IDE
Pada permulaan kod, anda perlu mengisytiharkan pembolehubah dan menyambung perpustakaan tambahan, jika wujud, ini dilakukan seperti berikut:
#include biblioteka.h; // sambungkan perpustakaan dengan nama "Biblioteka.h"
#define peremennaya 1234; / / Nyatakan pemboleh ubah dengan nilai 1234
Perintah Define membenarkan pengkompil untuk memilih jenis pembolehubah, tetapi anda boleh menetapkan secara manual, contohnya, integer int, atau float point terapung.
int led = 13; / / mencipta pemboleh ubah "dipimpin" dan memberikannya nilai "13"
Program ini dapat menentukan keadaan pin sebagai 1 atau 0. 1 adalah unit logik, jika pin 13 adalah 1, maka voltan pada kaki fizikalnya akan sama dengan voltan bekalan mikrokontroler (untuk arduino UNO dan Nano -5 V)
Isyarat digital direkodkan menggunakan perintah digitalWrite (pin, nilai), contohnya:
digitalWrite (dipimpin, tinggi); / tulis unit ke pin 13 (kami mengumumkannya di atas) log. Unit.
Seperti yang anda faham, akses kepada pelabuhan adalah dengan penomboran di papan, angka yang sepadan. Berikut adalah contoh yang serupa dengan kod sebelumnya:
digitalWrite (13, tinggi); / / set pin 13 kepada satu
Selalunya fungsi kelewatan masa yang dicari dipanggil oleh kelewatan () perintah, nilai yang ditetapkan dalam milisaat, mikrosecond dicapai dengan menggunakan
delayMicroseconds () Kelewatan (1000); / // mikrokontroler akan menunggu 1000 ms (1 detik)
Pengaturan pelabuhan untuk input dan output ditetapkan dalam fungsi persediaan void {}, dengan perintah:
void setup () {
pinMode (NOMERPORTA, OUTPUT / INPUT); // argumen - nama pembolehubah atau nombor port, input atau output untuk dipilih
}
Gelung kosong {}
Memahami program Blink yang pertama
Sebagai sejenis "Hello, dunia" untuk mikrokontroler, terdapat program berkelip LED, mari kita analisa kodanya:
Pada mulanya, dengan arahan pinMode, kami memberitahu pengawal mikrokontrol untuk menetapkan port dengan LED ke output.Anda telah menyedari bahawa kod itu tidak mengisytiharkan pembolehubah "LED_BUILTIN", hakikatnya bahawa di Uno, Nano dan papan lain dari kilang, LED terbina bersambung ke pin 13 dan ia disolder ke papan. Ia boleh digunakan oleh anda untuk menunjukkan dalam projek anda atau untuk pemeriksaan paling mudah dari program flash anda.
Seterusnya, kami menetapkan keluaran di mana LED disalurkan ke perpaduan (5 V), baris seterusnya menjadikan MK tunggu 1 saat, dan kemudian menetapkan PIN LED_BUILTIN ke sifar, menunggu satu saat dan program berulang dalam bulatan, jadi apabila LED_BUILTIN adalah 1 - LED ( dan sebarang beban lain yang disambungkan ke port) dihidupkan, apabila pada 0 ia dimatikan.
Adakah semuanya berfungsi dan semuanya jelas? Kemudian teruskan!
Kami membaca nilai dari port analog dan menggunakan data baca
Mikrokontroler AVR Atmega328 mempunyai penukar analog-ke-digital 10-bit terbina dalam. ADC 10-bit membolehkan anda membaca nilai voltan daripada 0 hingga 5 volt, dengan peningkatan 1/1024 dari keseluruhan julat amplitud isyarat (5 V).
Untuk menjadikannya lebih jelas, pertimbangkan keadaan, katakan nilai voltan pada input analog adalah 2.5 V, maka mikrokontroler akan membaca nilai dari pin "512" jika voltan adalah 0 - "0", dan jika 5 V - (1023). 1023 - kerana kiraannya dari 0, iaitu 0, 1, 2, 3, dan lain-lain sehingga 1023 - sejumlah 1024 nilai.
Berikut adalah cara ia kelihatan dalam kod itu, menggunakan lakaran standard "analogInput" sebagai contoh
int sensorPin = A0;
int ledPin = 13;
int sensorValue = 0;
void setup () {
pinMode (ledPin, OUTPUT);
}
kekosongan gelung () {
sensorValue = analogRead (sensorPin);
digitalWrite (ledPin, TINGGI);
kelewatan (sensorValue);
digitalWrite (ledPin, LOW);
kelewatan (sensorValue);
}

Skema sambungan potensiometer ke Arduino, dengan analogi, output tengah anda boleh menyambung ke input analog mana pun.
Nyatakan pembolehubah:
-
Ledpin - secara berasingan menyerahkan pin dengan LED terbina dalam output dan memberi nama individu;
-
sensorPin - input analog, ditetapkan mengikut tanda di papan: A0, A1, A2, dan sebagainya;
-
sensorValue - pemboleh ubah untuk menyimpan nilai read integer dan seterusnya bekerja dengannya.
Kod berfungsi seperti ini: sensorValue menyimpan nilai analog dibaca dengan sensorPin (arahan analogRead). - Di sini kerja dengan isyarat analog berakhir, maka segala-galanya adalah seperti dalam contoh terdahulu.
Kami menulis unit dalam ledPin, LED bertukar dan menunggu masa yang sama dengan nilai sensorValue, iaitu. dari 0 hingga 1023 milisaat. Matikan LED dan tunggu lagi untuk tempoh masa ini, selepas itu kod itu berulang.
Oleh itu, dengan kedudukan potensiometer, kita menetapkan frekuensi berkelip LED.
Fungsi peta untuk Arudino
Tidak semua fungsi untuk penggerak (saya tidak tahu apa-apa) menyokong "1023" sebagai hujah, sebagai contoh, servo dibatasi oleh sudut putaran, iaitu separuh revolusi (separuh revolusi) motor servo, argumen maksimum fungsi adalah "180"
Kini mengenai sintaks: peta (nilai yang kami menterjemahkan ialah input minimum, input maksimum, output minimum, output maksimum).
Dalam kod, ia kelihatan seperti ini:
(peta (analogRead (periuk), 0, 1023, 0, 180));
Kami membaca nilai dari potensiometer (analogRead (pot)) dari 0 hingga 1023, dan pada output kami mendapat nombor dari 0 hingga 180
Nilai peta nilai:
-
0=0;
-
1023=180;
Dalam praktiknya, kami menggunakan ini untuk kerja kod servo yang sama, lihat pada kod dengan Arduino IDE, jika anda membaca dengan teliti bahagian sebelumnya, maka ia tidak memerlukan penjelasan.

Dan gambarajah sambungan.

Kesimpulan Arduino adalah alat yang sangat mudah untuk belajar bagaimana bekerja dengan mikrokontroler. Dan jika anda menggunakan C AVR tulen, atau seperti yang kadang-kadang dipanggil "Murni C", anda akan mengurangkan berat badan kod dan lebih banyak lagi dalam memori mikrokontroler, sebagai hasilnya, anda akan mendapat papan debugging buatan kilang yang sangat baik dengan firmware USB.

Pendapat penulis:
Saya suka arduino. Sayang sekali ramai pengaturcara mikropenor yang berpengalaman mengkritiknya secara tidak munasabah, bahawa ia terlalu mudah. Pada dasarnya, hanya bahasa dipermudahkan, tetapi tidak ada yang memaksa anda untuk menggunakannya, ditambah dengan anda dapat menghidupkan mikrokontroler melalui penyambung ICSP dan mengisi kod yang anda inginkan tanpa pemuat boot yang tidak anda perlukan.
Bagi mereka yang ingin bermain dengan elektronik, sebagai pembina maju, ia adalah sempurna, tetapi untuk pengaturcara yang berpengalaman, papan yang tidak memerlukan pemasangan juga berguna!
Untuk maklumat lanjut mengenai Arduino dan ciri-ciri kegunaannya dalam pelbagai skema, lihat e-book -Arduino untuk patung. Panduan praktikal Illustrated.
Lihat juga di electro-ms.tomathouse.com
: