فهرست مطالب:

مستقل Arduino 3.3V W / ساعت خارجی 8 مگاهرتز در حال برنامه ریزی از Arduino Uno از طریق ICSP / ISP (با نظارت سریال!): 4 مرحله
مستقل Arduino 3.3V W / ساعت خارجی 8 مگاهرتز در حال برنامه ریزی از Arduino Uno از طریق ICSP / ISP (با نظارت سریال!): 4 مرحله

تصویری: مستقل Arduino 3.3V W / ساعت خارجی 8 مگاهرتز در حال برنامه ریزی از Arduino Uno از طریق ICSP / ISP (با نظارت سریال!): 4 مرحله

تصویری: مستقل Arduino 3.3V W / ساعت خارجی 8 مگاهرتز در حال برنامه ریزی از Arduino Uno از طریق ICSP / ISP (با نظارت سریال!): 4 مرحله
تصویری: Pro Micro ATMEGA32U4 Arduino Pins and 5V, 3.3V Explained 2024, جولای
Anonim
مستقل Arduino 3.3V W / خارجی 8 مگاهرتز ساعت در حال برنامه ریزی از Arduino Uno از طریق ICSP / ISP (با نظارت سریال!)
مستقل Arduino 3.3V W / خارجی 8 مگاهرتز ساعت در حال برنامه ریزی از Arduino Uno از طریق ICSP / ISP (با نظارت سریال!)
مستقل Arduino 3.3V W / خارجی 8 مگاهرتز ساعت در حال برنامه ریزی از Arduino Uno از طریق ICSP / ISP (با نظارت سریال!)
مستقل Arduino 3.3V W / خارجی 8 مگاهرتز ساعت در حال برنامه ریزی از Arduino Uno از طریق ICSP / ISP (با نظارت سریال!)

اهداف:

  • برای ساخت یک آردوینو مستقل که با 3.3 ولت از یک ساعت خارجی 8 مگاهرتز کار می کند.
  • برای برنامه نویسی آن از طریق ISP (همچنین به عنوان ICSP شناخته می شود ، برنامه نویسی سریال در مدار) از Arduino Uno (در 5V اجرا می شود)

    برای ویرایش فایل بوت لودر و رایت بوت لودر (از طریق ISP)

  • برای خواندن اطلاعات سریال از Arduino مستقل از طریق کابل FTDI

    برای خواندن اطلاعات سریال از آردوینو مستقل بدون کابل FTDI

مقدمه:

من سعی می کردم پروژه مستقل خود را بسازم ، اما هیچ راهنمای جامعی در مورد اجرا ، برنامه نویسی و نظارت بر آردوینو مستقل مشاهده نکردم - به ویژه یکی که از ساعت خارجی 8 مگاهرتز و 3.3 ولت استفاده می کند و توسط UNO Arduino برنامه ریزی شده است. من تعدادی راهنمای جداگانه را جمع آوری کرده ام و سعی کرده ام به جایی که اطلاعات را از آنجا دریافت کرده ام اشاره کنم تا در موعد مقرر اعتبار بدهم. این راهنما نتیجه چندین روز جستجوی راه حل ها و یافتن بخش هایی از آن در یک زمان است که من پروژه خود را می ساختم. همچنین ، من چندین محصول مفید را که به دست می آیند پیوند داده ام نه به این دلیل که به هیچ یک وابسته هستم شرکتها ، اما از آنجا که شامل موارد خاصی است که من به آنها اشاره می کنم مناسب است.

سوالات متداول قبل از شروع:

چرا باید آن را با ISP برنامه ریزی کرده و از طریق FTDI نظارت کنید؟ چرا نمی توانید آن را فقط از طریق FTDI برنامه ریزی کنید؟

ما باید تنظیمات فیوز را با سوزاندن یک بوت لودر جدید تغییر دهیم و شما نمی توانید این کار را از طریق ارتباط سریال انجام دهید. باید بوت لودر را از طریق ISP رایت کنید. این مورد برای کسانی که تراشه ATMEGA328 از پیش راه اندازی شده ندارند نیز مفید است.

چرا من فقط از کابل ISP با نظارت سریال ، مانند این ، استفاده نمی کنم؟

شاید مانند من ، شما تصادفاً یکی نداشته باشید و به جای اینکه منتظر ارسال آن باشید ، دوست دارید از آنچه دارید استفاده کنید! من به طور اتفاقی یک کابل FTDI دارم (اگرچه در نهایت متوجه خواهید شد که حتی به آن احتیاج ندارید: این فقط زندگی شما را آسان می کند).

آیا نیازی به تغییر سطح منطقی از Uno به Arduino مستقل ندارم؟

بله ، شما انجام می دهید ، اما من به شما نشان می دهم که چگونه خودتان آن را تهیه کنید. مانند کابل ISP ، من اتفاقاً یک کابل ندارم.

من می خواهم آن را از قدرت خارجی قطع کنم. چطور آن را انجام دهم؟

راهنماهای زیادی وجود دارد که نحوه عملکرد یک آردوینو مستقل را از طریق باتری نشان می دهد. من نحوه انجام آن را خواهم نوشت و در اینجا پیوند می دهم [بعداً درج می شود].

راهنما

مرحله 1: ایجاد آردوینو مستقل

ساخت آردوینو مستقل
ساخت آردوینو مستقل
ساخت آردوینو مستقل
ساخت آردوینو مستقل

1) آردوینو مستقل را از این پیوند بسازید. تنها بخشی از راهنمای مورد نیاز شما "مبانی ATMEGA8/168/328" است.

  • شما می توانید آردوینو مستقل را از 3.3V خارج از آردوینو Uno تغذیه کنید. (می توانید از بخش اول آموزش با عنوان "افزودن گردش برای منبع تغذیه" صرف نظر کنید.
  • ساعت 16 مگاهرتز را با ساعت 8 مگاهرتز جایگزین کنید.
  • بین UCC و Gnd (هر دو طرف) VRef و Gnd ، 0.1 کلاهک uF اضافه کنید.

    • من اینها را در تصویر ندارم اما در پروژه هایم دارم!
    • من می دانم که این یک نوسان ساز 16 مگاهرتزی در عکس است. من قبل از اینکه بفهمم همه کارهایی که در راهنما انجام دادم ، چه چیزی را گرفتم!

منبع تصویر pinout ATMEGA328p اینجاست.

نکات رایج عیب یابی

  • اطمینان حاصل کنید که تنظیم را از طریق مقاومت 10k از VCC به پین 1 ATMEGA بالا تنظیم کرده اید. اگر پین زمینی باشد یا شناور باشد کار نمی کند.
  • دوبار بررسی کنید که سیم و نوسان ساز را به درستی وارد کرده اید.
  • اطمینان حاصل کنید که از خازن های 22pF برای نوسان ساز 8 مگاهرتز استفاده می کنید. در غیر این صورت کار نخواهد کرد.
  • از تغذیه دستگاه اطمینان حاصل کنید.

مرحله 2: سیم کشی ISP

سیم کشی ISP
سیم کشی ISP
سیم کشی ISP
سیم کشی ISP

2) بخش ISP را ایجاد کنید

شما در اینجا با یک گام کوچک اما بسیار مهم این راهنما را دنبال خواهید کرد.

دلیل اینکه نمی توانید فقط راهنما را دنبال کنید این است که بخش مهمی را از دست داده اید: نمی توانید یک دستگاه 3.3 ولت را مستقیماً از اتصالات 5 ولت برنامه ریزی کنید. (حداقل ، من نمی توانم: تا زمانی که این کار را نکنم کار نمی کند). شما باید یک تغییر دهنده منطقی را وارد کنید که سیگنال های 5V را از UNO به آردوینو 3.3Vstandalone منتقل می کند.

اگر برد تغییر سطح منطقی ندارید ، می توانید با استفاده از مقاومت ها آن را بسازید. همه تغییرات سطح منطقی واقعاً این است (تا زمانی که شما به سمت پایین حرکت می کنید) یک تقسیم کننده ولتاژ است. شما به 6 مقاومت مشابه احتیاج دارید ، هیچ چیز خیلی زیاد یا خیلی کم نیست. من از مقاومتهای 220 اهم استفاده کردم ، اما مطمئن هستم که مقاومت 10k نیز کار می کند.

برای SCK (پین دیجیتال 13) و MOSI (پین دیجیتال 11) ، از تقسیم ولتاژ استفاده کنید تا ولتاژ را یک سوم کاهش دهید. در اصل شما یک Uno SCK و MOSI ، سپس یک مقاومت (220 اهم) ، سپس SCK و MOSI متصل به آردوینو مستقل و 2 مقاومت (مجموع 440 اهم) به زمین خواهید داشت.

بنابراین ، راهنمای پیوند داده شده در ابتدای این بخش را بخوانید ، اما شامل تقسیم کننده های ولتاژ بین SCK و MOSI باشید. به یاد داشته باشید ، SCK ، MISO ، MOSI و RESET پایه های 13 ، 12 ، 11 و 10 در Uno هستند ، اما پین 19 هستند ، 18 ، 17 و 1 در آردوینو مستقل!

نکات رایج عیب یابی

  • سیم کشی را بررسی کنید

    • اگر هنگام نوشتن برنامه ، امضای یک دستگاه را با تمام 0 دریافت می کنید ، مطمئناً سیم کشی شما خاموش است ، یا آردوینو مستقل برق نمی گیرد.
    • همچنین اطمینان حاصل کنید که سیم تنظیم مجدد را از 10 در Uno تا 1 در آردوینو مستقل دریافت کرده اید
  • جداکنندگان ولتاژ را بررسی کنید

    اطمینان حاصل کنید که تقسیم کننده های ولتاژ با نسبت 1: 2 (سمت بالا: ضلع پایین) برای مقاومتهای SCK و MOSI دارید. به عنوان مثال. یک مقاومت 220 در طرف +5 ولت و سپس 2 مقاومت 220 اهم (مجموع 440 اهم) به سمت زمین با سیگنال به سمت آردوینو مستقل در وسط

مرحله 3: فایل Bootloader را ویرایش کنید ، Bootloader را رایت کرده و طرح خود را بارگذاری کنید

فایل Bootloader را ویرایش کنید ، Bootloader را رایت کرده و طرح خود را بارگذاری کنید
فایل Bootloader را ویرایش کنید ، Bootloader را رایت کرده و طرح خود را بارگذاری کنید
فایل Bootloader را ویرایش کنید ، Bootloader را رایت کرده و طرح خود را بارگذاری کنید
فایل Bootloader را ویرایش کنید ، Bootloader را رایت کرده و طرح خود را بارگذاری کنید

3) فایل bootloader (boards.txt) را ویرایش کرده و bootloader را در Arduino مستقل رایت کنید. طرح خود را بارگذاری کنید

ویرایش فایل بوت لودر

برای اجرای Arduino مستقل ، باید تنظیمات فیوز brownout بوت لودر را ویرایش کنید. در غیر این صورت ، شما می توانید یک بوت لودر را روی آن بسوزانید اما نمی توانید هیچ اسکچی را اجرا کنید.

می توانید تشخیص brownout را به طور کامل حذف کنید ، اما من آن را توصیه نمی کنم. در عوض ، ما قصد داریم آن را از 2.7 ولت (که به طور پیش فرض روی تراشه من آمده است) کاهش دهیم و 1.8 ولت را جایگزین آن کنیم. در نهایت ، با این حال ، می توانید با استفاده از ماشین حساب فیوز ، تنظیمات قهوه ای مورد نظر خود را انتخاب کنید.

فایل تابلوهای من در محل زیر بود:

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

با این حال ، ممکن است بیش از یک فایل boards.txt در پوشه سخت افزاری خود غیر از /arudino /داشته باشید. شما در حال ویرایش فایل boards.txt در / arduino / location هستید زیرا بخش ATMEGA328p (3.3V ، 8 مگاهرتز) را اصلاح می کنید.

اگر Arduino IDE را مجدداً نصب یا به روز کنید (طبق این پست) ممکن است فایل boards.txt ویرایش شده را از دست بدهید. این بدان معناست که اگر Arduino IDE را به روز می کنید ، اگر می خواهید یک Arduino مستقل دیگر ایجاد کنید ، باید دوباره این تنظیمات را تغییر دهید.

در فایل boards.txt ، به پایین بروید یا عبارت "Pro Mini" را جستجو کنید. عنوان این بخش "pro.name = Arduino Pro یا Pro Mini" است. به زیر بخش "pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V ، 8 مگاهرتز)" بروید.

به دنبال خطی باشید که می گوید "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

تنظیمات را به xFE تغییر دهید. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

ذخیره و خروج.

سوزاندن بوت لودر

پس از انجام این کار ، می توانید بخش "دستورالعمل" را در راهنمای ISP از مراحل 1 تا 5 دنبال کنید.

چند نکته برای روشن شدن:

  • هنگامی که طرح "Arduino به عنوان ISP" را بارگذاری می کنید ، باید مطمئن شوید که پورت و پردازنده COM صحیح انتخاب شده است.

    در این حالت ، به این معنی است که شما پورت COM آردوینو خود را در Tools-> Port: COM X (Arduino Uno) انتخاب کرده اید و برد Arduio Uno است

  • برنامه نویس صحیح را انتخاب کنید: در قسمت Tools-> Programmer-> Arduino به عنوان ISP.

    نه ArduinoISP یا ArduinoISP.org

  • قبل از سوزاندن بوتلودر ، برد "Pro یا Pro Mini" و پردازنده را به "ATMEGA328p (3.3V ، 8 مگاهرتز)" تغییر دهید.

    تا نوع برد مناسب را انتخاب نکنید ، بخش پردازنده را مشاهده نخواهید کرد

بوت لودر را روی Arduino مستقل بسوزانید قبل از اینکه بخواهید طرح هایی روی آن بنویسید.

بارگذاری طرح

این بسیار مهم است. اکنون می توانید Arduino را برنامه ریزی کنید: Uno و Standalone. اگر در دستگاه صحیح بارگذاری نمی کنید ، باید قسمت بالا را تکرار کنید و Arduino را به عنوان برنامه ISP در Uno بازنویسی کنید.

هنگامی که طرح خود را بارگذاری می کنید ، مطمئن شوید که بر روی Tools -> Upload using programmer یا روی Ctrl+Shift+U کلیک کنید. همچنین می توانید shift را نگه دارید و روی نماد پیکان کلیک کنید ، اما بدون نگه داشتن shift روی نماد پیکان کلیک نکنید.

نکات رایج عیب یابی

  • برای عیب یابی خروجی مفصل را روشن کنید.
  • "امضا کننده دستگاه همه 0 است!" [این یکی به احتمال زیاد رخ می دهد.]

    • به بخش سیم کشی ISP مراجعه کنید. یا آردوینو مستقل را به اشتباه سیم کشی کرده اید یا آن را روشن نمی کنید.
    • مطمئن شوید که پورت و برد / پردازنده COM مناسب را انتخاب کرده اید. هنگامی که بوت لودر را می سوزانید ، باید مطمئن شوید که بوت لودر Pro Mini 3.3V 8 مگاهرتز را روی آن می سوزانید یا فیوزها درست تنظیم نمی شوند.
  • "من فایل boards.txt را ویرایش کردم اما ویرایش ها را نمی بینم"

    اطمینان حاصل کنید که فایل درست boards.txt را ویرایش کرده اید. اگر ویرایش ها کار نمی کنند ، Arduino IDE را به روز کنید یا پوشه های دیگر / سخت افزار / پوشه خود را موقتاً حذف کنید

  • "من نمی توانم بخش مینی حرفه ای boards.txt را پیدا کنم!"

    شما به دنبال فایل boards.txt مناسب نیستید. پوشه Arduino // hardware/arduino/را بررسی کنید

مرحله 4: ارتباط سریال

4) دستگاه مستقل را از طریق ارتباط سریال نظارت کنید

شما واقعاً می توانید این کار را از طریق 2 روش انجام دهید ، بنابراین اگر حتی یک کابل FTDI / برد شکستن ندارید ، این پایان جهان نیست. و به یاد داشته باشید ، طرح مورد نظر شما در آردوینو مستقل بارگذاری شده است ، باید دارای دستورات Serial.print باشد تا بتوانید بخوانید: اگر آن را در برنامه ننوشته اید ، چیزی نمی بینید!

اگر کابل FTDI ندارید

بعد از اینکه بوت لودر را سوزاندید و برنامه موردنظر خود را نوشتید ، می توانید (با دقت زیاد و به خاطر داشته باشید که در کدام جهت قرار می گیرد) تراشه DIP ATMEGA328 را از Arduino Uno حذف کنید. من توصیه می کنم برای این کار از سر تخت استفاده کنید.

شما می توانید RX مستقل Arduino را به Uno's RX و TX را به TX متصل کنید. بله ، معمولاً برعکس است ، اما می توانید از Uno به عنوان "ارسال" اطلاعات به مانیتور سریال IDE فکر کنید. به همین دلیل است که در این حالت RX را به TX و TX ro RX متصل نمی کنید. وقتی برنامه خود را اجرا می کنید ، مطمئن شوید که پورت COM Arduino Uno را انتخاب کرده اید و مانیتور سریال را باز کنید. شما قادر خواهید بود خروجی سریال مستقل آردوینو را مشاهده کنید.

(این راه حل در اینجا به Robin2 اعتبار داده می شود.)

اگر کابل / برد FTDI دارید

(من از تخته FTDI Sparkfun استفاده می کنم که با استفاده از پد لحیم در پشت به 3.3V تبدیل کرده ام)

به سادگی GND برد برک آوت را به زمین مستقل آردوینو وصل کنید و RX برک برد را به TX آردوینو و TX را به RX وصل کنید. (اگر شما فقط نظارتی سریالی دارید و هیچ چیزی را بازنویسی نمی کنید ، فقط می توانید RX breadboard را به Arduino TX وصل کنید).

در نظر داشته باشید در این مرحله شما می توانید آردوینو مستقل را از طریق کابل Uno یا FTDI تغذیه کنید. هر دو منبع تغذیه را به طور همزمان وصل نکنید! توجه داشته باشید که باید پورت COM را تغییر دهید زیرا متفاوت از پورت Arduino Uno COM است.

نکات رایج عیب یابی

  • "من چیزی نمی بینم!"

    • بررسی کنید که آیا پورت COM صحیح را فعال کرده اید یا خیر.
    • بررسی کنید آیا جدیدترین درایورهای FTDI را دارید یا خیر.
    • مطمئن شوید که زمین متصل است.
  • "تنها چیزی که می بینم خروجی زباله در مانیتور سریال است!"

    • شما چیزی به دست می آورید که نشانه خوبی است.
    • با این حال ، ولتاژ برد FTDI را بررسی کنید.
    • آردوینو مستقل 3.3 ولت را در TX خود تولید می کند و اگر FTDI انتظار 5 ولت را داشته باشد ، ممکن است برد FTDI آن را بلند نکند.
    • نرخ باود را بررسی کنید.
    • مطمئن شوید که اتصال زمین و فقط یک منبع تغذیه متصل شده است! (یعنی آردوینو مستقل را از برد Uno AND FTDI خود تغذیه نکنید.

توصیه شده: