Mundarija:
- 1 -qadam: Ta'minot va ulanishlar
- 2 -qadam: PIni sozlash
- 3 -qadam: Kodni yuklab olish va kompilyatsiya qilish
- 4 -qadam: undan foydalanish
- 5 -qadam: Kod qanday ishlaydi
- 6 -qadam: Moslashtirish va do'stona ismlar
Video: Alexa Raspberry Pi o'rni boshqaruvchisi: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Men bu ko'rsatmalarni IOT qurilmalarini Amazonning Alexa -ga qo'shish tajribam bilan bo'lishish uchun yaratdim.
Ushbu loyiha malina pi ga ulangan o'rni taxtasini smarthome kontrolleridan boshqarishga imkon beradi.
U Alexa bilan sinovdan o'tgan, lekin Samsung Smartthings va boshqa boshqaruv interfeyslari bilan yaxshi ishlaydi, chunki u bir qator Belkin Wemo uyalarini taqlid qiladi.
Zo'r FAUXMO kodiga asoslangan juda ko'p misollar bor, lekin bu pythonni o'rganishni anglatardi va menga o'z qurilmalarim uchun zarur bo'lgan batafsil nazoratni bermadi, shuning uchun men o'zimni kodlash tili sifatida C yordamida noldan qayta yaratishga qaror qildim.
Men ham Amazon.com saytida lambda kodining chuqurligiga kirishni xohlamadim, shuning uchun men uni juda sodda tutdim.
Men Github -da manba va eslatmalarni joylashtirdim:
github.com/Switchdoctorstu/StuPiMo
O'quv qo'llanma, albatta, uni qanday ishlashini va boshqalarga yordam bersa, mening yozuvlarimni chop etishni o'z ichiga oladi.
1 -qadam: Ta'minot va ulanishlar
Sizga kerak bo'lgan narsalar Amazon / EBay -da mavjud:
- Malina PI *
- Pi quvvat manbai
- Dupont ulagichlari
- O'rnatish paneli
- Eski mikro USB kabeli (o'rni kartasining quvvatini yarmiga qisqartirish uchun)
Har qanday malina Pi ishlaydi, men buni Model B va Zero -da sinab ko'rdim.
*Agar Pi Zero -dan foydalansangiz, sizga OTG tarmoq adapteri kerak bo'ladi (agar siz WiFi -da "W" versiyasini sotib olmasangiz)
Siz Pi -ni tarmoqqa ulashingiz kerak bo'ladi.
Röle kartasini Pi -ga ulash uchun dupont ulagichlaridan foydalaning.
E'tibor bering, o'rni kartasi tashqi quvvatdan foydalanishi kerak (havolani olib tashlang va tashqi 5v ga ulang). Bu PI yordamida ishlaydi, lekin ishlab chiqarishda ishlash tavsiya etilmaydi.
O'rnatish uchun men tashqi quvvat manbai bo'lgan USB HUBdan foydalanardim. Bu PI quvvatini ta'minlaydi.
Men ham xavfsiz bo'lish uchun eski USB kabelining uchini kesib tashladim va o'rni 2 -chi USB ulanishidan uyaga uzatdim. Mening "ishlab chiqarish" versiyamda 5V 5A kalitli kichik quvvat manbai ishlatiladi. Yana men Micro-USB orqali Pi-ni quvvatlantirish uchun USB simini yarmini kesib tashladim va o'rni kartasini quvvatlantirish uchun dupontli ikkita ulagichni kesib tashladim. USB simida 4 ta sim bor, ularning aksariyati 5v kuchlanishini ko'rsatish uchun qizil/qora rangdan foydalanadi, lekin agar shubhangiz bo'lsa, to'g'ri simlarni olishingizga ishonch hosil qilish uchun hisoblagichdan foydalaning.
Bortdagi o'rni pinlari PI sarlavhasidagi tegishli GPIO pinlariga ulangan.
Kod GPIO pinlarini tanlashga imkon beradi, lekin men ishlatgan standart:
- O'rnimizni pimi 1 - er
- O'rnimizni pin 2 - o'rni 1 - GPIO 0
- O'rnimizni 3 -o'rni - 2 -o'rni - GPIO 1
- 4 -o'rni pinasi - 3 -o'rni - GPIO 2
- O'rnimizni 5 -o'rni - 4 -o'rni - GPIO 3
- O'rnimizni 6 -o'rni - 5 -o'rni - GPIO 4
- O'rnimizni pin 7 - o'rni 6 - GPIO 5
- O'rnimizni pin 8 - o'rni 7 - GPIO 6
- 9 -o'rni pin - 8 -o'rni - GPIO 7
- Mantiq uchun 10 - +5V o'rni pin
2 -qadam: PIni sozlash
Men PI-ni ishga tushirish va tarmoqqa ulanish bo'yicha qo'llanmani qayta yaratmayman.
Ko'p qo'llanmalar mavjud, shu jumladan:
www.instructables.com/id/Ultimate-Raspberr…
Siz o'zingizni tarmoqdagi PI ko'rinadigan joyga olib borishingiz kerak va siz unga ulanishingiz mumkin.
Bu Ethernet orqali yoki simsiz ulanishi muhim emas.
Ushbu loyihani Geany Programmers Editor yordamida Raspberry PI bilan yakunlash mumkin, lekin men shaxsan o'zim kodni kompyuterda Visual Studio yoki Eclipse (yoki hatto Notepad ++) yordamida tayyorlashni osonlashtiraman va keyin uni disk raskadrovka uchun PI -ga yuklayman. VNC ulanishi. Shunga qaramay, men bu erda gapirmoqchi emasman, chunki RPi -da VNC -ni sozlash bo'yicha juda ko'p yaxshi ko'rsatmalar mavjud.
Kodni yuklash va kompilyatsiya qilish mumkin bo'lgan joyga etib borish kifoya.
Muhim bo'lgan bitta eslatma shundaki, UPNP ishlov beruvchisi UDP multicast -ni talab qilganligi sababli, ishlatilgan interfeyslar "Promiscuous" rejimiga o'rnatilishi kerak.
Buni buyruq satrida bajarish mumkin:
pi@raspberrypi: ~ $ ifconfig eth0 promisc
va / yoki
pi@raspberrypi: ~ $ ifconfig wlan0 promisc
Buni doimiy qilish kerak, shuning uchun men /etc/rc.local -ni tahrir qildim
sudo nano / etc / rc.local
qatorni kiritish uchun:
sudo ifconfig eth0 promisc
bannerlar # qatorlarining birinchi to'plamidan so'ng interfeyslarni ishga tushirishda o'rnatilishini ta'minlash.
3 -qadam: Kodni yuklab olish va kompilyatsiya qilish
Kodning o'zi mening Github omborida joylashgan;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
omborni klonlashning "to'g'ri" usullari mavjud. Men Pi ish stolida Geany muharririni ochish va kodni joylashtirishni osonlashtirdim.
Xuddi shunday, agar siz buyruq satridan foydalanayotgan bo'lsangiz;
Yangi katalog yarating
mkdir Stu
Unga o'zgartiring
CD Stu
Yangi matnli fayl yarating
nano StuPiMo.c
Github xom -kodidan nusxa oling va uni yangi faylga joylashtiring
Saqlash va chiqish.
Faylni C manba kodli ob'ekt sifatida olganingizdan so'ng, uni yordamida kompilyatsiya qilishingiz mumkin
gcc -o StuPiMo StuPiMo.c -l wiringPi
E'tibor bering, "-l wiringPi" shikoyatchi wiringPi kutubxonasiga ulanishini ta'minlash uchun kerak.
Keyin kod yordamida ishga tushirish mumkin
./StuPiMo
Shunga qaramay, agar siz buni ishga tushirishni xohlasangiz, buyruqni ishlating:
sudo nano /etc/rc.local
quyidagi qatorni qo'shish uchun
sudo/home/pi/Stu/StuPiMo va
/etc/rc.local faylingizga. Chiqishda faylni saqlashni unutmang.
E'tibor bering, "&" bu vaqtda skript bloklanmaganligiga ishonch hosil qilish uchun pastki jarayonning paydo bo'lishini ta'minlash uchun zarur.
4 -qadam: undan foydalanish
Kodni ishga tushirgandan so'ng, alexadan "Qurilmalarni kashf qilish" ni so'rang, u 8 ta virtual Wemo qurilmasini topishi kerak.
Bu shunchaki: "Alexa rozetkani yoqing 1" yoki "Alexa rozetkani o'chiring 6" va hokazo.
5 -qadam: Kod qanday ishlaydi
Kod Belkin Wemo soket qurilmalarini taqlid qilib ishlaydi.
Bunga erishish uchun u ikkita asosiy funktsiyani bajarishi kerak
- UPNP kashfiyot translyatsiyasi boshqaruvchisi
- qurilmaga yuborilgan buyruqlar va kerakli javoblarni boshqarish uchun "qurilma ishlovchisi" (har bir virtual qurilmaga bittasi).
"Bonus" xususiyati shundaki, u qurilmalarni boshqarishga ruxsat beruvchi veb -sahifani ham nashr etadi.
UPNP ishlovchisi
UPNP ishlovchisi 1900 239.255.255.250 portda SSDP protokoli paketlarini kuzatish uchun rozetkani ochadi.
U har bir "M-SEARCH" so'roviga javob beradi, u kashfiyot javob paketi bilan, har bir so'ragan odamga individual wemo emulyatorlarini e'lon qiladi.
Qurilma boshqaruvchisi
Qurilma ishlovchilari (har bir virtual qurilmaga bittadan) bir qator IP -portlarni kuzatib boradi va so'rovlarga javob beradi.
Agar so'ralsa, u setup.xml javobini beradi
Bu so'ralganda, u voqea tavsifi fayliga xizmat qiladi
U GETBINARYSTATE so'roviga javob beradi
U SETBINARYSTATE so'rovini ko'rib chiqadi va unga javob beradi
Veb -server
Veb -server - bu har bir o'rni uchun tugmachani o'z ichiga olgan HTML shaklini tuzadigan oddiy tartib.
U tugmachalarni bosilishiga javob beradi va o'rni holatini mos ravishda o'zgartiradi.
6 -qadam: Moslashtirish va do'stona ismlar
Men kodni oddiy va tahrir qilish uchun aqldan ozganim yo'q.
Asosiy ma'lumotni kodning boshidagi ta'riflar bilan sozlash mumkin:
// global ta'riflar#web -serverni ishga tushirish uchun WEBPORT 5353 // portini belgilaydi
#define NUMDEVICES 8 // Yaratiladigan virtual qurilmalar soni
#define PORTBASE 43450 // asosiy IP -portni yuqoriga ko'tarish
WEBPORT-bu o'rnatilgan veb-server ishlaydigan port raqami. Bu ishni osonlashtirish uchun 80 -da o'tirish mumkin edi, lekin men bu tomcat yoki mahalliy ishlaydigan boshqa xizmatlar bilan ziddiyatli ekanligini aniqladim.
NUMDEVICES ishga tushirish uchun individual WEMO emulyatorlarining sonini belgilaydi. Agar sizda 2 portli o'rni kartasi bo'lsa, uni 2, 4 port = 4 va boshqalarga o'rnating.
Qurilmalar uchun qulay nomlar "setup_names" deb nomlangan tartibda o'rnatiladi:
int setup_names (do'stona [NUMDEVICES] [NAMELEN]) {int i = 0;
// bu pastadirdan foydalaning
uchun (i = 0; i <NUMDEVICES; i ++) {
sprintf (do'stona , "Socket %d", i + 1);
}
// yoki qurilma nomlarini to'ldirish uchun quyidagi qo'llanma
/*
strcpy (do'stona [0], "Yotoqxonali televizor");
strcpy (do'stona [1], "Elektr adyol");
strcpy (do'stona [2], "Yotoqxonadagi chiroq");
strcpy (do'stona [3], "Socket 4");
strcpy (do'stona [4], "Socket 5");
strcpy (do'stona [5], "Socket 6");
strcpy (do'stona [6], "Socket 7");
strcpy (do'stona [7], "Socket 8");
*/
qaytish i;
}
Men "Socket n" qurilmalarining har biriga qo'ng'iroq qilish uchun pastadir ishlatardim, lekin siz / * * /o'chirsangiz, bu pastadirni o'chirib tashlashingiz va uning o'rniga o'zingizning qulay ismlaringizni qo'shishingiz mumkin (NUMDEVICES bilan bir xil raqamni qo'shganingizga ishonch hosil qiling).
Agar biror o'zgartirish kiritilsa, kodni qayta kompilyatsiya qilishni unutmang.
Tavsiya:
Alexa IoT ESP8266 TV boshqaruvchisi: 10 qadam (rasmlar bilan)
Alexa IoT TV-nazoratchi ESP8266: Yaqinda men Amazon Prime kunida ~ 20 evroga Amazon Echo Dot sotib oldim. Bu kichik ovozli yordamchilar arzon va DIY Home Automation uchun juda zo'r, agar siz aqlli qurilmalarni qanday qurishni bilsangiz, menda Samsung Smart TV bor, lekin men buni xohlardim
NodeMCU o'rni moduli yordamida Alexa Smart Home tizimi: 10 qadam
NodeMCU o'rni moduli yordamida Alexa Smart uy tizimi: Bu IoT loyihasida men NodeMCU ESP8266 yordamida Alexa Smart Home Automation tizimini yaratdim & O'rnimizni moduli. Ovozli buyruq yordamida yorug'lik, fanat va boshqa maishiy texnikani osongina boshqarishingiz mumkin. Echo Dot aqlli dinamikini ulanish uchun
Arduino asosidagi ovozli boshqariladigan IOT o'rni kaliti (Google Home va Alexa qo'llab-quvvatlanadi): 11 qadam
Arduino asosidagi ovozli boshqariladigan IOT o'rni kaliti (Google Home va Alexa tomonidan qo'llab-quvvatlanadi): Ushbu loyihada Arduino-ga asoslangan, ovozli boshqariladigan, IOT o'rni kalitini yasash tasvirlangan. Bu estafeta, siz iOS va Android uchun ilova yordamida masofadan turib yoqishingiz va o'chirishingiz, shuningdek IFTTT -ga ulashingiz va Goog yordamida ovozingiz bilan boshqarishingiz mumkin
Raspberry Pi yordamida uyni avtomatlashtirish o'rni taxtasi: 7 qadam
Raspberry Pi yordamida uy avtomatizatsiyasi: O'rnatilgan taxtadan foydalanadigan ko'pchilik odamlar qulaylikni xohlashadi, lekin maqbul narxlarda. Biz har kuni kechqurun quyosh botganda va ertasi kuni ertalab uylarni yoritib, chiroqlarni qayta o'chirishga yoki konditsionerni/ventilyatorni/isitgichni yoqish/o'chirishga dangasa bo'lamiz
Arduino asosidagi DIY o'yin boshqaruvchisi - Arduino PS2 o'yin boshqaruvchisi - DIY Arduino Gamepad bilan Tekken o'ynash: 7 qadam
Arduino asosidagi DIY o'yin boshqaruvchisi | Arduino PS2 o'yin boshqaruvchisi | DIY Arduino Gamepad bilan Tekken o'ynash: Salom bolalar, o'yin o'ynash har doim qiziqarli, lekin o'zingizning shaxsiy o'yiningiz bilan o'ynash yanada qiziqarli, shuning uchun biz ushbu qo'llanmada arduino pro micro yordamida o'yin boshqaruvchisi qilamiz