فهرست مطالب:
- مرحله 1: طراحی PCB
- مرحله 2: طراحی پروتکل
- مرحله 3: طراحی سیستم عامل
- مرحله 4: ارتباط از طریق Flowcode
- مرحله 5: سایر روشهای رابط
- مرحله 6: محصول نهایی
تصویری: برد رابط جهانی تعبیه شده - USB/Bluetooth/WIFI Control: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
من اغلب می بینم که کتابخانه هایی برای ماژول های جاسازی شده جدید از ابتدا بر اساس برگه داده دستگاه ایجاد می کنم. در تولید کتابخانه متوجه می شوم که در یک چرخه کد گیر می افتم ، کامپایل می کنم ، برنامه می گذارم و آزمایش می کنم وقتی مطمئن می شوم که کارها کار می کنند و عیب ندارند. اغلب زمان کامپایل و برنامه می تواند بسیار بیشتر از زمان لازم برای ویرایش کد باشد و بنابراین راهی برای حذف این مراحل هنگام توسعه بسیار مفید خواهد بود.
همچنین اغلب اوقات می خواهم که یک ماژول تعبیه شده را با رایانه ارتباط دهم. اگر ماژول به طور خاص اتصال USB ندارد که اغلب اتفاق می افتد ، به طور کلی باید یک مبدل USB گران قیمت بخرید که تنها یک کار مانند SPI یا فقط I2C را انجام دهد.
به همین دلایل تصمیم گرفتم یک صفحه رابط جهانی ایجاد کنم. این برنامه به گونه ای طراحی شده است که امکان ارتباطات آسان مبتنی بر رایانه شخصی با ماژول های تعبیه شده را فراهم می کند.
ویژگیهای رابط تعبیه شده برد که من بر روی آن تصمیم گرفتم شامل می شود.
- ورودی/خروجی دیجیتال
- I2C
- SPI
- UART
- PWM
- سرو موتور
- ورودی ADC
- خروجی DAC
همه آنها می توانند کاملاً مستقل استفاده شوند.
برد رابط را می توان از طریق اتصال USB به رایانه کنترل کرد ، اما همچنین دارای اتصالات WIFI یا ماژول بلوتوث اختیاری است تا بتوان از برد از راه دور یا در سناریوی نوع IoT استفاده کرد.
با استفاده از سرصفحه های استاندارد SIL با ارتفاع 2.54 میلی متر ، می توانید کابل های دوپونت زن را مستقیماً بین برد و ماژول تعبیه شده متصل کرده و اتصالات سریع ، مطمئن و بدون لحیم کاری را امکان پذیر کنید.
من همچنین به افزودن مواردی مانند CAN ، LIN ، H-Bridge و غیره فکر کردم ، اما ممکن است بعداً با یک نسخه v2 به این موارد اضافه شود.
مرحله 1: طراحی 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 بسیار قدرتمند است و به ما اجازه می دهد تا یک جزء برای صحبت با برد ایجاد کنیم. در ایجاد کامپوننت ، می توانیم کامپوننت را به سادگی به پروژه خود بکشانیم و فوراً عملکردهای برد را در اختیار داشته باشیم. به عنوان یک امتیاز اضافی ، هر جزء موجود که دارای لوازم جانبی 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 را توسعه دهم. اکنون می توانم قبل از توسل به هر گونه تقلب برنامه نویسی یا برنامه نویسی ، کد را کاملاً ضبط کنم.
من حتی برخی تخته ها را برای همکارانم ارسال کرده ام تا آنها نیز بتوانند جریان کار خود را بهبود بخشند و استقبال خوبی از آنها شده است.
با تشکر از شما برای خواندن دستورالعمل من امیدوارم که برای شما مفید واقع شده باشد و امیدوارم به شما انگیزه دهد که ابزارهای خود را برای افزایش بهره وری خود ایجاد کنید.
توصیه شده:
مدیر پنجره تعبیه شده: 10 مرحله
مدیر پنجره جاسازی شده: این پروژه نحوه پیاده سازی یک مدیر پنجره با پنجره های متحرک روی هم روی یک میکروکنترلر تعبیه شده با پنل LCD و صفحه لمسی را نشان می دهد. بسته های نرم افزاری تجاری موجود برای انجام این کار وجود دارد ، اما هزینه آنها بسیار نزدیک است
قفسه تعبیه شده: 4 مرحله
قفسه تعبیه شده: در هاله ای شاد ، نگه داشتن چیزها در داخل چیزی است که شبیه یک هیجان بزرگ است. نام "قفل قفل" در واقع بخش مهمی از مقالات روزانه من است که به دلیل ماهیت آن در همه جا وجود دارد ، اما چه کاری انجام می دهد؟ ساده
نور کیهانی با LED های تعبیه شده در رزین: 11 مرحله (همراه با تصاویر)
چراغ کیهانی با LED های تعبیه شده در رزین: من می خواستم از رزینی که از LED استفاده می کرد اما از لحیم کاری استفاده می کرد ، چراغی بسازم (می دانم که بسیاری از مردم لحیم نمی زنند ، و احتمالاً تعداد کمی از آنها مانند من می توانند این کار را انجام دهند اما انجام ندهند) من واقعاً دوست دارم این کار را انجام دهم.) با دو باتری سکه تغذیه می شود بنابراین آسان است
بازی بازی بسکتبال هوشمند با حلقه های شمارش امتیاز با استفاده از پلتفرم تعبیه شده Evive- Arduino: 13 مرحله
بازی بازی بسکتبال هوشمند با حلقه شمارش امتیاز با استفاده از پلتفرم تعبیه شده Evive- Arduino: از بین همه بازی های موجود ، سرگرم کننده ترین آنها بازی های آرکید است. بنابراین ، ما فکر کردیم که چرا خودمان را در خانه درست نکنیم! و ما اینجا هستیم ، سرگرم کننده ترین بازی DIY که تا به حال انجام داده اید - بازی بسکتبال DIY Arcade! نه تنها این
UCL - تعبیه شده - انتخاب و مکان: 4 مرحله
UCL - جاسازی شده - انتخاب و مکان: این دستورالعمل با وجود این که چگونه یک واحد انتخاب و مکان دوبعدی ساخته شده و چگونه آن را کدگذاری می کند ، انجام می شود