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".

Apa itu Arduino?

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.

Arduino uno

Di kedai-kedai tempatan untuk tahun 2017, harganya adalah kira-kira 4-5 dolar. Pada model moden, Atmega328 adalah hatinya.

Arduino uno

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.

Arduino nano

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.

Pinout Aruino nano 

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

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.

Arduino untuk pemula

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.

Arduino Pro Mini

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.

Rangkaian sambungan untuk firmware

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

Sambungan Arduino

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.

Palam

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.

Program untuk Arduino

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.

Antara muka program

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

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.

Rajah rajah pendawaian

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.

Arduino untuk pemula

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 i.electricianexp.com:

  • Kaedah untuk membaca dan mengurus port Arduino I / O
  • Papan Arduino yang mana untuk dipilih
  • Jenis dan perkiraan mikrokontroler AVR
  • Kawalan Jauh Mikrocontroller: IR Remote, Arduino, ESP8266, 433 ...
  • Menyambung sensor analog ke Arduino, membaca sensor

  •  
     
    Komen:

    # 1 menulis: Elektromag | [quote]

     
     

    Apakah kesusasteraan mengenai mengkaji kod pengaturcaraan yang anda cadangkan?

     
    Komen:

    # 2 menulis: Andrey | [quote]

     
     

    ElektromagUlli Sommer. Pemrograman Papan Mikrokontroler Arduino / Freeduino, oleh Jeremy Bloom. Kami belajar Arduino. Alat dan Teknik untuk Magic Teknikal, John Boxell. Kami belajar Arduino. 65 projek sendiri. Buku tentang Arduino pada ozon: i.electricianexp.com/arduino_books.php

     
    Komen:

    # 3 menulis: Victor | [quote]

     
     

    Bahan yang sangat menarik dan menarik, terima kasih!

     
    Komen:

    # 4 menulis: Ural | [quote]

     
     

    Terima kasih atas maklumat itu, fungsi "peta" sangat berguna, saya tertanya-tanya bagaimana untuk pergi, hanya mula belajar mainan pada Arduino.

     
    Komen:

    # 5 menulis: Dima | [quote]

     
     

    Sesuatu yang saya tidak dapati untuk perisai arduino untuk perkongsian pada mil-std-1553b, walaupun untuk bas comp - timbunan, antara muka yang sangat popular. Poke di mana anda boleh cari-beli.

    p. tarikh artikel tidak dipaparkan - mungkin dia berusia 10 tahun dan tidak boleh menulis komen?

     
    Komen:

    # 6 menulis: Eremino | [quote]

     
     

    Bagaimana untuk membuat pengulang isyarat masukan pada Arduino untuk 4 atau sebarang jumlah output.

    Begitu juga dengan 4 saluran masukan ke 16 saluran output. Dalam kes ini, anda perlu menukar input kepada 4 output pada masa yang sama pada setiap saluran input.

     
    Komen:

    # 7 menulis: Oleg | [quote]

     
     

    Lelaki, beritahu saya, di mana anda belajar untuk program? Saya meneliti banyak maklumat dan tidak ada yang menulis dengan jelas. Di sini, semua maklumat itu bukan untuk pemula, benar-benar banyak yang tidak jelas, meremehkan. Banyak perkataan telah ditulis tentang yang tidak ada kata, contohnya, penulis menulis pada mulanya anda perlu mengumumkan perpustakaan dan memasukkan #include biblioteka.h; // tetapi mengenai perkataan ini dia tidak menulis apa-apa #include mengapa mungkin untuk memahami semua ini. Saya sudah tiada kesabaran, tidak ada yang dapat menjelaskan secara normal, dan menjelaskan apa yang akan berlaku di sini adalah perlu untuk menulis ini. Nah, sudah tentu ia sifar, tetapi saya cuba membaca, saya tidak melihat apa-apa yang tidak difahami, yang tidak menjelaskan banyak yang tidak perlu. Dan saya boleh mengatakan bahawa saya bukan bodoh bodoh, saya boleh membaiki hampir semua elektronik, iaitu, saya berkawan dengan kepala saya, tetapi saya tidak faham kerana mereka menulis orang yang tahu, tetapi mereka lupa tentang nuansa ketika mereka sendiri menyelidikinya.