فهرست مطالب:

LCD STONE با خانه هوشمند: 5 مرحله
LCD STONE با خانه هوشمند: 5 مرحله

تصویری: LCD STONE با خانه هوشمند: 5 مرحله

تصویری: LCD STONE با خانه هوشمند: 5 مرحله
تصویری: اجرای خانه هوشمند تمام اتوماتیک 1 Full Automatic Smart home 2024, نوامبر
Anonim
LCD STONE با خانه هوشمند
LCD STONE با خانه هوشمند

امروز ، من صفحه نمایش درایو پورت سریال STONE را دریافت کردم که می تواند از طریق درگاه سریال MCU ارتباط برقرار کند ، و طراحی منطقی UI این صفحه نمایش را می توان مستقیماً با استفاده از نرم افزار VGUS ارائه شده در وب سایت رسمی STONE طراحی کرد ، که برای ما بسیار راحت است. بنابراین من قصد دارم از آن برای ساخت یک کنترل کننده ساده لوازم خانگی ، که شامل کنترل چراغ های مختلف (اتاق نشیمن ، آشپزخانه ، اتاق کودکان ، حمام) است ، استفاده کنم. در عین حال ، درجه حرارت داخلی و خارجی ، رطوبت و کیفیت هوا را می توان جمع آوری کرد. این فقط یک نسخه ی نمایشی ساده است و می توانید از طریق کدی که ارائه کرده ام توسعه ثانویه را انجام دهید. برخی از آموزش های اولیه در مورد صفحه STONE را می توانید به وب سایت مراجعه کنید:

این وب سایت دارای اطلاعات متنوعی در مورد مدل ، کاربر و اسناد طراحی و همچنین آموزش های ویدئویی است. در اینجا به جزئیات زیادی نمی پردازم.

مرحله 1: طراحی رابط کاربری

طراحی رابط کاربری
طراحی رابط کاربری
طراحی رابط کاربری
طراحی رابط کاربری
طراحی رابط کاربری
طراحی رابط کاربری
طراحی رابط کاربری
طراحی رابط کاربری

فتوشاپ

من دو صفحه UI زیر را با فتوشاپ طراحی کردم:

این پروژه در مجموع دارای دو صفحه فوق می باشد. "Light" و "Sensor" در گوشه بالا سمت راست دکمه های تغییر این دو صفحه هستند.

در صفحه "نور" ، می توانید انواع چراغ های خانه خود را کنترل کنید. در صفحه "سنسور" ، می توانید مقادیر تشخیص داده شده توسط سنسورهای مختلف را بررسی کنید.

پس از طراحی دو صفحه فوق ، می توانیم از طریق نرم افزار STONE TOOL ارائه شده در وب سایت رسمی STONE ، یک طرح منطقی دکمه را انجام دهیم.

شایان ذکر است که منبع ساعت مورد استفاده برای نمایش زمان در اینجا منبع ساعت صفحه نمایش است ، نه منبع ساعت MCU.

اثر تغییر صفحه TAB

در نرم افزار STONE TOOL هیچ جزء تغییر صفحه TAB یافت نشد ، بنابراین من روش دیگری را برای دستیابی به جلوه تغییر صفحه TAB در نظر گرفتم.

از طریق مشاهده من دو تصویر رابط کاربری ارائه می دهم که می توان دریافت که دو تصویر بالا متن "Light" و "Sensor" هستند ، تفاوت اندازه پیکسل آنها متفاوت است ، بنابراین ما فقط باید موقعیت دو پیکسل را روی همان متن ، و سپس از طریق گوشه سمت چپ بالای زمان و تاریخ برای مرجع ، می توانید به TAB برای تغییر جلوه دست یابید.

منطق دکمه ای

دکمه "اتاق نشیمن" را به عنوان مثال در نظر بگیرید. وقتی کاربر این دکمه را فشار می دهد ، صفحه نمایش پورت سریال STONE دستورالعمل پروتکل مربوطه را از طریق پورت سریال ارسال می کند. پس از دریافت این دستورالعمل ، MCU کاربر پروتکل را برای کنترل وضعیت سوئیچینگ چراغهای متصل به MCU تجزیه می کند.

کسب سنسور

برای مثال ، "کیفیت هوا" را در نظر بگیرید: اگر می خواهید کیفیت هوای داخلی را به دست آورید ، ما باید یک MCU برای جمع آوری کیفیت هوا ، سنسور کیفیت هوا داشته باشیم ، هنگامی که عدد MCU از طریق الگوریتم مقایسه مزایا و معایب کیفیت هوا ، و سپس MCU از طریق یک درگاه سریال برای نمایش منطقه ذخیره سازی "خوب" یا "بد" ، برای تغییر محتوای صفحه نمایش "متغیر متغیر 0" ارسال می شود ، و سپس کاربر می تواند به طور شهودی مزایای کنترل کیفیت را مشاهده کند. این موارد بعداً در کد MCU توضیح داده شده است.

مرحله 2: ارتباط MCU

ارتباطات MCU
ارتباطات MCU
ارتباطات MCU
ارتباطات MCU
ارتباطات MCU
ارتباطات MCU
ارتباطات MCU
ارتباطات MCU

STM32 MCU است که همه با آن آشنا هستند و یک مدل MCU رایج در بین المللی است. بنابراین ، مدل خاص STM32 MCU I که در این پروژه استفاده کردم STM32F103RCT6 است.

سری های زیادی از STM32 وجود دارد که می تواند نیازهای مختلف بازار را برآورده کند. هسته را می توان به cortex-m0 ، M3 ، M4 و M7 تقسیم کرد و هر هسته را می توان به جریان اصلی ، عملکرد بالا و مصرف برق کم تقسیم کرد.

صرفاً از منظر یادگیری ، می توانید F1 و F4 را انتخاب کنید ، F1 نوع اصلی را نشان می دهد ، بر اساس هسته cortex-m3 ، فرکانس اصلی 72MHZ است ، F4 نشان دهنده عملکرد بالا ، بر اساس هسته cortex-m4 ، اصلی است فرکانس 180M

در مورد F1 ، F4 (سری 429 و بالاتر) ، جدا از هسته های مختلف و بهبود فرکانس اصلی ، ویژگی بارز ارتقاء کنترل LCD و رابط دوربین ، پشتیبانی از SDRAM است ، این تفاوت در انتخاب پروژه در اولویت قرار می گیرد. با این حال ، از دیدگاه آموزش دانشگاه و یادگیری اولیه کاربران ، سری F1 هنوز اولین انتخاب است. در حال حاضر STM32 سری F1 بیشترین مقدار مواد و محصولات را در بازار دارد.

در مورد نحوه نصب و راه اندازی محیط توسعه STM32 SCM و روش بارگیری برنامه ، من مقدمه ای را انجام نمی دهم.

راه اندازی GPIO

در این پروژه ، ما در مجموع از 4 GPIO استفاده کردیم که یکی از آنها پین خروجی PWM است. بیایید ابتدا به راه اندازی سه درگاه معمولی GPIO نگاه کنیم:

این تابع PB0 / PB1 / PB2 STM32F103C8 را به عنوان پین خروجی راه اندازی می کند و آن را از تابع اصلی فراخوانی می کند. پس از راه اندازی اولیه ، ما باید منطقی برای کنترل وضعیت خروجی ، سطح بالا و پایین این GPIO داشته باشیم ، بنابراین تابع را به صورت زیر نوشتم:

این تابعی است که می توانید بصورت شهودی با نام متغیر آن را درک کنید.

راه اندازی پورت سریال

قسمت راه اندازی اولیه پورت سریال در uart.c است:

سپس در تابع اصلی uart_init را فراخوانی کنید تا سرعت baud پورت سریال 115200 اولیه شود. پین ها از PA9/PA10 استفاده می کنند

راه اندازی اولیه PWM

مراحل خاص:

1. ساعت RCC را تنظیم کنید.

2. تنظیم ساعت GPIO ؛ حالت GPIO باید روی GPIO_Model_AF_PP یا عملکرد GPIO_PinRemapConfig () تنظیم شود در صورتی که نیاز به تغییر مجدد پین باشد.

3. تنظیم رجیسترهای مربوط به زمان سنج TIMx.

4. ثبت مربوط به PWM تایمر TIMx.

A. حالت PWM را تنظیم کنید

B. تنظیم چرخه وظیفه (محاسبه فرمول)

C. قطبیت مقایسه خروجی (قبلاً معرفی شده) را تنظیم کنید

D. مهمتر از همه ، حالت خروجی TIMx را فعال کرده و خروجی PWM TIMx را فعال کنید. پس از اتمام تنظیمات مربوطه ، تایمر TIMx توسط TIMx_Cmd () روشن می شود تا خروجی PWM را بدست آورد. این را از تابع اصلی با TIM3_PWM_Init صدا کنید.

مرحله 3: نوشتن کد منطقی

نوشتن کد منطقی
نوشتن کد منطقی
نوشتن کد منطقی
نوشتن کد منطقی
نوشتن کد منطقی
نوشتن کد منطقی

نمایش آدرس جزء

اجزای صفحه نمایش آدرس های جداگانه ای دارند و در اینجا همه آنها را به صورت کلان تعریف کرده ام: دریافت داده های سریال

با نگاه کردن به اطلاعات مربوط به صفحه STONE ، می توانید مشاهده کنید که با فشار دادن دکمه ، پورت سریال روی صفحه پروتکل ها را در قالب مناسب ارسال می کند ، که MCU کاربر می تواند آنها را دریافت و تجزیه کند. با فشردن دکمه ، پورت سریال روی صفحه نمایش نه بایت داده از جمله داده های کاربر را ارسال می کند. دریافت داده های سریال در Handler نوشته شده است: داده های دریافتی در آرایه "USART_RX_BUF" ذخیره می شود. در این پروژه طول دریافت ثابت است. وقتی طول دریافت بیش از 9 بایت باشد ، انتهای دریافت قضاوت می شود.

وضعیت سوئیچینگ لامپ را کنترل کنید

در عملکرد اصلی ، من تعدادی کد منطقی برای کنترل وضعیت سوئیچ لامپ نوشتم: همانطور که می بینیم ، کد ابتدا تعیین می کند که آیا داده های پورت سریال دریافت می شود یا خیر ، و هنگامی که داده های پورت سریال دریافت می شود ، تعیین می کند که کاربر کدام دکمه را فشار دهد. روی صفحه نمایش فشار می دهد دکمه های مختلف روی صفحه آدرس های متفاوتی دارند که در نرم افزار STONE TOOL قابل مشاهده است: هنگامی که کاربر دکمه "اتاق نشیمن" را فشار می دهد ، چهارمین و پنجمین بیت داده های ارسال شده توسط پورت سریال صفحه نمایش عبارتند از آدرس دکمه از آنجا که بیت چهارم از همه دکمه های تنظیم شده در اینجا 0x00 است ، می توانیم با قضاوت مستقیم داده های بیت پنجم قضاوت کنیم که کاربر کدام دکمه را فشار می دهد. پس از به دست آوردن دکمه فشرده شده توسط کاربر ، باید داده های کاربر دریافت شده هنگام فشار دادن دکمه را قضاوت کنیم ، که هشتمین رقم داده های ارسال شده از صفحه نمایش است. بنابراین ، ما کنترل زیر را انجام می دهیم: پارامتر آدرس دکمه و داده های کاربر را در عملکرد "Light_Contral" بنویسید تا حالت روشن و خاموش شدن نور را کنترل کنید. نهاد تابع Light_Contral به شرح زیر است: همانطور که مشاهده می کنید ، اگر آدرس دکمه "اتاق نشیمن" و داده های کاربر "LightOn" باشد ، پین PB0 MCU روی خروجی سطح بالا تنظیم شده و چراغ روشن است به سه دکمه دیگر مشابه هستند ، اما من اینجا را ادامه نمی دهم.

خروجی PWM

در رابط کاربری طراحی شده توسط من ، یک تنظیم کننده کشویی وجود دارد که برای کنترل روشنایی نور "اتاق کودکان" استفاده می شود. MCU توسط PWM پیاده سازی می شود. پین خروجی PWM PB5 است. کد به شرح زیر است: تنظیم کننده کشویی روی حداقل مقدار 0x00 و حداکثر مقدار 0x64 تنظیم شده است. هنگام کشیدن ، پورت سریال صفحه نمایش نیز آدرس ها و داده های مربوطه را ارسال می کند و سپس با فراخوانی عملکرد زیر نسبت وظیفه خروجی PWM را تنظیم می کند:

مرحله 4: خرید سنسور

خرید سنسور
خرید سنسور
خرید سنسور
خرید سنسور
خرید سنسور
خرید سنسور

در صفحه "سنسور" صفحه نمایش ، چهار داده سنسور وجود دارد.

داده ها همچنین دارای آدرس ذخیره در صفحه نمایش هستند و ما می توانیم محتوای واقعی را به سادگی با نوشتن داده ها به این آدرس ها از طریق درگاه سریال MCU تغییر دهیم.

در اینجا یک پیاده سازی ساده کد ایجاد کردم:

داده های صفحه نمایش هر 5 ثانیه به روز می شود و من فقط یک نمایشی ساده از عملکرد جمع آوری سنسور مربوطه نوشتم ، زیرا این سنسورها را در دست ندارم.

در توسعه پروژه واقعی ، این سنسورها ممکن است داده های جمع آوری شده توسط ADC یا داده های جمع آوری شده توسط رابط های ارتباطی IIC ، UART و SPI باشند. تنها کاری که باید انجام دهید این است که این داده ها را در تابع مربوطه به عنوان مقدار بازگشتی بنویسید.

مرحله 5: اثر عملیاتی واقعی

توصیه شده: