فهرست مطالب:
- مرحله 1: لوازم و اتصالات
- مرحله 2: تنظیم PI
- مرحله 3: بارگیری و کامپایل کد
- مرحله 4: استفاده از آن
- مرحله 5: نحوه عملکرد کد
- مرحله 6: سفارشی سازی و نامهای دوستانه
تصویری: کنترل کننده رله Alexa Raspberry Pi: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
من این دستورالعمل را ایجاد کردم تا تجربیات خود را با ادغام دستگاه های IOT با Alexa آمازون به اشتراک بگذارم.
این پروژه اجازه می دهد تا یک برد رله متصل به رزبری pi از کنترل کننده smarthome کنترل شود.
این دستگاه با Alexa آزمایش شده است ، اما به نظر می رسد با Samsung Smartthings و سایر رابط های کنترل نیز به خوبی کار می کند ، زیرا تعدادی از سوکت های Belkin Wemo را شبیه سازی می کند.
بسیاری از مثالها بر اساس کد عالی FAUXMO وجود دارد ، اما این به معنی یادگیری پایتون بود و کنترل دقیقی را که برای دستگاه هایم لازم داشت به من نمی داد ، بنابراین تصمیم گرفتم با استفاده از C به عنوان زبان برنامه نویسی پایه ، یکی را از ابتدا ایجاد کنم.
من همچنین نمی خواستم مجبور شوم به عمق کد lambda در Amazon.com بروم ، بنابراین آن را بسیار ساده نگه داشته ام.
من منبع و یادداشت ها را در Github ارسال کرده ام:
github.com/Switchdoctorstu/StuPiMo
این آموزش واقعاً شامل نحوه کارکردن آن و انتشار یادداشت های من در صورت کمک به دیگران است.
مرحله 1: لوازم و اتصالات
موارد مورد نیاز شما به راحتی در Amazon / EBay موجود است:
- تمشک PI *
- منبع تغذیه Pi
- کانکتورهای Dupont
- برد رله
- سربی میکرو USB قدیمی (برای برق کارت رله به نصف می رسد)
هر رزبری پای کار می کند ، من این را روی مدل B و Zero آزمایش کرده ام.
*در صورت استفاده از Pi Zero به یک آداپتور شبکه OTG احتیاج دارید (مگر اینکه نسخه W را با هزینه WiFi خریداری کنید)
شما باید Pi را به شبکه متصل کنید.
برای اتصال کارت رله به Pi از اتصال دهنده های dupont استفاده کنید.
توجه داشته باشید که کارت رله باید از برق خارجی استفاده کند (پیوند را بردارید و به 5 ولت خارجی وصل شوید). این دستگاه از PI کار می کند ، اما برای اجرای آن توصیه نمی شود.
برای راه اندازی من از یک USB HUB تغذیه خارجی استفاده کردم. این قدرت را برای PI فراهم می کند.
من همچنین انتهای کابل USB قدیمی را قطع کردم و رله ها را از اتصال USB دوم به هاب تغذیه کردم تا ایمن بمانم. نسخه "تولید" من از منبع تغذیه حالت سوئیچ کوچک 5V 5A استفاده می کند. باز هم من فقط یک سیم USB را به نصف رساندم تا Pi را از طریق Micro-USB تغذیه کنم و دو کانکتور dupont را برای تغذیه برد رله قطع کردم. در سیم USB 4 سیم وجود دارد که بیشتر آنها از رنگ قرمز/مشکی برای نشان دادن منبع تغذیه 5 ولت استفاده می کنند اما در صورت تردید از یک متر برای اطمینان از سیم های مناسب استفاده کنید.
پین های رله روی برد به پین های GPIO مربوطه در هدر PI متصل می شوند.
کد به شما امکان می دهد پین های GPIO را انتخاب کنید ، اما من به طور پیش فرض از موارد زیر استفاده کردم:
- رله پین 1 - زمین
- رله پین 2 - رله 1 - GPIO 0
- رله پین 3 - رله 2 - GPIO 1
- رله پین 4 - رله 3 - GPIO 2
- رله پین 5 - رله 4 - GPIO 3
- رله پین 6 - رله 5 - GPIO 4
- رله پین 7 - رله 6 - GPIO 5
- رله پین 8 - رله 7 - GPIO 6
- رله پین 9 - رله 8 - GPIO 7
- رله پین 10 - +5v برای منطق
مرحله 2: تنظیم PI
من قصد ندارم آموزشی درباره نحوه راه اندازی PI و راه اندازی و اتصال به شبکه ایجاد کنم.
راهنمای زیادی وجود دارد که از جمله آنها می توان به موارد زیر اشاره کرد:
www.instructables.com/id/Ultimate-Raspberr…
باید خود را به جایی برسانید که PI در شبکه قابل مشاهده باشد و بتوانید به آن متصل شوید.
مهم نیست که این از طریق اترنت باشد یا بی سیم.
این پروژه را می توان تنها با Raspberry PI با استفاده از ویرایشگر Geany Programmers تکمیل کرد ، اما من شخصاً راحت تر می توانم کد خود را در رایانه با استفاده از Visual Studio یا Eclipse (یا حتی Notepad ++) انجام دهم و سپس آن را برای اشکال زدایی با استفاده از PI بارگذاری کنم. اتصال VNC باز هم نمی خواهم در اینجا به این موضوع بپردازم زیرا دستورالعمل های بسیار خوبی در زمینه راه اندازی VNC در RPi وجود دارد.
تنها چیزی که نیاز دارید این است که به نقطه ای برسید که بتوانید کد را بارگذاری و کامپایل کنید.
نکته ای که مهم است این است که چون UPNP handler نیاز به UDP multicast دارد ، رابط های مورد استفاده باید روی حالت "Promiscuous" تنظیم شوند.
این را می توان در خط فرمان انجام داد:
pi@raspberrypi: if $ ifconfig eth0 promiscisc
و / یا
pi@raspberrypi: if $ ifconfig wlan0 promiscisc
این باید دائمی شود بنابراین من /etc/rc.local را ویرایش کردم
sudo nano / etc / rc.local
شامل خط:
sudo ifconfig eth0 promisc
پس از اولین مجموعه خطوط # بنر ، برای اطمینان از تنظیم رابط ها در هنگام راه اندازی.
مرحله 3: بارگیری و کامپایل کد
خود کد در مخزن Github من قرار دارد.
github.com/Switchdoctorstu/StuPiMo/blob/ma…
در حالی که راه های "صحیح" برای کلون کردن مخزن وجود دارد. به نظر من ساده تر است که ویرایشگر Geany را در دسکتاپ Pi باز کنم و کد را در آن جایگذاری کنم.
به طور مشابه ، اگر از خط فرمان استفاده می کنید ؛
یک فهرست جدید ایجاد کنید
mkdir Stu
به آن تغییر دهید
سی دی استو
یک فایل متنی جدید بسازید
نانو StuPiMo.c
کد را از Github خام کپی کرده و در فایل جدید جایگذاری کنید
ذخیره و خروج.
هنگامی که فایل را به عنوان شی منبع کد C در اختیار دارید ، می توانید آن را با استفاده از فایل کامپایل کنید
gcc -o StuPiMo StuPiMo.c -l wiringPi
توجه داشته باشید که "-l wiringPi" برای اطمینان از پیوند کامپایلر در کتابخانه wiringPi مورد نیاز است.
سپس می توان کد را با استفاده از اجرا کرد
./StuPiMo
مجدداً ، اگر می خواهید این برنامه هنگام راه اندازی اجرا شود ، از دستور زیر استفاده کنید:
sudo nano /etc/rc.local
برای اضافه کردن خط زیر
sudo/home/pi/Stu/StuPiMo &
به فایل /etc/rc.local خود فراموش نکنید که فایل خود را در هنگام خروج ذخیره کنید.
توجه داشته باشید که "&" برای اطمینان از ایجاد یک فرایند فرعی ضروری است تا اطمینان حاصل شود که اسکریپت در این مرحله مسدود نشده است.
مرحله 4: استفاده از آن
وقتی کد را اجرا کردید ، از alexa بخواهید "Discover Devices" و او باید تمام 8 دستگاه Wemo مجازی را پیدا کند.
سپس فقط یک مورد گفته می شود: "الکسا سوکت 1 را روشن کنید" یا "الکسا سوکت 6 را خاموش کنید" و غیره و رله مربوطه تغییر می کند.
مرحله 5: نحوه عملکرد کد
این کد با شبیه سازی مجموعه ای از دستگاه های سوکت Belkin Wemo کار می کند.
برای دستیابی به این امر ، باید 2 عملکرد اصلی را انجام دهد
- یک کنترل پخش پخش UPNP
- یک "کنترل کننده دستگاه" (یکی در هر دستگاه مجازی) برای مدیریت فرمان های ارسال شده به دستگاه و پاسخ های مورد نیاز.
یک ویژگی "پاداش" این است که یک صفحه وب را نیز منتشر می کند تا اجازه کنترل دستگاه ها را بدهد.
UPNP Handler
کنترل کننده UPNP یک سوکت برای نظارت بر بسته های پروتکل SSDP در پورت 239.255.255.250 1900 باز می کند.
این برنامه به هرگونه پرسش "M-SEARCH" که با بسته پاسخ اکتشافی ارائه می شود پاسخ می دهد که هر یک از س.ال کنندگان را شبیه ساز wemo فردی اعلام می کند.
کنترل کننده دستگاه
کنترل کننده های دستگاه (یکی در هر دستگاه مجازی) مجموعه ای از پورت های IP را نظارت کرده و به درخواست ها پاسخ می دهد.
در صورت درخواست ، پاسخ setup.xml را ارائه می دهد
در صورت درخواست ، فایل توصیف رویداد را ارائه می دهد
به درخواست GETBINARYSTATE پاسخ می دهد
این یک درخواست SETBINARYSTATE را پردازش و به آن پاسخ می دهد
سرور وب
سرور وب یک روال ساده است که یک فرم HTML حاوی یک دکمه در هر رله می سازد.
به دکمه های فشرده شده پاسخ می دهد و بر این اساس وضعیت رله را تغییر می دهد.
مرحله 6: سفارشی سازی و نامهای دوستانه
من از کد ساده و قابل ویرایش کردن عصبانی نشده ام.
اصول اولیه را می توان با تعاریف در ابتدای کد سفارشی کرد:
// تعاریف جهانی#تعریف WEBPORT 5353 // پورت برای اجرای سرور وب
#تعریف NUMDEVICES 8 // تعداد دستگاه های مجازی برای ایجاد
#تعریف PORTBASE 43450 // پورت IP پایه برای افزایش از
WEBPORT شماره پورتی است که سرور وب داخلی بر روی آن اجرا می شود. برای سهولت کار ، می توان آن را روی 80 قرار داد ، اما متوجه شدم که این با گربه ماهی یا سایر خدمات محلی در حال اجرا است.
NUMDEVICES تعداد شبیه سازهای WEMO را برای راه اندازی مشخص می کند. اگر کارت رله 2 پورت دارید ، آن را روی 2 ، 4 پورت = 4 و غیره تنظیم کنید.
نامهای دوستانه دستگاهها در روال معمول به نام setup_names تنظیم شده است:
int setup_names (char friendly [NUMDEVICES] [NAMELEN]) {int i = 0؛
// از این حلقه استفاده کنید
برای (i = 0 ؛ i <NUMDEVICES ؛ i ++) {
sprintf (دوستانه ، "سوکت٪ d" ، i + 1) ؛
}
// یا جدول دستی زیر برای پر کردن نام دستگاه ها
/*
strcpy (دوستانه [0] ، "تلویزیون اتاق خواب") ؛
strcpy (دوستانه [1] ، "پتو برقی") ؛
strcpy (دوستانه [2] ، "چراغ اتاق خواب") ؛
strcpy (دوستانه [3] ، "سوکت 4") ؛
strcpy (دوستانه [4] ، "سوکت 5") ؛
strcpy (دوستانه [5] ، "سوکت 6") ؛
strcpy (دوستانه [6] ، "سوکت 7") ؛
strcpy (دوستانه [7] ، "سوکت 8") ؛
*/
بازگشت i؛
}
من از یک حلقه برای تماس با هر یک از دستگاهها "Socket n" استفاده کردم ، اما شما می توانید این حلقه را حذف کرده و در عوض نامهای دوستانه خود را اضافه کنید (فقط مطمئن شوید که شماره NUMDEVICES را اضافه کرده اید) در صورت حذف / * * /
به یاد داشته باشید که در صورت ایجاد تغییر کد را دوباره کامپایل کنید.
توصیه شده:
کنترل کننده بازی مبتنی بر آردوینو - کنترل کننده بازی Arduino PS2 - بازی Tekken With DIY Arduino Gamepad: 7 مرحله
کنترل کننده بازی مبتنی بر آردوینو | کنترل کننده بازی Arduino PS2 | بازی Tekken With DIY Arduino Gamepad: سلام بچه ها ، بازی کردن همیشه سرگرم کننده است اما بازی با کنترلر بازی سفارشی DIY خود سرگرم کننده تر است. بنابراین ما در این دستورالعمل یک کنترلر بازی با استفاده از arduino pro micro ایجاد می کنیم
ESP8266 RGB LED STRIP WIFI کنترل - NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi - کنترل تلفن هوشمند RGB LED STRIP: 4 مرحله
ESP8266 RGB LED STRIP WIFI کنترل | NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi | RGB LED STRIP Smartphone Control: سلام بچه ها در این آموزش می آموزیم که چگونه از nodemcu یا esp8266 به عنوان ریموت IR برای کنترل نوار LED RGB استفاده کنید و Nodemcu توسط تلفن هوشمند از طریق وای فای کنترل می شود. بنابراین اساساً می توانید RGB LED STRIP را با تلفن هوشمند خود کنترل کنید
تبدیل Splitter مانیتور VGA به کنترل کننده کنترل کننده کامپیوتر: 4 مرحله
تبدیل Splitter مانیتور VGA به کنترل کننده مانیتور کنترل شده توسط کامپیوتر: این دستورالعمل توضیح می دهد که چگونه می توان یک اسپلیتر مانیتور VGA ارزان (20 یورو) که برای اتصال یک رایانه به دو مانیتور استفاده می شود را به یک سوئیچر مانیتور کنترل شده کامپیوتر تبدیل کرد. دستگاه نهایی از طریق پورت موازی کنترل می شود و امکان چرخش
شبیه دشمن خود باشید: نشانه هایی ایجاد کنید که گیج کننده ، مبهوت کننده و تقلید کننده باشد!: 6 مرحله (همراه با تصاویر)
شبیه دشمن خود باشید: نشانه هایی ایجاد کنید که باعث گیج شدن ، حیرت و تقلید می شود !: در این مقاله آموزشی طراحی استتار را خواهید آموخت. در پروژه های گذشته ، من تکنیک های مختلفی را برای تقلید از علائم دولتی یا شرکتی اختصاص داده و اصلاح کرده ام. استفاده از روش هایی که در مراحل زیر بیان شده است به شما امکان می دهد به طور موقت
چگونه می توان یک تیرکمان بچه گانه جیغ کننده ThinkGeek را به یک تست کننده تداوم سرگرم کننده تبدیل کرد: 6 مرحله
چگونه می توان یک تیرکمان بچه گانه جیغ کننده ThinkGeek را به یک تست کننده تداوم مفرح تبدیل کرد: آیا تا به حال شده است که از صدای بوق استاندارد تسترهای پیوستگی خسته شده باشید؟ من دارم ، بنابراین از بقایای تیرکمان بچه میمون جیغی استفاده کردم که به یک هدست بلوتوث در https://www.instructables.com/id/How_to_turn_a_ThinkGeek_Screamin