Isi kandungan:
- Langkah 1: Bahan Terpakai
- Langkah 2: Sediakan Sistem Operasi
- Langkah 3: Menyambungkan Neopixels
- Langkah 4: Mulakan RPi
- Langkah 5: Lubang Pi
- Langkah 6: Kawal Lampu
- Langkah 7: Hidupkan Lampu Dengan Penyemak Imbas
- Langkah 8: Kawal Lampu Dari Penyemak Imbas
- Langkah 9: Buat Templat untuk Header dan Footer
- Langkah 10: Beberapa Css untuk Membuat Semuanya Lebih Baik
- Langkah 11: Terima kasih
Video: Neopixel yang menyekat iklan: 11 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Saya ingin menjadikan laman web sederhana sebagai jarak jauh untuk jalur neopixel yang disambungkan ke Raspberry Pi saya sifar dan terus menggunakannya untuk menyekat iklan di rangkaian saya menggunakan Pi-Hole. Mula-mula saya hanya mahu menambahkan beberapa petunjuk di dalam bilik saya, tetapi dengan menyambung semuanya, saya sedar bahawa saya tidak mempunyai cara untuk mengawalnya dengan mudah. Oleh itu, saya memutuskan untuk membuat laman web sederhana dengan beberapa pilihan kawalan asas menggunakan pelayan apache yang telah disediakan oleh pemasang Pi-hole. Saya memberikan kebenaran root www-data, yang merupakan risiko keselamatan, jadi anda harus menjadikan pelayan web tidak tersedia untuk dunia luar. Ini bermula terutamanya untuk dokumentasi saya sendiri dan entah bagaimana menjadi petunjuk pertama saya;) Oleh itu, saya sangat menghargai jika anda dapat menunjukkan Sekiranya sesuatu tidak jelas atau jika saya benar-benar merindui sesuatu.
Langkah 1: Bahan Terpakai
-
Raspberry Pi (saya mula menggunakan Pi 2 dan kemudian berubah menjadi WH, pin gpio mungkin sedikit berbeza tetapi sebaliknya setiap model baik-baik saja)
- Sekiranya anda mempunyai RPi tanpa wifi terpasang, penyesuai wifi juga berguna.
- Sebagai pilihan, kes untuk raspberry pi
- 2 wayar pelompat lelaki-wanita (contohnya)
- Neopixels ws2811 (saya menggunakan ini)
- 1 10W bekalan kuasa untuk RPi (Pengecas telefon lama akan berfungsi)
- Bekalan kuasa 1 ~ 50W untuk Neopixels (saya menggunakan yang seperti ini, tetapi mungkin yang lebih kecil akan mencukupi, tetapi jika anda mahukan lebih banyak petunjuk, anda masih mempunyai ruang untuk berkembang.)
- Palam penyambung bicu wanita (seperti ini)
Langkah 2: Sediakan Sistem Operasi
Muat turun Rasbian versi terbaru dari raspberrypi.org Versi lite sesuai untuk projek ini, jika anda merancang untuk menggunakan raspberry pi untuk perkara lain juga, anda mungkin mempertimbangkan untuk memasang versi penuh dengan gui. Kemudian saya membakar gambar dengan Etcher. Selepas itu untuk memastikan ia akan bersambung dengan rangkaian wifi saya, saya menambahkan wpa_supplicant.conf dalam direktori boot kad sd. Kandungan fail kelihatan seperti ini:
~~~
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1
rangkaian = {
ssid = "SSID"
psk = "KATA LALUAN"
key_mgmt = WPA-PSK}
~~~
Untuk mengaktifkan ssh saya membuat fail bernama ssh (tanpa pelanjutan) dalam direktori yang sama. Ini akan memastikan anda dapat mengatur setiap komputer dari komputer lain di komputer anda.
Langkah 3: Menyambungkan Neopixels
Mula-mula saya pasangkan bekalan kuasa pada penyambung bicu wanita dan pasangkan RPi ke dalam casing. Saya mencabut kabel ground dari led (kabel biru) dan bahagian lelaki dari wayar pelompat di sisi negatif penyambung bicu. Hujung wayar jumper lain yang saya sambungkan ke pin ground pada header gpio, saya menggunakan pin 6 tetapi pin tepat yang boleh anda gunakan bergantung pada model RPi yang anda gunakan.
Kedua saya menyambungkan pada hujung positif penyambung bicu kabel 5v dari led (kabel merah). Di bahagian depan saya, mereka adalah penyambung wayar jumper pada kabel ground tambahan dan kabel data (kabel putih). Saya hanya mengabaikan kabel pembumian tambahan, tidak perlu untuk persediaan saya. Pada kabel data saya menghubungkan wayar jumper lelaki ke wanita dengan pin gpio 12, sekali lagi pin tepat yang harus anda gunakan bergantung pada RPi anda. Kemudian saya memasang bekalan kuasa saya untuk RPi dan piksel. Lampu LED menyala sebentar, jika semuanya disambungkan dengan betul.
Langkah 4: Mulakan RPi
Setelah memberikan RPi satu minit atau lebih untuk boot, saya melihat alamat IP dari raspberry dengan nmap. Tetapi pengimbas rangkaian apa pun, panel maklumat penghala anda atau dalam kebanyakan kes hanya "raspberrypi.local" akan dilakukan. Dengan maklumat tersebut saya berhubung dengan RPi melalui ssh. Pengguna lalai adalah pi dengan kata laluan raspberry. Jadi itulah perkara pertama yang saya ubah menggunakan `passwd` secara langsung selepas log masuk pertama. Sekiranya anda ingin mengakses pi anda melalui ssh dari luar rangkaian tempatan anda, anda harus melihat pengesahan fail2ban dan kunci. Saya secara peribadi tidak mempunyai kes penggunaan untuk itu, jadi saya akan meninggalkannya hanya dengan kata laluan.
Kedua saya mengemas kini perisian menggunakan `sudo apt update & sudo apt upgrade -Y`. Saya juga memerlukan beberapa perisian tambahan untuk menyusun liber `sudo apt-get install scons swig git python-dev build-essential -Y`. Kemudian saya menyalin karya hebat dari Jeremy Garff di github `git clone https:// github.com / jgarff / rpi_ws281x.git`. Selepas itu perpustakaan diklon saya pergi ke direktori rpi_ws281x, menggunakan scon dan kemudian memasang perpustakaan dengan `sudo python python / setup.py install`. Dalam python / example adalah demo yang bagus "strandtest.py" dengan animasi yang sangat kemas yang anda boleh mulakan dengan `sudo python python / example / strandtest.py`.
Langkah 5: Lubang Pi
Untuk membuat penyekat tambah lebar rangkaian, Pi-Hole sangat sesuai. Ia dipasang dengan hanya `sudo curl -sSL https://install.pi-hole.net | bash`. Bahagian yang baik adalah bahawa ia akan menyediakan pelayan web juga.
Setelah menjalankan pemasang, anda ingin log masuk ke laman pentadbir penghala anda dan memberikan RPi anda alamat IP statik dan menetapkannya sebagai Pelayan DHCP. Sekiranya anda telah menetapkan masa sewa yang rendah daripada lubang PI anda seharusnya berfungsi sekarang.
Langkah 6: Kawal Lampu
Cara termudah untuk mengawal neopixels adalah dengan program python kecil. Tetapi untuk menggunakan ssh setiap kali anda mahu menyalakan lampu tidak selesa, terutamanya pada peranti mudah alih. Oleh itu, saya memutuskan untuk menggunakan laman web kecil sebagai alat kawalan jauh. INI ADALAH RISIKO KESELAMATAN, kerana saya memberikan kebenaran root www-data tanpa pengesahan kata laluan. Anda mungkin tidak boleh menyediakan laman web ini di luar talian anda.
Untuk memudahkan memilih antara papan pemuka lubang PI dan alat kawalan jauh cahaya, saya memberi pengguna pi akses akses ke / var / www / html dengan `sudo chown -R pi / var / www.html` dan saya membuat fail index.php di / var / www / html /. Sesuatu yang mudah seperti:
~~~
Indeks Pi lubang Cahaya jauh
~~~
adalah baik. Kemudian saya membuat folder baru yang dipanggil lampu untuk menyatukan semuanya dari neopixel. Di sini saya membuat colour.py berdasarkan strandtest.py dari libery.
~~~
dari neopixel import * # Import beberapa perpustakaan
import sys
def led (jalur, warna, permulaan, akhir): # Buat fungsi untuk memanggil led
untuk i dalam jarak (permulaan, akhir):
strip.setPixelColor (i, warna)
strip.show ()
BRIGHTNESS = int (sys.argv [4]) # Parameter keempat pada baris perintah akan menjadi terang. (1-255)
COUNT = 50 # Jumlah PIN led = 12 # Pin yang digunakan pada RPi
FREQ_HZ = 800000 # frekuensi isyarat LED dalam hertz (biasanya 800khz)
DMA = 5 # Saluran DMA yang akan digunakan untuk menghasilkan isyarat (cuba 5)
INVERT = Salah # Benar untuk membalikkan isyarat (semasa menggunakan tahap transistor NPN
strip = Adafruit_NeoPixel (COUNT, PIN, FREQ_HZ, DMA, INVERT, BRIGHTNESS)
jalur. mulakan ()
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 biru adalah parameter ketiga
cuba:
led (jalur, Warna (R, G, B), 0, 49) #Mulakan let dengan warna dan kecerahan yang dipilih.
kecuali KeyboardInterrupt:
warna (jalur, Warna (0, 0, 0), 0, 49)
~~~
Sekiranya anda menjalankannya dengan sudo di terminal lampu harus menyala dengan warna yang ditentukan. Untuk memberi izin www-data sudo saya menambahkan `www-data ALL = (ALL) NOPASSWD: ALL)` ke fail sudoers (/ etc / sudoers) secara langsung di bawah pengguna root.
Langkah 7: Hidupkan Lampu Dengan Penyemak Imbas
Kemudian saya buat anonther index.php, kali ini di / lights. ~~~
< ?php $R = 100; $G = 100; $B = 100; $BRIGHTNESS = 100; exec("sudo python colour.py $R $G $B $BRIGHTNESS"); ?>
~~~
Semasa saya melawat raspberrypi.local / lights / index.php, lampu akan bertukar menjadi putih. Walaupun ini adalah permulaan yang baik, saya ingin mempunyai sekurang-kurangnya beberapa butang pada alat kawalan jauh.
Langkah 8: Kawal Lampu Dari Penyemak Imbas
Saya membuat antara muka dengan tombol menggunakan borang html. Saya tidak suka melakukan perkara yang tidak diperlukan, jadi saya membuat folder yang disebut templat dengan tajuk, kaki dan kod php utama saya. (Untuk sekarang) final /lights/index.php saya seperti ini:
~~~
~~~
Untuk membuat butang berfungsi, saya membuat templat BasicControl.php. Dalam ini saya menentukan kod yang harus dilaksanakan ketika butang ditekan. Kerana saya menyukai animasi yang paling teruk, saya juga menyertakannya. Strandtest akan berterusan lama, jadi saya membuat butang lain untuk menghentikan proses bila-bila masa saya mahu.
~~~ <? php
$ I = 100;
$ R = 0;
$ G = 0;
$ B = 0;
if (isset ($ _ POST ['strandtest_start'])) {exec ("sudo python strandtest.py"); }
lain jika (isset ($ _ POST ['strandtest_stop'])) {exec ("sudo pkill -9 -f strandtest.py"); }
lain jika (isset ($ _ POST ['red'])) {$ R = 255; $ G = 0; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }
lain jika (isset ($ _ POST ['green'])) {$ R = 0; $ G = 255; $ B = 0; exec ("sudo python colour.py $ R $ G $ B $ I"); }
lain jika (isset ($ _ POST ['blue'])) {$ R = 0; $ G = 0; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }
lain jika (isset ($ _ POST ['white'])) {$ R = 255; $ G = 255; $ B = 255; exec ("sudo python colour.py $ R $ G $ B $ I"); }
lain jika (isset ($ _ POST ['off'])) {shell_exec ('sudo python off.py'); }
lain jika (isset ($ _ POST ['reboot'])) {shell_exec ('rebo sudo sekarang'); }?>
~~~
Langkah 9: Buat Templat untuk Header dan Footer
Sekarang semuanya berfungsi, tetapi tidak terlalu menyenangkan untuk dilihat. Setelah mengimport header dan footer semua elemen laman web tersedia, tidak digayakan.
Header.php:
~~~
Lampu
Lampjes
Kawalan Asas
Kawalan Lanjutan
~~~
Dan footer.php:
~~~
~~~
Langkah 10: Beberapa Css untuk Membuat Semuanya Lebih Baik
Seperti yang anda perhatikan, saya menggunakan fail css untuk mengawal susun atur. Untuk memastikan alat kawalan jauh saya dapat digunakan pada skrin yang lebih kecil juga saya menggunakan beberapa kotak flex css dengan autowrap.
~~~
/ * Lembar gaya untuk antara muka kawalan cahaya *
* Berlaku di setiap halaman * /
badan {background-color: f9fcfa; font-keluarga: Arial; margin: 0; }
h1 {warna: putih; text-align: tengah; }
p {font-keluarga: verdana; saiz fon: 20 piksel; }
h2 {}
/ * Tajuk * /
.header {tinggi: 10%; paparan: flex; justify-content: flex-mula; align-item: tengah; margin: 0px; padding-kiri: 5%; latar belakang: # 3F51B5; align-item: tengah; }
. HeaderLinks {warna: putih; }
.navbar {paparan: flex; flex: 30%; justify-content: ruang-sekitar; warna latar: # 3F51B5; warna: putih; }
/ * Bahagian bawah * /
.footer {background-color: # 3F51B5; tinggi: 10%; text-align: tengah; }
/ * Index.php * /
.tombol {paparan: flex; arah lentur: baris; flex-wrap: bungkus; justify-content: ruang-antara; tinggi: 80%; align-item: flex-mula; }
.buttons_index {padding: 0%; lebar sempadan: nipis; gaya sempadan: padat; warna sempadan: hitam; warna latar: # 3949ab; warna: putih; font-keluarga: sans-serif; lebar: 24%; tinggi: 20%; }
.buttons_index: arahkan {padding: 0%; lebar sempadan: nipis; gaya sempadan: padat; warna sempadan: hitam; warna latar: # 536DFE; warna: putih; font-keluarga: sans-serif; lebar: 24%; tinggi: 20%; }
~~~
Langkah 11: Terima kasih
Dan itu sahaja. Semuanya berfungsi untuk saya dan saya harap ia juga akan berfungsi untuk anda sekiranya memilih mencuba arahan saya. Sekiranya anda cuba menyalin beberapa kod, saya harus menambahkan beberapa ruang untuk memuat naiknya di sini, jadi anda harus menghapusnya sebelum kod itu berguna lagi.
Saya harap anda seronok membaca semuanya. Sekiranya anda mempunyai maklum balas, saya ingin mendengarnya!
Disyorkan:
Cara Menyekat di Facebook, Cepat !: 5 Langkah
Cara Menyekat di Facebook, Cepat !: Mari kita hadapi: Facebook penuh dengan Troll. Dan lebih teruk lagi. Oleh itu, anda menyekat seseorang, dan Facebook menghantar anda ke senarai Troll yang disekat, sebagai hukuman pasif-agresif. Itu menjengkelkan. Mengapa saya ingin melihat nama-nama tersebut? SAYA SUDAH MEREKA
Cara Menyekat Gangguan Telefon Selular Yang Mengganggu: 3 Langkah
Cara Menyekat Gangguan Telefon Bimbit yang Mengganggu: Petunjuk ini akan menunjukkan kepada anda bagaimana untuk menyekat gangguan binging yang mengganggu dengan radio dan pembesar suara ketika telefon bimbit anda bersambung dengan keibuan atau waktu yang jarang berlaku ketika seseorang benar-benar memanggil anda. Anda memerlukan: 2 telefon bimbit (satu untuk menguji
Cara Mendapat Pass BESS (menyekat Wesites): 8 Langkah
Cara Mendapat Lulus BESS (menyekat Wesites): Ini boleh digunakan untuk membolehkan anda melewati BESS anjing kecil yang menjengkelkan yang mengunci anda dari laman web pada kebanyakan masa yang anda perlukan untuk sekolah tetapi kadang-kadang untuk memeriksa myspace atau facebook anda …… (Itu adalah jangka panjang) …… Seperti yang saya katakan heres ho
Cara Menyekat / membunuh Cip RFID: 4 Langkah (dengan Gambar)
Cara Menyekat / membunuh Cip RFID: Dalam Instruksional ini saya akan menerangkan pelbagai cara untuk menyekat atau membunuh tag RFID. RFID bermaksud Pengenalan Frekuensi Radio. Sekiranya anda belum mengetahui mengenai teknologi ini, anda pasti harus mula membiasakannya dengan teknologi ini, kerana
Cara Tidak Menyekat Kamera: 5 Langkah (dengan Gambar)
Bagaimana Tidak Memblokir Kamera: Terdapat banyak kemasukan projek di internet yang mendakwa melindungi seseorang dari kamera pengawasan. Ada yang menggunakan laser. Yang lain menggunakan belon dan elektrik statik. Yang saya dapati LED inframerah (IR) terpakai yang paling menarik. Saya memutuskan untuk