Мазмұны:

Alexa Raspberry Pi релелік контроллері: 6 қадам
Alexa Raspberry Pi релелік контроллері: 6 қадам

Бейне: Alexa Raspberry Pi релелік контроллері: 6 қадам

Бейне: Alexa Raspberry Pi релелік контроллері: 6 қадам
Бейне: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Қараша
Anonim
Alexa Raspberry Pi релелік контроллері
Alexa Raspberry Pi релелік контроллері
Alexa Raspberry Pi релелік контроллері
Alexa Raspberry Pi релелік контроллері
Alexa Raspberry Pi релелік контроллері
Alexa Raspberry Pi релелік контроллері

Мен бұл нұсқаулықты IOT құрылғыларын Amazon Alexa -мен біріктіру тәжірибесімен бөлісу үшін жасадым.

Бұл жоба таңқурайға қосылған реле тақтасын smarthome контроллерінен басқаруға мүмкіндік береді.

Ол Alexa -мен сыналған, бірақ сонымен қатар Samsung Smartthings пен басқа басқару интерфейстерімен жақсы жұмыс істейді, өйткені ол Belkin Wemo розеткаларын шығарады.

FAUXMO-ның тамаша кодына негізделген көптеген мысалдар бар, бірақ бұл питонды үйренуді білдірді және менің құрылғыларыма қажетті толық бақылауды бермеді, сондықтан мен оны негізгі кодтау тілі ретінде С көмегімен нөлден жаңадан құруды шештім.

Мен Amazon.com -да лямбда кодының тереңдігіне барғым келмеді, сондықтан мен оны өте қарапайым етіп сақтадым.

Мен Github -да дереккөз мен жазбаларды орналастырдым:

github.com/Switchdoctorstu/StuPiMo

Оқулық шынымен қалай жұмыс істеу керектігін және басқаларға көмектескен жағдайда менің жазбаларымды жариялауды қамтиды.

1 -қадам: Жабдықтар мен қосылымдар

Жабдықтар мен қосылымдар
Жабдықтар мен қосылымдар
Жабдықтар мен қосылымдар
Жабдықтар мен қосылымдар
Жабдықтар мен қосылымдар
Жабдықтар мен қосылымдар

Сізге қажет нәрселер Amazon / EBay -де оңай қол жетімді:

  • Таңқурай PI *
  • Pi қуат көзі
  • Дюпон қосқыштары
  • Эстафеталық тақта
  • Ескі микро USB сымы (реле картасының қуаты үшін жартысын қысқарту үшін)

Кез келген таңқурай Pi жұмыс істейді, мен оны B және Zero моделінде сынап көрдім.

*Егер Pi Zero қолданылса, сізге OTG желілік адаптері қажет болады (егер сіз WiFi -дегі «W» нұсқасын сатып алмасаңыз)

Сіз Pi -ді желіге қосуыңыз керек.

Реле картасын Pi -ге қосу үшін дюпонт қосқыштарын қолданыңыз.

Реле картасы сыртқы қуатты пайдалануы керек екенін ескеріңіз (сілтемені алып тастаңыз және сыртқы 5в -ке қосылыңыз). Ол PI арқылы жұмыс істейді, бірақ оны өндірісте пайдалану ұсынылмайды.

Орнату үшін мен сыртқы қуатты USB HUB қолдандым. Бұл PI -ге қуат береді.

Мен ескі USB кабелінің ұшын кесіп тастадым және қауіпсіз болу үшін реле 2 -ші USB қосылымынан хабқа қосылды. Менің «өндіріс» нұсқасында 5В 5А қосқыш режимінің шағын қуат көзі қолданылады. Мен тағы бір рет USB сымын екіге бөліп, Pi-ді Micro-USB арқылы қуаттандырдым және реле тақтасын қуаттандыру үшін дупонт қосқыштарының екеуін қысқарттым. USB сымында 4 сым бар, олардың көпшілігі 5 вольтты көрсету үшін қызыл/қара түсті пайдаланады, бірақ егер күмән туындаса, сымдардың дұрыс екеніне көз жеткізу үшін есептегішті пайдаланыңыз.

Борттағы реле түйреуіштері PI тақырыбындағы сәйкес GPIO түйреуіштеріне қосылады.

Код GPIO түйреуіштерін таңдауға мүмкіндік береді, бірақ мен пайдаланған әдепкі мән:

  1. Реле түйреуіші 1 - Жер
  2. 2 -релелік түйреуіш - 1 -реле - GPIO 0
  3. 3 -релелік түйреуіш - 2 -реле - GPIO 1
  4. 4 -релелік түйреуіш - 3 -реле - GPIO 2
  5. 5 -релелік түйреуіш - 4 -реле - GPIO 3
  6. 6 -релелік түйреуіш - 5 -реле - GPIO 4
  7. 7 -релелік түйреуіш - 6 -реле - GPIO 5
  8. Релелік түйреуіш 8 - реле 7 - GPIO 6
  9. 9 -релелік түйреуіш - 8 -реле - GPIO 7
  10. Логика үшін релелік түйреуіш 10 - +5в

2 -қадам: PI орнату

Мен PI-ді іске қосу және желіге қосылу туралы оқулықты қайта жасамаймын.

Көптеген нұсқаулықтар бар, оның ішінде:

www.instructables.com/id/Ultimate-Raspberr…

Сіз желіде PI көрінетін жерге жетуіңіз керек және сіз оған қосыла аласыз.

Бұл Ethernet немесе сымсыз байланыс арқылы маңызды емес.

Бұл жобаны 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 сымдарPi

«-l wiringPi» талап етуші wiringPi кітапханасына сілтеме жасауын қамтамасыз ету үшін қажет екенін ескеріңіз.

Содан кейін кодты іске қосуға болады

./StuPiMo

Тағы да, егер сіз мұны іске қосу кезінде іске қосқыңыз келсе, пәрменді қолданыңыз:

sudo nano /etc/rc.local

келесі жолды қосу үшін

sudo/home/pi/Stu/StuPiMo &

/etc/rc.local файлыңызға. Шығу кезінде файлды сақтауды ұмытпаңыз.

Сценарийдің бұл кезде бұғатталмағанына көз жеткізу үшін '&' қосалқы процестің пайда болуын қамтамасыз ету үшін маңызды екенін ескеріңіз.

4 -қадам: оны қолдану

Сізде код жұмыс істеп тұрған кезде, Alexa'дан 'Discover Devices' сұраңыз, ол барлық 8 виртуалды Wemo құрылғыларын табуы керек.

Бұл жай ғана: «Alexa розетканы 1 қосыңыз» немесе «Alexa розетканы 6 өшіріңіз» және т.

5 -қадам: Кодекс қалай жұмыс істейді

Код Belkin Wemo розетка құрылғыларының сериясын эмуляциялау арқылы жұмыс істейді.

Бұған қол жеткізу үшін 2 негізгі функцияны орындау қажет

  • UPNP ашылым тарату өңдеушісі
  • құрылғыға жіберілген пәрмендерді және қажетті жауаптарды басқару үшін «құрылғы өңдегіші» (виртуалды құрылғыға бір).

«Бонустың» ерекшелігі - ол сонымен қатар құрылғыларды бақылауға мүмкіндік беретін веб -бетті шығарады.

UPNP өңдегіші

UPNP өңдегіші 239.255.255.250 1900 портында SSDP протокол пакеттерін бақылау үшін розетканы ашады.

Ол сұрайтын кез келген адамға жеке wemo эмуляторларын хабарландыратын жаңалықтар пакетімен келетін кез келген 'M-SEARCH' сұрауларына жауап береді.

Құрылғы өңдегіші

Құрылғы өңдеушілері (бір виртуалды құрылғы үшін бір) IP порттарының сериясын бақылайды және сұрауларға жауап береді.

Ол сұралған кезде setup.xml жауап береді

Ол сұралған кезде оқиғаның сипаттамасы файлына қызмет етеді

Ол GETBINARYSTATE сұрауына жауап береді

Ол SETBINARYSTATE сұранысын өңдейді және жауап береді

Веб -сервер

Веб -сервер - бұл реледегі батырмасы бар HTML пішінін құратын қарапайым жұмыс.

Ол түймелердің басылуына жауап береді және сәйкесінше реле күйін ауыстырады.

6 -қадам: теңшеу және достық атаулар

Теңшеу және достық атаулар
Теңшеу және достық атаулар

Мен кодты қарапайым және өңделетін етіп ашуланған жоқпын.

Негізгі кодтың басында анықтамалармен реттелуі мүмкін:

// жаһандық анықтамалар#WEBPORT 5353 // веб -серверді іске қосатын порт

#define NUMDEVICES 8 // Жасалатын виртуалды құрылғылар саны

#deportine 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»);

*/

қайтару i;

}

Мен «Socket n» құрылғыларының әрқайсысына қоңырау шалу үшін цикл қолдандым, бірақ егер сіз / * * /жойсаңыз, бұл циклды жойып, өзіңізге ыңғайлы атауларды қосуға болады (NUMDEVICES сияқты бірдей санды қосқаныңызға көз жеткізіңіз).

Егер сіз өзгеріс енгізсеңіз, кодты қайта құрастыруды ұмытпаңыз.

Ұсынылған: