Daftar Isi:
- Langkah 1: Persediaan dan Koneksi
- Langkah 2: Pengaturan PI
- Langkah 3: Mengunduh dan Mengkompilasi Kode
- Langkah 4: Menggunakannya
- Langkah 5: Cara Kerja Kode
- Langkah 6: Kustomisasi dan Nama Ramah
Video: Pengontrol Relay Alexa Raspberry Pi: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Saya membuat Instruksi ini untuk berbagi pengalaman saya dengan mengintegrasikan perangkat IOT dengan Alexa Amazon.
Proyek ini memungkinkan papan relai yang terhubung ke raspberry pi untuk dikontrol dari pengontrol smarthome.
Ini telah diuji dengan Alexa tetapi juga tampaknya berfungsi dengan baik dengan Samsung Smartthings dan antarmuka kontrol lainnya karena mengemulasi serangkaian soket Belkin Wemo.
Ada BANYAK contoh berdasarkan kode FAUXMO yang sangat baik tetapi ini berarti belajar python dan tidak memberi saya kontrol terperinci yang saya butuhkan untuk perangkat saya dan jadi saya memutuskan untuk membuatnya kembali dari awal menggunakan C sebagai bahasa pengkodean dasar saya.
Saya juga tidak ingin pergi ke kedalaman kode lambda di Amazon.com jadi saya membuatnya sangat sederhana.
Saya telah memposting sumber dan catatan di Github:
github.com/Switchdoctorstu/StuPiMo
Tutorial ini benar-benar untuk membahas cara membuatnya berfungsi dan menerbitkan catatan saya jika itu membantu orang lain.
Langkah 1: Persediaan dan Koneksi
Hal-hal yang Anda butuhkan sudah tersedia di Amazon / EBay:
- Raspberry PI *
- Catu daya Pi
- konektor Dupont
- Papan Relay
- Kabel USB mikro lama (untuk memotong setengah untuk daya untuk kartu relai)
Raspberry Pi apa pun akan berfungsi, saya telah menguji ini pada Model B dan Zero.
*Jika menggunakan Pi Zero, Anda memerlukan Adaptor Jaringan OTG (kecuali jika Anda membeli versi 'W' dengan buit in WiFi)
Anda harus menghubungkan Pi ke jaringan.
Gunakan konektor dupont untuk menghubungkan kartu relai ke Pi.
Perhatikan bahwa kartu relai harus menggunakan daya eksternal (lepaskan tautan dan sambungkan ke 5v eksternal). Ini akan bekerja dengan daya dari PI tetapi tidak disarankan untuk menjalankan produksi.
Untuk pengaturan saya, saya menggunakan USB HUB bertenaga eksternal. Ini memberikan kekuatan untuk PI.
Saya juga memotong ujung kabel USB lama dan menyalakan relai dari koneksi USB ke-2 ke hub agar tetap aman. Versi 'produksi' saya menggunakan catu daya mode sakelar 5V 5A kecil. Sekali lagi saya baru saja memotong kabel USB menjadi dua untuk memberi daya pada Pi melalui Micro-USB dan memotong dua konektor dupont untuk memberi daya pada papan relai. Ada 4 kabel di kabel USB, sebagian besar menggunakan merah/hitam untuk menunjukkan suplai 5v tetapi jika ragu gunakan meteran untuk memastikan Anda mendapatkan kabel yang benar.
Pin relai di papan terhubung ke pin GPIO yang relevan pada header PI.
Kode ini memungkinkan Anda untuk memilih pin GPIO tetapi default yang saya gunakan adalah:
- Relay Pin 1 - Ground
- Relai Pin 2 - Relai 1 - GPIO 0
- Relai Pin 3 - Relai 2 - GPIO 1
- Relai Pin 4 - Relai 3 - GPIO 2
- Relai Pin 5 - Relai 4 - GPIO 3
- Relai Pin 6 - Relai 5 - GPIO 4
- Relai Pin 7 - Relai 6 - GPIO 5
- Relai Pin 8 - Relai 7 - GPIO 6
- Relai Pin 9 - Relai 8 - GPIO 7
- Relay Pin 10 - +5v untuk logika
Langkah 2: Pengaturan PI
Saya tidak akan membuat ulang tutorial tentang cara mengaktifkan dan menjalankan PI dan terhubung ke jaringan.
Ada banyak panduan termasuk instruksi yang sangat baik di:
www.instructables.com/id/Ultimate-Raspberr…
Anda harus membawa diri Anda ke titik di mana PI terlihat di jaringan dan Anda dapat menyambungkannya.
Tidak masalah apakah ini melalui Ethernet atau Nirkabel.
Proyek ini dapat diselesaikan hanya dengan Raspberry PI menggunakan Geany Programmers Editor tetapi saya pribadi merasa lebih mudah untuk melakukan persiapan kode saya di PC menggunakan Visual Studio atau Eclipse (atau bahkan Notepad ++) dan kemudian mengunggahnya ke PI untuk debugging menggunakan koneksi VNC. Sekali lagi saya tidak akan membahasnya di sini karena ada banyak instruksi bagus tentang pengaturan VNC pada RPi.
Yang Anda butuhkan hanyalah sampai pada titik di mana Anda dapat mengunggah dan mengkompilasi kode.
Satu catatan yang penting adalah karena handler UPNP memerlukan multicast UDP, antarmuka yang digunakan harus diatur ke mode 'Promiscuous'.
Ini dapat dilakukan pada baris perintah:
pi@raspberrypi:~ $ ifconfig eth0 promisc
dan / atau
pi@raspberrypi:~ $ ifconfig wlan0 promisc
Ini perlu dibuat permanen jadi saya mengedit /etc/rc.local
sudo nano \etc\rc.local
untuk memasukkan baris:
sudo ifconfig eth0 promisc
setelah set pertama spanduk # baris untuk memastikan bahwa antarmuka disetel saat startup.
Langkah 3: Mengunduh dan Mengkompilasi Kode
Kode itu sendiri berada di repositori Github saya;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
sementara ada cara 'benar' untuk mengkloning repositori. saya merasa lebih mudah hanya dengan membuka editor Geany di desktop Pi dan menempelkan kodenya.
Demikian pula, jika Anda menggunakan baris perintah;
Buat direktori baru
mkdir Stu
Ubah ke itu
cd Stu
Buat file teks baru
nano StuPiMo.c
Salin kode dari Github mentah dan rekatkan ke file baru
Simpan dan keluar.
Setelah Anda memiliki file sebagai objek kode sumber C, Anda dapat mengompilasinya menggunakan
gcc -o StuPiMo StuPiMo.c -l wiringPi
perhatikan "-l wiringPi" diperlukan untuk memastikan bahwa kompiler menautkan di pustaka wiringPi yang diperlukan.
Kode kemudian dapat dijalankan menggunakan
./StuPiMo
Sekali lagi, jika Anda ingin ini berjalan saat startup, gunakan perintah:
sudo nano /etc/rc.local
untuk menambahkan baris berikut
sudo /home/pi/Stu/StuPiMo &
ke file /etc/rc.local Anda. Jangan lupa untuk menyimpan file Anda saat keluar.
Perhatikan bahwa '&' penting untuk memastikan bahwa sub-proses muncul untuk memastikan bahwa skrip tidak diblokir pada saat ini.
Langkah 4: Menggunakannya
Setelah Anda menjalankan kode, minta alexa ke 'Temukan Perangkat' dan dia akan menemukan semua 8 perangkat Wemo virtual.
Maka itu hanya kasus mengatakan: "Alexa turn on socket 1" atau "Alexa turn off socket 6" dll dan relai yang relevan akan diubah.
Langkah 5: Cara Kerja Kode
Kode ini bekerja dengan meniru serangkaian perangkat soket Belkin Wemo.
Untuk mencapai ini, ia harus menangani 2 fungsi utama
- penangan siaran penemuan UPNP
- 'device handler' (satu per perangkat virtual) untuk mengelola perintah yang dikirim ke perangkat dan respons yang diperlukan.
Fitur 'bonus' adalah ia juga menerbitkan halaman web untuk memungkinkan kontrol perangkat.
Pengurus UPNP
Handler UPNP membuka soket untuk memantau paket protokol SSDP pada 239.255.255.250 port 1900.
Ini menanggapi setiap pertanyaan 'M-SEARCH' yang masuk dengan paket respons penemuan yang mengumumkan emulator wemo individu kepada siapa saja yang bertanya.
Penangan Perangkat
Penangan perangkat (satu per perangkat virtual) memantau serangkaian port IP dan merespons permintaan.
Ini akan melayani respons setup.xml ketika ditanya
Ini akan menyajikan file deskripsi acara ketika ditanya
Ini akan menanggapi permintaan GETBINARYSTATE
Ini akan memproses dan menanggapi permintaan SETBINARYSTATE
Server Web
Server web adalah rutinitas sederhana yang membangun formulir HTML yang berisi tombol per relai.
Ini akan merespons tombol yang ditekan dan mengubah status relai yang sesuai.
Langkah 6: Kustomisasi dan Nama Ramah
Saya tidak gila dengan kode agar tetap sederhana dan dapat diedit.
Dasar-dasarnya dapat disesuaikan dengan definisi di awal kode:
// definisi global#define WEBPORT 5353 // port untuk menjalankan server web pada
#define NUMDEVICES 8 // Jumlah perangkat virtual yang akan dibuat
#define PORTBASE 43450 // port IP dasar untuk naik dari
WEBPORT adalah nomor port yang dijalankan oleh server web bawaan. Ini dapat dibuat untuk duduk di 80 untuk mempermudah tetapi saya menemukan bahwa itu bertentangan dengan Tomcat atau layanan lain yang berjalan secara lokal.
NUMDEVICES menentukan jumlah emulator WEMO individu yang akan diluncurkan. Jika Anda memiliki kartu relai 2 port, setel ini ke 2, 4 port = 4 dst.
Nama-nama ramah untuk perangkat diatur dalam rutinitas yang disebut setup_names:
int setup_names(char friendly[NUMDEVICES][NAMELEN]) { int i = 0;
// gunakan lingkaran ini
untuk (i = 0; i < NUMDEVICES; i++) {
sprintf(ramah, "Soket %d", i + 1);
}
// atau tabel manual berikut untuk mengisi nama perangkat
/*
strcpy(ramah[0], "TV Kamar Tidur");
strcpy(ramah[1], "Selimut Listrik");
strcpy(ramah[2], "Lampu Kamar Tidur");
strcpy(ramah[3], "Soket 4");
strcpy(ramah[4], "Soket 5");
strcpy(ramah[5], "Soket 6");
strcpy(ramah[6], "Socket 7");
strcpy(ramah[7], "Soket 8");
*/
kembali saya;
}
Saya menggunakan loop untuk memanggil setiap perangkat 'Socket n' tetapi Anda dapat menghapus loop ini dan menambahkan nama ramah Anda sendiri sebagai gantinya (pastikan Anda menambahkan nomor yang sama dengan NUMDEVICES) jika Anda menghapus /* */
Ingatlah untuk mengkompilasi ulang kode jika Anda membuat perubahan.
Direkomendasikan:
Pengontrol Umpan CCTV-Raspberry Pi: 3 Langkah
CCTV Feed Controller-Raspberry Pi: Hai semuanya, selamat datang di Instructable by Scientify Inc. lainnya! Proyek ini mengoptimalkan apa yang direkam kamera CCTV dengan menggunakan sensor gerak bawaan menggunakan perbedaan root mean squared (RMS) antara dua gambar berurutan. Ini membantu dalam membuat umpan CCTV
Sistem Rumah Pintar Alexa Menggunakan Modul Relay NodeMCU: 10 Langkah
Sistem Alexa Smart Home Menggunakan Modul Relay NodeMCU : Pada project IoT ini saya telah membuat sistem Alexa Smart Home Automation menggunakan NodeMCU ESP8266 & Modul Relay. Anda dapat dengan mudah mengontrol lampu, kipas angin, dan peralatan rumah lainnya dengan perintah suara. Untuk menghubungkan speaker pintar Echo Dot dengan
Sakelar Relay IOT yang Dikendalikan Suara Berbasis Arduino (Didukung Google Home & Alexa): 11 Langkah
Sakelar Relay IOT Terkendali Suara Berbasis Arduino (Didukung Google Home & Alexa): Proyek ini menjelaskan cara membuat sakelar relai IOT berbasis Arduino yang dikendalikan suara. Ini adalah relai yang dapat Anda nyalakan dan matikan dari jarak jauh menggunakan aplikasi untuk iOS dan Android, serta menghubungkannya ke IFTTT dan mengontrolnya dengan suara Anda menggunakan Goog
Pengontrol Game DIY Berbasis Arduino - Pengontrol Permainan Arduino PS2 - Bermain Tekken Dengan Gamepad Arduino DIY: 7 Langkah
Pengontrol Game DIY Berbasis Arduino | Pengontrol Permainan Arduino PS2 | Bermain Tekken Dengan Gamepad Arduino DIY: Halo teman-teman, bermain game selalu menyenangkan tetapi bermain dengan Kontroler game kustom DIY Anda sendiri lebih menyenangkan. Jadi kami akan membuat Pengontrol game menggunakan arduino pro micro dalam instruksi ini
YABC - Pengontrol Blynk Lain - Pengontrol Suhu dan Kelembaban IoT Cloud, ESP8266: 4 Langkah
YABC - Pengontrol Blynk Lain - Pengontrol Suhu dan Kelembaban IoT Cloud, ESP8266: Hai Pembuat,Saya baru-baru ini mulai menanam jamur di rumah, jamur tiram, tetapi saya sudah 3x pengontrol ini di rumah untuk kontrol Suhu Fermentor untuk minuman rumah saya, istri juga melakukan hal Kombucha ini sekarang, dan sebagai Termostat untuk Panas