Мазмуну:
- 1 -кадам: Жабдуулар жана туташуулар
- 2 -кадам: PI орнотуу
- 3 -кадам: Кодду жүктөө жана түзүү
- 4 -кадам: Аны колдонуу
- 5 -кадам: Кодекс кантип иштейт
- 6 -кадам: Ыңгайлаштыруу жана достук аттар
Video: Alexa Raspberry Pi Relay Controller: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Мен IOS түзмөктөрүн Amazon'дун Alexa менен интеграциялоодо тажрыйбам менен бөлүшүү үчүн ушул Нускаманы түздүм.
Бул долбоор малина пи менен байланышкан реле тактасын смартом контроллерден башкарууга мүмкүндүк берет.
Бул Alexa менен сыналган, бирок Samsung Smartthings жана башка башкаруу интерфейстери менен жакшы иштейт окшойт, анткени ал Belkin Wemo розеткаларын туурайт.
Мыкты FAUXMO кодуна негизделген көптөгөн мисалдар бар, бирок бул питонду үйрөнүүнү билдирет жана мага түзмөктөрүмө керектүү деталдуу көзөмөлдү берген эмес, ошондуктан мен базалык коддоо тили катары С колдонуп, башынан баштап кайра түзүүнү чечтим.
Мен ошондой эле Amazon.com сайтындагы лямбда кодунун тереңдигине баргым келбеди, ошондуктан мен аны абдан жөнөкөй кармадым.
Мен булакты жана жазууларды Githubга жайгаштырдым:
github.com/Switchdoctorstu/StuPiMo
Үйрөткүч чындыгында аны кантип иштетүү керектигин жана башкаларга жардам берсе, менин жазууларымды жарыялоону камтыйт.
1 -кадам: Жабдуулар жана туташуулар
Сизге керектүү нерселер Amazon / EBayде жеткиликтүү:
- Малина PI *
- Pi электр менен камсыздоо
- Dupont бириктиргичтери
- Эстафета тактасы
- Эски микро USB коргошун (реле картасынын кубаттуулугу үчүн жарымын кыскартуу үчүн)
Ар кандай малина Pi иштейт, мен муну Model B жана Zeroдо сынап көрдүм.
*Эгерде Pi Zero колдонулса, сизге OTG түйүнүнүн адаптери керек болот (эгерде 'W' версиясын WiFi менен buit менен сатып албасаңыз)
Пи тармагына туташууңуз керек болот.
Релейлик картаны Pi менен туташтыруу үчүн дюпонт коннекторлорун колдонуңуз.
Эскертүү, реле картасы тышкы кубатты колдонушу керек (шилтемени алып, тышкы 5vге туташуу). Бул PIден иштейт, бирок өндүрүштү иштетүү үчүн сунушталбайт.
Орнотуу үчүн мен сырттан кубатталган USB HUB колдондум. Бул PIге күч берет.
Мен ошондой эле эски USB кабелинин учун кесип, коопсуз болуу үчүн релелерди 2 -USB туташуусунан хабка чейин иштеттим. Менин "өндүрүш" версиямда кичинекей 5V 5A которуу режими электр энергиясы колдонулат. Дагы эле мен Micro-USB аркылуу Пиди кубаттоо үчүн USB коргошун экиге бөлүп, релелик тактаны иштетүү үчүн дюпонт коннекторлорунун экөөсүн кесип салдым. USB коргошунунда 4 зым бар, көбү 5v менен камсыз кылуу үчүн кызыл/кара түстү колдонушат, бирок эгер күмөн санасаңыз, туура зымдарды алуу үчүн метрди колдонуңуз.
Тактадагы реле казыктары PI башындагы тиешелүү GPIO казыктарына туташтырылган.
Код 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 - +5в логика үчүн
2 -кадам: PI орнотуу
Мен сиздин ПИни кантип иштетүү жана тармакка туташуу боюнча окуу куралын кайра түзбөйм.
Көптөгөн гиддер бар, анын ичинде мыкты инструктор:
www.instructables.com/id/Ultimate-Raspberr…
Сиз тармакта ПИ көрүнүп турган жерге жетишиңиз керек жана сиз ага туташа аласыз.
Бул Ethernet же Wireless аркылуу болобу, айырмасы жок.
Бул долбоорду Geany Programmers Editor аркылуу Raspberry PI менен эле бүтүрсө болот, бирок мен жеке түрдө Visual Studio же Eclipseти (же ал тургай Notepad ++) колдонуп, компьютерге кодду даярдоону оңой табам, андан кийин аны мүчүлүштүктөрдү оңдоо үчүн PIге жүктөйм. VNC туташуусу. Дагы бир жолу мен муну айткым келбейт, анткени RPiде VNCти орнотуу боюнча көптөгөн сонун көрсөтмөлөр бар.
Сизге керектүү нерсенин баары - бул кодду жүктөп, түзө турган чекке жетүү.
Маанилүү бир эскертүү UPNP иштетүүчү UDP мультикастын талап кылгандыктан, колдонулган интерфейстер 'Promiscuous' режимине коюлушу керек.
Бул буйрук сабында жасалышы мүмкүн:
pi@raspberrypi: ~ $ ifconfig eth0 promisc
жана / же
pi@raspberrypi: ~ $ ifconfig wlan0 promisc
Бул туруктуу болушу керек, ошондуктан мен /etc/rc.local редакцияладым
sudo nano / etc / rc.local
сапты кошуу үчүн:
sudo ifconfig eth0 promisc
интерфейстерди ишке киргизүүдө камсыз кылуу үчүн баннер # линияларынын биринчи топтомунан кийин.
3 -кадам: Кодду жүктөө жана түзүү
Коддун өзү менин Github репозиторийимде отурат;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
репозиторийди клондоштуруунун "туура" жолдору бар. Pi столунда Geany редакторун ачуу жана кодду чаптоо оңой болду.
Ошо сыяктуу эле, эгер сиз буйрук сабын колдонуп жатсаңыз;
Жаңы каталог түзүү
mkdir Stu
Ага өзгөртүү
cd 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' сураңыз, ал виртуалдык Wemo түзмөктөрүнүн 8ин табышы керек.
Бул жөн эле: "Alexa 1 розеткасын күйгүз" же "Alexa 6 розеткасын өчүр" ж.б.у.с. жана тиешелүү реле өзгөрөт.
5 -кадам: Кодекс кантип иштейт
Код Belkin Wemo розетка түзмөгүнүн эмуляциясы менен иштейт.
Бул үчүн 2 негизги функцияны аткарышы керек
- UPNP ачылышын берүүчү
- түзмөккө жөнөтүлгөн буйруктарды жана керектүү жоопторду башкаруу үчүн "түзмөк иштетүүчү" (виртуалдык түзмөккө бирден).
"Бонустун" өзгөчөлүгү, ал ошондой эле түзмөктөрдү көзөмөлдөөгө уруксат берүү үчүн веб -баракчаны чыгарат.
UPNP иштетүүчү
UPNP иштетүүчү 239.255.255.250 1900 портунда SSDP протоколунун пакеттерин көзөмөлдөө үчүн розетканы ачат.
Бул ар бир "M-SEARCH" суроосуна жооп берет, ал ачылыштын жооп пакети менен, жеке wemo эмуляторлорун сурагандардын баарына кабарлайт.
Түзмөк иштетүүчү
Түзмөктү иштетүүчүлөр (виртуалдык түзмөккө бирден) IP портторунун сериясын көзөмөлдөйт жана сурамдарга жооп берет.
Бул суралганда setup.xml жообун берет
Суралганда, ал окуяны сүрөттөө файлына кызмат кылат
Бул GETBINARYSTATE өтүнүчүнө жооп берет
Бул SETBINARYSTATE өтүнүчүн иштеп чыгат жана жооп берет
Web Server
Веб -сервер - бул реле үчүн бир баскычты камтыган HTML формасын түзүүчү жөнөкөй тартип.
Ал басылган баскычтарга жооп берет жана реленин абалын ошого жараша алмаштырат.
6 -кадам: Ыңгайлаштыруу жана достук аттар
Мен жөнөкөй жана оңдолушу үчүн коддон жиним келген жок.
Негиздер коддун башталышындагы аныктамалар менен ыңгайлаштырылышы мүмкүн:
// глобалдык аныктамалар#веб -серверди иштетүү үчүн WEBPORT 5353 // портун аныктайт
#define NUMDEVICES 8 // Түзүлө турган виртуалдык түзмөктөрдүн саны
#define PORTBASE 43450 // чейин көбөйтүү үчүн базалык IP порту
WEBPORT-бул камтылган веб-сервер иштеген порт номери. Муну оңой кылуу үчүн 80ге отургузууга болот, бирок мен бул жерде иштеген tomcat же башка кызматтарга карама -каршы келгенин байкадым.
NUMDEVICES жеке WEMO эмуляторлорунун санын аныктайт. Эгерде сизде 2 порттук реле картасы болсо, анда муну 2, 4 порт = 4 ж.
Түзмөктөрдүн достук аттары setup_names деп аталган тартипте коюлган:
int setup_names (шарттуу [NUMDEVICES] [NAMELEN]) {int i = 0;
// бул циклди колдонуңуз
үчүн (i = 0; i <NUMDEVICES; i ++) {
sprintf (достук , "Socket %d", i + 1);
}
// же түзмөк аттарын толтуруу үчүн төмөнкү колдонмо таблицасы
/*
strcpy (достук [0], "Уктоочу бөлмө сыналгы");
strcpy (достук [1], "Электр жууркан");
strcpy (достук [2], "Уктоочу чырак");
strcpy (достук [3], "Socket 4");
strcpy (достук [4], "Socket 5");
strcpy (достук [5], "Socket 6");
strcpy (достук [6], "Socket 7");
strcpy (достук [7], "Socket 8");
*/
return i;
}
Мен "Socket n" түзмөктөрүнүн ар бирине чалуу үчүн циклди колдондум, бирок сиз бул укурукту өчүрүп, ордуна достук аттарыңызды кошо аласыз (жөн гана NUMDEVICES менен бирдей санды кошкондугуңузду текшериңиз) / * * /
Эгер кандайдыр бир өзгөртүүлөрдү киргизсеңиз, кодду кайра түзүүнү унутпаңыз.
Сунушталууда:
IR Home Automation Relay колдонуп: 6 кадам (Сүрөттөр менен)
IR Home Automation Relay колдонуп: Infared Remote Home Automation System (Эскертүү: Долбоорду өз тобокелчилигиңизге кайталаңыз! Бул долбоорго Жогорку чыңалуу кирет)
Arduino Control Relay Module менен Smart Home кантип жасалат - Үйдү автоматташтыруу идеялары: 15 кадам (сүрөттөр менен)
Arduino Control Relay Module менен Smart Home кантип жасалат | Үйдү автоматташтыруу идеялары: Бул үйдү автоматташтыруу долбоорунда биз 5 тиричилик техникасын башкара турган акылдуу үй реле модулун иштеп чыгабыз. Бул реле модулу Мобилдик же смартфондон, IR пультунан же телекөрсөтүүдөн, Кол которгучтан башкарылышы мүмкүн. Бул акылдуу эстафета дагы сезе алат
Arduino UNO жана Single Channel 5V Solid State Relay Module колдонуу менен лампочканы кантип башкарса болот: 3 кадам
Arduino UNO жана Single Channel 5V Solid State Relay Module колдонуу менен лампочканы кантип башкарса болот: Description: Салттуу механикалык реле менен салыштырганда, Solid State Relay (SSR) көптөгөн артыкчылыктарга ээ: ал узак өмүргө ээ, алда канча жогору бурулат/ өчүрүү ылдамдыгы жана ызы -чуу жок. Мындан тышкары, ал дирилдөөгө жана механикалык каршылыкка дагы ээ
Raspberry Pi DIY Relay Board: 3 кадам (сүрөттөр менен)
Raspberry Pi DIY Relay Board: Малина жана кичине ардуино менен болгон кээ бир проекттер үчүн мен кээ бир релелерди алмаштырышым керек. GPIO чыгаруу деңгээли (3,3V) болгондуктан, чоңураак жүктөрдү алмаштырууга жөндөмдүү жана берилген 3,3 вольтто түз иштей турган кээ бир релелерди табуу кыйын
NES Controller Shuffle (Nintendo Controller MP3, V3.0): 5 кадам (Сүрөттөр менен)
NES Controller Shuffle (Nintendo Controller MP3, V3.0): Мен Nintendo Controller MP3, Version 2.0 үчүн дизайнында ryan97128ди толугу менен жулуп салдым жана ал идеяны бардык акылдуу Morte_Moyaдан алганын угуп жатам, ошондуктан мен кредит ала албайм алардын бардык генийлери. Мен жөн гана ыңгайлуулукту кошуп, кайра толтурууну кааладым