فهرست مطالب:
- مرحله 1: طراحی رابط کاربری
- مرحله 2: ارتباط MCU
- مرحله 3: نوشتن کد منطقی
- مرحله 4: خرید سنسور
- مرحله 5: اثر عملیاتی واقعی
تصویری: LCD STONE با خانه هوشمند: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:51
امروز ، من صفحه نمایش درایو پورت سریال 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
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: اثر عملیاتی واقعی
توصیه شده:
خانه هوشمند توسط تمشک پای: 5 مرحله (همراه با تصاویر)
خانه هوشمند توسط رزبری پای: در حال حاضر چندین محصول وجود دارد که باعث می شود خانه شما هوشمندتر شود ، اما اکثر آنها راه حل های اختصاصی هستند. اما چرا برای تعویض چراغ با تلفن هوشمند خود به اینترنت نیاز دارید؟ این یکی از دلایلی بود که من Smar خودم را ساختم
ایجاد یک سیستم کنترل خانه هوشمند در STONE HMI Disp: 23 مرحله
ایجاد یک سیستم کنترل خانه هوشمند در STONE HMI Disp: معرفی پروژه آموزش زیر نحوه استفاده از ماژول صفحه لمسی STONE STVC050WT-01 را برای ساخت یک سیستم کنترل ساده لوازم خانگی به شما نشان می دهد
خانه هوشمند از راه دور: 5 مرحله
خانه هوشمند از راه دور: مواد: dunne gelamineerde hout platen. 1 x grondplaat met een diameter van 1 cmkleine nagels2 x breadbords plakbandveel kabels با قطر 0.3 cmveel jumper kabels gereedschap: boormachinelijmpistoolsoldeerboutschroevendra
نحوه ساخت خانه هوشمند با استفاده از ماژول رله کنترل آردوینو - ایده های اتوماسیون خانگی: 15 مرحله (همراه با تصاویر)
نحوه ساخت خانه هوشمند با استفاده از ماژول رله کنترل آردوینو | ایده های اتوماسیون خانگی: در این پروژه اتوماسیون خانگی ، ما یک ماژول رله خانه هوشمند طراحی می کنیم که می تواند 5 لوازم خانگی را کنترل کند. این ماژول رله را می توان از طریق تلفن همراه یا تلفن هوشمند ، ریموت IR یا ریموت تلویزیون ، سوئیچ دستی کنترل کرد. این رله هوشمند همچنین می تواند r
خانه هوشمند با آردوینو: 11 مرحله (همراه با تصاویر)
خانه هوشمند با آردوینو: سلام. من به شما نشان خواهم داد که چگونه خانه هوشمند خود را بسازید. این دما را در داخل و خارج نشان می دهد ، اگر پنجره باز یا بسته باشد ، هنگام باران باران را نشان می دهد و هنگام حرکت حسگرهای PIR زنگ می زند. من برنامه را در android ایجاد کردم تا