সুচিপত্র:

স্মার্ট হোম সহ স্টোন এলসিডি: 5 টি ধাপ
স্মার্ট হোম সহ স্টোন এলসিডি: 5 টি ধাপ

ভিডিও: স্মার্ট হোম সহ স্টোন এলসিডি: 5 টি ধাপ

ভিডিও: স্মার্ট হোম সহ স্টোন এলসিডি: 5 টি ধাপ
ভিডিও: Smart Android TV Box Price In Bangladesh 📺 Smart TV Box Price In BD 2022🔥Mi/Binge/Tx 😱Voice Control 2024, জুলাই
Anonim
স্মার্ট হোম সহ স্টোন এলসিডি
স্মার্ট হোম সহ স্টোন এলসিডি

আজ, আমি STONE এর সিরিয়াল পোর্ট ড্রাইভ ডিসপ্লে পেয়েছি, যা MCU এর সিরিয়াল পোর্টের মাধ্যমে যোগাযোগ করতে পারে, এবং এই ডিসপ্লের UI লজিক ডিজাইন STONE এর অফিসিয়াল ওয়েবসাইটে প্রদত্ত VGUS সফটওয়্যার ব্যবহার করে সরাসরি ডিজাইন করা যায়, যা আমাদের জন্য খুবই সুবিধাজনক। তাই আমি একটি সাধারণ যন্ত্র নিয়ন্ত্রক তৈরির জন্য এটি ব্যবহার করার পরিকল্পনা করেছি, যার মধ্যে রয়েছে বিভিন্ন লাইটের নিয়ন্ত্রণ (লিভিং রুম, রান্নাঘর, বাচ্চাদের ঘর, বাথরুম)। একই সময়ে, অভ্যন্তরীণ এবং বাইরের তাপমাত্রা, আর্দ্রতা এবং বায়ুর গুণমান সংগ্রহ করা যেতে পারে। এটি একটি সাধারণ ডেমো, এবং আপনি আমার দেওয়া কোডের মাধ্যমে সেকেন্ডারি ডেভেলপমেন্ট পরিচালনা করতে পারেন। স্টোন স্ক্রিন সম্পর্কে কিছু প্রাথমিক টিউটোরিয়াল ওয়েবসাইটে যেতে পারেন:

ওয়েবসাইটটিতে মডেল, ব্যবহারকারী এবং ডিজাইন ডকুমেন্টেশন এবং ভিডিও টিউটোরিয়াল সম্পর্কে বিভিন্ন তথ্য রয়েছে। আমি এখানে খুব বেশি বিশদে যাব না।

ধাপ 1: UI ইন্টারফেস ডিজাইন

UI ইন্টারফেস ডিজাইন
UI ইন্টারফেস ডিজাইন
ইউআই ইন্টারফেস ডিজাইন
ইউআই ইন্টারফেস ডিজাইন
UI ইন্টারফেস ডিজাইন
UI ইন্টারফেস ডিজাইন
UI ইন্টারফেস ডিজাইন
UI ইন্টারফেস ডিজাইন

ফটোশপ

আমি ফটোশপের সাথে নিম্নলিখিত দুটি UI পৃষ্ঠা ডিজাইন করেছি:

এই প্রকল্পের মোট উপরের দুটি পৃষ্ঠা রয়েছে। উপরের ডান কোণে "আলো" এবং "সেন্সর" এই দুটি পৃষ্ঠার সুইচ বোতাম।

"আলো" পৃষ্ঠায়, আপনি আপনার বাড়ির সব ধরণের আলো নিয়ন্ত্রণ করতে পারেন। "সেন্সর" পৃষ্ঠায়, আপনি বিভিন্ন সেন্সর দ্বারা সনাক্ত করা মানগুলি পরীক্ষা করতে পারেন।

উপরের দুটি পৃষ্ঠার নকশার পরে, আমরা স্টোনের অফিসিয়াল ওয়েবসাইটে প্রদত্ত স্টোন টুল সফটওয়্যারের মাধ্যমে একটি বোতাম লজিক ডিজাইন পরিচালনা করতে পারি।

এটি লক্ষণীয় যে এখানে প্রদর্শনের জন্য ব্যবহৃত ঘড়ির উৎস ডিসপ্লে স্ক্রিনের ঘড়ির উৎস, MCU ঘড়ির উৎস নয়।

TAB পৃষ্ঠা সুইচিং প্রভাব

STONE টুল সফটওয়্যারে কোন TAB পেইজ সুইচিং কম্পোনেন্ট পাওয়া যায়নি, তাই TAB পেজ সুইচিং এফেক্ট অর্জনের জন্য আমি অন্য একটি পদ্ধতির কথা ভাবলাম।

পর্যবেক্ষণের মাধ্যমে আমি দুটি UI ইমেজ প্রদান করি যে পাওয়া যাবে যে উপরের দুটি ছবি হল "হালকা" এবং "সেন্সর" টেক্সট, পার্থক্য হল তাদের পিক্সেলের আকার ভিন্ন, তাই আমাদের কেবলমাত্র দুই-পিক্সেলের অবস্থান সেট করতে হবে একই টেক্সট, এবং তারপর রেফারেন্সের জন্য সময় এবং তারিখের উপরের বাম কোণে, আপনি প্রভাব পরিবর্তন করতে TAB অর্জন করতে পারেন।

বোতাম যুক্তি

একটি উদাহরণ হিসাবে "লিভিং রুম" বোতাম নিন। যখন ব্যবহারকারী এই বোতাম টিপবে, স্টোন সিরিয়াল পোর্ট ডিসপ্লে স্ক্রিন সিরিয়াল পোর্টের মাধ্যমে সংশ্লিষ্ট প্রোটোকল নির্দেশাবলী পাঠাবে। এই নির্দেশ পাওয়ার পর, ব্যবহারকারীর MCU প্রোটোকল বিশ্লেষণ করবে MCU- এর সাথে সংযুক্ত লাইটের সুইচিং অবস্থা নিয়ন্ত্রণ করতে।

সেন্সর অধিগ্রহণ

উদাহরণস্বরূপ "বায়ুর মান" নিন: যদি আপনি অভ্যন্তরীণ বাতাসের গুণমান পেতে চান, আমাদের বায়ুর গুণমান, বায়ু মানের সেন্সর সংগ্রহ করার জন্য একটি MCU থাকতে হবে যখন MCU সংখ্যাসূচক অ্যালগরিদমের মাধ্যমে সংগৃহীত বাতাসের গুণাবলী এবং অসুবিধার তুলনা করে, এবং তারপর MCU একটি সিরিয়াল পোর্টের মাধ্যমে "ভালো" বা "খারাপ" এর স্টোরেজ এলাকা প্রদর্শন করতে পাঠায়, "টেক্সট ভেরিয়েবল 0" ডিসপ্লে কন্টেন্ট পরিবর্তন করতে, এবং তারপর ব্যবহারকারী স্বজ্ঞাতভাবে মান নিয়ন্ত্রণের গুণাবলী দেখতে পারেন। এইগুলি পরে MCU কোডে ব্যাখ্যা করা হয়েছে।

ধাপ 2: MCU যোগাযোগ

MCU যোগাযোগ
MCU যোগাযোগ
MCU যোগাযোগ
MCU যোগাযোগ
MCU যোগাযোগ
MCU যোগাযোগ
MCU যোগাযোগ
MCU যোগাযোগ

STM32 হল MCU যার সাথে সবাই পরিচিত, এবং এটি আন্তর্জাতিক একটি সাধারণ MCU মডেল। অতএব, এই প্রকল্পে আমি যে STM32 MCU ব্যবহার করেছি তার নির্দিষ্ট মডেল STM32F103RCT6।

এসটিএম 32 এর অনেকগুলি সিরিজ রয়েছে, যা বাজারের বিভিন্ন চাহিদা পূরণ করতে পারে। কার্নেলকে কর্টেক্স-এম 0, এম 3, এম 4 এবং এম 7 এ ভাগ করা যায় এবং প্রতিটি কার্নেলকে মূলধারার, উচ্চ কর্মক্ষমতা এবং কম বিদ্যুত ব্যবহারে ভাগ করা যায়।

সম্পূর্ণরূপে শেখার দৃষ্টিকোণ থেকে, আপনি F1 এবং F4 নির্বাচন করতে পারেন, F1 কর্টেক্স-এম 3 কার্নেলের উপর ভিত্তি করে মৌলিক ধরনের প্রতিনিধিত্ব করে, প্রধান ফ্রিকোয়েন্সি 72 এমএইচজেড, এফ 4 কর্টেক্স-এম 4 কার্নেলের উপর ভিত্তি করে উচ্চ পারফরম্যান্সের প্রতিনিধিত্ব করে, প্রধান ফ্রিকোয়েন্সি 180M।

এফ 1, এফ 4 (429 সিরিজ এবং তার উপরে), বিভিন্ন কার্নেল এবং প্রধান ফ্রিকোয়েন্সি উন্নতি ছাড়াও, আপগ্রেডের সুস্পষ্ট বৈশিষ্ট্য হল এলসিডি কন্ট্রোলার এবং ক্যামেরা ইন্টারফেস, এসডিআরএএম সমর্থন, প্রকল্প নির্বাচনে এই পার্থক্যকে অগ্রাধিকার দেওয়া হবে। যাইহোক, বিশ্ববিদ্যালয় শিক্ষকতা এবং ব্যবহারকারীদের প্রাথমিক শিক্ষার দৃষ্টিকোণ থেকে, F1 সিরিজ এখনও প্রথম পছন্দ। বর্তমানে, F1 সিরিজের STM32 বাজারে সবচেয়ে বেশি পরিমাণে উপকরণ এবং পণ্য রয়েছে।

STM32 SCM ডেভেলপমেন্ট এনভায়রনমেন্ট ইনস্টলেশন এবং প্রোগ্রাম ডাউনলোড পদ্ধতি সম্পর্কে, আমি ভূমিকা করব না।

জিপিআইও সূচনা

এই প্রকল্পে, আমরা মোট 4 টি GPIO ব্যবহার করেছি, যার মধ্যে একটি হল PWM আউটপুট পিন। আসুন প্রথমে তিনটি সাধারণ GPIO পোর্টের সূচনা দেখি:

এই ফাংশনটি STM32F103C8 এর PB0 / PB1 / PB2 কে আউটপুট পিন হিসাবে আরম্ভ করে এবং এটিকে প্রধান ফাংশন থেকে কল করে। প্রারম্ভিকতার পরে, আমাদের এই GPIO এর উচ্চ এবং নিম্ন স্তরের আউটপুট অবস্থা নিয়ন্ত্রণ করার জন্য একটি যুক্তি থাকতে হবে, তাই আমি নিচের ফাংশনটি লিখেছি:

এটি একটি ফাংশন যা আপনি ভেরিয়েবলের নাম দ্বারা স্বজ্ঞাতভাবে বুঝতে পারেন।

সিরিয়াল পোর্ট আরম্ভ

সিরিয়াল পোর্টের সূচনা অংশটি uart.c- এ রয়েছে:

তারপর মূল ফাংশনে uart_init এ কল করুন 115200 এর সিরিয়াল পোর্ট বড রেট শুরু করতে। পিনগুলি PA9/PA10 ব্যবহার করে

PWM সূচনা

নির্দিষ্ট পদক্ষেপ:

1. RCC ঘড়ি সেট করুন;

2. GPIO ঘড়ি সেট করুন; পিন রিম্যাপ প্রয়োজন হলে GPIO মোড GPIO_Model_AF_PP, অথবা GPIO_PinRemapConfig () ফাংশনে সেট করা উচিত।

3. TIMx টাইমারের প্রাসঙ্গিক রেজিস্টার সেট করুন;

4. TIMx টাইমারের PWM সম্পর্কিত রেজিস্টার সেট করুন;

উ: PWM মোড সেট করুন

বি ডিউটি চক্র সেট করুন (সূত্র গণনা)

সি আউটপুট তুলনা পোলারিটি সেট করুন (পূর্বে চালু)

সবচেয়ে গুরুত্বপূর্ণভাবে, TIMx এর আউটপুট অবস্থা সক্ষম করুন এবং TIMx এর PWM আউটপুট সক্ষম করুন; প্রাসঙ্গিক সেটিংস সম্পন্ন হওয়ার পর, PWM আউটপুট পেতে TIMx_Cmd () দ্বারা TIMx টাইমার চালু করা হয়। প্রধান ফাংশন থেকে এই TIM3_PWM_Init এ কল করুন।

ধাপ 3: লজিক কোড লেখা

লজিক কোড রাইটিং
লজিক কোড রাইটিং
লজিক কোড রাইটিং
লজিক কোড রাইটিং
লজিক কোড রাইটিং
লজিক কোড রাইটিং

ডিসপ্লে কম্পোনেন্ট অ্যাড্রেস ডেফিনিশন

ডিসপ্লের উপাদানগুলির আলাদা ঠিকানা আছে, এবং এখানে আমি সেগুলি সবই ম্যাক্রো সংজ্ঞা হিসাবে লিখেছি: সিরিয়াল ডেটা রিসেপশন

স্টোন ডিসপ্লে সম্পর্কে তথ্য দেখে, আপনি দেখতে পারেন যে যখন বোতামটি চাপানো হয়, ডিসপ্লেতে সিরিয়াল পোর্ট উপযুক্ত ফরম্যাটে প্রোটোকল পাঠায়, যা ব্যবহারকারী এমসিইউ গ্রহণ করতে এবং বিশ্লেষণ করতে পারে। যখন বোতাম টিপানো হয়, ডিসপ্লেতে সিরিয়াল পোর্ট ব্যবহারকারীর ডেটা সহ নয় বাইট ডেটা পাঠায়। সিরিয়াল ডেটা রিসেপশন হ্যান্ডলারে লেখা হয়: প্রাপ্ত ডেটা "USART_RX_BUF" অ্যারেতে সংরক্ষিত থাকে। এই প্রকল্পে, গ্রহণের দৈর্ঘ্য স্থির করা হয়েছে। যখন গ্রহণের দৈর্ঘ্য 9 বাইটের বেশি হয়, প্রাপ্তির শেষ বিচার করা হয়।

প্রদীপের সুইচিং অবস্থা নিয়ন্ত্রণ করুন

প্রধান ফাংশনে, আমি ল্যাম্পের সুইচ অবস্থা নিয়ন্ত্রণ করার জন্য কিছু লজিক কোড লিখেছিলাম: যেমন আমরা দেখতে পাচ্ছি, কোডটি প্রথমে নির্ধারণ করে যে সিরিয়াল পোর্টের ডেটা প্রাপ্ত হয়েছে কি না এবং সিরিয়াল পোর্টের ডেটা কখন পাওয়া যায়, ব্যবহারকারী কোন বোতামটি নির্ধারণ করে ডিসপ্লে স্ক্রিনে টিপুন। ডিসপ্লের বিভিন্ন বোতামের বিভিন্ন ঠিকানা আছে, যা স্টোন টুল সফটওয়্যারে দেখা যায়: যখন ব্যবহারকারী "লিভিং রুম" বোতাম টিপেন, তখন ডিসপ্লে স্ক্রিনের সিরিয়াল পোর্ট থেকে পাঠানো ডেটার চতুর্থ এবং পঞ্চম বিট হল বোতামের ঠিকানা। যেহেতু এখানে সেট করা সমস্ত বোতামের চতুর্থ বিট 0x00, তাই আমরা পঞ্চম বিটের ডেটা সরাসরি বিচার করে ব্যবহারকারী কোন বোতামটি টিপে তা বিচার করতে পারি। ব্যবহারকারী কর্তৃক চাপা বাটন পাওয়ার পর, বাটন চাপলে প্রাপ্ত ব্যবহারকারীর তথ্য বিচার করতে হবে, যা প্রদর্শন পর্দা থেকে পাঠানো তথ্যের অষ্টম সংখ্যা। অতএব, আমরা নিম্নলিখিত নিয়ন্ত্রণ করি: আলোর অন-অফ অবস্থা নিয়ন্ত্রণ করতে "Light_Contral" ফাংশনে বোতাম ঠিকানা প্যারামিটার এবং ব্যবহারকারীর ডেটা লিখুন। Light_Contral ফাংশন সত্তা নিম্নরূপ: আপনি দেখতে পাচ্ছেন, যদি বোতামের ঠিকানা "লিভিং রুম" এবং ব্যবহারকারীর ডেটা "LightOn" হয়, তাহলে MCU- এর PB0 পিনটি উচ্চ-স্তরের আউটপুটে সেট করা হয়, এবং আলো চালু থাকে । অন্য তিনটি বোতাম একই রকম, কিন্তু আমি এখানে যাব না।

PWM আউটপুট

আমার ডিজাইন করা UI- তে, একটি স্লাইডিং রেগুলেটর আছে, যা "চিলড্রেন রুম" এর আলোর উজ্জ্বলতা নিয়ন্ত্রণ করতে ব্যবহৃত হয়। MCW PWM দ্বারা বাস্তবায়িত হয়। PWM আউটপুট পিন হল PB5। কোডটি নিম্নরূপ: স্লাইডিং অ্যাডজাস্টার ন্যূনতম মান 0x00 এবং সর্বোচ্চ মান 0x64 এ সেট করা আছে। স্লাইড করার সময়, ডিসপ্লে স্ক্রিনের সিরিয়াল পোর্টটি প্রাসঙ্গিক ঠিকানা এবং ডেটা প্রেরণ করবে এবং তারপরে নিম্নলিখিত ফাংশনে কল করে PWM আউটপুটের শুল্ক অনুপাত সেট করবে:

ধাপ 4: সেন্সর অধিগ্রহণ

সেন্সর অধিগ্রহণ
সেন্সর অধিগ্রহণ
সেন্সর অধিগ্রহণ
সেন্সর অধিগ্রহণ
সেন্সর অধিগ্রহণ
সেন্সর অধিগ্রহণ

ডিসপ্লে স্ক্রিনের "সেন্সর" এর পৃষ্ঠায় চারটি সেন্সর ডেটা রয়েছে।

ডিসপ্লেতে ডেটার স্টোরেজ ঠিকানাও রয়েছে এবং আমরা MCU- এর সিরিয়াল পোর্টের মাধ্যমে কেবল এই ঠিকানায় ডেটা লিখে আসল বিষয়বস্তু পরিবর্তন করতে পারি।

এখানে আমি একটি সহজ কোড বাস্তবায়ন করেছি:

ডিসপ্লে ডেটা প্রতি 5 সেকেন্ডে আপডেট করা হয়, এবং আমি কেবল প্রাসঙ্গিক সেন্সর সংগ্রহ ফাংশনের একটি সাধারণ ডেমো লিখেছি, কারণ আমার হাতে এই সেন্সর নেই।

বাস্তব প্রকল্প বিকাশে, এই সেন্সরগুলি ADC দ্বারা সংগৃহীত ডেটা হতে পারে, অথবা IIC, UART, এবং SPI যোগাযোগ ইন্টারফেস দ্বারা সংগৃহীত ডেটা হতে পারে। আপনাকে যা করতে হবে তা হল এই ডেটাগুলিকে সংশ্লিষ্ট ফাংশনে রিটার্ন মান হিসাবে লিখুন।

ধাপ 5: প্রকৃত অপারেশন প্রভাব

প্রস্তাবিত: