
Isi kandungan:
- Langkah 1: Kumpulkan Bahagian
- Langkah 2: Siapkan Raspberry Pi Tanpa Monitor atau Papan Kekunci
- Langkah 3: Pasang Wiring Pi, Apache dan PHP
- Langkah 4: Laman web
- Langkah 5: Imej Laman Web
- Langkah 6: Kawal Pelayan Web dari jauh
- Langkah 7: Kabelkan Litar ke Raspberry Pi
- Langkah 8: Buat Perkhidmatan Permulaan
- Langkah 9: Pasang Raspberry Pi ke Garaj
- Langkah 10: Pasang Raspberry Pi ke SECO-LARM
- Langkah 11: Hantar Makluman Jika Pintu Terbuka Bila Harus Ditutup
- Langkah 12: Masukkan Raspberry Pi dalam Buku Rahsia
- Langkah 13: Lampiran: Rujukan
- Langkah 14: Lampiran: Kemas kini
- Langkah 15: Lampiran: Penyelesaian masalah
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-06-01 06:10

Saya membuat arahan ini pada tahun 2014. Banyak yang berubah sejak itu. Pada tahun 2021, saya mengemas kini Smart Garage Door Opener di sini.
Gunakan Raspberry Pi dan telefon pintar untuk membuka, menutup dan memantau pintu garaj. Membuka dan menutup pintu dijamin dengan menggunakan sijil yang ditandatangani sendiri yang dipasang di telefon bimbit keluarga. Sekiranya pintu garaj terbuka jika tidak seharusnya, kirimkan pesanan teks (SMS) ke telefon bimbit.
Pintu garaj telah digunakan secara berterusan sejak akhir tahun 2014. Selama bertahun-tahun, saya telah berusaha untuk memperbaharui perubahan. Terdapat lampiran yang menjelaskan perubahan yang dapat dipesan.
Matlamat projek ini adalah untuk:
- Jadikan arahan pertama saya - Saya tidak merancang untuk menghantar ini, tetapi saya telah menerima banyak permintaan
- Buka pintu garaj dengan alat kawalan jauh standard
- Buka pintu garaj dengan pembuka garaj bel pintu yang dipasang di dinding
- Buka pintu garaj dengan SmartPhone
- Pantau status pintu garaj dari jauh melalui telefon bimbit atau komputer riba (adakah ia terbuka atau ditutup?)
- Hantarkan mesej teks ke telefon bimbit saya jika pintu terbuka ketika ia harus ditutup
- Jaga pintu garaj dengan selamat (mis. Semasa kehilangan kuasa, pintu tidak boleh dibuka)
- Jangan biarkan orang lain di internet membuka pintu (sijil SSL yang ditandatangani sendiri dua hala)
- Gunakan WiFi dan bukannya sambungan berwayar
- Gunakan Raspberry Pi 3
Dasar pelaksanaan Garage Door Opener ini berasal dari Instructable: Raspberry Pi Garage Door Opener oleh kuartarian. Pada asalnya, saya menggunakan model B + Raspberry Pi, kemudian beralih ke model B Raspberry Pi 2, dan sekarang ia menggunakan Raspberry Pi 3.
Saya menggunakan MacBook untuk berkomunikasi dengan Raspberry Pi, tetapi komputer mana pun boleh digunakan.
Tidak ada alasan yang kuat untuk membina peranti ini, tetapi sangat menyeronokkan. Lebih menjimatkan kos untuk membelinya. Peranti yang serupa boleh dibeli dengan harga sekitar $ 130 USD.
- Lift master 828LM
- Chamberlain MyQ $ 129
- Gerbang GoGo $ 179
- Tukang $ 100
Catatan:
- Teks yang disertakan dalam sekop, seperti ini ♣ ganti-ini ♣ harus diganti dengan nilai sebenarnya
- Teks biru yang digarisbawahi Arduino adalah pautan. Dalam kes ini, ini adalah pautan ke versi arduino pembuka pintu garaj.
- Saya telah berusaha memberi kredit kepada setiap sumber yang digunakan. Mohon maaf atas sebarang peninggalan. Sebilangan besar dokumen ini berdasarkan karya orang lain.
- $ menunjukkan arahan yang dilaksanakan di tetingkap terminal pada MacBook dan biasanya dijalankan pada Raspberry Pi
Langkah 1: Kumpulkan Bahagian
Beli atau kumpulkan bahagian dan alat (harga dalam USD).
- Raspberry Pi 3 Model B Elemen Newark14 $ 35
- 5.2V 2.5A USB Power Adapter dari Amazon $ 9.99
- Kabel USB mikro ke USB 6 kaki dari Amazon $ 7.99
- Kes dari Amazon $ 6,99
- SanDisk Ultra 16 GB microSDHC Class 10 with Adapter (SDSQUAN-016G-G4A) dari Amazon $ 8.99
- Modul Relay Shield SunFounder 2 Channel 5V untuk Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $ 6.79
- Wayar Pelompat 3x Perempuan-Perempuan. Dibeli di Fry dengan harga $ 4,95.
- DNS Dinamik $ 40 setahun untuk 30 nama (dyn.com)
- 1-Gang 18 cu. di. Kotak Tukar dan Outlet Tembok Berat Lama, $ 3.12
- Plat Dinding Putih Ultra Pro Single Brush, $ 7.88
- SECO-LARM SM 226L, Sensor Pintu Garasi, harga berbeza-beza, $ 9,99 di Amazon dengan penghantaran percuma
- 50 kaki wayar termostat pepejal, Depot Rumah atau Lowe's, ~ $ 20
Jumlah Saya: ~ $ 172.00
Saya mempunyai bahagian, alat dan perkhidmatan berikut:
- Kabel CAT5 Ethernet
- Kawat tolok kecil, panjang 6 kaki
- Pemutar skru kepala Phillips
- Playar mata jarum
- Pemotong kotak
- Pemacu skru flathead Jewelers, diperlukan untuk melonggarkan skru pada relay
- MacBook (PC boleh digunakan)
- AT&T GigaPower (mana-mana penyedia perkhidmatan internet boleh digunakan)
Langkah 2: Siapkan Raspberry Pi Tanpa Monitor atau Papan Kekunci

Semua projek Raspberry Pi memerlukan beberapa jenis persediaan. Saya suka menggunakan set arahan yang sama dan, jika perlu, ada satu tempat untuk mengemas kini arahan tersebut.
Siapkan Raspberry Pi menggunakan arahan berikut:
Sediakan Raspberry Pi tanpa Monitor atau Papan Kekunci
Petunjuk di atas merangkumi langkah pilihan dalam lampiran. Pastikan anda melakukan langkah:
Tambahkan sijil sisi pelanggan ke pelayan web
Shutdown Raspberry Pi
$ sudo shutdown -h 0
Setelah ditutup, alih keluar
- kabel ethernet
- Kabel bersiri USB
Ini tidak akan diperlukan lagi. Gunakan wifi, ssh dan tetingkap terminal pada Buku Mac untuk menjalankan perintah pada Raspberry Pi.
Cabut kuasa dan pasangkan kembali kuasa, dan raspberry pi harus dihidupkan semula.
Langkah 3: Pasang Wiring Pi, Apache dan PHP
Pasang Pi Pendawaian
Buka tetingkap terminal pada Buku Mac. Log masuk ke Raspberry Pi, kemudian muat turun, kompilasi, dan pasang Wiring Pi. Perisian ini membolehkan kawalan pin GPIO. Berikut adalah panduan langkah demi langkah:
wiringpi.com/download-and-install/
Berikut adalah versi arahan ringkas:
$ ssh pi @ ♣ raspberry-pi-ip ♣
kata laluan: ♣ kata laluan ♣ $ sudo apt-get install git-core $ git clone git: //git.drogon.net/wiringPi $ cd wiringPi $ git pull origin $./build
Jalankan arahan gpio untuk memeriksa pemasangan:
$ gpio -v
versi gpio: 2.29 Hak Cipta (c) 2012-2015 Gordon Henderson Ini adalah perisian percuma dengan JAMINAN TIDAK ADA. Untuk butiran jenis: gpio -warranty Raspberry Pi Butiran: Jenis: Model 2, Semakan: 1.1, Memori: 1024MB, Pembuat: Sony [OV] Pokok peranti diaktifkan. Raspberry Pi ini menyokong akses GPIO peringkat pengguna. -> Lihat halaman manual untuk keterangan lebih lanjut $ gpio readall + ----- + ----- + --------- + ------ + --- + --- Pi 2 --- + --- + ------ + --------- + ----- + ----- + | BCM | wPi | Nama | Mod | V | Fizikal | V | Mod | Nama | wPi | BCM | + ----- + ----- + --------- + ------ + --- + ---- ++ ---- + --- + - ----- + --------- + ----- + ----- + | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | DALAM | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | DALAM | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | KELUAR | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | DALAM | 0 | 11 || 12 | 0 | DALAM | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | DALAM | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | DALAM | 0 | 15 || 16 | 1 | DALAM | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | DALAM | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | DALAM | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | DALAM | 0 | 21 || 22 | 0 | DALAM | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | DALAM | 0 | 23 || 24 | 1 | DALAM | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | DALAM | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | DALAM | 1 | 27 || 28 | 1 | DALAM | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | DALAM | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | DALAM | 1 | 31 || 32 | 0 | DALAM | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | DALAM | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | DALAM | 0 | 35 || 36 | 0 | DALAM | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | DALAM | 0 | 37 || 38 | 0 | DALAM | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | DALAM | GPIO.29 | 29 | 21 | + ----- + ----- + --------- + ------ + --- + ---- ++ ---- + --- + - ----- + --------- + ----- + ----- + | BCM | wPi | Nama | Mod | V | Fizikal | V | Mod | Nama | wPi | BCM | + ----- + ----- + --------- + ------ + --- + --- Pi 2 --- + --- + --- --- + --------- + ----- + ----- +
Perintah di atas harus memberi anda keyakinan bahawa wiringPi berfungsi dengan baik.
Pasang Apache dan PHP
Jalankan arahan berikut:
$ cd..
$ sudo apt-get kemas kini $ sudo apt-get install apache2 php5 libapache2-mod-php5
Untuk mengesahkan pelayan web berfungsi, buka penyemak imbas, dan di kotak URL masukkan:
♣ raspberry-pi-ip ♣
Laman web lalai Apache bertindak balas dengan "Ini Berfungsi!"
Langkah 4: Laman web
Buka tetingkap terminal pada Buku Mac. Log masuk ke Raspberry Pi, kemudian hapus fail index.html lalai, ubah kebenaran pada direktori laman web, dan edit fail yang disebut index.php.
$ ssh pi @ ♣ raspberry-pi-ip ♣
kata laluan: ♣ kata laluan ♣ $ sudo rm /var/www/index.html $ sudo chown pi: root / var / www $ sudo nano /var/www/index.php
Dan masukkan kod berikut:
Pembuka garaj
Automasi Rumah |
---|
Pembuka Pintu Garaj | Manual Pembuka Pintu Garaj | ditutup 1 | buka 0 |
CTRL-o dan ENTER untuk menulis fail, dan CTRL-x untuk keluar dari editor.
Tukar kebenaran pada fail
$ sudo chmod 664 /var/www/index.php
Langkah 5: Imej Laman Web


Dapatkan pembuka pintu garaj jarak jauh beresolusi tinggi dari web. Ubah suai gambar seperti yang anda mahukan menggunakan kuas cat Mac. Pada gambar di atas, Genie Garage Opener beresolusi tinggi digunakan, logo pi raspberry ditambahkan dan led dikeluarkan.
Satu gambar adalah latar belakang (remote-background.jpg), dan yang lain adalah gambar aktif (remote-press.jpg).
Rencananya ialah dengan menekan butang, bukannya berkedip yang dipimpin, raspberry akan berkedip. Saya mempermudah laman web.
Salin gambar ke raspberry pi:
$ scp *-j.webp
kata laluan: ♣ kata laluan ♣
Laman web mempunyai satu butang tekan. Untuk mengesahkan, buka penyemak imbas dan masukkan ♣ raspberry-pi-ip ♣. Daripada laman web lalai Apache, yang mengatakan "Ia Berfungsi!", Butang itu akan muncul. Tekan.
Langkah 6: Kawal Pelayan Web dari jauh
Untuk memudahkan mengakses Garage Door Opener dari lokasi terpencil, saya menggunakan nama DNS yang dinamik. Kerana saya tidak suka mengingat alamat IP.
Dengan ciri ini, saya memasukkan ♣ nama-host-dinamik get.getmyip.com di medan URL penyemak imbas. Catatan: IP pada penghala rumah boleh berubah tanpa notis, tetapi ini jarang berlaku. Saya memilih untuk menggunakan DynDNS. Anda perlu mengetahui alamat IP awam penghala anda.
IP Penghala U-Verse: verse uverse-public-ip ♣
Anda dapat melihat nama host dan perincian akaun DynDNS Pro anda. Berikut adalah beberapa petua untuk memulakan:
-
Buat nama host DNS Dinamik anda (1 dari 30):
- ♣ nama-dinamik-host ♣
- Kekunci Updater: ♣ kunci dinamik-ip-updater ♣
-
Pasang klien kemas kini untuk memastikan nama host anda selalu ditunjukkan ke alamat IP yang betul.
- Muat turun dan pasang di MacBook
- IP AT-T U-ayat jarang berubah, jadi pengemas kini di atas dapat dijalankan setiap kali ia berubah
-
Ikut arahan:
- Tambah akaun
- Masukkan nama pengguna dan kata laluan: ♣ nama pengguna dinamik-ip password password kata laluan dinamik-ip ♣
- Pilih nama hos
- Klik Konfigurasi Host yang Dipilih
- Tuan rumah harus aktif
-
Konfigurasikan rangkaian anda untuk membenarkan akses ke peranti anda dari Internet. Anda boleh menggunakan Dyn Wizard kami untuk beberapa petunjuk umum mengenai cara melakukannya, menggunakan sumber seperti PortForward.com, atau menghubungi pengeluar peranti untuk mendapatkan bantuan.
- Ayat U AT&T
- Port Forwarding untuk 2-Wire 3801HGV - ini adalah penghala AT-T U-Verse yang saya ada. Lihat Kemas kini dalam Lampiran untuk cara memindahkan ke hadapan pada penghala AT&T U-ayat 5268ac.
- Buka penyemak imbas dan pergi ke ♣ raspberry-pi-ip ♣
- Kata Laluan: ♣ kata laluan ♣
- Tetapan
-
Firewall
- Pilih ♣ nama-raspberry-pi-host ♣
-
Pelayan
- Port pelayan web 80
- Pelayan HTTPS - port 443
- Tambah
- Jimat
Setelah ini selesai, pelayan web akan berfungsi dari internet. Untuk mengesahkan, masukkan ♣ nama-dinamik-host ♣ dan anda akan melihat butang pembuka pintu garaj.
Langkah 7: Kabelkan Litar ke Raspberry Pi

Untuk kod yang disediakan (langkah 4 dan 6), saya menggunakan pin GPIO 7. Secara kebetulan GPIO 7 sama dengan pin wiringPi 7. Dalam kod PHP, nombor pin pin pendawaian digunakan dan BUKAN nombor pin GPIO. Anda boleh menggunakan mana yang anda mahu, tetapi pastikan untuk menukar kodnya.
Saya cuba menggunakan wayar berpintal, tetapi geganti tidak berpegang pada wayar berpusing. Kawat pepejal lebih baik.
Pada percubaan pertama saya, saya membuat tiga kabel penghubung (wanita-ke-lelaki).
- Gunakan tiga kabel pelompat wanita ke wanita
-
Potong tiga kepingan dawai padat hingga kira-kira 1in.
Jalur 1 / 4in pada kedua hujung dawai pepejal
- Masukkan satu wayar padat ke dalam satu kabel pelompat wanita.
Inilah kaedah yang lebih baik untuk membuat kabel penghubung (wanita-ke-lelaki):
- Gunakan wayar padat sahaja
- Potong tiga kepingan 4in dawai pepejal
- Jalur 1 / 4in pada kedua hujung dawai pepejal
- Gunakan pin penyambung wanita
-
Luncurkan satu pin penghubung wanita di satu hujung wayar dan kelim padat
Pin wanita tidak boleh longgar, solder jika perlu
- Pelepasan regangan slaid di atas pin penyambung wanita atau pin penutup dengan pita juruelektrik
-
Kabelkan relay ke pi seperti yang ditunjukkan dalam rajah:
- Sambungkan hujung kabel wanita ke pin Raspberry Pi.
- Masukkan wayar padat ke dalam Relay.
Langkah 8: Buat Perkhidmatan Permulaan
Sebilangan besar geganti termasuk yang dibeli, beroperasi seperti ini:
- Apabila isyarat dihidupkan litar akan mati.
- Apabila isyarat MATI maka litar dihidupkan.
Sekiranya Raspberry Pi kehilangan kuasa, relay mempunyai mekanisme keselamatan yang menjadikan litar mati.
Masalah boleh berlaku apabila Rapberry Pi dan relay mendapat kuasa semula, tetapi sebelum Raspberry Pi selesai boot untuk menghidupkan isyarat yang perlu untuk mematikan litar. Anda boleh bangun pada waktu pagi dengan garaj anda terbuka dan berpotensi dengan beberapa rakan baru!
Walau bagaimanapun, relay tidak benar-benar memulakan sehingga mod pin GPIO ditetapkan melalui arahan ini: mod gpio 7 keluar. Tambahan pula, jika pin GPIO ke AKTIF (gpio tulis 7 1) sebelum anda menetapkan mod GPIO, geganti akan mati setelah diinisialisasi.
Untuk membuat inisialisasi ini dijalankan ketika boot dan jangan bangun dengan teman baru, gunakan skrip permulaan berikut.
$ ssh pi @ ♣ raspberry-pi-ip ♣
$ sudo nano /etc/init.d/garagerelay
Kemudian tampal skrip ini:
#! / bin / bash
# /etc/init.d/garagerelay # Menjalankan fungsi tertentu apabila diminta oleh kes sistem "$ 1" pada permulaan) gema "Memulakan Relay" # Hidupkan 7 yang menjadikan relay mati / usr / local / bin / gpio tulis 7 1 #Mulakan mod Gpio / usr / local / bin / gpio 7 keluar;; berhenti) gema "Menghentikan gpio";; *) gema "Penggunaan: /etc/init.d/garagerelay {start | stop}" keluar 1;; esac keluar 0
Untuk menyimpan: CTRL-o, ENTER
Untuk keluar dari nano, CTRL-x
Jadikan fail boleh dilaksanakan:
$ sudo chmod + x /etc/init.d/garagerelay
Sekarang beritahu pi anda untuk menjalankan skrip ini semasa boot:
$ sudo update-rc.d -f garagerelay mulai 4
(Catatan: Anda boleh mengabaikan amaran "tag LSB yang hilang" dengan selamat.)
Pastikan skrip permulaan berjalan
but semula $ sudo
Buka penyemak imbas dan klik pada pembuka. Relay mesti klik.
Langkah 9: Pasang Raspberry Pi ke Garaj

Semasa menggerakkan Raspberry Pi, pastikan untuk menjalankan:
$ tutup -h 0
Anda mungkin mahu mematikan kuasa ke garaj. Oleh itu, pembuka loceng pintu tidak menggegarkan anda:). Sebab sebenarnya ialah setiap kali anda menutup wayar, pintu akan naik dan turun.
Tanggalkan skru dinding dari pembuka jenis bel pintu, yang melekatkan bel pintu ke dinding.
Tembus lubang dari garaj di belakang pembuka loceng pintu ke dalam rumah. Di Texas, Raspberry Pi tidak boleh berada di garaj, variasi suhu di garaj berada di luar spesifikasi operasi Raspberry Pi.
Jalankan wayar relay melalui lubang (gunakan penyangkut kot).
Longgarkan kedua-dua skru di bahagian belakang pembuka bel pintu.
Tanggalkan kedua-dua hujung wayar relay: 1) kira-kira 1/8 inci dari bahagian relay, dan kira-kira ½ inci di sebelah bel pintu. Bengkokkan bahagian bel pintu wayar ke gelung separuh yang cukup besar untuk dipasang di sekeliling skru belakang.
Sambungkan satu wayar geganti ke setiap skru di bahagian belakang bel pintu, dan ketatkan skru. Sambungannya seperti yang ditunjukkan dalam gambar. Oleh kerana relay mengasingkan litar, arahnya tidak kira relay mana yang terpasang pada skru mana.
Langkah 10: Pasang Raspberry Pi ke SECO-LARM


Sebelum kod saya selesai, saya dan keluarga bercuti dan saya membuka penyemak imbas saya. Paparan terakhir penyemak imbas saya adalah pembuka pintu garaj - halaman disegarkan dan pintu garaj dibuka. Beberapa hari kemudian seorang jiran memanggil dan bertanya adakah pintu garaj mesti terbuka? Nasib baik, saya dapat menutupnya dari jarak 500 batu.
Snafu ini memaksa saya untuk menukar kod sehingga ini tidak akan berlaku, dan menambahkan sensor dan keadaan pintu garaj ke laman web.
Ini adalah pautan ke petunjuk asal untuk menambahkan sensor. Namun, memandangkan semua yang telah selesai, pemasangan sensor dapat dipermudah dan bukannya menggunakan python, tambahkan beberapa baris kod ke index.php.
Fatal error: Uncaught Error: Call to undefined function exec() in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code:516 Stack trace: #0 W:\www\langs\.php-gen-lang\v3-core\macros.php(127): eval() #1 W:\www\langs\.php-gen-lang\v3-core\index-global.php(231): Macros->macros_parse('<!DOCTYPE html>...') #2 W:\www\langs\howwhatproduce.com\ms.howwhatproduce.com\index.php(9): require_once('W:\\www\\langs\\.p...') #3 {main} thrown in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code on line 516