Përmbajtje:

Kontrolluesi i stafetës Alexa Raspberry Pi: 6 hapa
Kontrolluesi i stafetës Alexa Raspberry Pi: 6 hapa

Video: Kontrolluesi i stafetës Alexa Raspberry Pi: 6 hapa

Video: Kontrolluesi i stafetës Alexa Raspberry Pi: 6 hapa
Video: Как использовать 2-канальное реле для управления нагрузками переменного и постоянного тока в Arduino 2024, Nëntor
Anonim
Kontrolluesi i stafetës Alexa Raspberry Pi
Kontrolluesi i stafetës Alexa Raspberry Pi
Kontrolluesi i stafetës Alexa Raspberry Pi
Kontrolluesi i stafetës Alexa Raspberry Pi
Kontrolluesi i stafetave Alexa Raspberry Pi
Kontrolluesi i stafetave Alexa Raspberry Pi

Kam krijuar këtë Instructable për të ndarë përvojat e mia me integrimin e pajisjeve IOT me Alexa të Amazon.

Ky projekt lejon që një bord stafetë i lidhur me një mjedër pi të kontrollohet nga kontrolluesi smarthome.

Beenshtë testuar me Alexa por gjithashtu duket se funksionon mirë me Samsung Smartthings dhe ndërfaqe të tjera kontrolli pasi imiton një seri prizash Belkin Wemo.

Ka SHUM examples shembuj të bazuar në kodin e shkëlqyer FAUXMO, por kjo nënkuptonte mësimin e pitonit dhe nuk më dha kontrollin e detajuar që më duhej për pajisjet e mia dhe kështu vendosa të rikrijoj një nga e para duke përdorur C si gjuhën time kryesore të kodimit.

Unë gjithashtu nuk doja të shkoja në thellësitë e kodit lambda në Amazon.com kështu që e kam mbajtur me të vërtetë të thjeshtë.

Unë kam postuar burimin dhe shënimet në Github:

github.com/Switchdoctorstu/StuPiMo

Tutoriali është me të vërtetë për të mbuluar se si të funksionojë dhe për të publikuar shënimet e mia në rast se ndihmon të tjerët.

Hapi 1: Furnizimet dhe Lidhjet

Furnizimet dhe Lidhjet
Furnizimet dhe Lidhjet
Furnizimet dhe Lidhjet
Furnizimet dhe Lidhjet
Furnizimet dhe Lidhjet
Furnizimet dhe Lidhjet

Gjërat që ju nevojiten janë në dispozicion në Amazon / EBay:

  • Mjedër PI *
  • Furnizimi me energji Pi
  • Lidhësit Dupont
  • Bordi i stafetës
  • Lidhës i vjetër mikro USB (për të përgjysmuar fuqinë për kartën e stafetës)

Çdo Pi mjedër do të funksionojë, unë e kam testuar këtë në një Model B dhe Zero.

*Nëse përdorni Pi Zero do t'ju duhet një Përshtatës Rrjeti OTG (nëse nuk blini versionin 'W' me blerje në WiFi)

Ju do të duhet të lidhni Pi me rrjetin.

Përdorni lidhëset dupont për të lidhur kartën e stafetës me Pi.

Vini re se karta e stafetë duhet të përdorë energji të jashtme (hiqni lidhjen dhe lidheni me 5v të jashtme). Do të funksionojë i mundësuar nga PI, por nuk këshillohet për funksionimin e prodhimit.

Për konfigurimin tim kam përdorur një USB HUB të mundësuar nga jashtë. Kjo siguron fuqinë për IP.

Kam prerë gjithashtu fundin e një kablli të vjetër USB dhe i kam furnizuar stafetat nga një lidhje e dytë USB në shpërndarës për të qëndruar i sigurt. Versioni im 'prodhues' përdor një furnizim me energji të vogël të modalitetit të kalimit 5V 5A. Përsëri unë vetëm shkurtova një prizë USB në gjysmë për të fuqizuar Pi përmes Micro-USB dhe shkurtova dy nga lidhësit dupont për të fuqizuar bordin e stafetës. Ka 4 tela në prizën USB, shumica përdorin të kuqe/të zezë për të treguar furnizimin me 5v, por nëse keni dyshime përdorni një metër për t'u siguruar që keni telat e duhur.

Kunjat e stafetë në tabelë janë të lidhura me kunjat përkatëse GPIO në kokën e PI.

Kodi ju lejon të zgjidhni kunjat GPIO, por parazgjedhja që kam përdorur ishte:

  1. Pin i stafetës 1 - Ground
  2. Pin i stafetës 2 - Relay 1 - GPIO 0
  3. Pin i stafetës 3 - Rele 2 - GPIO 1
  4. Pin i stafetës 4 - Rele 3 - GPIO 2
  5. Pin i stafetës 5 - Rele 4 - GPIO 3
  6. Pin i stafetës 6 - Rele 5 - GPIO 4
  7. Pin i stafetës 7 - Relay 6 - GPIO 5
  8. Pin i stafetës 8 - Relay 7 - GPIO 6
  9. Releta Pin 9 - Rele 8 - GPIO 7
  10. Releta Pin 10 - +5v për logjikën

Hapi 2: Konfigurimi i PI

Unë nuk do të rikrijoj një tutorial se si të aktivizoni PI-në tuaj dhe të lidheni me rrjetin.

Ka shumë udhëzues, përfshirë një udhëzues të shkëlqyeshëm në:

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

Ju do të duhet të arrini në pikën ku PI është e dukshme në rrjet dhe mund të lidheni me të.

Nuk ka rëndësi nëse kjo është përmes Ethernet ose Wireless.

Ky projekt mund të përfundojë vetëm me Raspberry PI duke përdorur Editorin e Programuesve Geany, por unë personalisht e kam më të lehtë të bëj përgatitjen e kodit tim në një PC duke përdorur Visual Studio ose Eclipse (ose edhe Notepad ++) dhe pastaj ta ngarkoj atë në PI për korrigjim duke përdorur një Lidhje VNC. Përsëri nuk do ta mbuloj atë këtu pasi ka shumë udhëzues të shkëlqyeshëm për ngritjen e VNC në një RPi.

E tëra çfarë ju nevojitet është të arrini në pikën ku mund të ngarkoni dhe përpiloni kodin.

Një shënim që është i rëndësishëm është se meqenëse mbajtësi i UPNP kërkon UDP multicast, ndërfaqet e përdorura duhet të vendosen në modalitetin "Promiscuous".

Kjo mund të bëhet në rreshtin e komandës:

pi@raspberrypi: if $ ifconfig eth0 promiscisc

dhe / ose

pi@raspberrypi: if $ ifconfig wlan0 promisc

Kjo duhet të bëhet e përhershme kështu që redaktova /etc/rc.local

sudo nano / etc / rc.lokal

për të përfshirë rreshtin:

sudo ifconfig eth0 promisc

pas grupit të parë të linjave # të banderolave për të siguruar që ndërfaqet të jenë vendosur gjatë fillimit.

Hapi 3: Shkarkimi dhe Përpilimi i Kodit

Kodi në vetvete gjendet në repositorin tim Github;

github.com/Switchdoctorstu/StuPiMo/blob/ma…

ndërsa ka mënyra 'të sakta' për të klonuar depon. e kisha më të lehtë thjesht të hapja redaktorin Geany në desktopin Pi dhe të ngjisja kodin.

Në mënyrë të ngjashme, nëse jeni duke përdorur vijën e komandës;

Krijoni një drejtori të re

mkdir Stu

Ndrysho në të

cd Stu

Krijoni një skedar të ri teksti

nano StuPiMo.c

Kopjoni kodin nga Github i papërpunuar dhe ngjiteni në skedarin e ri

Ruaje dhe dil.

Pasi ta keni skedarin si objekt të kodit burimor C, mund ta përpiloni duke përdorur

gcc -o StuPiMo StuPiMo.c -l instalime elektrikePi

vini re "-l wiringPi" është e nevojshme për të siguruar që lidhësit e përpiluesit të lidhen me bibliotekën e instalimeve elektrike.

Kodi pastaj mund të ekzekutohet duke përdorur

./StuPiMo

Përsëri, nëse doni që kjo të funksionojë gjatë fillimit, përdorni komandën:

sudo nano /etj/rc.local

për të shtuar rreshtin e mëposhtëm

sudo/home/pi/Stu/StuPiMo &

te skedari juaj /etc/rc.local. Mos harroni të ruani skedarin tuaj në dalje.

Vini re se "&" është thelbësore për të siguruar që të krijohet një nën-proces për të siguruar që skenari të mos bllokohet në këtë pikë.

Hapi 4: Përdorimi i tij

Pasi të keni ekzekutuar kodin, kërkoni nga Alexa të "Zbuloni Pajisjet" dhe ajo duhet të gjejë të 8 pajisjet virtuale Wemo.

Atëherë është vetëm një rast për të thënë: "Alexa aktivizoni prizën 1" ose "Alexa fikni prizën 6" etj. Dhe stafeta përkatëse do të ndryshohet.

Hapi 5: Si funksionon Kodi

Kodi funksionon duke imituar një seri të pajisjeve të bazës Belkin Wemo.

Për të arritur këtë, ajo duhet të trajtojë 2 funksione kryesore

  • një mbajtës i transmetimit të zbulimeve UPNP
  • një 'mbajtës pajisjes' (një për pajisje virtuale) për të menaxhuar komandat e dërguara në pajisje dhe përgjigjet e kërkuara.

Një tipar 'bonus' është se ai gjithashtu publikon një faqe në internet për të lejuar kontrollin e pajisjeve.

Trajtuesi UPNP

Trajtuesi UPNP hap një prizë për të monitoruar paketat e protokollit SSDP në portën 239.255.255.250 1900.

Ai i përgjigjet çdo pyetjeje "M-SEARCH" që vjen me një paketë përgjigjeje zbulimi që njofton emulatorët individualë të wemo-s për këdo që pyet.

Trajtuesi i pajisjes

Trajtuesit e pajisjeve (një për pajisje virtuale) monitorojnë një seri portesh IP dhe u përgjigjen kërkesave.

Ajo do të shërbejë një përgjigje setup.xml kur pyetet

Ai do t'i shërbejë një skedari të përshkrimit të ngjarjes kur kërkohet

Ajo do t'i përgjigjet një kërkese GETBINARYSTATE

Ai do të përpunojë dhe do t'i përgjigjet një kërkese SETBINARYSTATE

Web Server

Serveri në internet është një rutinë e thjeshtë që ndërton një formë HTML që përmban një buton për stafetë.

Ai do t'i përgjigjet butonave që shtypen dhe do të ndryshojë gjendjen e stafetës në përputhje me rrethanat.

Hapi 6: Përshtatje dhe Emra miqësorë

Përshtatje dhe Emra Miqësorë
Përshtatje dhe Emra Miqësorë

Unë nuk jam çmendur me kodin për ta mbajtur atë të thjeshtë dhe të redaktueshëm.

Bazat mund të personalizohen me përkufizime në fillim të kodit:

// përkufizimet globale#përcakto WEBPORT 5353 // portin për të ekzekutuar serverin në internet

#përcaktoni NUMRAT 8 // Numri i pajisjeve virtuale për tu krijuar

#define PORTBASE 43450 // porta bazë IP për tu rritur nga

WEBPORT është numri i portit në të cilin funksionon serveri i integruar i uebit. Kjo mund të ulet në moshën 80 vjeç për t'i bërë gjërat më të lehta, por zbulova se ajo binte ndesh me macet ose shërbimet e tjera që funksiononin në vend.

NUMDEVICES përcakton numrin e emulatorëve individualë WEMO për t'u nisur. Nëse keni një kartë stafetë me 2 porta, vendoseni këtë në 2, 4 porte = 4, etj.

Emrat miqësorë për pajisjet janë vendosur në një rutinë të quajtur setup_names:

int setup_names (miqësore me shenja [NUMDEVICES] [NAMELEN]) {int i = 0;

// përdorni këtë lak

për (i = 0; i <NUMDEVICES; i ++) {

sprintf (miqësore , "Socket %d", i + 1);

}

// ose tabela e mëposhtme manuale për të mbushur emrat e pajisjeve

/*

strcpy (miqësore [0], "Dhoma gjumi");

strcpy (miqësore [1], "Batanije elektrike");

strcpy (miqësore [2], "Llamba e dhomës së gjumit");

strcpy (miqësore [3], "Fole 4");

strcpy (miqësore [4], "Fole 5");

strcpy (miqësore [5], "Fole 6");

strcpy (miqësore [6], "Fole 7");

strcpy (miqësore [7], "Fole 8");

*/

kthehem i;

}

Kam përdorur një lak për të thirrur secilën nga pajisjet 'Socket n', por ju mund ta fshini këtë lak dhe të shtoni emrat tuaj miqësorë në vend (thjesht sigurohuni që të shtoni të njëjtin numër si NUMDEVICES) nëse fshini / * * /

Mos harroni të ri-përpiloni kodin nëse bëni ndonjë ndryshim.

Recommended: