Pembuka Pintu Garasi Raspberry Pi 3: 15 Langkah (dengan Gambar)
Pembuka Pintu Garasi Raspberry Pi 3: 15 Langkah (dengan Gambar)
Anonim
Pembuka Pintu Garasi Raspberry Pi 3
Pembuka Pintu Garasi Raspberry Pi 3

Saya membuat instruksi ini pada tahun 2014. Banyak yang telah berubah sejak saat itu. Pada tahun 2021, saya memperbarui Pembuka Pintu Garasi Cerdas di sini.

Gunakan Raspberry Pi dan smartphone untuk membuka, menutup, dan memantau pintu garasi. Membuka dan menutup pintu diamankan dengan menggunakan sertifikat yang ditandatangani sendiri yang dipasang di ponsel keluarga. Jika pintu garasi terbuka saat tidak seharusnya, maka kirim pesan teks (SMS) ke ponsel.

Pintu garasi telah digunakan terus menerus sejak akhir 2014. Selama bertahun-tahun, saya telah mencoba untuk terus memperbarui perubahan. Ada lampiran yang menjelaskan perubahan pada instruksi.

Tujuan dari proyek ini adalah untuk:

  • Jadikan instruksi pertama saya - saya tidak berencana memposting ini, tetapi saya telah menerima banyak permintaan
  • Buka pintu garasi dengan remote standar
  • Buka pintu garasi dengan pembuka garasi bel pintu yang terpasang di dinding
  • Buka pintu garasi dengan SmartPhone
  • Pantau status pintu garasi dari jarak jauh melalui ponsel atau laptop (terbuka atau tertutup?)
  • Kirim pesan teks ke ponsel saya jika pintu terbuka padahal seharusnya ditutup
  • Jaga agar pintu garasi tetap aman (misalnya, saat listrik mati, pintu tidak boleh terbuka)
  • Jangan izinkan orang lain di internet untuk membuka pintu (sertifikat SSL dua arah yang ditandatangani sendiri)
  • Gunakan WiFi alih-alih koneksi kabel
  • Gunakan Raspberry Pi 3

Dasar penerapan Pembuka Pintu Garasi ini berasal dari Instructable: Pembuka Pintu Garasi Raspberry Pi oleh quartarian. Awalnya saya menggunakan Raspberry Pi model B+, kemudian pindah ke Raspberry Pi 2 model B, dan sekarang menggunakan Raspberry Pi 3.

Saya menggunakan MacBook untuk berkomunikasi dengan Raspberry Pi, tetapi komputer mana pun dapat digunakan.

Tidak ada alasan kuat untuk membangun perangkat ini, tapi itu menyenangkan. Lebih hemat biaya untuk membeli satu. Perangkat serupa dapat dibeli dengan harga sekitar $130 USD.

  • Angkat master 828LM
  • Chamberlain MyQ $129
  • Gerbang GoGo $179
  • Pengrajin $100

Catatan:

  • Teks yang diapit dengan sekop, seperti ini ganti-ini♣ harus diganti dengan nilai sebenarnya
  • Arduino menggarisbawahi teks biru adalah link. Dalam hal ini, ini adalah tautan ke versi arduino dari pembuka pintu garasi.
  • Saya telah mencoba untuk mengkredit setiap sumber yang digunakan. Mohon maaf atas segala kekurangan. Sebagian besar dokumen ini didasarkan pada karya orang lain.
  • $ menunjukkan perintah yang dieksekusi di jendela terminal di MacBook dan biasanya dieksekusi di Raspberry Pi

Langkah 1: Kumpulkan Bagian

Beli atau kumpulkan suku cadang dan alat (harga dalam USD).

  • Raspberry Pi 3 Model B Newark Element14 $35
  • 5.2V 2.5A USB Power Adapter dari Amazon $9.99
  • Kabel Micro USB ke USB 6 kaki dari Amazon $7,99
  • Kasing dari Amazon $6,99
  • SanDisk Ultra 16 GB microSDHC Kelas 10 dengan Adaptor (SDSQUAN-016G-G4A) dari Amazon $8,99
  • SunFounder 2 Channel 5V Relay Shield Module untuk Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $6,79
  • 3x Kabel Jumper Wanita-Wanita. Dibeli di Fry seharga $4,95.
  • DNS Dinamis $40 per tahun untuk 30 nama (dyn.com)
  • 1-Geng 18 cu. in. Sakelar Dinding Berat dan Kotak Outlet Pekerjaan Lama, $3,12
  • Pelat Dinding Putih Ultra Pro Single Brush, $7.88
  • SECO-LARM SM 226L, Sensor Pintu Garasi, harga sangat bervariasi, $9,99 di Amazon dengan pengiriman gratis
  • 50 kaki kawat termostat padat, Home Depot atau Lowe, ~ $20

Total Saya: ~$172.00

Saya memiliki suku cadang, alat, dan layanan berikut:

  • Kabel Ethernet CAT5
  • Kawat pengukur kecil, panjang 6 kaki
  • obeng kepala phillips
  • Tang hidung jarum
  • Pemotong kotak
  • Pengemudi sekrup flathead perhiasan, diperlukan untuk melonggarkan sekrup pada relai
  • MacBook (PC dapat digunakan)
  • AT&T GigaPower (penyedia layanan internet apa pun dapat digunakan)

Langkah 2: Setup Raspberry Pi Tanpa Monitor atau Keyboard

Setup Raspberry Pi Tanpa Monitor atau Keyboard
Setup Raspberry Pi Tanpa Monitor atau Keyboard

Semua proyek Raspberry Pi memerlukan beberapa jenis pengaturan. Saya suka menggunakan set instruksi yang sama dan, bila perlu, memiliki satu tempat untuk memperbarui instruksi tersebut.

Setup Raspberry Pi menggunakan instruksi berikut:

Atur Raspberry Pi tanpa Monitor atau Keyboard

Instruksi di atas mencakup langkah-langkah opsional dalam lampiran. Pastikan untuk melakukan langkah:

Tambahkan sertifikat sisi klien ke server web

Matikan Raspberry Pi

$ sudo shutdown -h 0

Setelah dimatikan, hapus

  • kabel Ethernet
  • Kabel serial USB

Ini tidak akan dibutuhkan lagi. Gunakan wifi, ssh, dan jendela terminal di Mac Book untuk menjalankan perintah di Raspberry Pi.

Cabut daya dan colokkan kembali daya, dan raspberry pi harus reboot.

Langkah 3: Instal Wiring Pi, Apache dan PHP

Instal Kabel Pi

Buka jendela terminal di Mac Book. Masuk ke Raspberry Pi, lalu unduh, kompilasi, dan instal Wiring Pi. Perangkat lunak ini memungkinkan kontrol pin GPIO. Berikut adalah panduan langkah demi langkah:

wiringpi.com/download-and-install/

Berikut adalah versi ringkas dari instruksi:

$ ssh pi@♣raspberry-pi-ip♣

kata sandi: kata sandi♣ $ sudo apt-get install git-core $ git clone git://git.drogon.net/wiringPi $ cd wiringPi $ git pull origin $./build

Jalankan perintah gpio untuk memeriksa instalasi:

$gpio -v

gpio versi: 2.29 Hak Cipta (c) 2012-2015 Gordon Henderson Ini adalah perangkat lunak gratis dengan BENAR-BENAR TANPA GARANSI. Untuk detail jenis: gpio -warranty Raspberry Pi Detail: Jenis: Model 2, Revisi: 1.1, Memori: 1024MB, Pembuat: Sony [OV] Pohon perangkat diaktifkan. Raspberry Pi ini mendukung akses GPIO tingkat pengguna. -> Lihat halaman manual untuk lebih jelasnya $ gpio readall +-----+-----+---------+------+---+---- Pi 2---+---+------+---------+-----+-----+ | BCM | wPi | Nama | Modus | V | Fisik | V | Modus | Nama | wPi | BCM | +-----+-----+---------+------+---+----++----+---+- -----+--------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | DI | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | DI | 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 | DI | 0 | 11 || 12 | 0 | DI | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | DI | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | DI | 0 | 15 || 16 | 1 | DI | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | DI | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | DI | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | DI | 0 | 21 || 22 | 0 | DI | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | DI | 0 | 23 || 24 | 1 | DI | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | DI | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | DI | 1 | 27 || 28 | 1 | DI | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | DI | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | DI | 1 | 31 || 32 | 0 | DI | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | DI | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | DI | 0 | 35 || 36 | 0 | DI | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | DI | 0 | 37 || 38 | 0 | DI | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | DI | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+- -----+---------+-----+-----+ | BCM | wPi | Nama | Modus | V | Fisik | V | Modus | Nama | wPi | BCM | +-----+-----+---------+------+---+---Pi 2---+---+--- ---+--------+-----+-----+

Perintah di atas akan memberi Anda keyakinan bahwa wiringPi berfungsi dengan baik.

Instal Apache dan PHP

Jalankan perintah berikut:

$cd..

$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5

Untuk memverifikasi server web berfungsi, buka browser, dan di kotak URL masukkan:

raspberry-pi-ip♣

Situs web default Apache merespons dengan "Berhasil!"

Langkah 4: Situs Web

Buka jendela terminal di Mac Book. Login ke Raspberry Pi, kemudian hapus file index.html default, ubah hak akses pada direktori website, dan edit file bernama index.php.

$ ssh pi@♣raspberry-pi-ip♣

kata sandi: kata sandi♣ $ sudo rm /var/www/index.html $ sudo chown pi:root /var/www $ sudo nano /var/www/index.php

Dan masukkan kode berikut:

Pembuka Garasi

Otomatisasi Rumah

<?php if ($switch == 1) { echo"

"; } lain { gema"

"; } ?>

Pembuka Pintu Garasi Panduan Pembuka Pintu Garasi tutup 1 buka 0
<?php if ($trigger == 0) { echo " <td colspan=\"4\" } else { echo"

var13 -->

CTRL-o dan ENTER untuk menulis file, dan CTRL-x untuk keluar dari editor.

Ubah izin pada file

$ sudo chmod 664 /var/www/index.php

Langkah 5: Gambar Situs Web

Gambar Situs Web
Gambar Situs Web
Gambar Situs Web
Gambar Situs Web

Ambil pembuka pintu garasi jarak jauh resolusi tinggi dari web. Ubah gambar seperti yang Anda inginkan menggunakan kuas cat Mac. Pada gambar di atas, Pembuka Garasi Genie resolusi tinggi digunakan, logo raspberry pi ditambahkan dan led dilepas.

Satu gambar adalah latar belakang (remote-background.jpg), dan yang lainnya adalah gambar aktif (remote-press.jpg).

Rencananya adalah dengan menekan tombol, alih-alih mengedipkan led, raspberry akan berkedip. Saya menyederhanakan situs web.

Salin gambar ke raspberry pi:

$scp *-j.webp

kata sandi: kata sandi♣

Situs web memiliki satu tombol tekan. Untuk memverifikasi, buka browser dan masukkan raspberry-pi-ip♣. Alih-alih situs web default Apache, yang mengatakan "Berhasil!", tombol tersebut akan muncul. Tekan itu.

Langkah 6: Kontrol Server Web dari Jarak Jauh

Untuk memudahkan dalam mengakses Pembuka Pintu Garasi dari lokasi yang jauh, saya menggunakan nama DNS dinamis. Karena saya tidak suka mengingat alamat IP.

Dengan fitur ini, saya memasukkan dynamic-hostname♣.getmyip.com di kolom URL browser. Catatan: IP pada router rumah dapat berubah tanpa pemberitahuan, tetapi ini jarang terjadi. Saya memilih untuk menggunakan DynDNS. Anda perlu mengetahui alamat IP publik router Anda.

U-Verse Router IP: uverse-public-ip♣

Anda dapat melihat nama host dan detail akun DynDNS Pro Anda. Berikut adalah beberapa tips untuk memulai:

  • Buat nama host DNS Dinamis Anda (1 dari 30):

    • nama host-dinamis♣
    • Kunci Pembaruan: kunci-ip-pembaru dinamis♣
  • Instal klien pembaruan untuk memastikan nama host Anda selalu diarahkan ke alamat IP yang benar.

    • Unduh dan instal di MacBook
    • AT&T U-verse IP jarang berubah, jadi updater di atas bisa dijalankan setiap kali ada perubahan
    • Ikuti petunjuknya:

      • Menambahkan akun
      • Masukkan username dan password: dynamic-ip-username♣ dynamic-ip-password♣
      • Pilih nama host
      • Klik Konfigurasikan Host yang Dipilih
      • Tuan rumah harus menjadi aktif
    • Konfigurasikan jaringan Anda untuk mengizinkan akses ke perangkat Anda dari Internet. Anda dapat menggunakan Dyn Wizard kami untuk beberapa petunjuk umum tentang cara melakukannya, gunakan sumber daya seperti PortForward.com, atau hubungi produsen perangkat untuk mendapatkan bantuan.

      • AT&T U-ayat
      • Penerusan Port untuk 2-Wire 3801HGV - ini adalah router AT&T U-Verse yang saya miliki. Lihat Pembaruan dalam Lampiran untuk cara port forward pada router AT&T U-verse 5268ac.
      • Buka browser dan buka raspberry-pi-ip♣
      • Kata sandi: kata sandi♣
      • Pengaturan
      • Firewall

        • Pilih raspberry-pi-hostname♣
        • Server

          • Port Server Web 80
          • Server HTTPS - port 443
        • Menambahkan
      • Menyimpan

Setelah ini selesai, server web akan bekerja dari internet. Untuk memverifikasi, masukkan dinamis-hostname♣ dan Anda akan melihat tombol pembuka pintu garasi.

Langkah 7: Hubungkan Sirkuit ke Raspberry Pi

Hubungkan Sirkuit ke Raspberry Pi
Hubungkan Sirkuit ke Raspberry Pi

Untuk kode yang diberikan (langkah 4 dan 6), saya menggunakan pin GPIO 7. Kebetulan GPIO 7 sama dengan pin wiringPi 7. Pada kode PHP digunakan nomor pin wiring Pi dan BUKAN nomor pin GPIO. Anda dapat menggunakan yang mana saja yang Anda inginkan, tetapi pastikan untuk mengubah kodenya.

Saya mencoba menggunakan kabel bengkok, tetapi relai tidak bertahan dengan baik pada kabel bengkok. Kawat padat lebih baik.

Pada upaya pertama saya, saya membuat tiga kabel penghubung (female-to-male).

  • Gunakan tiga kabel jumper wanita ke wanita
  • Potong tiga potong kawat padat menjadi sekitar 1 inci.

    Strip 1/4in di kedua ujung kawat padat

  • Masukkan satu kawat padat ke dalam satu kabel jumper perempuan.

Berikut adalah cara yang lebih baik untuk membuat kabel penghubung (female-to-male):

  • Gunakan hanya kawat padat
  • Potong tiga potong kawat padat berukuran 4 inci
  • Strip 1/4in di kedua ujung kawat padat
  • Gunakan pin penghubung wanita
    • Geser satu pin penghubung perempuan di salah satu ujung kawat padat dan crimp

      Pin wanita tidak boleh lepas, solder jika perlu

    • Geser pelepas regangan di atas pin penghubung perempuan atau pin penutup dengan selotip listrik

Hubungkan relai ke pi seperti yang ditunjukkan pada diagram:

  • Hubungkan ujung kabel perempuan ke pin Raspberry Pi.
  • Masukkan kawat padat ke dalam Relay.

Langkah 8: Buat Layanan Startup

Kebanyakan relai termasuk yang dibeli, beroperasi seperti ini:

  • Ketika sinyal ON sirkuit tetap off.
  • Ketika sinyal OFF maka rangkaian hidup.

Jika Raspberry Pi kehilangan daya, relai memiliki mekanisme pengaman yang membuat rangkaian OFF.

Masalah bisa terjadi ketika Rapberry Pi dan relay mendapatkan daya dipulihkan, tetapi sebelum Raspberry Pi selesai booting untuk menghidupkan sinyal yang perlu untuk menjaga sirkuit. Anda bisa bangun di pagi hari dengan garasi terbuka dan berpotensi memiliki beberapa teman baru!

Namun, relai tidak benar-benar menginisialisasi sampai mode pin GPIO diatur melalui perintah ini: gpio mode 7 out. Selanjutnya, jika pin GPIO ke ON (gpio write 7 1) sebelum Anda mengatur mode GPIO, relai akan mati setelah diinisialisasi.

Untuk membuat inisialisasi ini berjalan saat boot dan tidak bangun ke teman baru, gunakan skrip start-up berikut.

$ ssh pi@♣raspberry-pi-ip♣

$ sudo nano /etc/init.d/garagerelay

Kemudian rekatkan skrip ini:

#! /bin/bash

# /etc/init.d/garagerelay # Menjalankan fungsi tertentu ketika diminta oleh kasus sistem "$1" di start) echo "Starting Relay" # Hidupkan 7 yang membuat relai mati /usr/local/bin/gpio tulis 7 1 #Mulai Gpio /usr/local/bin/gpio mode 7 keluar;; berhenti) echo "Menghentikan gpio";; *) echo "Penggunaan: /etc/init.d/garagerelay {start|stop}" exit 1;; esac keluar 0

Untuk menyimpan: CTRL-o, ENTER

Untuk keluar dari nano, CTRL-x

Jadikan file tersebut dapat dieksekusi:

$ sudo chmod +x /etc/init.d/garagerelay

Sekarang beri tahu pi Anda untuk menjalankan skrip ini saat boot:

$ sudo update-rc.d -f garagerelay start 4

(Catatan: Anda dapat dengan aman mengabaikan peringatan "tag LSB yang hilang".)

Pastikan skrip startup berjalan

$ sudo reboot

Buka browser dan klik pada pembuka. Relai harus berbunyi klik.

Langkah 9: Pasang Raspberry Pi ke Garasi

Lampirkan Raspberry Pi ke Garasi
Lampirkan Raspberry Pi ke Garasi

Saat memindahkan Raspberry Pi, pastikan untuk menjalankan:

$ shutdown -h 0

Anda mungkin ingin mematikan daya ke garasi. Jadi, pembuka bel pintu tidak menyetrum Anda:). Alasan sebenarnya adalah setiap kali Anda menyingkat kabel, pintu akan naik dan turun.

Lepaskan sekrup dinding dari pembuka jenis bel pintu, yang menempelkan bel pintu ke dinding.

Buat lubang melalui dari garasi di belakang pembuka bel pintu ke dalam rumah. Di Texas, Raspberry Pi tidak boleh di garasi, variasi suhu di garasi di luar spesifikasi operasi Raspberry Pi.

Jalankan kabel relai melalui lubang (gunakan gantungan baju).

Kendurkan kedua sekrup di bagian belakang pembuka bel pintu.

Lepaskan kedua ujung kabel relai: 1) sekitar 1/8 inci di sisi relai, dan sekitar inci di sisi bel pintu. Tekuk sisi bel pintu dari kawat menjadi setengah lingkaran yang cukup besar untuk dipasang di sekitar sekrup bagian belakang.

Hubungkan satu kabel relai ke setiap sekrup di bagian belakang bel pintu, dan kencangkan sekrupnya. Koneksi seperti yang ditunjukkan pada gambar. Karena relai mengisolasi sirkuit, arahnya bahkan tidak masalah relai mana yang dipasang ke sekrup mana.

Langkah 10: Pasang Raspberry Pi ke SECO-LARM

Lampirkan Raspberry Pi ke SECO-LARM
Lampirkan Raspberry Pi ke SECO-LARM
Lampirkan Raspberry Pi ke SECO-LARM
Lampirkan Raspberry Pi ke SECO-LARM

Sebelum saya menyelesaikan kode, saya dan keluarga saya sedang berlibur dan saya membuka browser saya. Tampilan terakhir browser saya adalah pembuka pintu garasi - halaman disegarkan dan pintu garasi dibuka. Beberapa hari kemudian seorang tetangga menelepon dan bertanya apakah pintu garasi harus dibuka? Untungnya, saya bisa menutupnya dari jarak 500 mil.

Snafu ini memaksa saya untuk mengubah kode sehingga ini tidak terjadi, dan menambahkan sensor dan keadaan pintu garasi ke situs web.

Ini adalah tautan ke instruksi asli untuk menambahkan sensor. Namun, mengingat semua yang telah selesai, menginstal sensor dapat sangat disederhanakan dan alih-alih menggunakan python tambahkan beberapa baris kode 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\id.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