Daftar Isi:

Neopiksel pemblokiran iklan: 11 Langkah
Neopiksel pemblokiran iklan: 11 Langkah

Video: Neopiksel pemblokiran iklan: 11 Langkah

Video: Neopiksel pemblokiran iklan: 11 Langkah
Video: TES SINYAL - Nekat Jajan Hape Dari Luar Negeri Padahal Aturan IMEI Masih Rancu 2024, Juli
Anonim
Neopiksel pemblokiran iklan
Neopiksel pemblokiran iklan

Saya ingin membuat situs web sederhana sebagai remote untuk strip neopiksel yang terhubung ke nol Raspberry Pi saya dan terus menggunakannya untuk memblokir iklan di jaringan saya menggunakan Pi-Hole. Pertama saya hanya ingin menambahkan beberapa led di kamar saya, tetapi memasang kabel semuanya, saya menyadari bahwa saya tidak memiliki cara untuk mengontrolnya dengan mudah. Jadi saya memutuskan untuk membuat situs web sederhana dengan beberapa opsi kontrol dasar menggunakan server apache yang sudah disiapkan oleh penginstal Pi-hole. Saya memberikan izin root www-data, yang merupakan risiko keamanan, jadi Anda mungkin harus membuat server web tidak tersedia untuk dunia luar. Ini dimulai terutama untuk dokumentasi saya sendiri dan entah bagaimana menjadi instruksi pertama saya;) Jadi saya akan sangat menghargai jika Anda dapat menunjukkan Jika ada sesuatu yang tidak jelas atau jika saya benar-benar melewatkan sesuatu.

Langkah 1: Bahan Bekas

  • Raspberry Pi (saya memulai dengan Pi 2 dan kemudian berubah ke WH, pin gpio mungkin sedikit berbeda tetapi sebaliknya setiap model baik-baik saja)

    • Jika Anda memiliki RPi tanpa wifi bawaan, adaptor wifi juga berguna.
    • Opsional kasus untuk raspberry pi
  • 2 Kabel jumper pria-wanita (misalnya)
  • Neopixels ws2811 (saya menggunakan ini)
  • 1 Catu daya 10W untuk RPi (Pengisi daya telepon lama bisa digunakan)
  • Catu daya 1 ~50W untuk Neopiksel (saya menggunakan yang seperti ini, tetapi mungkin yang lebih kecil sudah cukup, tetapi jika Anda ingin lebih banyak led, Anda memiliki ruang tersisa untuk diperluas.)
  • Steker konektor jack perempuan (seperti ini)

Langkah 2: Siapkan Sistem Operasi

Siapkan Sistem Operasi
Siapkan Sistem Operasi

Unduh Rasbian versi terbaru dari raspberrypi.org Versi lite baik-baik saja untuk proyek ini, jika Anda berencana untuk menggunakan raspberry pi untuk hal lain juga, Anda mungkin mempertimbangkan untuk menginstal versi lengkap dengan gui. Kemudian saya membakar gambar dengan Etcher. Setelah itu untuk memastikan itu akan terhubung dengan jaringan wifi saya, saya menambahkan wpa_supplicant.conf di direktori boot kartu sd. Isi file akan terlihat seperti ini:

~~~

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1

jaringan={

ssid = "SSID"

psk="PASSWORD"

key_mgmt=WPA-PSK }

~~~

Untuk mengaktifkan ssh, saya membuat file bernama ssh (tanpa ekstensi apa pun) di direktori yang sama. Ini akan memastikan Anda dapat mengkonfigurasi semuanya dari komputer lain di lan Anda.

Langkah 3: Menghubungkan Neopiksel

Menghubungkan Neopiksel
Menghubungkan Neopiksel
Menghubungkan Neopiksel
Menghubungkan Neopiksel

Pertama saya mencolokkan catu daya di konektor jack perempuan dan memasukkan RPi ke dalam kasing. Saya memasang kabel ground dari led (kabel biru) dan sisi jantan dari kabel jumper di sisi negatif konektor jack. Ujung lain dari kabel jumper saya terhubung ke pin ground pada header gpio, saya menggunakan pin 6 tetapi pin yang tepat yang dapat Anda gunakan akan tergantung pada model RPi yang tepat yang Anda gunakan.

Kedua saya menghubungkan di ujung positif konektor jack kabel 5v dari led (kabel merah). Di led saya ada konektor kabel jumper pada kabel ground tambahan dan kabel data (kabel putih). Saya baru saja mengabaikan kabel ground tambahan, itu tidak perlu untuk pengaturan saya. Pada kabel data saya menghubungkan kabel jumper pria ke wanita dengan pin gpio 12, sekali lagi pin yang tepat yang harus Anda gunakan tergantung pada RPi Anda. Kemudian saya mencolokkan catu daya saya untuk RPi dan pikselnya. Led menyala sebentar, jika semuanya terhubung dengan benar.

Langkah 4: Mulai RPi

Mulai RPi
Mulai RPi

Setelah memberikan RPi satu menit atau lebih untuk boot, saya mencari alamat IP dari raspberry dengan nmap. Tetapi pemindai jaringan apa pun, panel informasi router Anda atau dalam banyak kasus hanya "raspberrypi.local" yang akan melakukannya. Dengan informasi itu saya terhubung dengan RPi melalui ssh. Pengguna default adalah pi dengan kata sandi raspberry. Jadi itu hal pertama yang saya ubah menggunakan `passwd` langsung setelah login pertama. Jika Anda ingin mengakses pi Anda melalui ssh dari luar jaringan lokal Anda, Anda harus melihat ke fail2ban dan otentikasi kunci. Saya pribadi tidak memiliki kasus penggunaan untuk itu, jadi saya akan membiarkannya hanya dengan kata sandi.

Kedua saya memperbarui perangkat lunak menggunakan `sudo apt update && sudo apt upgrade -Y`. Saya juga membutuhkan beberapa perangkat lunak tambahan untuk mengkompilasi libery `Sudo apt-get install scons swig git python-dev build-essential -Y`. Kemudian saya menyalin perpustakaan yang sangat baik dari Jeremy Garff di github `git clone https://github.com/jgarff/rpi_ws281x.git`. Setelah itu perpustakaan dikloning saya pergi ke direktori rpi_ws281x, menggunakan scons dan kemudian menginstal perpustakaan dengan `sudo python python/setup.py install`. Dalam python/examples ada demo bagus "strandtest.py" dengan animasi yang sangat rapi yang dapat Anda mulai dengan `sudo python python/examples/strandtest.py`.

Langkah 5: Lubang Pi

Lubang Pi
Lubang Pi

Untuk membuat pemblokir penambahan jaringan yang luas, Pi-Hole sangat cocok. Ini menginstal hanya dengan `Sudo curl -sSL https://install.pi-hole.net | bash`. Bagian yang bagus adalah ia akan mengatur server web juga.

Setelah menjalankan penginstal, Anda akan ingin masuk ke situs admin router Anda dan memberikan alamat IP statis RPi Anda dan mengaturnya sebagai Server DHCP. Jika Anda telah menetapkan waktu sewa yang rendah daripada lubang PI Anda seharusnya berfungsi sekarang.

Langkah 6: Kontrol Lampu

Kontrol Lampu
Kontrol Lampu
Kontrol Lampu
Kontrol Lampu
Kontrol Lampu
Kontrol Lampu

Cara termudah untuk mengontrol neopiksel adalah dengan program python kecil. Tetapi menggunakan ssh setiap kali Anda ingin menyalakan lampu tidak nyaman, terutama pada perangkat seluler. Jadi saya memutuskan untuk menggunakan situs web kecil sebagai remote control. INI RISIKO KEAMANAN, karena saya memberikan izin root www-data tanpa verifikasi kata sandi. Anda mungkin tidak harus membuat situs ini tersedia di luar lan Anda.

Untuk memudahkan memilih antara dasbor lubang PI dan remote lampu, saya memberi pengguna pi akses tulis ke /var/www/html dengan `Sudo chown -R pi /var/www.html` dan saya membuat index.php di /var/www/html/. Sesuatu yang sederhana seperti:

~~~

Jarak jauh lampu indeks lubang Pi

~~~

baik-baik saja. Kemudian saya membuat folder baru bernama lights untuk menyatukan semua dari neopiksel. Di sini saya membuat color.py berdasarkan strandtest.py dari libery.

~~~

dari impor neopixel * # Impor beberapa perpustakaan

sistem impor

def led(strip, color, start, end): # Buat fungsi untuk memanggil leds

untuk saya dalam jangkauan (mulai, akhir):

strip.setPixelColor(i, warna)

strip.tampilkan()

BRIGHTNESS = int(sys.argv[4]) # Parameter keempat pada baris perintah adalah kecerahan. (1-255)

COUNT = 50 # Jumlah leds PIN = 12 # Pin yang digunakan pada RPi

FREQ_HZ = 800000 # frekuensi sinyal LED dalam hertz (biasanya 800khz)

DMA = 5 # DMA channel yang digunakan untuk membangkitkan sinyal (coba 5)

INVERT = False # Benar untuk membalikkan sinyal (bila menggunakan level transistor NPN

strip = Adafruit_NeoPixel(COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)

strip.mulai()

R = int(sys.argv[1]) # Jumlah merah adalah parameter pertama

G = int(sys.argv[2]) # Jumlah hijau adalah parameter kedua

B = int(sys.argv[3]) # Jumlah warna biru adalah parameter ketiga

mencoba:

leds(strip, Color(R, G, B), 0, 49) #Akan memulai let dengan warna dan kecerahan yang dipilih.

kecuali KeyboardInterrupt:

warna(strip, Warna(0, 0, 0), 0, 49)

~~~

Jika Anda menjalankan ini dengan Sudo di terminal, lampu akan menyala dalam warna yang ditentukan. Untuk memberikan izin www-data Sudo, saya menambahkan `www-data ALL=(ALL) NOPASSWD:ALL)` ke file sudoers (/etc/sudoers) langsung di bawah pengguna root.

Langkah 7: Nyalakan Lampu Dengan Browser

Kemudian saya membuat index.php lain, kali ini di /lights. ~~~

< ?php $R = 100; $G = 100; $B = 100; $BRIGHTNESS = 100; exec("sudo python colour.py $R $G $B $BRIGHTNESS"); ?>

~~~

Ketika saya sekarang mengunjungi raspberrypi.local/lights/index.php leds akan berubah menjadi putih. Meskipun ini adalah awal yang baik, saya ingin memiliki setidaknya beberapa tombol pada remote.

Langkah 8: Kontrol Lampu Dari Browser

Saya membuat antarmuka dengan buttens menggunakan formulir html. Saya tidak suka melakukan hal-hal yang tidak diperlukan, jadi saya membuat folder bernama templates dengan header, footer, dan kode php utama saya. Final /lights/index.php saya (untuk saat ini) terlihat seperti ini:

~~~

~~~

Untuk membuat tombol berfungsi, saya membuat template BasicControl.php. Dalam hal ini saya menentukan kode yang harus dijalankan ketika tombol ditekan. Karena saya menyukai animasi terdampar, saya juga menyertakan yang itu. Strandtest akan terus berlanjut tanpa batas, jadi saya membuat tombol lain untuk menghentikan proses kapan pun saya mau.

~~~< ?php

$I = 100;

$R = 0;

$G = 0;

$B = 0;

if (isset($_POST['strandtest_start'])) { exec("Sudo python strandtest.py"); }

else if (isset($_POST['strandtest_stop'])) { exec("Sudo pkill -9 -f strandtest.py"); }

else if (isset($_POST['red'])) { $R = 255; $G = 0; $B = 0; exec("Sudo python color.py $R $G $B $I"); }

else if(isset($_POST['hijau'])) { $R = 0; $G = 255; $B = 0; exec("Sudo python color.py $R $G $B $I"); }

else if(isset($_POST['blue'])) { $R = 0; $G = 0; $B = 255; exec("Sudo python color.py $R $G $B $I"); }

else if(isset($_POST['white'])) { $R = 255; $G = 255; $B = 255; exec("Sudo python color.py $R $G $B $I"); }

else if(isset($_POST['off'])) { shell_exec('Sudo python off.py'); }

else if(isset($_POST['reboot'])) { shell_exec('Sudo reboot sekarang'); } ?>

~~~

Langkah 9: Buat Template untuk Header dan Footer

Sekarang semuanya berfungsi, tetapi tidak terlalu menyenangkan untuk dilihat. Setelah mengimpor header dan footer semua elemen situs tersedia, hanya saja tidak ditata.

header.php:

~~~

lampu

Lampjes

Kontrol Dasar

Kontrol Lanjutan

~~~

Dan footer.php:

~~~

~~~

Langkah 10: Beberapa Css untuk Membuat Semuanya Terlihat Sedikit Lebih Baik

Beberapa Css untuk Membuat Semuanya Terlihat Sedikit Lebih Baik
Beberapa Css untuk Membuat Semuanya Terlihat Sedikit Lebih Baik

Seperti yang mungkin Anda perhatikan, saya menggunakan file css untuk mengontrol tata letak. Untuk memastikan remote saya dapat digunakan pada layar yang lebih kecil juga, saya menggunakan beberapa flexbox css dengan autowrap.

~~~

/* Stylesheet untuk antarmuka kontrol cahaya *

* Berlaku di setiap halaman */

body { warna-latar belakang: f9fcfa; font-family: Arial; margin: 0; }

h1 { warna: putih; perataan teks: tengah; }

p { font-family: verdana; ukuran font: 20px; }

h2 {}

/* Judulnya */

.header { tinggi: 10%; tampilan: fleksibel; justify-content:mulai-fleksibel; align-item:pusat; margin: 0 piksel; padding-kiri: 5%; latar belakang:#3F51B5; align-item: tengah; }

. HeaderLinks { warna: putih; }

.navbar { tampilan: fleksibel; fleksibel: 30%; justify-content:ruang-sekitar; warna latar: #3F51B5; warna putih; }

/* Catatan kaki */

.footer { warna latar: #3F51B5; tinggi: 10%; perataan teks: tengah; }

/* Index.php */

.buttons { tampilan:fleksibel; arah fleksibel: baris; bungkus-fleksibel: bungkus; justify-content:spasi-antara; tinggi: 80%; align-item: flex-start; }

.buttons_index { bantalan:0%; lebar batas: tipis; gaya perbatasan: padat; warna batas: hitam; warna latar: #3949ab; warna putih; font-family: sans-serif; lebar: 24%; tinggi: 20%; }

.buttons_index:hover{ padding:0%; lebar batas: tipis; gaya perbatasan: padat; warna batas: hitam; warna latar: #536DFE; warna putih; font-family: sans-serif; lebar: 24%; tinggi: 20%; }

~~~

Langkah 11: Terima kasih

Dan itu saja. Semuanya bekerja untuk saya dan saya harap ini akan bekerja untuk Anda juga jika memilih coba instruksi saya. Jika Anda mencoba menyalin beberapa kode, saya harus menambahkan beberapa spasi untuk mengunggahnya di sini, jadi Anda harus menghapusnya sebelum kode itu berguna lagi.

Saya harap Anda menikmati membaca semuanya. Jika Anda memiliki umpan balik, saya akan senang mendengarnya!

Direkomendasikan: