Isi kandungan:

Petunjuk Acara RPi-Zero IoT / Lampu Warna: 6 Langkah (dengan Gambar)
Petunjuk Acara RPi-Zero IoT / Lampu Warna: 6 Langkah (dengan Gambar)

Video: Petunjuk Acara RPi-Zero IoT / Lampu Warna: 6 Langkah (dengan Gambar)

Video: Petunjuk Acara RPi-Zero IoT / Lampu Warna: 6 Langkah (dengan Gambar)
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, Julai
Anonim
Petunjuk Acara RPi-Zero IoT / Lampu Warna
Petunjuk Acara RPi-Zero IoT / Lampu Warna
Petunjuk Acara RPi-Zero IoT / Lampu Warna
Petunjuk Acara RPi-Zero IoT / Lampu Warna
Petunjuk Acara RPi-Zero IoT / Lampu Warna
Petunjuk Acara RPi-Zero IoT / Lampu Warna

Tidak memerlukan pengawal mikro tambahan, & Tidak memerlukan modul tambahan HAT. RPi-Zero melakukan semuanya. Lebih baik lagi gunakan RPi-Zero W!

Penggunaan sampel: Petunjuk keadaan Perkhidmatan Web (mis. Penjejakan DowJonesIndex), penunjuk status acara Politik atau Sukan, cahaya mood, jejak sensor, anda namakan. Lihat video di langkah 6.

Raspberry-Pi hanya mempunyai satu barisan PWM yang menyokong perkakasan. Projek ini memerlukan 3 baris PWM, jadi saya menggunakan perpustakaan PWM 'c' yang didorong oleh perisian (https://wiringpi.com/reference/software-pwm-library/), yang semestinya sudah dipasang.

Saya memecah pemprosesan menjadi 2 proses. Salah satunya, digerakkan oleh gangguan, menukar garis kawalan ke LED mengikut keperluan, mendapatkan pesanan bergerak dari aliran 'stdin'. Yang lain adalah pelayan nodeJS berdasarkan acara yang menggunakan soket IO. Ini untuk mengelakkan perkara seperti kerlipan cahaya sambil memastikan tindak balas. Gabungan biasanya menggunakan kurang dari 5% CPU. Semasa kemas kini warna berterusan (melalui slaid & / atau banyak pelanggan) ia boleh menggunakan lebih dari 50% dengan mudah (terutama ketika menggunakan penyemak imbas di Pi-Zero GUI). Perhatikan bahawa apabila ada perubahan, pemberitahuan kemas kini keluar untuk semua klien soket terbuka.

Langkah 1: Apa yang Anda Perlu

Apa yang Anda Perlu
Apa yang Anda Perlu
Apa yang Anda Perlu
Apa yang Anda Perlu
  • Kad mikro-SD Pi-Zero, disyorkan 8 GB. Dengan Raspbian-Linux atau NOOBS
  • RGB Led (Saya menggunakan yang ini:
  • 3 resister (nilai berdasarkan arus yang dikehendaki & / atau kecerahan yang diinginkan, 1/8 watt)
  • WiFi, dongle USB (mis. https://www.ebay.com/itm/252018085448) atau lebih baik menggunakan Raspberry Pi Z-W (dengan WiFi terpasang)
  • casing (mis. kecil): https://www.ebay.com/itm/131583579374 dengan lebih banyak ruang:
  • penyebar (lihat contoh dalam gambar)
  • Kabel dan penyesuai mengikut keperluan.

Secara pilihan, bergantung pada bagaimana anda mahu menyambungkan komponen

  • pengepala (https://www.ebay.com/itm/14186077616)
  • penerjun (https://www.ebay.com/itm/262235387520)
  • penyesuai mikro-USB sudut kanan (Blue USB 2.0 OTG R)
  • hab USB mini, hanya digunakan semasa fasa persediaan

Langkah 2: Persediaan Pi-Zero, dan Persiapan untuk Pembangunan

Ikuti persediaan awal ini untuk PiZero anda, untuk membuatnya siap untuk pembangunan…

Sebaik sahaja anda mempunyai kad microSD dengan penyediaan NOOBS maka:

Pasang kad microSD. Pasang Hab USB berkuasa rendah dengan dongle Wifi, papan kekunci dan tetikus (Anda mungkin menggunakan tetikus dan / atau papan kekunci tanpa wayar, sama ada mungkin, tetapi tidak mungkin, memerlukan kuasa luaran ke hub). Saya menggunakan penyesuai dan hab yang sudah saya ada.

Sekarang pasangkan Monitor dan penyesuai kuasa microUSB dan ia akan boot. Teruskan dan selesaikan petunjuk untuk mengatur Raspbian, Debian Linux, seperti yang dilihat pada pautan penyediaan noobs di atas.

Selain itu, saya mempunyai resolusi yang terlalu rendah. Oleh itu, saya menambah baris ini ke /boot/config.txt

lumpuhkan_overscan = 1

hdmi_group = 2 hdmi_mode = 58

HDMI_mode = 58 berfungsi untuk monitor saya, anda mungkin memerlukan sesuatu yang lain.

rujuk: make-raspberry-pi-use-full-resolution-monitor dan

raspberrypi.org/documentation/configuration/config-txt.md

Setelah boot, Pi-Zero masuk ke antara muka GUI.

Untuk menggunakan saiz penuh kad microSD saya, saya menggunakan pemilihan raspi-config # 1 'Expand Filesystem'. Dari baris arahan, di tetingkap terminal, masukkan 'sudo raspi-config'Rujuk ke: dokumentasi / konfigurasi / raspi -konfig.md

Juga saya mengubah tetapan ini di bawah # 5 'Pilihan Pengantarabangsaan'

  • Lokasi: en_US. UTF-8 UTF-8
  • Zon Waktu: Amerika… Los_Angeles
  • Susun atur Papan Kekunci: PC 105-kunci Generik (Intl)… Bahasa Inggeris (AS)

Bagi saya standard papan kekunci Great Britain (yang telah ditetapkan sebelumnya oleh Raspbian) menjadikan banyak suntingan saya menjadi tugas yang nyata.

Ubah tetapan ini mengikut keperluan, sesuai untuk anda. Perhatikan bahawa anda perlu menggunakan kekunci anak panah dan kekunci tab untuk menavigasi di 'raspi-config'; dan selepas pemilihan mungkin sangat lambat untuk bertindak balas.

Saya merasa tidak ada masalah untuk menyambung ke internet dengan dongle WiFi-USB (saya menggunakan 2 yang berbeza). Saya hanya perlu memasukkan kata laluan kunci akses WiFi saya menggunakan pull-down di kanan atas GUI. Setelah saya melakukan ini, ia akan tersambung secara automatik selepas reboot / power-up.

Sekarang saya sudah bersedia untuk pembangunan umum.

Untuk sampai ke tahap ini anda boleh menempuh banyak jalan. Hingga kini, saya belum memberikan perincian yang besar di sini tetapi terdapat banyak kaedah dan konfigurasi yang dijelaskan dengan lebih terperinci di web. Termasuk satu untuk penyediaan tanpa kepala di mana anda akan menggunakan tetingkap terminal ssh jauh di komputer peribadi anda untuk melakukan langkah-langkah pengembangan yang akan diberikan dalam instruksional ini.

Langkah 3: Persekitaran dan Alat Pembangunan

Persekitaran dan Alat Pembangunan
Persekitaran dan Alat Pembangunan
Persekitaran dan Alat Pembangunan
Persekitaran dan Alat Pembangunan

Untuk penyediaan konfigurasi sistem dan perisian yang saya kembangkan untuk projek ini, saya melakukan R&D pada Raspberry Pi-2; kerana ia mempunyai CPU quad-core membuat penyemakan imbas dan pengembangan kodnya, dengan banyak tetingkap, jauh lebih cepat. Anda tentu saja boleh menggunakan model Raspberry-Pi apa pun untuk merealisasikan projek ini.

Untuk menyiapkan Node.js (sokongan JavaScript I / O berasaskan pelayan acara) saya melakukan perkara berikut …

sudo apt-get kemas kini

sudo apt-get install nodejs npm

Menambah pakej nodeJS ini (npm adalah Nodejs Package Manager)

npm pasang express

npm pasang socket.io

Rujukan:

www.npmjs.com/package/express Rangka kerja web yang cepat dan minimalis

www.npmjs.com/package/socket.io Socket. IO membolehkan komunikasi berasaskan acara dua arah masa nyata

Langkah 4: Perkakasan

Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan

Nilai resister yang digunakan semuanya berbeza, kerana penurunan voltan dan kecekapan berbeza untuk ketiga-tiga segmen warna LED. Tahap output GPIO Tinggi adalah kira-kira 3.2 volt. Setiap segmen LED diuji untuk memastikan ia menggunakan kurang dari 20ma maksimum dan sekitar 40ma bersama-sama (<maksimum 50ma maksimum dibenarkan), yang dapat ditangani oleh PiZero dengan mudah. Saya mendapat kecerahan output sebanyak yang saya dapat, secara langsung menggerakkan LED; yang banyak untuk keperluan saya. Untuk menggerakkan arus yang lebih tinggi, untuk output yang lebih cerah, transistor pemacu perantaraan boleh digunakan dengan LED anod biasa dengan anodnya disambungkan ke garis 5v. PS: Oleh kerana pelbagai tahap Putih saya keluar sedikit kebiruan, 27 bukannya 24 Ohm pasti menjadi pilihan yang lebih baik bagi saya.

Perhatikan saya menggunakan header dengan pin lelaki, dan disambungkan ke kaki LED dengan jumper F-F. Ini mengekalkan ketinggian keseluruhan. Saya menyolokkan tongkat ke tengah pelompat. Dengan tidak menggunakan papan litar atau papan tanpa pateri, bersama dengan penggunaan penyesuai mikro-USB sudut USB ke sudut kanan untuk dongle WiFi, menjadikan pemasangan akhir cukup padat.

Untuk diffuser, saya cadangkan bola ping-pong (mudah untuk menggerudi lubang yang cukup besar untuk memasukkan LED 5-8-10 mm anda). Atau potong bahagian atas bola lampu LED (yang menggunakan peresap plastik). Untuk ini tandakan garis, dengan tajam titik halus, di mana anda ingin memotong, dan gunakan alat seperti Dremel dengan lampiran potongan tipis. Sekiranya anda suka, balang kaca potong kecil atau gelas minum boleh digunakan. Setelah anda menggunakan satu peresap, tempelkan ke bahagian atas casing.

Untuk demonstrasi, saya suka menggunakan bank kuasa Li kecil yang diletakkan di dalam casing. Unit ini kelihatan lebih hebat sepenuhnya tanpa wayar. Sudah tentu, ia akan mempunyai masa operasi yang terhad dalam konfigurasi tersebut. Untuk menjalankan operasi normal, saya hanya menggunakan penyesuai dinding mikro-USB.

Langkah 5: Perisian Projek

Perisian Projek
Perisian Projek

Saya menggunakan dua program, proses Node.js bercakap dengan proses kanak-kanak melalui aliran data stdin. Ini supaya mereka masing-masing dapat melakukan yang terbaik dan beroperasi sebagai proses bebas mengikut kadar mereka sendiri.

Inilah yang saya lakukan: Tetapi anda tidak perlu, kerana saya telah menyediakan fail tar-gzip yang mengandungi pohon-fail yang dihasilkan.

Persediaan sisi pelayan NodeJS:

cd ~

mkdir node_rgb cd node_rgb mkdir awam

masukkan 'index.html' dan 'style.css' ke dalam direktori '~ / node_rgb / public'putput' rgbDriver.c 'dan' rgb_main.js 'ke dalam direktori' ~ / node_rgb '

Menyusun / membina proses c 'rgbDriver':

cd ~ / node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Memuat turun dan mengembangkan kesetaraan

Untuk memuat turun node_rgb.tgz (di bawah) ke Pi-Zero ke dalam direktori rumah anda (~ pi) anda boleh melakukan salah satu daripada 3 perkara berikut:

  1. Muat turun dari penyemak imbas di Pi-Zero's GUIMPindahkan fail ke ~ pi /
  2. Di tetingkap terminal yang dihubungkan dengan anda Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Muat turun dari penyemak imbas di komputer desktop anda. Gunakan WinSCP untuk menyalinnya ke direktori ~ pi di Pi-Zero

Selepas melakukan # 1 2 atau 3 di atas …

cd ~

tar -xzvf node_rgb.tgz tree node_rgb… node_rgb ├── public │ ├── Dow_Jones_Index.html │ ├── index.html └── └── style.css ├── rgbDriver ├── rgbDriver.c ├── rgb_main. js ├── start_rgb ├── kill_rgb └── track_dji

RgbDriver yang boleh dilaksanakan (dari atas) yang dihasilkan dapat digunakan secara bebas dari proses antara muka Node.js.

Untuk mengesahkan bahawa pemacu dan perkakasan ini berfungsi, set suapan tiga nilai (0-255), dipisahkan dengan spasi, kepada pemacu. Suka 'echo 255 0 0 |./rgbDriver 'untuk merah atau' gema 0 255 0 |./rgbDriver 'untuk hijau. Perhatikan bahawa "./" memberitahu OS untuk mencari program kami 'rgbDriver' dalam direktori semasa. Apabila anda mengeluarkan a ^ c (cntl-c) untuk menghentikan pemacu, led mungkin atau tidak akan terus menyala. Sebagai alternatif, anda boleh memberi nilai secara interaktif kepada nilainya. Cuba taip, dari baris arahan, baris ini satu demi satu dan perhatikan LED.

./rgbPemandu

0 255 0 100 0 100 255 255 0… dll… ^ c

Pastikan anda tidak menjalankan 2 proses ini secara selari.

Untuk melancarkan rangkaian aplikasi perisian penuh, termasuk pelayan Node.js gunakan arahan ini:

sudo node rgb_main.js

Kemudian gunakan cntl-c semasa anda mahu menghentikan pelayan Node.js. Lancarkan dengan

sudo node rgb_main.js &

untuk menjalankannya di tanah belakang, tetapi kemudian anda harus menggunakan perintah 'sudo kill -9 pid' untuk menghentikannya. Sekiranya arahan ini kelihatan asing bagi anda, maka tinjau output arahan ini: 'man kill' & 'man sudo'.

Gunakan penyemak imbas, di desktop, tablet atau telefon, yang disambungkan ke rangkaian tempatan anda. Pergi ke https:// raspberrypi: 8080 / atau jika itu tidak berfungsi gunakan alamat ip peranti (diperoleh dari cmd 'ifconfig') seperti 192.168.1.15 ditambah spesifikasi port: 8080 atau jika menggunakan Pi-Zero's GUI: localhost: 8080 akan berfungsi.

Kendalikan slaid RGB, di halaman yang muncul, dan perhatikan lampu RGB-LED mengikuti.

Perintah berguna lain Perhatikan bahawa jika anda berakhir dengan lebih dari satu 'rgbDriver' berjalan pada satu masa, anda mungkin akan mendapat tingkah laku yang tidak dapat diramalkan. Sekiranya anda mencuba dan menjalankan salinan rgb_main.js kedua, ia akan menjadi salah.

Perintah ini akan menyenaraikan semua proses yang berkaitan:

ps aux | grep rgb

Perintah ini akan membunuh semua proses nodeJS, bersama dengan proses anak 'rgbDriver':

sudo ps aux | simpul grep. * rgb | awk '{print "sudo kill -9" $ 2}' | sh

Operasi berdiri sendiri

Untuk membolehkan Pi-Zero memulakan aplikasi pelayan Node.js semasa ia boot … menggunakan editor kegemaran anda (mis. Nano ~ /.bash_profile), ketik baris berikut & simpan ke ~ /.bash_profile

cd node_rgb

sudo node rgb_main.js &

Untuk mengelakkan daripada menerima mesej ralat ketika membuka tetingkap terminal, gunakan pengkodan bersyarat seperti skrip shell dalam fail 'start_rgb'

Semasa Pi-Zero berjalan tertanam, tanpa papan kekunci, tetikus atau monitor; Antaramuka Pengguna Grafik akan memakan masa CPU yang minimum, kerana tidak akan ada interaksi pengguna. Saya tidak mematikan permulaan GUI automatik, kerana Pi-Zero mempunyai lebih banyak sumber daripada yang diperlukan, dalam kes ini; dan saya suka dapat menyambungkan beberapa kabel dan menggunakannya, pada bila-bila masa di masa hadapan. Walaupun begitu, ini tidak diperlukan kerana anda boleh menggunakan terminal SSH jauh (mis. PuTTY) untuk melakukan penyelenggaraan yang diperlukan.

Menggunakannya sebagai monitor Acara

Saya membuat laman web untuk memantau perubahan harian dalam Indeks Dow Jones. Sumbernya boleh digunakan sebagai panduan untuk halaman anda sendiri yang menggunakan beberapa data web dan mendorong penunjuk Pi-Zero anda dengan sewajarnya. Halaman ini mendapatkan data (json) dari perkhidmatan web Google. Terdapat banyak bentuk perkhidmatan web, jadi anda harus meneliti bentuk yang ingin anda gunakan untuk menentukan kod JavaScript untuk mengaksesnya.

Sekiranya anda ingin menggunakan peranti anda, seperti yang saya lakukan, sebagai Indikator perubahan Indeks Dow yang berdedikasi, berdiri sendiri, tambahkan baris ini ke hujung fail ~ /.bash_profile, atau seperti yang dikehendaki SSH dan keluarkan baris arahan kedua. Sekiranya anda seterusnya ingin menggunakan alat kawalan jauh 'kill -9' yang dihasilkan adalah proses penyemak imbas epiphany.

tidur 20

penyemak imbas epiphany - paparan =: 0.0 localhost: 8080 / Dow_Jones_Index.html &

Indikator akan menerangi kelabu muda yang diberi nilai 0. Ia menjadi semakin hijau dengan nilai yang lebih tinggi. Ia adalah Hijau tulen yang paling terang pada kira-kira 250. Nilai yang lebih tinggi namun pada mulanya menyebabkan kilat cetek, hingga kilat paling dalam sekitar 500. Untuk nilai negatif (penurunan harian di Dow) ia serupa, tetapi dalam warna Merah.

KEMASKINI Mei 2018

Saya telah membuat laman web baru (SolarStorm_devCon.html, dilampirkan sebagai fail.txt, kerana fail.html tidak dimuat naik) yang mengumpulkan maklumat ribut GeoMagnetik (yang dapat meramalkan CME, EMP) dan menggunakannya untuk menunjukkan warna skala yang menggambarkan semacam Indeks 'DevCon' Geo-Storm. menunjukkan potensi bencana disebabkan oleh denyutan Elektromagnetik (EMP) yang disebabkan oleh cuaca ruang angkasa, kemungkinan suar suria atau pelepasan jisim Coronal (CME). Gunakan seperti anda akan menggunakan "Dow_Jones_Index.html".

Langkah 6: Kawalan Halaman Web Jauh

Image
Image

Pada ketika ini anda dapat mengawal Lampu warna IOT anda dari mana sahaja di rangkaian tempatan anda. Cara membuatnya dapat dilihat di internet awam bukan merupakan sebahagian daripada arahan ini. Sekiranya anda menyediakan IP awam untuk peranti anda, maka anda perlu gunakan IP tersebut dalam perintah soket terbuka dalam JavaScript halaman anda (mis. ~ / node_rgb / public / index.html)

Saya bercadang untuk menggunakan peranti IOT Pi-Zero saya sebagai penunjuk warna masa nyata untuk perubahan dalam Indeks Dow Jones. Saya membuat halaman yang melakukannya, yang mendapat data json dari google.com/finance. Saya seterusnya membuat beberapa laman web untuk menunjukkan pelbagai penggunaan untuk peranti IOT kecil ini. Daripada meletakkan PiZero saya di Internet awam, saya menghoskan halaman di pelayan web awam saya yang sedia ada (sekarang @ 71.84.135.81 aka: https://raspi.ddns01.com/ semasa Pelayan Nama Domain Dinamik percuma saya beroperasi), yang berjalan pada versi asli B Raspberry-Pi.

Dalam kod pada halaman terpencil saya, saya membuka sambungan soket ke 192.168.1.41:8080Saya telah menetapkan ip Pi-Zero saya ke 192.168.1.41. Untuk melakukan hal yang sama, ikuti petunjuk di setup-raspberry-pi-with-wifi-and-a-static-ip di bawah tajuk: Alamat IP Statik. Oleh itu, jika anda menetapkan PiZero anda berada di 192.168.1.41 di rangkaian tempatan anda, halaman ini, dibuka dari laman web saya, akan berkomunikasi dengan peranti anda, kerana sambungannya dilakukan dari pihak pelanggan.

Berikut adalah halaman-halaman yang saya gunakan untuk menguji dan mengendalikan peranti pencahayaan Pi-Zero IOT saya. Sekiranya anda memunculkan halaman ini (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ atau mana-mana halaman yang dibingkai pada halaman tersebut) JavaScript sisi pelanggan akan memandu lampu IOT yang anda buat (memandangkan ia berjalan di url ini "192.168.1.41:8080") Jika anda mahu, anda boleh menyalin sumber mana-mana halaman tersebut dan mengubah mengikut keinginan anda.

Dengan halaman pertama, anda boleh menetapkan warna pada peranti anda. Lampu LED dan warna yang anda lihat di laman web akan mengesan dengan baik. Nilai resister yang digunakan dapat disesuaikan (dan juga monitor) untuk menjadikannya lebih sesuai. Saya menghabiskan sedikit masa untuk memastikan bahawa mereka sesuai. Halaman ini akan memperbaharui warnanya setiap kali orang lain mengubah warna dan pelayan menghantar mesej maklumat yang dikemas kini.

Satu halaman adalah Lampu Jalan dikawal dengan butang sederhana.

Terdapat halaman yang dirancang untuk mengesan pertandingan sukan (mis. Bola sepak, bola keranjang, besbol), pilihan raya, atau bahkan disesuaikan untuk penunjuk dana atau penunjuk gaya tahap amaran DEFCON. Markah (atau undi pilihan raya) dapat diperoleh secara automatik dari perkhidmatan web atau mengikis beberapa laman web lain. Saya tidak mempunyai suapan automatik yang mendorong halaman Contest_demo saya. Seseorang yang mempunyai pengetahuan yang tepat dapat menambahkan pemacu kuasa untuk menyalakan lampu banjir LED berkuasa tinggi dan memandikan bilik (atau bar sukan) dengan warna pasukan ketika mereka berada di depan. Sayangnya saya terlambat dengan arahan ini untuk pesta bola sepak tahun ini, tetapi tepat pada waktunya untuk pilihan raya 2016.

Kemudian ada halaman yang serupa dengan yang akan saya gunakan untuk mengubah peranti saya menjadi penunjuk penjejakan Dow Jones. Gelangsar dan butang hanya terdapat di halaman demo DJI untuk tujuan demonstrasi. Di sumber untuk halaman ini ada kod yang saya kembangkan untuk mewarnai semula gambar yang diilhamkan oleh layar hijau; dengan komen yang cukup sehingga anda mungkin menganggapnya berguna.

Hanya yang pertama dari 4 halaman ini (bersama dengan halaman index.html berdasarkan Pi-Zero) yang mendengar mesej kemas kini pelayan, dan memuat semula dengan sewajarnya. Semua selebihnya hanya dihantar ke pelayan.

Disyorkan: