Isi kandungan:
- Langkah 1: Bekalan dan Sambungan
- Langkah 2: Persediaan PI
- Langkah 3: Memuat turun dan Menyusun Kod
- Langkah 4: Menggunakannya
- Langkah 5: Bagaimana Kod Berfungsi
- Langkah 6: Penyesuaian dan Nama Mesra
Video: Alexa Raspberry Pi Relay Controller: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Saya membuat Instructable ini untuk berkongsi pengalaman saya dengan mengintegrasikan peranti IOT dengan Alexa Amazon.
Projek ini membolehkan papan geganti yang disambungkan ke raspberry pi dikendalikan dari pengawal smarthome.
Ia telah diuji dengan Alexa tetapi nampaknya berfungsi dengan baik dengan Samsung Smartthings dan antara muka kawalan lain kerana ia meniru rangkaian soket Belkin Wemo.
Terdapat BANYAK contoh berdasarkan kod FAUXMO yang sangat baik tetapi ini bermaksud belajar python dan tidak memberi saya kawalan terperinci yang saya perlukan untuk peranti saya dan jadi saya memutuskan untuk membuatnya semula dari awal menggunakan C sebagai bahasa pengekodan asas saya.
Saya juga tidak mahu pergi ke kedalaman kod lambda di Amazon.com jadi saya menyimpannya dengan sangat mudah.
Saya telah menghantar sumber dan nota di Github:
github.com/Switchdoctorstu/StuPiMo
Tutorial ini benar-benar merangkumi cara membuatnya berfungsi dan menerbitkan nota saya sekiranya ia membantu orang lain.
Langkah 1: Bekalan dan Sambungan
Perkara yang anda perlukan boleh didapati di Amazon / EBay:
- Pai raspberi *
- Bekalan kuasa Pi
- Penyambung Dupont
- Papan geganti
- Palam USB mikro lama (dipotong separuh untuk kuasa untuk kad geganti)
Mana-mana raspberry Pi akan berfungsi, saya telah mengujinya pada Model B dan Zero.
* Jika menggunakan Pi Zero, anda memerlukan Adaptor Rangkaian OTG (melainkan jika anda membeli versi 'W' dengan buit dalam WiFi)
Anda perlu menyambungkan Pi ke rangkaian.
Gunakan konektor dupont untuk menyambungkan kad geganti ke Pi.
Perhatikan bahawa kad geganti harus menggunakan kuasa luaran (lepaskan pautan dan sambungkan ke 5v luaran). Ia akan berfungsi berdasarkan PI tetapi tidak dinasihatkan agar pengeluaran berjalan.
Untuk persediaan saya, saya menggunakan USB HUB berkuasa luaran. Ini memberikan kekuatan kepada PI.
Saya juga memotong hujung kabel USB lama dan menghidupkan geganti dari sambungan USB ke-2 ke hab agar tetap selamat. Versi 'produksi' saya menggunakan bekalan kuasa mod suis 5V 5A kecil. Sekali lagi saya hanya memotong plumbum USB untuk mematikan Pi melalui Micro-USB dan memotong dua penyambung dupont untuk menghidupkan papan geganti. Terdapat 4 wayar di plumbum USB, kebanyakan menggunakan merah / hitam untuk menunjukkan bekalan 5v tetapi jika ragu menggunakan meter untuk memastikan anda mendapat kabel yang betul.
Pin relay di papan disambungkan ke pin GPIO yang berkaitan pada tajuk PI.
Kod ini membolehkan anda memilih pin GPIO tetapi lalai yang saya gunakan adalah:
- Relay Pin 1 - Tanah
- Relay Pin 2 - Relay 1 - GPIO 0
- Relay Pin 3 - Relay 2 - GPIO 1
- Relay Pin 4 - Relay 3 - GPIO 2
- Relay Pin 5 - Relay 4 - GPIO 3
- Relay Pin 6 - Relay 5 - GPIO 4
- Relay Pin 7 - Relay 6 - GPIO 5
- Relay Pin 8 - Relay 7 - GPIO 6
- Relay Pin 9 - Relay 8 - GPIO 7
- Relay Pin 10 - + 5v untuk logik
Langkah 2: Persediaan PI
Saya tidak akan membuat semula tutorial mengenai cara menjalankan PI anda dan berjalan dan disambungkan ke rangkaian.
Terdapat banyak panduan termasuk petunjuk yang sangat baik di:
www.instructables.com/id/Ultimate-Raspberr…
Anda perlu membawa diri ke titik di mana PI dapat dilihat di rangkaian dan anda boleh menyambung ke sana.
Tidak kira sama ada melalui Ethernet atau Wireless.
Projek ini dapat diselesaikan hanya dengan Raspberry PI menggunakan Editor Program Geany tetapi saya secara peribadi lebih mudah melakukan persiapan kod saya pada PC menggunakan Visual Studio atau Eclipse (atau bahkan Notepad ++) dan kemudian memuat naiknya ke PI untuk melakukan debug menggunakan Sambungan VNC. Sekali lagi saya tidak akan membahasnya di sini kerana terdapat banyak petunjuk yang sangat baik untuk menyiapkan VNC pada RPi.
Yang anda perlukan hanyalah sampai ke titik di mana anda boleh memuat naik dan menyusun kodnya.
Satu nota yang penting ialah kerana pengendali UPNP memerlukan UDP multicast, antara muka yang digunakan mesti ditetapkan ke mod 'Promiscuous'.
Ini boleh dilakukan pada baris arahan:
pi @ raspberrypi: ~ $ ifconfig eth0 promisc
dan / atau
pi @ raspberrypi: ~ $ ifconfig wlan0 promisc
Ini perlu dibuat tetap jadi saya mengedit /etc/rc.local
sudo nano / etc / rc.local
untuk memasukkan garis:
sudo ifconfig eth0 promisc
selepas set pertama # baris sepanduk untuk memastikan bahawa antara muka ditetapkan pada permulaan.
Langkah 3: Memuat turun dan Menyusun Kod
Kod itu sendiri terdapat di repositori Github saya;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
sementara ada cara 'betul' untuk mengklon repositori. saya merasa lebih mudah hanya dengan membuka editor Geany di desktop Pi dan menampal kodnya.
Begitu juga, jika anda menggunakan baris arahan;
Buat direktori baru
mkdir Stu
Tukar kepadanya
cd Stu
Buat fail teks baru
nano StuPiMo.c
Salin kod dari Github raw dan tampal ke fail baru
Simpan dan keluar.
Sebaik sahaja anda mempunyai fail sebagai objek kod sumber C, anda dapat menyusunnya menggunakan
gcc -o StuPiMo StuPiMo.c -l pendawaianPi
perhatikan "-l wiringPi" diperlukan untuk memastikan bahawa pematuhan menghubungkan di perpustakaan wiringPi yang diperlukan.
Kod kemudian boleh dijalankan dengan menggunakan
./StuPiMo
Sekali lagi, jika anda mahu ini dijalankan pada permulaan, gunakan arahan:
sudo nano /etc/rc.local
untuk menambah baris berikut
sudo / rumah / pi / Stu / StuPiMo &
ke fail /etc/rc.local anda. Jangan lupa menyimpan fail anda semasa keluar.
Perhatikan '&' adalah penting untuk memastikan sub-proses dilahirkan untuk memastikan bahawa skrip tidak disekat pada ketika ini.
Langkah 4: Menggunakannya
Setelah kod berjalan, minta alexa untuk 'Discover Devices' dan dia harus mencari semua 8 peranti Wemo maya.
Maka hanya sebutan: "Alexa hidupkan soket 1" atau "Alexa matikan soket 6" dan lain-lain dan geganti yang berkaitan akan diubah.
Langkah 5: Bagaimana Kod Berfungsi
Kod ini berfungsi dengan meniru serangkaian peranti soket Belkin Wemo.
Untuk mencapai ini, ia mesti mengendalikan 2 fungsi utama
- pengendali siaran penemuan UPNP
- 'pengendali peranti' (satu per peranti maya) untuk menguruskan arahan yang dihantar ke peranti dan respons yang diperlukan.
Ciri 'bonus' adalah bahawa ia juga menerbitkan laman web untuk membolehkan pengawalan peranti.
Penangan UPNP
Pengendali UPNP membuka soket untuk memantau paket protokol SSDP pada port 239.255.255.250 1900.
Ini bertindak balas terhadap pertanyaan 'M-SEARCH' yang datang dengan paket respons penemuan yang mengumumkan emulator wemo individu kepada sesiapa yang bertanya.
Pengendali Peranti
Pengendali peranti (satu per peranti maya) memantau serangkaian port IP dan bertindak balas terhadap permintaan.
Ia akan memberikan respons setup.xml apabila ditanya
Ia akan menyajikan fail penerangan acara apabila ditanya
Ia akan bertindak balas terhadap permintaan GETBINARYSTATE
Ia akan memproses dan bertindak balas terhadap permintaan SETBINARYSTATE
Pelayan Web
Pelayan web adalah rutin sederhana yang membina borang HTML yang mengandungi butang per geganti.
Ia akan bertindak balas terhadap butang yang ditekan dan menukar keadaan relay dengan sewajarnya.
Langkah 6: Penyesuaian dan Nama Mesra
Saya tidak marah dengan kodnya agar tetap mudah dan boleh diedit.
Asasnya dapat disesuaikan dengan definisi pada permulaan kod:
// definisi global # tentukan port WEBPORT 5353 // untuk menjalankan pelayan web
#tentukan NUMDEVICES 8 // Bilangan peranti maya untuk dibuat
#define PORTBASE 43450 // port IP asas untuk kenaikan dari
WEBPORT adalah nombor port yang dijalankan oleh pelayan web terbina dalam. Ini boleh dibuat untuk duduk di 80 untuk membuat perkara mudah, tetapi saya dapati ia bertentangan dengan tomcat atau perkhidmatan lain yang dijalankan secara tempatan.
NUMDEVICES menentukan bilangan emulator WEMO individu yang akan dilancarkan. Sekiranya anda mempunyai kad relay 2 port, tetapkan ini ke 2, 4 port = 4 dll.
Nama mesra untuk peranti ditetapkan dalam rutin yang disebut setup_names:
int setup_names (mesra char [NUMDEVICES] [NAMELEN]) {int i = 0;
// gunakan gelung ini
untuk (i = 0; i <NUMDEVICES; i ++) {
sprintf (mesra , "Socket% d", i + 1);
}
// atau jadual manual berikut untuk mengisi nama peranti
/*
strcpy (mesra [0], "TV Bilik Tidur");
strcpy (mesra [1], "Selimut elektrik");
strcpy (mesra [2], "Lampu Bilik Tidur");
strcpy (mesra [3], "Socket 4");
strcpy (mesra [4], "Socket 5");
strcpy (mesra [5], "Socket 6");
strcpy (mesra [6], "Socket 7");
strcpy (mesra [7], "Socket 8");
*/
pulangan i;
}
Saya menggunakan gelung untuk memanggil setiap peranti 'Socket n' tetapi anda boleh memadam gelung ini dan menambah nama mesra anda sendiri (pastikan anda menambah nombor yang sama dengan NUMDEVICES) jika anda menghapus / * * /
Ingatlah untuk menyusun semula kod jika anda membuat perubahan.
Disyorkan:
Alexa IoT TV-Controller ESP8266: 10 Langkah (dengan Gambar)
Alexa IoT TV-Controller ESP8266: Baru-baru ini saya membeli Amazon Echo Dot semasa Amazon Prime hari dengan harga ~ 20 €. Pembantu suara kecil ini murah dan bagus untuk DIY Home Automation jika anda tahu apa yang mungkin dan bagaimana membina peranti pintar. Saya mempunyai TV Pintar Samsung tetapi saya mahu
Sistem Rumah Pintar Alexa Menggunakan Modul Relay NodeMCU: 10 Langkah
Sistem Rumah Pintar Alexa Menggunakan Modul Relay NodeMCU: Dalam projek IoT ini, saya telah membuat sistem Automasi Rumah Pintar Alexa menggunakan NodeMCU ESP8266 & Modul Relay. Anda boleh mengawal lampu, kipas dan peralatan rumah lain dengan mudah dengan arahan suara. Untuk menyambungkan pembesar suara pintar Echo Dot dengan
Suis Relay IOT yang Dikawal Suara Berasaskan Arduino (Google Home & Alexa Disokong): 11 Langkah
Suis Relay IOT Relay Switched Arduino Based (Google Home & Alexa Disokong): Projek ini menerangkan cara membuat suis relay IOT berasaskan Arduino, kawalan suara. Ini adalah geganti yang dapat anda hidupkan dan matikan dari jauh menggunakan aplikasi untuk iOS dan Android, serta mengikatnya ke IFTTT dan mengawalnya dengan suara anda menggunakan Goog
Automasi Rumah Dengan Raspberry Pi Menggunakan Relay Board: 7 Langkah
Automasi Rumah Dengan Raspberry Pi Menggunakan Relay Board: Sebilangan besar orang mahukan keselesaan hebat tetapi dengan harga yang berpatutan. Kami merasa malas untuk menerangi rumah setiap petang ketika matahari terbenam dan keesokan paginya, mematikan lampu lagi Atau untuk mematikan / mematikan penghawa dingin / kipas / pemanas seperti yang
Teknik Relay Modul Relay: 4 Langkah
Relay Module Reverse Engineering: Artikel ini menunjukkan cara membuat Relay Module yang boleh digunakan untuk Arduino dan aplikasi lain seperti papan litar dan projek DIY yang lain. Dengan tutorial ini, anda akan dapat membuat modul relay sendiri. Jadi apa itu relay? Relay adalah elektr