فهرست مطالب:

برد رابط جهانی تعبیه شده - USB/Bluetooth/WIFI Control: 6 مرحله
برد رابط جهانی تعبیه شده - USB/Bluetooth/WIFI Control: 6 مرحله

تصویری: برد رابط جهانی تعبیه شده - USB/Bluetooth/WIFI Control: 6 مرحله

تصویری: برد رابط جهانی تعبیه شده - USB/Bluetooth/WIFI Control: 6 مرحله
تصویری: CS50 2015 – 10-я неделя 2024, نوامبر
Anonim
برد رابط جهانی تعبیه شده - USB/Bluetooth/WIFI Control
برد رابط جهانی تعبیه شده - USB/Bluetooth/WIFI Control
برد رابط جهانی تعبیه شده - USB/Bluetooth/WIFI Control
برد رابط جهانی تعبیه شده - USB/Bluetooth/WIFI Control

من اغلب می بینم که کتابخانه هایی برای ماژول های جاسازی شده جدید از ابتدا بر اساس برگه داده دستگاه ایجاد می کنم. در تولید کتابخانه متوجه می شوم که در یک چرخه کد گیر می افتم ، کامپایل می کنم ، برنامه می گذارم و آزمایش می کنم وقتی مطمئن می شوم که کارها کار می کنند و عیب ندارند. اغلب زمان کامپایل و برنامه می تواند بسیار بیشتر از زمان لازم برای ویرایش کد باشد و بنابراین راهی برای حذف این مراحل هنگام توسعه بسیار مفید خواهد بود.

همچنین اغلب اوقات می خواهم که یک ماژول تعبیه شده را با رایانه ارتباط دهم. اگر ماژول به طور خاص اتصال USB ندارد که اغلب اتفاق می افتد ، به طور کلی باید یک مبدل USB گران قیمت بخرید که تنها یک کار مانند SPI یا فقط I2C را انجام دهد.

به همین دلایل تصمیم گرفتم یک صفحه رابط جهانی ایجاد کنم. این برنامه به گونه ای طراحی شده است که امکان ارتباطات آسان مبتنی بر رایانه شخصی با ماژول های تعبیه شده را فراهم می کند.

ویژگیهای رابط تعبیه شده برد که من بر روی آن تصمیم گرفتم شامل می شود.

  • ورودی/خروجی دیجیتال
  • I2C
  • SPI
  • UART
  • PWM
  • سرو موتور
  • ورودی ADC
  • خروجی DAC

همه آنها می توانند کاملاً مستقل استفاده شوند.

برد رابط را می توان از طریق اتصال USB به رایانه کنترل کرد ، اما همچنین دارای اتصالات WIFI یا ماژول بلوتوث اختیاری است تا بتوان از برد از راه دور یا در سناریوی نوع IoT استفاده کرد.

با استفاده از سرصفحه های استاندارد SIL با ارتفاع 2.54 میلی متر ، می توانید کابل های دوپونت زن را مستقیماً بین برد و ماژول تعبیه شده متصل کرده و اتصالات سریع ، مطمئن و بدون لحیم کاری را امکان پذیر کنید.

من همچنین به افزودن مواردی مانند CAN ، LIN ، H-Bridge و غیره فکر کردم ، اما ممکن است بعداً با یک نسخه v2 به این موارد اضافه شود.

مرحله 1: طراحی PCB

طراحی PCB
طراحی PCB
طراحی PCB
طراحی PCB
طراحی PCB
طراحی PCB
طراحی PCB
طراحی PCB

هنگام طراحی PCB ، من سعی می کنم تا آنجا که ممکن است همه چیز را ساده نگه دارم. هنگامی که قصد دارید تخته هایی را با دست بسازید ، مهم است که قطعات را فقط در مواقعی که هدف خاصی دارند ، اضافه کنید و تا آنجا که ممکن است از ویژگی های داخلی میکروکنترلر استفاده کنید.

با نگاه کردن به تامین کننده لوازم الکترونیکی مورد علاقه خود ، تراشه ای پیدا کردم که با آن راحت بودم و دارای ویژگی های مورد نظر من بود و هزینه مناسبی داشت. تراشه ای که روی آن فرود آمدم PIC18F24K50 بود.

با 23 پین ورودی/خروجی موجود ، این ویژگی ها به من امکان پذیر است

  • دیگیتال ورودی/خروجی
  • I2C
  • SPI
  • UART
  • PWM x 2
  • سروو موتور x 6
  • ورودی ADC x 3
  • خروجی DAC x 1
  • I/O از 5V یا 3V3 هدایت می شود
  • LED وضعیت

یک اشکال IC که من انتخاب کردم این است که فقط یک دستگاه UART جانبی دارد و بنابراین استفاده از روش کنترل بلوتوث یا Wifi شما را از استفاده از اتصال UART باز می دارد.

در تصاویر بالا شماتیک کامل و PCB نشان داده شده است.

مرحله 2: طراحی پروتکل

طراحی پروتکل
طراحی پروتکل

اولین قدم در طراحی پروتکل این است که تصمیم بگیرید که بورد به طور خاص برای انجام چه کارهایی نیاز دارد. شکستن همه چیز سطح کنترل بهتری را اضافه می کند در حالی که ترکیب همه چیز با یکدیگر رابط کاربری را ساده کرده و ترافیک رفت و آمد بین برد و رایانه را کاهش می دهد. این یک بازی متعادل است و کامل کردن آن سخت است.

برای هر عملکرد برد باید پارامترها و بازده ها را نشان دهید. به عنوان مثال ، یک تابع برای خواندن ورودی ADC ممکن است دارای یک پارامتر برای تعیین ورودی نمونه و مقدار بازگشتی حاوی نتیجه باشد.

در طراحی من ، لیستی از توابع که می خواستم شامل آنها باشد ، در اینجا آمده است:

  • ورودی/خروجی دیجیتال

    • SetPin (PinNumber ، State)
    • حالت = GetPin (PinNumber)
  • SPI

    • راه اندازی اولیه (حالت SPI)
    • DataIn = انتقال (DataOut)
    • ControlChipSelect (کانال ، ایالت)
    • SetPrescaler (نرخ)
  • I2C

    • راه اندازی اولیه ()
    • شروع ()
    • راه اندازی مجدد ()
    • متوقف کردن ()
    • SlaveAck = ارسال (DataOut)
    • DataIn = دریافت (آخرین)
  • UART

    • راه اندازی اولیه ()
    • بایت TX (DataOut)
    • BytesAvailable = تعداد RX ()
    • DataIn = بایت RX ()
    • SetBaud (Baud)
  • PWM

    • فعال کردن (کانال)
    • غیرفعال کردن (کانال)
    • تنظیم فرکانس (کانال ، فرکانس)
    • GetMaxDuty (وظیفه)
    • SetDuty (وظیفه)
  • سروو

    • فعال کردن (کانال)
    • غیرفعال کردن (کانال)
    • SetPosition (کانال ، موقعیت)
  • ADC

    ADCsample = نمونه (کانال)

  • DAC

    • فعال کنید
    • غیرفعال کنید
    • SetOutput (ولتاژ)
  • وای فای

    • SetSSID (SSID)
    • تنظیم رمز عبور (رمز عبور)
    • وضعیت = CheckConnectionStatus ()
    • IP = GetIPAddress ()

پارامترها در داخل پرانتز نشان داده می شوند و بازده قبل از علامت برابر نشان داده می شود.

قبل از شروع برنامه نویسی ، به هر تابع یک کد فرمان اختصاص می دهم که از 128 شروع می شود (باینری 0b10000000) و به بالا کار می کند. من پروتکل را به طور کامل مستند می کنم تا اطمینان حاصل شود که وقتی سرم در کد قرار گرفت ، یک سند خوب برای بازگشت به آن دارم. سند کامل پروتکل این پروژه ضمیمه شده است و شامل کدهای فرمان ورودی و عرض بیت است.

مرحله 3: طراحی سیستم عامل

طراحی سیستم عامل
طراحی سیستم عامل
طراحی سیستم عامل
طراحی سیستم عامل
طراحی سیستم عامل
طراحی سیستم عامل

پس از ایجاد پروتکل ، موردی برای پیاده سازی عملکرد روی سخت افزار است.

من هنگام توسعه سیستم های برده یک رویکرد ساده از نوع ماشین حالت را به کار می گیرم تا بتوانم فرمان و داده های بالقوه را به حداکثر برسانم در حالی که سیستم عامل را برای درک و اشکال زدایی ساده نگه می دارم. اگر نیاز به تعامل بهتر با سایر دستگاه های متصل دارید ، می توانید از سیستم پیشرفته تری مانند Modbus استفاده کنید ، اما این هزینه اضافی را اضافه می کند که کار را کند می کند.

ماشین حالت شامل سه حالت است:

1) منتظر دستورات باشید

2) دریافت پارامترها

3) پاسخ دهید

این سه حالت به شرح زیر با هم تعامل دارند:

1) بایت های ورودی را در بافر مرور می کنیم تا یک بایت داشته باشیم که دارای بیشترین مقدار بیت است. پس از دریافت چنین بایت ، آن را با لیستی از دستورات شناخته شده بررسی می کنیم. اگر تطبیقی پیدا کردیم ، تعداد پارامترهای بایت را تعیین می کنیم و بایت ها را برای مطابقت با پروتکل باز می گردانیم. اگر بایت پارامتر وجود نداشته باشد ، می توانیم فرمان را در اینجا انجام دهیم و یا به حالت 3 برویم یا حالت 1 را راه اندازی مجدد کنیم.

2) بایت های ورودی را ذخیره می کنیم تا همه پارامترها را ذخیره کنیم. وقتی همه پارامترها را در اختیار داشتیم ، فرمان را انجام می دهیم. اگر بایت های بازگشتی وجود داشته باشد ، به مرحله 3 می رویم. اگر بایت بازگشتی برای ارسال وجود نداشته باشد ، به مرحله 1 برمی گردیم.

3) بایت های ورودی را مرور می کنیم و برای هر بایت ، بایت اکو را با یک بایت بازگشت معتبر بازنویسی می کنیم. پس از ارسال همه بایت های بازگشتی ، به مرحله 1 باز می گردیم.

من از Flowcode برای طراحی سیستم عامل استفاده کردم زیرا به خوبی نشان می دهد که من چه کار می کنم. همین کار را می توان در آردوینو یا سایر زبان های برنامه نویسی تعبیه شده به همان اندازه خوب انجام داد.

اولین قدم ایجاد ارتباط با رایانه شخصی است. برای انجام این کار میکرو باید پیکربندی شود تا با سرعت مناسب کار کند و ما باید کد را برای رانندگی وسایل جانبی USB و UART اضافه کنیم. در Flowcode این کار به آسانی کشیدن یک قطعه سریال USB و یک جزء UART از منوی کامپوننت به داخل پروژه است.

ما برای قطع دستورات ورودی در UART یک وقفه و بافر RX اضافه می کنیم و به طور منظم از USB نظرسنجی می کنیم. سپس می توانیم در فرایند فراغت خود بافر را انجام دهیم.

پروژه Flowcode و کد C تولید شده پیوست شده است.

مرحله 4: ارتباط از طریق Flowcode

رابط از طریق Flowcode
رابط از طریق Flowcode
رابط از طریق Flowcode
رابط از طریق Flowcode
رابط از طریق Flowcode
رابط از طریق Flowcode

شبیه سازی Flowcode بسیار قدرتمند است و به ما اجازه می دهد تا یک جزء برای صحبت با برد ایجاد کنیم. در ایجاد کامپوننت ، می توانیم کامپوننت را به سادگی به پروژه خود بکشانیم و فوراً عملکردهای برد را در اختیار داشته باشیم. به عنوان یک امتیاز اضافی ، هر جزء موجود که دارای لوازم جانبی SPI ، I2C یا UART است می تواند در شبیه سازی مورد استفاده قرار گیرد و داده های ارتباطات را می توان از طریق یک جزء تزریق کننده به صفحه رابط منتقل کرد. تصاویر پیوست شده یک برنامه ساده را برای چاپ پیام روی صفحه نمایش می دهد. داده های ارتباطی که از طریق برد رابط به سخت افزار صفحه نمایش واقعی و تنظیمات قطعات با اجزای I2C Display ، I2C Injector و Interface Board ارسال می شود.

حالت SCADA جدید برای Flowcode 8.1 یک امتیاز اضافی مطلق است زیرا ما می توانیم برنامه ای را اجرا کنیم که در شبیه ساز Flowcode کاری انجام می دهد و آن را صادر کنیم تا به تنهایی بر روی هر رایانه ای بدون هیچ گونه مشکل مجوز اجرا شود. این می تواند برای پروژه هایی مانند دکل های آزمایشی یا خوشه های حسگر عالی باشد.

من از این حالت SCADA برای ایجاد ابزار پیکربندی WIFI استفاده می کنم که می تواند برای پیکربندی SSID و رمز عبور و همچنین جمع آوری آدرس IP ماژول استفاده شود. این به من این امکان را می دهد که همه چیز را با استفاده از اتصال USB تنظیم کنم و بعد از اینکه همه چیز در حال اجرا است ، به اتصال شبکه WIFI منتقل کنم.

برخی از پروژه های نمونه ضمیمه شده است.

مرحله 5: سایر روشهای رابط

علاوه بر Flowcode ، می توانید از زبان برنامه نویسی دلخواه خود برای ارتباط با برد رابط استفاده کنید. ما از Flowcode استفاده کردیم زیرا دارای کتابخانه ای از قسمتهایی بود که می توانستیم بلافاصله راه اندازی و اجرا کنیم ، اما این امر در مورد بسیاری از زبان های دیگر نیز صدق می کند.

در اینجا لیستی از زبانها و روشهای ارتباط با برد رابط وجود دارد.

پایتون - استفاده از یک کتابخانه سریال برای انتقال داده ها به پورت COM یا آدرس IP

Matlab - استفاده از دستورات File برای انتقال داده ها به پورت COM یا آدرس IP

C ++ / C# / VB - با استفاده از DLL از پیش نوشته شده ، دسترسی مستقیم به پورت COM یا Windows TCP / IP API

Labview - با استفاده از DLL از پیش نوشته شده ، جزء سریال VISA یا جزء TCP/IP

اگر کسی مایل به مشاهده زبان های بالا است ، لطفاً به من اطلاع دهید.

مرحله 6: محصول نهایی

محصول نهایی
محصول نهایی
محصول نهایی
محصول نهایی
محصول نهایی
محصول نهایی

محصول نهایی به احتمال زیاد یک ویژگی برجسته در کیت ابزار تعبیه شده من در سالهای آینده خواهد بود. در حال حاضر به من کمک کرده است تا اجزای صفحه نمایش و سنسورهای مختلف Grove را توسعه دهم. اکنون می توانم قبل از توسل به هر گونه تقلب برنامه نویسی یا برنامه نویسی ، کد را کاملاً ضبط کنم.

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

با تشکر از شما برای خواندن دستورالعمل من امیدوارم که برای شما مفید واقع شده باشد و امیدوارم به شما انگیزه دهد که ابزارهای خود را برای افزایش بهره وری خود ایجاد کنید.

توصیه شده: