Isi kandungan:

Jam Berdiri Arduino 3.3V W / External 8 MHz Diprogramkan Dari Arduino Uno Melalui ICSP / ISP (dengan Pemantauan Bersiri!): 4 Langkah
Jam Berdiri Arduino 3.3V W / External 8 MHz Diprogramkan Dari Arduino Uno Melalui ICSP / ISP (dengan Pemantauan Bersiri!): 4 Langkah

Video: Jam Berdiri Arduino 3.3V W / External 8 MHz Diprogramkan Dari Arduino Uno Melalui ICSP / ISP (dengan Pemantauan Bersiri!): 4 Langkah

Video: Jam Berdiri Arduino 3.3V W / External 8 MHz Diprogramkan Dari Arduino Uno Melalui ICSP / ISP (dengan Pemantauan Bersiri!): 4 Langkah
Video: Pro Micro ATMEGA32U4 Arduino Pins and 5V, 3.3V Explained 2024, Disember
Anonim
Jam Berdiri Arduino 3.3V W / External 8 MHz Diprogramkan Dari Arduino Uno Melalui ICSP / ISP (dengan Pemantauan Bersiri!)
Jam Berdiri Arduino 3.3V W / External 8 MHz Diprogramkan Dari Arduino Uno Melalui ICSP / ISP (dengan Pemantauan Bersiri!)
Jam Berdiri Arduino 3.3V W / External 8 MHz Diprogramkan Dari Arduino Uno Melalui ICSP / ISP (dengan Pemantauan Bersiri!)
Jam Berdiri Arduino 3.3V W / External 8 MHz Diprogramkan Dari Arduino Uno Melalui ICSP / ISP (dengan Pemantauan Bersiri!)

Objektif:

  • Untuk membina Arduino mandiri yang berjalan pada 3.3V dari jam luaran 8 MHz.
  • Untuk memprogramkannya melalui ISP (juga dikenali sebagai ICSP, pengaturcaraan bersiri dalam litar) dari Arduino Uno (berjalan pada 5V)

    Untuk mengedit fail bootloader dan membakar bootloader (melalui ISP)

  • Untuk dapat membaca maklumat bersiri dari Arduino yang berdiri sendiri melalui kabel FTDI

    Untuk dapat membaca maklumat bersiri dari Arduino yang berdiri sendiri tanpa kabel FTDI

Mukadimah:

Saya cuba membina projek mandiri saya tetapi tidak melihat panduan menyeluruh untuk menjalankan, memprogram, dan memantau Standalone Arduino - terutamanya yang menjalankan jam luaran 8Mhz dan 3.3V dan diprogramkan oleh Arduino UNO. Saya telah mengumpulkan beberapa panduan yang berasingan dan saya telah cuba merujuk dari mana saya mendapat maklumat untuk memberi kredit di mana kredit perlu dibayar. Panduan ini adalah hasil beberapa hari mencari jalan keluar dan mencari bahagiannya pada satu ketika saya membina projek saya sendiri. Juga, saya telah mengaitkan beberapa produk berguna yang akan datang bukan kerana saya berafiliasi dengan mana-mana syarikat-syarikat itu, tetapi kerana relevan untuk memasukkan item-item tertentu yang saya maksudkan.

Soalan biasa sebelum kita memulakan:

Mengapa anda perlu memprogramkannya dengan ISP dan memantau melalui FTDI? Mengapa anda tidak boleh memprogramnya melalui FTDI?

Kita mesti mengubah tetapan fius dengan membakar bootloader baru dan anda tidak boleh melakukannya melalui komunikasi bersiri. Anda mesti membakar pemuat but melalui ISP. Ini juga berguna bagi mereka yang tidak mempunyai cip ATMEGA328 pra-boot.

Mengapa saya tidak hanya menggunakan kabel ISP dengan pemantauan bersiri, seperti ini?

Mungkin, seperti saya, anda kebetulan tidak memilikinya dan bukannya menunggu seseorang dihantar, anda suka menggunakan apa yang anda ada! Saya kebetulan mempunyai kabel FTDI (walaupun akhirnya anda tidak memerlukannya: ia hanya menjadikan hidup anda lebih mudah).

Tidakkah saya memerlukan peralihan tahap logik dari Uno ke Arduino yang berdiri sendiri?

Ya, betul, tapi saya akan tunjukkan cara membuatnya sendiri. Seperti kabel ISP, saya tidak mempunyai satu.

Saya mahu melepaskannya dari kuasa luaran. Bagaimana saya melakukannya?

Terdapat banyak panduan yang menunjukkan cara menjalankan Arduino secara mandiri daripada kuasa bateri. Saya akan menulis bagaimana saya melakukannya dan memautkannya di sini [akan dimasukkan kemudian].

PANDUAN

Langkah 1: Membangun Arduino Berdiri

Membangun Arduino Berdiri
Membangun Arduino Berdiri
Membangun Arduino Berdiri
Membangun Arduino Berdiri

1) Bina Arduino yang berdiri sendiri dari pautan ini. Satu-satunya bahagian panduan yang anda perlukan adalah "Asas ATMEGA8 / 168/328".

  • anda boleh mengaktifkan Arduino yang berdiri sendiri dari 3.3V dari Arduino Uno. (Anda boleh melangkau bahagian pertama tutorial berjudul "Menambah arus untuk bekalan kuasa."
  • Ganti jam 16 MHz dengan jam 8 Mhz.
  • Tambahkan had 0.1 uF antara: VCC dan Gnd (kedua-dua sisi) VRef dan Gnd.

    • Saya tidak memasukkannya dalam gambar tetapi saya memasukkannya ke dalam projek saya!
    • Saya tahu ia adalah pengayun 16 MHz dalam foto. Saya mengambil gambar sebelum saya mengetahui semua yang saya buat dalam panduan ini!

Sumber gambar pinout ATMEGA328p di sini.

Petua Penyelesaian Masalah Biasa

  • Pastikan anda menetapkan semula set tinggi melalui perintang 10k dari VCC ke pin 1 ATMEGA. Sekiranya pin dibumikan atau melayang, ia tidak akan berfungsi.
  • Periksa semula bahawa anda telah memasukkan wayar dan pengayun dengan betul.
  • Pastikan anda menggunakan kapasitor 22pF untuk pengayun 8 MHz. Ia tidak akan berfungsi sebaliknya.
  • Pastikan peranti dihidupkan.

Langkah 2: Pendawaian ISP

Pendawaian ISP
Pendawaian ISP
Pendawaian ISP
Pendawaian ISP

2) Buat bahagian ISP

Anda akan mengikuti panduan ini di sini dengan langkah kecil tetapi sangat penting.

Sebab anda tidak boleh mengikuti panduan ini kerana anda kehilangan bahagian penting: anda tidak dapat memprogramkan peranti 3.3V secara langsung dari sambungan 5V. (Paling tidak, saya tidak dapat: ia tidak akan berjaya sehingga saya melakukan ini). Anda perlu memasukkan pergeseran tahap logik yang mengalihkan isyarat 5V dari UNO ke Arduino 3.3Vstandalone.

Sekiranya anda tidak mempunyai papan pergeseran tahap logik, anda boleh membuatnya menggunakan perintang. Semua perubahan tahap logik sebenarnya (selagi anda beralih) adalah pembahagi voltan. Anda memerlukan 6 perintang yang sama, tidak terlalu tinggi atau terlalu rendah. Saya menggunakan 220 perintang ohm, tetapi saya yakin walaupun 10k perintang akan berfungsi.

Untuk SCK (pin digital 13) dan MOSI (pin digital 11), gunakan pembahagi voltan untuk memotong voltan sebanyak satu pertiga. Pada dasarnya anda akan mempunyai satu Uno SCK dan MOSI, kemudian perintang (220 ohm), kemudian SCK dan MOSI disambungkan ke Arduino yang berdiri sendiri dan 2 perintang (jumlah 440 ohm) ke tanah.

Jadi, baca panduan yang dihubungkan pada awal bahagian ini, tetapi sertakan pembahagi voltan di antara SCK dan MOSI. Ingat, SCK, MISO, MOSI, dan RESET adalah pin 13, 12, 11, dan 10 di Uno tetapi pin 19, 18, 17, dan 1 di Arduino yang berdiri sendiri!

Petua Penyelesaian Masalah Biasa

  • SEMAK WIRING

    • Sekiranya anda mendapat tandatangan peranti dari semua 0 ketika cuba menulis program, maka kabel anda hampir pasti mati, atau Arduino yang berdiri sendiri tidak mendapat kuasa.
    • Juga, pastikan anda mendapat wayar semula dari 10 di Uno hingga 1 di Arduino yang berdiri sendiri
  • SEMAK PEMBAHAGIAN Tegangan

    Pastikan anda mempunyai pembahagi voltan dengan nisbah 1: 2 (sisi tinggi: sisi rendah) untuk perintang untuk SCK dan MOSI. Cth. perintang 220 di sisi + 5v dan kemudian 2 perintang 220 ohm (total 440 ohm) ke arah tanah dengan isyarat ke arah Arduino yang berdiri sendiri di tengah

Langkah 3: Edit Fail Bootloader, Bakar Bootloader, dan Muat Naik Sketsa Anda

Edit Fail Bootloader, Bakar Bootloader, dan Muat Naik Sketsa Anda
Edit Fail Bootloader, Bakar Bootloader, dan Muat Naik Sketsa Anda
Edit Fail Bootloader, Bakar Bootloader, dan Muat Naik Sketsa Anda
Edit Fail Bootloader, Bakar Bootloader, dan Muat Naik Sketsa Anda

3) Edit fail bootloader (boards.txt) dan bakar bootloader ke Arduino yang berdiri sendiri. Muat naik lakaran anda

Mengedit fail pemuat but

Untuk menjalankan Arduino yang berdiri sendiri, anda perlu mengedit tetapan brownout fuse dari bootloader. Jika tidak, anda akan dapat membakar pemuat but di atasnya tetapi tidak dapat menjalankan lakaran apa pun.

Anda boleh membuang pengesanan brownout sepenuhnya, tetapi saya tidak mengesyorkannya. Sebagai gantinya, kami akan menurunkannya dari 2.7V (apa yang terdapat pada cip saya sebagai lalai) dan menggantikannya dengan 1.8V. Walau bagaimanapun, pada akhirnya, anda boleh memilih tetapan brownout yang anda mahukan dengan menggunakan kalkulator fius di sini.

Fail papan saya berada di lokasi berikut:

C: / Program Files (x86) Arduino / perkakasan / arduino / avr

Walau bagaimanapun, anda mungkin mempunyai lebih daripada satu fail boards.txt dalam folder perkakasan anda selain / arudino /. Anda akan mengedit fail boards.txt di / arduino / location kerana anda akan mengubah bahagian ATMEGA328p (3.3V, 8 MHz).

Anda mungkin kehilangan fail boards.txt yang diedit jika anda memasang semula atau mengemas kini Arduino IDE (mengikut catatan ini). Ini bermakna bahawa jika anda mengemas kini Arduino IDE, anda perlu mengubah tetapan ini sekali lagi jika anda ingin membuat Arduino yang sama yang lain.

Dalam fail boards.txt, tatal ke bawah atau cari "Pro Mini". Bahagian tersebut bertajuk "pro.name = Arduino Pro atau Pro Mini". Tatal ke bawah ke bahagian "pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)".

Cari baris yang bertuliskan "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

Tukar tetapan ke xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Simpan dan keluar.

Membakar Bootloader

Setelah melakukannya, anda boleh mengikuti bahagian "Arahan" pada panduan ISP dari langkah 1 hingga 5.

Beberapa perkara yang perlu diperjelaskan:

  • Semasa anda memuat naik lakaran "Arduino as ISP", anda perlu memastikan anda mempunyai port COM dan pemproses yang betul.

    Dalam kes ini, ini bermaksud bahawa anda telah memilih port COM Arduino anda di Tools-> Port: COM X (Arduino Uno) dan papan adalah Arduio Uno

  • Pilih programmer yang betul: di bawah Tools-> Programmer-> Arduino sebagai ISP.

    BUKAN ArduinoISP atau ArduinoISP.org

  • Sebelum membakar bootloder, ubah papan "Pro atau Pro Mini" dan Pemproses menjadi "ATMEGA328p (3.3V, 8 MHz)".

    Anda tidak akan melihat bahagian pemproses sehingga anda memilih jenis papan yang betul

Bakar bootloader ke Arduino mandiri SEBELUM anda berusaha menulis lakaran di atasnya.

Memuat naik lakaran

Ini sangat penting. Anda kini dapat memprogram Arduino: the Uno dan the Standalone. Sekiranya anda tidak memuat naik ke peranti yang betul, anda harus mengulangi bahagian di atas dan menulis semula Arduino sebagai program ISP di Uno.

Apabila anda memuat naik lakaran anda, pastikan anda mengklik Alat -> Muat naik menggunakan programmer ATAU klik Ctrl + Shift + U. Anda juga dapat menahan shift dan mengklik ikon anak panah, tetapi jangan mengklik ikon anak panah tanpa menahan shift.

Petua Penyelesaian Masalah Biasa

  • Hidupkan output verbose untuk menyelesaikan masalah.
  • "Signatuere peranti adalah semua 0!" [Ini sangat mungkin berlaku.]

    • lihat bahagian Pendawaian ISP. Sama ada anda telah menyalahgunakan Arduino yang berdiri sendiri atau tidak dihidupkan.
    • Pastikan anda memilih port COM dan papan / pemproses yang betul. Semasa anda membakar bootloader, anda HARUS memastikan anda membakar bootloader Pro Mini 3.3V 8 MHz di atasnya atau sekering tidak akan diset dengan betul.
  • "Saya telah mengedit fail boards.txt tetapi tidak melihat pengeditannya"

    Pastikan anda telah mengedit fail boards.txt yang betul. Cuba kemas kini Arduino IDE jika pengeditan tidak berfungsi, atau buang folder lain di / perkakasan / folder anda buat sementara waktu

  • "Saya tidak dapat mencari bahagian papan pro mini.txt!"

    Anda tidak mencari dalam fail boards.txt yang betul. Periksa Arduino // perkakasan / arduino / folder

Langkah 4: Komunikasi Bersiri

4) Pantau peranti mandiri melalui komunikasi bersiri

Anda benar-benar dapat melakukan ini melalui 2 kaedah, jadi jika anda tidak mempunyai papan kabel / pelarian FTDI, ini bukan akhir dunia. Dan ingat, lakaran yang anda muat naik ke Arduino yang berdiri sendiri mesti mempunyai pernyataan Serial.print untuk anda baca: jika anda tidak menulisnya dalam program, anda tidak akan melihat apa-apa!

Sekiranya anda tidak mempunyai kabel FTDI

Setelah anda membakar bootloader dan menulis program yang anda mahukan, anda boleh (dengan sangat berhati-hati dan mengingat arah mana ia masuk) mengeluarkan cip DIP ATMEGA328 dari Arduino Uno. Saya cadangkan menggunakan flathead untuk ini.

Anda boleh menyambungkan RX mandiri Arduino ke RX Uno dan TX ke TX. Ya, biasanya sebaliknya, tetapi anda boleh menganggap Uno sebagai "meneruskan" maklumat ke monitor bersiri IDE. Itulah sebabnya anda tidak menghubungkan RX ke TX dan TX ro RX dalam kes ini. Semasa anda menjalankan program anda, pastikan anda memilih port COM Arduino Uno dan membuka montor bersiri. Anda akan dapat melihat output bersiri Arduino yang berdiri sendiri.

(Penyelesaian ini dikreditkan kepada Robin2 di sini.)

Sekiranya anda mempunyai kabel / papan FTDI

(Saya menggunakan papan FTDI Sparkfun yang telah saya ubah ke 3.3V menggunakan solder pad di belakang)

Cukup sambungkan GND papan pelarian ke tanah Arduino yang berdiri sendiri dan sambungkan RX pemecah papan ke TX Arduino dan TX ke RX. (Sekiranya anda hanya melakukan pemantauan bersiri dan tidak menulis apa-apa, anda boleh menyambungkan RX papan roti ke Arduino TX).

Perlu diingat pada ketika ini anda mempunyai pilihan untuk menghidupkan Arduino yang berdiri sendiri melalui Uno ATAU Kabel FTDI. Jangan sambungkan kedua-dua sumber kuasa pada masa yang sama! Perhatikan bahawa anda harus menukar port COM kerana ia akan berbeza daripada port COM Arduino Uno.

Petua Penyelesaian Masalah Biasa

  • "Saya tidak melihat apa-apa!"

    • Periksa apakah port COM yang betul diaktifkan.
    • Periksa sama ada anda mempunyai pemacu FTDI terkini.
    • MEMASTIKAN GROUND DITERUSKAN.
  • "Yang saya lihat hanyalah pengeluaran sampah di monitor bersiri!"

    • Anda mendapat sesuatu yang merupakan petanda baik.
    • Walau bagaimanapun, periksa voltan papan FTDI.
    • Arduino yang berdiri sendiri mengeluarkan 3.3V pada TX dan papan FTDI mungkin tidak akan mengambilnya jika mengharapkan 5v.
    • Periksa kadar baud.
    • Pastikan anda mempunyai sambungan tanah dan hanya satu sumber kuasa yang disambungkan! (Ya., Jangan gunakan Arduino yang berdiri sendiri dari Uno DAN papan FTDI anda.

Disyorkan: