Daftar Isi:

Standalone Arduino 3.3V W/ External 8 MHz Clock Diprogram Dari Arduino Uno Melalui ICSP/ISP (dengan Serial Monitoring!): 4 Langkah
Standalone Arduino 3.3V W/ External 8 MHz Clock Diprogram Dari Arduino Uno Melalui ICSP/ISP (dengan Serial Monitoring!): 4 Langkah

Video: Standalone Arduino 3.3V W/ External 8 MHz Clock Diprogram Dari Arduino Uno Melalui ICSP/ISP (dengan Serial Monitoring!): 4 Langkah

Video: Standalone Arduino 3.3V W/ External 8 MHz Clock Diprogram Dari Arduino Uno Melalui ICSP/ISP (dengan Serial Monitoring!): 4 Langkah
Video: How to operate Atmega328P (Arduino) IC on 3.3v? 2024, Desember
Anonim
Standalone Arduino 3.3V W/ Eksternal 8 MHz Clock Diprogram Dari Arduino Uno Melalui ICSP/ISP (dengan Serial Monitoring!)
Standalone Arduino 3.3V W/ Eksternal 8 MHz Clock Diprogram Dari Arduino Uno Melalui ICSP/ISP (dengan Serial Monitoring!)
Standalone Arduino 3.3V W/ External 8 MHz Clock Diprogram Dari Arduino Uno Melalui ICSP/ISP (dengan Serial Monitoring!)
Standalone Arduino 3.3V W/ External 8 MHz Clock Diprogram Dari Arduino Uno Melalui ICSP/ISP (dengan Serial Monitoring!)

Tujuan:

  • Untuk membangun Arduino mandiri yang berjalan pada 3.3V dari jam eksternal 8 MHz.
  • Untuk memprogramnya melalui ISP (juga dikenal sebagai ICSP, pemrograman serial dalam sirkuit) dari Arduino Uno (berjalan pada 5V)

    Untuk mengedit file bootloader dan membakar bootloader (melalui ISP)

  • Untuk dapat membaca informasi serial dari Arduino mandiri melalui kabel FTDI

    Untuk dapat membaca informasi serial dari Arduino standlaone tanpa kabel FTDI

Pembukaan:

Saya mencoba membangun proyek mandiri saya tetapi tidak melihat panduan komprehensif tentang menjalankan, memprogram, dan memantau Arduino Mandiri - terutama yang menjalankan jam eksternal 8Mhz dan 3.3V dan diprogram oleh Arduino UNO. Saya telah mengumpulkan sejumlah panduan terpisah dan saya telah mencoba merujuk dari mana saya mendapatkan informasi untuk memberikan kredit di mana kredit jatuh tempo. Panduan ini adalah hasil dari berhari-hari mencari solusi dan menemukan bagian-bagiannya pada saat saya sedang membangun proyek saya sendiri. Juga, saya telah menautkan beberapa produk berguna yang akan datang bukan karena saya berafiliasi dengan salah satu perusahaan, tetapi karena relevan untuk memasukkan item spesifik yang saya maksud.

Pertanyaan umum sebelum kita mulai:

Mengapa Anda perlu memprogramnya dengan ISP dan memantau melalui FTDI? Kenapa tidak bisa diprogram saja lewat FTDI?

Kami harus mengubah pengaturan sekering dengan membakar bootloader baru dan Anda tidak dapat melakukannya melalui komunikasi serial. Anda harus membakar bootloader melalui ISP. Ini juga berguna bagi mereka yang tidak memiliki chip ATMEGA328 yang telah dimuat sebelumnya.

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

Mungkin, seperti saya, Anda kebetulan tidak memilikinya dan daripada menunggu kiriman dikirim, Anda lebih suka menggunakan apa yang Anda miliki! Saya kebetulan memiliki kabel FTDI (walaupun pada akhirnya Anda bahkan tidak membutuhkannya: itu hanya membuat hidup Anda lebih mudah).

Apakah saya tidak memerlukan pemindah level logika dari Uno ke Arduino yang berdiri sendiri?

Ya, Anda tahu, tetapi saya akan menunjukkan cara membuatnya sendiri. Seperti kabel ISP, kebetulan saya tidak punya.

Saya ingin menjalankannya dari daya eksternal. Bagaimana aku melakukan itu?

Ada banyak panduan yang menunjukkan cara menjalankan Arduino mandiri dari daya baterai. Saya akan menulis bagaimana saya melakukannya dan menautkannya di sini [akan dimasukkan nanti].

PETUNJUK

Langkah 1: Membangun Arduino Mandiri

Membangun Arduino Mandiri
Membangun Arduino Mandiri
Membangun Arduino Mandiri
Membangun Arduino Mandiri

1) Bangun Arduino mandiri dari tautan ini. Satu-satunya bagian dari panduan yang Anda butuhkan adalah "Dasar-Dasar ATMega8/168/328".

  • Anda dapat menyalakan Arduino mandiri dari 3.3V dari Arduino Uno. (Anda dapat melewati bagian pertama dari tutorial berjudul "Menambahkan sirkuit untuk catu daya."
  • Ganti jam 16 MHz dengan jam 8 Mhz.
  • Tambahkan batas 0,1 uF antara: VCC dan Gnd (kedua sisi) VRef dan Gnd.

    • Saya tidak menyertakan ini dalam gambar tetapi saya memilikinya di proyek saya!
    • Saya tahu ini adalah osilator 16 MHz di foto. Saya mengambil foto sebelum saya mengetahui semua yang saya lakukan di panduan!

Sumber gambar pinout ATMEGA328p di sini.

Kiat Pemecahan Masalah Umum

  • Pastikan Anda telah mengatur ulang set tinggi melalui resistor 10k dari VCC ke pin 1 ATMEGA. Jika pin di-ground atau mengambang, itu tidak akan berfungsi.
  • Periksa kembali apakah Anda telah memasukkan kabel dan osilator dengan benar.
  • Pastikan Anda menggunakan kapasitor 22pF untuk osilator 8 MHz. Ini tidak akan bekerja sebaliknya.
  • Pastikan perangkat diberi daya.

Langkah 2: Pengkabelan ISP

Pengkabelan ISP
Pengkabelan ISP
Pengkabelan ISP
Pengkabelan ISP

2) Buat bagian ISP

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

Alasan Anda tidak bisa mengikuti panduan ini adalah karena Anda kehilangan bagian penting: Anda tidak dapat memprogram perangkat 3.3V langsung dari koneksi 5V. (Setidaknya, saya tidak bisa: itu tidak akan berhasil sampai saya melakukan ini). Anda perlu memasukkan pemindah level logika yang menggeser sinyal 5V dari UNO ke Arduino 3.3V yang berdiri sendiri.

Jika Anda tidak memiliki papan pemindah level logika, Anda dapat membuatnya menggunakan resistor. Semua pemindah level logika sebenarnya (selama Anda menggeser ke bawah) adalah pembagi tegangan. Anda akan membutuhkan 6 resistor yang sama, tidak ada yang terlalu tinggi atau terlalu rendah. Saya menggunakan resistor 220 ohm, tetapi saya yakin bahkan resistor 10k akan berfungsi.

Untuk SCK (digital pin 13) dan MOSI (digital pin 11), gunakan pembagi tegangan untuk memotong tegangan sepertiga. Intinya Anda akan memiliki satu Uno SCK dan MOSI, lalu sebuah resistor (220 ohm), kemudian SCK dan MOSI terhubung ke Arduino yang berdiri sendiri dan 2 resistor (total 440 ohm) ke ground.

Jadi, baca panduan yang ditautkan di awal bagian ini, tetapi sertakan pembagi tegangan di antara SCK dan MOSI. Ingat, SCK, MISO, MOSI, dan RESET adalah pin 13, 12, 11, dan 10 pada Uno tetapi pin 19, 18, 17, dan 1 di Arduino mandiri!

Kiat Pemecahan Masalah Umum

  • PERIKSA KABEL

    • Jika Anda mendapatkan tanda tangan perangkat semua 0 ketika mencoba menulis program, maka kabel Anda hampir pasti mati, atau Arduino yang berdiri sendiri tidak mendapatkan daya.
    • Juga, pastikan Anda memiliki kabel reset dari 10 di Uno ke 1 di Arduino yang berdiri sendiri
  • PERIKSA PEMBAGI TEGANGAN

    Pastikan Anda memiliki pembagi tegangan dengan rasio 1:2 (sisi tinggi: sisi rendah) untuk resistor untuk SCK dan MOSI. Misalnya. resistor 220 di sisi +5v dan kemudian 2 resistor 220 ohm (total 440 ohm) menuju ground dengan sinyal menuju Arduino mandiri di tengah

Langkah 3: Edit File Bootloader, Bakar Bootloader, dan Unggah Sketsa Anda

Edit File Bootloader, Bakar Bootloader, dan Unggah Sketsa Anda
Edit File Bootloader, Bakar Bootloader, dan Unggah Sketsa Anda
Edit File Bootloader, Bakar Bootloader, dan Unggah Sketsa Anda
Edit File Bootloader, Bakar Bootloader, dan Unggah Sketsa Anda

3) Edit file bootloader (boards.txt) dan bakar bootloader ke Arduino mandiri. Unggah sketsa Anda

Mengedit file bootloader

Untuk menjalankan Arduino mandiri, Anda harus mengedit pengaturan sekering brownout dari bootloader. Jika tidak, Anda akan dapat membakar bootloader di dalamnya tetapi tidak akan dapat menjalankan sketsa apa pun.

Anda dapat menghapus deteksi brownout sepenuhnya, tetapi saya tidak akan merekomendasikannya. Sebagai gantinya, kita akan menurunkannya dari 2.7V (yang ada di chip saya sebagai default) dan menggantinya dengan 1.8V. Namun, pada akhirnya, Anda dapat memilih pengaturan brownout yang Anda inginkan dengan menggunakan kalkulator sekering di sini.

File papan saya berada di lokasi berikut:

C:\Program Files (x86)\Arduino\hardware\arduino\avr

Namun, Anda mungkin memiliki lebih dari satu file boards.txt di folder perangkat keras Anda selain /arudino/. Anda akan mengedit file boards.txt di lokasi /arduino/ karena Anda akan memodifikasi bagian ATMEGA328p (3.3V, 8 MHz).

Anda mungkin kehilangan file boards.txt yang diedit jika Anda menginstal ulang atau memperbarui Arduino IDE (menurut posting ini). Ini berarti bahwa jika Anda memperbarui Arduino IDE, Anda harus mengubah pengaturan ini lagi jika Anda ingin membuat Arduino mandiri yang sama.

Di file boards.txt, gulir ke bawah atau cari "Pro Mini". Bagian tersebut berjudul "pro.name=Arduino Pro atau Pro Mini". Gulir ke bawah ke subbagian "pro.menu.cpu.8MHzatmega328=ATmega328P (3.3V, 8 MHz)".

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

Ubah pengaturan ke xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0xFE).

Simpan dan keluar.

Membakar Bootloader

Setelah Anda selesai melakukannya, Anda dapat mengikuti bagian "Instruksi" pada panduan ISP dari langkah 1 hingga 5.

Beberapa hal yang perlu diperjelas:

  • Saat Anda mengunggah sketsa "Arduino sebagai ISP", Anda perlu memastikan bahwa Anda telah memilih port COM dan prosesor yang benar.

    Dalam hal ini, itu berarti Anda telah memilih port COM Arduino Anda di Tools->Port: COM X (Arduino Uno) dan papannya adalah Arduio Uno

  • Pilih programmer yang benar: di bawah Tools->Programmer->Arduino as ISP.

    BUKAN ArduinoISP atau ArduinoISP.org

  • Sebelum melakukan burning bootloder, ganti board "Pro atau Pro Mini" dan Processor menjadi "ATMEGA328p (3.3V, 8 MHz)".

    Anda tidak akan melihat bagian prosesor sampai Anda memilih jenis papan yang benar

Bakar bootloader ke Arduino mandiri SEBELUM Anda mencoba menulis sketsa di atasnya.

Mengunggah sketsa

Ini sangat penting. Anda sekarang dapat memprogram Arduino: Uno dan Standalone. Jika Anda tidak mengunggah ke perangkat yang benar, Anda harus mengulangi bagian di atas dan menulis ulang Arduino sebagai program ISP di Uno.

Saat Anda mengunggah sketsa Anda, pastikan Anda mengklik Alat -> Unggah menggunakan programmer ATAU klik Ctrl+Shift+U. Anda juga dapat menahan shift dan mengklik ikon panah, tetapi jangan mengklik ikon panah tanpa menahan shift.

Kiat Pemecahan Masalah Umum

  • Aktifkan keluaran verbose untuk pemecahan masalah.
  • "Tanda tangan perangkat semuanya 0!" [Yang ini sangat mungkin terjadi.]

    • lihat bagian Pengkabelan ISP. Entah Anda salah menyambungkan Arduino mandiri atau tidak dihidupkan.
    • Pastikan Anda telah memilih port COM dan papan / prosesor yang benar. Saat Anda membakar bootloader, Anda HARUS memastikan Anda membakar bootloader Pro Mini 3.3V 8 MHz di atasnya atau sekring tidak akan disetel dengan benar.
  • "Saya telah mengedit file boards.txt tetapi tidak melihat hasil editnya"

    Pastikan Anda telah mengedit file boards.txt yang benar. Coba perbarui Arduino IDE jika pengeditan tidak berfungsi, atau hapus folder lain di folder /hardware/ Anda untuk sementara

  • "Saya tidak dapat menemukan bagian pro mini dari boards.txt!"

    Anda tidak mencari di file boards.txt yang tepat. Periksa folder Arduino//hardware/arduino/

Langkah 4: Komunikasi Serial

4) Pantau perangkat mandiri melalui komunikasi serial

Anda benar-benar dapat melakukan ini melalui 2 metode, jadi jika Anda bahkan tidak memiliki papan kabel / breakout FTDI, itu bukan akhir dunia. Dan ingat, sketsa yang Anda unggah ke Arduino yang berdiri sendiri harus memiliki pernyataan Serial.print untuk Anda baca: jika Anda tidak menulisnya dalam program, Anda tidak akan melihat apa pun!

Jika Anda tidak memiliki kabel FTDI

Setelah Anda membakar bootloader dan menulis program yang Anda inginkan, Anda dapat (dengan sangat hati-hati dan mengingat orientasi mana yang digunakan kembali) melepas chip ATMEGA328 DIP dari Arduino Uno. Saya sarankan menggunakan flathead untuk ini.

Anda dapat menghubungkan RX mandiri Arduino ke RX Uno dan TX ke TX. Ya, biasanya kebalikannya, tetapi Anda dapat menganggap Uno sebagai "meneruskan" info ke monitor serial IDE. Itu sebabnya Anda tidak menghubungkan RX ke TX dan TX ro RX dalam kasus ini. Saat Anda menjalankan program, pastikan Anda telah memilih port COM Arduino Uno dan membuka serial montor. Anda akan dapat melihat output serial Arduino yang berdiri sendiri.

(Solusi ini dikreditkan ke Robin2 di sini.)

Jika Anda memiliki kabel / papan FTDI

(Saya menggunakan papan FTDI Sparkfun yang telah saya konversi ke 3.3V menggunakan bantalan solder di bagian belakang)

Cukup sambungkan GND papan breakout ke ground Arduino yang berdiri sendiri dan sambungkan RX breakoutboard ke TX Arduino dan TX ke RX. (Jika Anda HANYA memantau serial dan tidak menulis apa pun kembali, Anda cukup menghubungkan RX breadoutboard ke Arduino TX).

Ingatlah pada titik ini Anda memiliki opsi untuk menyalakan Arduino mandiri melalui Uno ATAU Kabel FTDI. Jangan hubungkan kedua sumber daya secara bersamaan! Perhatikan bahwa Anda harus mengubah port COM karena akan berbeda dengan port COM Arduino Uno.

Kiat Pemecahan Masalah Umum

  • "Aku tidak melihat apa-apa!"

    • Periksa apakah Anda mengaktifkan port COM yang benar.
    • Periksa apakah Anda memiliki driver FTDI terbaru.
    • PASTIKAN TANAH TERHUBUNG.
  • "Yang saya lihat hanyalah keluaran sampah di monitor serial!"

    • Anda mendapatkan sesuatu yang merupakan pertanda baik.
    • Namun, periksa tegangan papan FTDI.
    • Arduino mandiri mengeluarkan 3.3V pada TX-nya dan papan FTDI mungkin tidak mengambilnya jika mengharapkan 5v.
    • Periksa kecepatan baud.
    • Pastikan Anda memiliki ground yang terhubung dan hanya satu sumber daya yang terhubung! (Yaitu, jangan menyalakan Arduino mandiri dari Uno DAN papan FTDI Anda.

Direkomendasikan: