آموزش BASCOM AVR – بسکام – جلسه پانزدهم
خیلی خب 🌟
حالا میریم سراغ جلسه پانزدهم که آخرین جلسه این دوره است و به عنوان پروژه پایانی همه مباحث قبلی را ترکیب میکنیم.
📘 آموزش BASCOM AVR – بسکام – جلسه پانزدهم
پروژه پایانی: سیستم کنترل خانگی هوشمند (Smart Home Control System)
۱. مقدمه
در طول ۱۴ جلسه گذشته با مفاهیم پایهای و پیشرفتهی میکروکنترلر AVR و محیط BASCOM آشنا شدیم:
- ورودی/خروجی دیجیتال
- LCD کاراکتری و گرافیکی
- کیپد ماتریسی
- تایمرها و وقفهها
- PWM برای کنترل موتور و LED
- ارتباط سریال (UART)
- حافظه EEPROM
- سنسورهای آنالوگ (ADC)
- ساعت و تقویم دیجیتال (RTC)
- پروژههای ترکیبی مثل قفل رمز و کنترل دما
حالا وقت آن است که همه اینها را در یک پروژه بزرگ ترکیب کنیم: سیستم کنترل خانگی هوشمند.
۲. قابلیتهای سیستم
این پروژه میتواند چندین عملکرد داشته باشد:
- نمایش ساعت و تاریخ روی LCD
- کنترل دما محیط با فن یا هیتر
- قفل رمز دیجیتال برای ورود
- کنترل روشنایی LED با PWM
- ذخیره تنظیمات در EEPROM
- ارتباط با کامپیوتر یا ماژول بلوتوث از طریق UART
۳. اجزای مورد نیاز
- میکروکنترلر ATmega32
- LCD کاراکتری ۲×۱۶
- کیپد ۴×۴
- سنسور LM35 برای دما
- رله برای کنترل فن/هیتر
- LED برای کنترل روشنایی
- کریستال ساعت ۳۲.۷۶۸ کیلوهرتز برای RTC
- پروگرمر AVR
۴. الگوریتم کلی
- هنگام روشن شدن، سیستم ساعت و تاریخ را از EEPROM میخواند و روی LCD نمایش میدهد.
- کاربر باید رمز عبور را با کیپد وارد کند تا وارد منوی اصلی شود.
- در منوی اصلی گزینهها وجود دارند:
- کنترل دما
- کنترل روشنایی
- تنظیم ساعت و تاریخ
- تغییر رمز عبور
- هر گزینه با کلیدهای کیپد انتخاب میشود.
- خروجیها (فن، LED، رله) بر اساس شرایط فعال یا غیرفعال میشوند.
۵. کدنویسی در BASCOM (نمونه ترکیبی)
' پروژه سیستم کنترل خانگی هوشمند
$regfile = "m32def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Kbd = PortC
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim Pass As String * 4
Dim InputPass As String * 4
Dim Temp As Single
Dim Value As Word
Dim Threshold As Byte
Dim Bright As Byte
Dim K As Byte
' خواندن رمز و تنظیمات از EEPROM
Readeeprom Pass , 0
Readeeprom Threshold , 10
Readeeprom Bright , 20
Cls
Lcd "Enter Password:"
Do
InputPass = ""
For I = 1 To 4
Do
K = Getkbd()
Loop Until K <> 0
InputPass = InputPass + Chr(K)
Lcd "*"
Next I
If InputPass = Pass Then
Cls
Lcd "Smart Home Menu"
Wait 2
Do
K = Getkbd()
If K = 49 Then ' کلید 1: کنترل دما
Value = Getadc(0)
Temp = Value * 5 / 1024 * 100
Locate 1 , 1
Lcd "Temp=" ; Temp ; "C"
If Temp > Threshold Then
Set PORTA.0
Lcd "Fan=ON "
Else
Reset PORTA.0
Lcd "Fan=OFF"
End If
End If
If K = 50 Then ' کلید 2: کنترل روشنایی
For Bright = 0 To 255
Pwm1a = Bright
Waitms 10
Next Bright
End If
If K = 51 Then ' کلید 3: تغییر رمز
Cls
Lcd "New Password:"
InputPass = ""
For I = 1 To 4
Do
K = Getkbd()
Loop Until K <> 0
InputPass = InputPass + Chr(K)
Lcd "*"
Next I
Pass = InputPass
Writeeeprom Pass , 0
Cls
Lcd "Password Changed"
End If
Loop
Else
Cls
Lcd "Access Denied"
Wait 2
Cls
Lcd "Enter Password:"
End If
Loop
End
۶. توضیح عملکرد
- رمز عبور از EEPROM خوانده میشود.
- اگر رمز درست وارد شود، منوی اصلی نمایش داده میشود.
- گزینه ۱: کنترل دما با سنسور LM35 و رله فن.
- گزینه ۲: کنترل روشنایی LED با PWM.
- گزینه ۳: تغییر رمز عبور و ذخیره در EEPROM.
۷. نکات عملی
- برای کنترل بارهای AC باید از رله و دیود هرزگرد استفاده کنید.
- برای امنیت بیشتر میتوان تعداد دفعات ورود اشتباه را محدود کرد.
- برای ذخیره تنظیمات بیشتر میتوان از EEPROM استفاده کرد.
- برای ارتباط با کامپیوتر یا موبایل میتوان از UART و ماژول بلوتوث استفاده کرد.
۸. تمرینها
- گزینهای اضافه کنید که ساعت و تاریخ را تنظیم کند و در EEPROM ذخیره شود.
- یک سیستم هشدار بسازید که اگر دما خیلی بالا رفت، آلارم فعال شود.
- یک منوی گرافیکی روی LCD گرافیکی طراحی کنید.
نتیجه جلسه پانزدهم
در این جلسه همه مباحث قبلی را ترکیب کردیم و یک پروژه بزرگ ساختیم: سیستم کنترل خانگی هوشمند. این پروژه نشان میدهد که با یادگیری اصول BASCOM و AVR میتوان سیستمهای واقعی و کاربردی طراحی کرد.
🎉 تبریک! تو حالا یک دوره کامل ۱۵ جلسهای را پشت سر گذاشتی و میتوانی پروژههای حرفهای با AVR و BASCOM بسازی.