Sistem kawalan rumah pintar berdasarkan Raspberry Pi. Akses jauh kepada penderia menggunakan Raspberry Pi dan Rangka Kerja WebIOPi

Mukadimah

Topik ini tidak habis-habis, dan nota ini bukanlah panduan untuk bertindak, tetapi percubaan untuk tidak melupakan bahawa saya telah mencuba.

Daripada tiga pilihan komputer Raspberry Pi A, B dan B+, saya berjaya berkenalan dengan dua yang terakhir. Model B telah dijual sejak Februari 2012, dan B+ sejak Julai 2014. Dari segi pengendalian kamera, tiada perbezaan antara model ini. Ia dilengkapi dengan pemproses ARM11 Broadcom BCM2835 dengan kelajuan 700 MHz dan modul memori capaian rawak 512MB.

Perbezaan dalam bilangan port USB dan dalam lokasi serta jenis penyambung. Model B mempunyai input audio dan video yang berasingan serta slot untuk kad SD, dan D+ mempunyai penyambung gabungan untuk audio dan video, seperti pada kebanyakan kamera, dan slot untuk kad memori SD mikro. Sesetengah jenis perlindungan dan penstabilan kuasa hanya wujud jika 5 V dibekalkan kepada penyambung USB mikro, dan bahagian ini dilaksanakan secara berbeza dalam model ini. Jika anda membekalkan kuasa kepada penyambung GPIO, maka anda perlu menjaga kualiti kuasa itu sendiri. Kejayaan Projek Arduino membuktikan bahawa untuk banyak tugas, produktiviti bukanlah kebahagiaan dan perlu menggunakan komputer produktiviti yang diperlukan untuk menyelesaikan tugas. Anggaran menunjukkan bahawa prestasi pemproses pusat Raspberry Pi adalah setanding dengan 300 MHz Pentium II pada tahun 1997. Walau bagaimanapun, GPU Broadcom VideoCore IV 250 MHz agak keluar dari abad ke-21 dan menyediakan output video 1080p pada 30 bingkai sesaat dan penyahkodan perkakasan H.264, MPEG-4 AVC.

Komputer Raspberry Pi model B dan B+ (kiri)

Model B dalam kes proprietari.

Walaupun sarung itu mempunyai slot untuk kabel yang menghala ke kamera, ia tidak banyak digunakan semasa membuat persediaan penangkapan. Perumahan untuk kamera dan komputer mesti dibuat mengikut tugas. Contohnya, untuk kamera luar dengan bateri yang luas dan dengan hayat bateri yang panjang, saya membuat reka bentuk berikut.

Penyesuai 802:11n yang tidak dinamakan berfungsi di luar kotak, tetapi terus kehilangan rangkaian. Kami membeli dua penyesuai luaran yang berbeza daripada jenama yang berbeza, tetapi apabila diteliti lebih dekat, mereka ternyata berada pada cip yang sama: REALTEK RTL8188ETV. Pemacu bangunan daripada sumber menghasilkan pemacu tidak berfungsi untuk Raspberry Pi. Walau bagaimanapun, binari yang telah dikompilasi ditemui di rangkaian di tapak www.fars-robotics.net / dan dengan mereka semuanya berfungsi dengan stabil. Walau bagaimanapun, laluan ini mempunyai musuh besar - sudo naik taraf apt-get. Kemas kini sistem seterusnya, yang turut menjejaskan kamera dan oleh itu wajar, menyebabkan penyesuai tidak berfungsi dan tidak muncul di tapak kemas kini yang disebutkan di atas. Carian menunjukkan bahawa saya bukan orang pertama yang mengemas kini, dan penyelesaian telah ditemui malah binari pemacu untuk versi terkini telah disiarkan.

Penyesuai USB-Bluetooth (pertama dalam gambar) boleh digunakan untuk mengawal kamera, tetapi sambungan mesti diwujudkan sebelum memulakan program, dan oleh itu ternyata lebih mudah untuk menggunakan penyesuai com-Bluetooth, kerana siri port adalah dari dan di Afrika port bersiri dan tidak kira sama ada program disambungkan tidak akan bersumpah. Untuk memasangkan peranti dalam kes ini, tiada apa yang diperlukan daripada OS; jika kuasa dibekalkan kepada penyesuai, sambungan boleh dibuat dengannya.

Dengan menyambungkan penerima isyarat IR digital (contohnya TSOP1736) ke GPIO, anda boleh menggunakan hasil projek LIRC untuk mengatur kawalan kamera daripada alat kawalan jauh alat kawalan jauh.

Dalam foto di bawah, pengesan foto dimasukkan ke dalam papan pengembangan, yang dalam kes ini hanya diperlukan untuk memudahkan sambungan.

Terdapat banyak sistem pengendalian untuk menggunakan komputer. Sebagai contoh, saya dapat memasang Slackware ARM tanpa sebarang masalah, tetapi ia ternyata sistem asas yang besar yang masih perlu disesuaikan untuk berfungsi dengan kamera. Oleh itu, walaupun saya menyukai pengedaran ini, saya memilih sistem yang paling meluas dan, dengan itu, sistem yang paling disesuaikan dan didokumenkan - Raspbian (Debian Wheezy). Ia menyokong kamera di luar kotak, tetapi apabila anda menghidupkannya buat kali pertama, anda mesti membenarkan akses kepadanya dengan memanggil sudo raspi-config. Sistem pengendalian dipasang dengan menyalinnya ke kad memori menggunakan arahan dd, dan di sini saya perhatikan bahawa sistem itu ternyata sangat pemilih tentang kad. Percubaan saya untuk menggunakan kad 4 GB lama dalam kebanyakan kes berakhir dengan kegagalan, sama ada ia tidak direkodkan atau sistem tidak bermula daripada kad ini.

Paling senarai penuh sumber, pada pendapat saya, terletak di elinux.org/RPi_Hub. Dan sewajarnya, bahagian khusus untuk kamera: elinux.org/Rpi_Camera_Module.

Dari sudut pandangan membina sistem anda sendiri yang berbeza daripada yang dikeluarkan secara besar-besaran, minat yang paling besar adalah pada keupayaan besar kawalan jauh kamera. Ini dan rangkaian berwayar, dan Wi-Fi, dan Bluetooth, dan alat kawalan jauh IR, dan input digital yang membolehkan anda meninjau kedua-dua butang paling mudah dan mengatur pemindahan data melalui pelbagai protokol bersiri.

Anda boleh menyambung ke rangkaian sama ada melalui kabel pasangan terpiuh melalui Ethernet atau melalui Wi-Fi. Anda boleh menyambung ke penghala, atau terus. Apabila menyambung terus melalui Wi-Fi, kami menukar telefon menjadi penghala, dan dalam kes Ethernet, jika rangkaian tidak diprakonfigurasikan, anda boleh menetapkan IP komputer tempatan dan menyediakan rangkaian dengan arahan:

Bash-4.2# ifconfig eth0 192.168.0.214 ke atas

Dan matikan dengan arahan:

Bash-4.2# ifconfig eth0 turun

Dalam kes sambungan rangkaian, cara paling mudah untuk mengakses Raspberry Pi dan, oleh itu, kamera adalah untuk menaip arahan pada baris arahan: ssh -l pi 192.168.0.198 di mana 192.168.0.198 ialah alamat Raspberry Pi dan masukkan kata laluan raspberry

Bash-4.1$ ssh -l pi 192.168.0.198 [e-mel dilindungi] Kata laluan: Linux raspberrypi 3.12.22+ #691 PREEMPT Rab Jun 18 18:29:58 BST 2014 armv6l Log masuk terakhir: Sab Sep 27 16:49:37 2014 daripada 192.168.0.215 pi@raspberrypi ~ $

Alamat IP kekal boleh diberikan dengan mengedit fail etc/network/interfaces, sesuatu seperti berikut. Itu. komen keluar baris dengan dhcp dan tambah tetapan yang sepadan dengan rangkaian tempatan anda.

Auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 alamat statik inet 192.168.0.199 netmask 255.255.255.0 rangkaian 192.168.0.0 siaran 192.168.0.255 get laluan 192.168.0.255 wlan inet wlan 192.1 pa- roam /etc/wpa_supplicant /wpa_supplicant.conf #iface lalai inet dhcp iface lalai alamat statik inet 192.168.0.198 netmask 255.255.255.0 rangkaian 192.168.0.0 siaran 192.168.0.255 get laluan 192.168.168.168

Anda perlu memasang beberapa jenis Klien SSH pada telefon Android anda. Saya ada . ini keputusan bersama sama dalam gaya dan keupayaan untuk bekerja dari komputer besar. Terdapat juga banyak program yang direka khusus untuk bekerja dengan Raspberry Pi. Saya cuba bekerja dengan dan . Walaupun yang pertama sudah mempunyai pratetap untuk bekerja dengan kamera, saya lebih suka pilihan untuk mengarang senarai sendiri Saya lebih menyukai arahan yang ditawarkan dalam yang kedua.

Kini kami mempunyai keupayaan untuk mengakses kamera secara terus dan, sebagai contoh, menjadikannya mengambil gambar apabila kami menekan Enter:

Pi@raspberrypi ~ $ raspistill -o foto%03d.jpg -k -v -t 999999
raspistill Camera App v1.3.6 Lebar 2592, Tinggi 1944, kualiti 85, nama fail foto%03d.jpg Kelewatan masa 999999, Raw no Thumbnail didayakan Ya, lebar 64, tinggi 48, kualiti 35 Pautan ke bingkai terkini didayakan tiada Pratonton resolusi penuh Tiada Tangkap kaedah: Tangkap pada pratonton tekan kekunci Ya, Skrin penuh Ya Tetingkap pratonton 0,0,1024,768 Kelegapan 255 Ketajaman 0, Kontras 0, Kecerahan 50 Ketepuan 0, ISO 0, Penstabilan Video Tidak, Pampasan pendedahan 0 Mod Pendedahan "auto", Mod AWB "auto", Kesan Imej "tiada" Mod Pemeteran "purata", Kesan Warna Didayakan Tidak dengan U = 128, V = 128 Putaran 0, hflip No, vflip No ROI x 0.000000, y 0.000000, w 1.000000 h 1.000000 Komponen Kamera selesai Peringkat sambungan pengekod Selesai port ke paparan video. Menyambung port pegun kamera ke port input pengekod Tekan Enter untuk menangkap, X kemudian ENTER untuk keluar

Program raspistill menyediakan akses kepada hampir semua keupayaan kamera.

Perintah parameter imej -?, --help: Maklumat bantuan ini -w, --width: Tetapkan lebar imej -h, --height: Tetapkan ketinggian imej -q, --quality: Tetapkan kualiti jpeg<0 to 100>-r, --raw: Tambahkan data bayer mentah ke metadata jpeg -o, --output: Nama fail keluaran (untuk menulis ke stdout, gunakan "-o -"). Jika tidak dinyatakan, tiada fail disimpan -l, --latest: Pautkan imej lengkap terkini ke nama fail -v, --verbose: Output maklumat verbose semasa run -t, --timeout: Masa (dalam ms) sebelum mengambil gambar dan dimatikan (jika tidak dinyatakan, tetapkan kepada 5s) -th, --thumb: Tetapkan parameter thumbnail ( x:y:kualiti) atau tiada -d, --demo: Jalankan mod tunjuk cara (kitaran melalui pelbagai pilihan kamera, tiada tangkapan) -e, --pengekodan: Pengekodan untuk digunakan untuk fail output (jpg, bmp, gif, png) -x, --exif: teg EXIF ​​​​untuk digunakan pada tangkapan (format sebagai "kunci=nilai") atau tiada -tl, --timelapse: mod Timelapse. Mengambil gambar setiap ms -fp, --fullpreview: Jalankan pratonton menggunakan resolusi tangkapan pegun (mungkin mengurangkan fps pratonton) -k, --tekan kekunci: Tunggu antara tangkapan untuk ENTER, X kemudian ENTER untuk keluar -s, --signal: Tunggu antara menangkap untuk SIGUSR1 daripada proses lain -g, --gl: Lukis pratonton kepada tekstur dan bukannya menggunakan komponen pemaparan video -gc, --glcapture: Tangkap penampan bingkai GL dan bukannya imej kamera Perintah parameter pratonton -p, -- pratonton: Pratonton tetapan tetingkap<"x,y,w,h">-f, --skrin penuh: Mod pratonton skrin penuh -op, --opacity: Pratonton kelegapan tetingkap (0-255) -n, --nopreview: Jangan paparkan tetingkap pratonton Perintah parameter imej -sh, --sharpness: Tetapkan imej ketajaman (-100 hingga 100) -co, --kontras: Tetapkan kontras imej (-100 hingga 100) -br, --kecerahan: Tetapkan kecerahan imej (0 hingga 100) -sa, --tepu: Tetapkan ketepuan imej (- 100 hingga 100) -ISO, --ISO: Tetapkan tangkapan ISO -vs, --vstab: Hidupkan penstabilan video -ev, --ev: Tetapkan pampasan EV -ex, --dedahan: Tetapkan mod pendedahan (lihat Nota) - awb, --awb: Tetapkan mod AWB (lihat Nota) -ifx, --imxfx: Tetapkan kesan imej (lihat Nota) -cfx, --colfx: Tetapkan kesan warna (U:V) -mm, --pemeteran: Set mod pemeteran (lihat Nota) -reput, --putaran: Tetapkan putaran imej (0-359) -hf, --hflip: Tetapkan flip mendatar -vf, --vflip: Tetapkan flip menegak -roi, --roi: Tetapkan rantau yang diminati (x,y,w,d sebagai koordinat dinormalkan ) -ss, --shutter: Tetapkan kelajuan pengatup dalam mikrosaat Pilihan mod pendedahan: auto,malam,pratonton malam,lampu latar,lampu sorot,sukan,salji,pantai,sangat panjang,fps tetap, antigoncang,pilihan mod AWB bunga api: mati,auto,matahari,awan, teduh,tungsten,pendarfluor,pijar,denyar,ufuk Pilihan mod Kesan Imej: tiada,negatif,solarise,lakar,denoise,emboss,cat minyak,menetas,gpen,pastel , cat air,filem,kabur,tepu,tukar warna,washedout,posterise, colourpoint,colourbalance,kartun Pilihan Mod Pemeteran: purata,titik,lampu belakang,matriks Perintah parameter Pratonton -gs, --glscene: GL scene square,teapot,cermin,yuv ,sobel -gw, --glwin: tetapan tetingkap GL<"x,y,w,h">

Jika anda perlu menggunakan komputer jauh gambar hidup daripada kamera, maka anda perlu menggunakan program raspivid. Terdapat dua pilihan yang mungkin di sini.

Yang pertama menggunakan netcat. Mula-mula kita jalankan pada komputer tempatan:

Nc -l -p 5001 | mpplayer -fps 31 -cache 1024 -

Dan kemudian pada Raspberry Pi:

Raspivid -t 999999 -w 640 -j 480 -fps 10 -o - | nc -v 192.168.0.24 5001

Di mana 192.168.0.24 ialah alamat IP komputer tempatan.

Pilihan kedua ialah menggunakan VLC. Saya tidak dapat mengulangi pencapaian ini semasa menulis artikel ini. Saya mengikut arahan yang digariskan. Sebabnya, ternyata, adalah kemas kini kepada versi 3.12.28+. Selesai dengan memasang semula VLC.

Sudah tentu akan ada kelewatan, dan ia akan berbeza sedikit bergantung pada tetapan komputer kawalan.

Untuk memudahkan kerja dengan baris arahan, anda boleh mencipta antara muka grafik. Ia boleh dijalankan sama ada pada komputer jauh, atau jika anda memasang VNC, anda boleh mendapatkan akses jauh ke desktop dan, sewajarnya, jalankannya pada Raspberry Pi. Terdapat penyelesaian sedia: Pi Vision dan RaspiCam Remote. Satu lagi cara standard untuk mengawal kamera ialah python, yang mana terdapat picamera perpustakaan khas. Bagi saya, perkara utama ialah kebolehulangan keputusan, i.e. Pertama sekali, saya memerlukan keupayaan untuk menetapkan kelajuan pengatup dan sensitiviti daripada program. Kerana ia penyelesaian siap sedia Saya tidak menemuinya dengan segera, jadi saya menulis sendiri. (Pilihan Pi Sight tidak sesuai dengan saya.) Saya merancang untuk melihat program ini dengan lebih terperinci dalam artikel berasingan, tetapi buat masa ini, bagi mereka yang ingin mendalaminya, saya menyediakan kod sumber untuk Python 2.7.3 dan picamera 1.8.

Untuk mengakses folder Raspberry Pi melalui rangkaian, anda boleh menaip alamat berikut dalam Dolphin:

Ikan:// [e-mel dilindungi]:22/home/pi/

Untuk mengakses desktop dari komputer jauh, saya memasang pada Raspberry Pi yang menjalankan OS Raspbian:

Sudo apt-get install tightvncserver

Jika anda ingin menggunakan papan keratan dengan mesin tempatan pada masa hadapan melalui menu F8, kemudian pasang:

Sudo apt-get install gsfonts-x11 xfonts-75dpi xfonts-100dpi autocutsel

Dan dalam fail /home/pi/.vnc/xstartup kami menambah baris autocutsel -fork selepas baris xsetroot -kelabu pepejal.

Dayakan vncserver:

Pi@raspberrypi ~ $ vncserver:1 -geometry 800x480 Desktop "X" baharu ialah raspberrypi:1 Memulakan aplikasi yang dinyatakan dalam /home/pi/.vnc/xstartup Log fail ialah /home/pi/.vnc/raspberrypi:1.log

Untuk akses daripada komputer meja dan komputer riba yang menjalankan Slackware, saya memasang pakej tightvnc.

Kami melancarkan vncviewer, dalam tetingkap yang muncul, masukkan, dalam kes saya, alamat 192.168.0.198:1, kemudian kata laluan dan kami mendapat:

Sekarang kami melancarkan program kawalan kamera. Apabila dikawal dari komputer jauh menggunakan program ini, pratonton hanya boleh dilakukan pada monitor yang disambungkan terus ke Raspberry Pi.

Terdapat banyak aplikasi untuk Android. Ripple Jauh, VNC Viewer, DesktopVNC nampaknya agak boleh diterima oleh saya. Dalam kes saya, untuk menyambung, saya perlu menetapkan alamat dan port 5901 dan apabila menyambung, masukkan kata laluan yang ditentukan untuk vncserver. Masalah biasa dengan kaedah kawalan kamera ini ialah emulasi tetikus, yang skrin kecil Sukar untuk memanggil telefon dengan selesa. Pada skrin kecil telefon, mungkin yang paling mudah bagi saya ialah VNC Viewer dengan penempatan tetap butang tetikus di bahagian bawah skrin.

Jika kita mengabaikan keutamaan individu untuk kemudahan antara muka, program yang cukup telah ditulis untuk sambungan rangkaian untuk melaksanakan sebarang jenis penangkapan. Apabila bekerja dengan komputer riba, tightvnc, pada pendapat saya, membolehkan anda bekerja dengan agak selesa dengan program kawalan kamera yang dijalankan pada Raspberry Pi. Jika anda memerlukan imej langsung di atasnya, maka mungkin patut menulis beberapa jenis antara muka kepada arahan yang dihantar melalui SSH untuk kemudahan bertukar antara mod video penstriman untuk tontonan dan mod penangkapan foto. Dalam kes ini, saya tidak nampak apa-apa kelebihan tertentu dalam menggunakan python dan anda boleh mengehadkan diri anda untuk memanggil raspistill dan raspivid.

Hari ini kita akan belajar mengurus menghidupkan dan mematikan geganti dengan menggunakan raspberi pi 2, sebagai contoh kita akan hidupkan dan matikan saluran keluar, mengurus lampu atau peralatan elektrik lain. sudah biasa geganti SRD-05VDC-SL-C.
1) Menyambung dia kepada pai raspberi dan ke talian 220V. Saya hanya menyambungkan satu geganti, tetapi saya mempunyai dua di papan.

Saya akan menambah gambar penyambung di sini. raspberi GPIO pi 2

GPIO raspberi pi 2

Dalam gambar di bawah rajah sambungan geganti ke raspberry pi 2 dan talian 220 V.

Gambar rajah sambungan geganti ke raspberry pi 2 dan talian 220 V
(imej boleh diklik)

Biar saya terangkan sekali lagi.
Menurut litar geganti, ia disambungkan pada satu sisi ke port GPIO raspberry pi 2, dan di sebelah lagi ke soket 220 V. Terdapat 4 pin pada papan geganti - GND, IN1, IN2, VCC.
a) GND pada geganti mesti disambungkan kepada GND pada raspberry pi.
b) IN1 dan IN2 hanyalah dua geganti. Saya menyambungkan IN1 ke GPIO17 (pin 11), dan IN2 ke GPIO25 (pin 22). Saya hanya mempunyainya percuma, anda mungkin mempunyai penyambung GPIO lain secara percuma.
c) sambungkan 5v ke pin VCC pada geganti pada raspberry pi 2. Saya memutuskan untuk menggunakan pin No. 2 pada raspberi.
Terdapat juga tiga kenalan di papan berhampiran setiap geganti. Dari talian 220V saya menyambung wayar untuk menghubungi NO1 pada geganti 1. Saya menyambungkan kenalan COM1 pada geganti 1 ke salah satu penyambung soket. Saya segera membekalkan 220 V ke kenalan kedua soket, iaitu, ia pergi terus, memintas geganti dan raspberi. Jika anda menyambungkannya bukan ke NO1, tetapi ke NC1, maka kuasa akan dibekalkan secara berterusan, soket akan membekalkan arus walaupun tanpa raspberi, jadi saya tidak menggunakan NC1.
DENGAN sambungan fizikal Saya rasa sudah jelas. Berhati-hati. Anda melakukan segala-galanya atas risiko dan risiko anda sendiri.

Mari kita beralih ke bahagian perisian.
2) tulis 2 skrip mudah:
sudo nano /script/gpio/relay01-01-down.sh

#!/bin/bash

echo 17 > /sys/class/gpio/export
bergema >
echo 1 > /sys/class/gpio/gpio17/value

dan skrip kedua:
sudo nano /script/gpio/relay01-01-up.sh
kandungannya hendaklah seperti ini:
#!/bin/bash

echo 17 > /sys/class/gpio/export
bergema > /sys/class/gpio/gpio17/direction
echo 0 > /sys/class/gpio/gpio17/value

3) menjadikannya boleh dilaksanakan:
sudo chmod +x /script/gpio/relay01-01-down.sh
sudo chmod +x /script/gpio/relay01-01-up.sh

Secara umum, anda sudah boleh bermain-main dengan menyambungkan lampu ke soket dan menjalankan setiap skrip secara bergilir-gilir, yang akan menghidupkan dan mematikan lampu
sudo /script/gpio/relay01-01-up.sh
sudo /script/gpio/relay01-01-down.sh

4) Tetapi lebih menarik untuk membuat butang kawalan geganti dalam antara muka web. Pelayan web telah pun dipasang, jadi dalam akarnya (secara lalai ini ialah direktori /var/www/) kami menulis kod dengan butang dalam fail index.php. Kod itu mungkin.
Di sana, dalam akar pelayan web, kami mencipta fail style.css dengan kandungan yang boleh .

Kami pergi ke pelayan web http://ip-address-raspberru-pi/ dan sepatutnya melihat dua butang (ia belum berfungsi lagi).

5) tambah hak untuk www-data seperti berikut:
sudo visudo
tambah di sana:
www-data SEMUA=(SEMUA) NOPASSWD: SEMUA

6) cuba tekan butang dalam antara muka web. Mereka sepatutnya sudah bekerja dan mengklik kayu.
Hasil binaan:

Protokol kawalan pembuat kopi hiperteks HTCPCP/1.0, yang muncul pada tahun 1998, kini tidak sepatutnya dilupakan. Untuk menghidupkan semula idea yang dimasukkan oleh penciptanya, kami akan melaksanakan pembuat kopi yang dikawal oleh Raspberry Pi.

Ramai penggemar kopi mengimpikan kopi panas menunggu mereka apabila mereka bangun. Impian itu ditimpa oleh perbualan tentang "rumah pintar", pengawal, sensor, dan kemudian saya juga mengarahkan papan Raspberry Pi (RPi) "untuk bermain" - secara umum, nasibnya telah diputuskan. Jika pada tahun 1998 mengawal pembuat kopi melalui Internet benar-benar kelihatan seperti menyeronokkan, pada masa kini adalah mustahil untuk melakukannya sendiri. Dengan mainan seperti RPi, kegembiraan akan berganda. Berlatarkan latar belakangnya, Arduino Mega 2560 mengumpul habuk di dalam kotak kelihatan seperti jarang berlaku yang secara tidak sengaja jatuh ke masa depan dari dunia pemproses 8-bit pada tahun 80-an dan 90-an, yang atas sebab tertentu Wi-Fi, perisai dan sensor telah dilampirkan.

Tetapi mari kita kembali ke dapur untuk minum kopi. Kami menghidupkan pembuat kopi menggunakan geganti, kami mengawal geganti dengan RPi, akses kepada RPi dari penyemak imbas melalui Wi-Fi. Bangun, terus dari katil menggunakan penyemak imbas pada telefon anda. Dan kami melihat bagaimana ia dihasilkan melalui kamera web. Atau kami mengesan pergerakan, dan kopi mula dibancuh sebaik sahaja kami memasuki dapur atau menghidupkan lampu. Seorang geek sebenar akan dapat menghidupkan pembuat kopi dari katil melalui SSH, seorang pemalas sebenar - dengan hanya pergi ke dapur, dan pengguna mudah seperti saya - melalui penyemak imbas.

MEMILIH PEMBUAT KOPI

Sedikit yang diperlukan daripada pembuat kopi. Jenis - titisan: harganya jauh lebih rendah, dan kopi, mengikut citarasa saya, lebih lembut daripada espresso. Dan yang paling penting - sekurang-kurangnya elektronik. Keseluruhan kawalan harus terdiri daripada suis mekanikal tunggal supaya pembuat kopi boleh dihidupkan hanya dengan menggunakan kuasa padanya. Di rumah, tidak ada keperluan untuk pembuat kopi volum besar; kuasa tinggi juga tidak diperlukan: arus yang lebih rendah bermakna kurang permintaan pada kawalan komponen. Walaupun dalam pembuat kopi jenis ini adalah mustahil untuk mengautomasikan sepenuhnya proses penyediaan dan anda perlu mengisi semula dengan air dan kopi tanah setiap petang.

Pilihan pembuat kopi dengan volum dan kuasa kecil adalah kecil, kebanyakan tawaran mempunyai kapasiti lebih daripada satu liter, tetapi hampir serta-merta saya menyukai Moulinex BCA 1.L1 Little Solea. Kuasa 640 W, periuk kopi 0.6 l.

Kami memutarkan segala-galanya bersama-sama

Semakan pertama papan RPi mempunyai fius yang tidak baik (Rajah 2), kerana hampir semua peranti USB perlu disambungkan melalui hab USB dengan kuasa tambahan. Isu ini telah dibetulkan dalam semakan kemudian, tetapi disebabkan bekalan kuasa yang rendah, anda mungkin masih memerlukan hab USB.

Kedua-dua monitor yang saya cuba mempunyai sempadan hitam di sekeliling tepi skrin pada tetapan lalai. Ini boleh diperbetulkan dengan tetapan mod imbasan berlebihan; dalam kes saya, ini telah diselesaikan dengan mematikannya dalam menu konfigurasi.

sistem operasi

Sistem pengendalian utama pada masa ini ialah Raspbian, berdasarkan Debian, dengan sokongan untuk coprocessor perkakasan untuk operasi titik terapung. Pada halaman muat turun anda boleh memuat turun bukan sahaja ia (anda memerlukan Raspbian "wheezy"), tetapi juga beberapa yang lain, juga berdasarkan Linux, bersama-sama dengan utiliti yang diperlukan.

Imej kad perlu dimuat turun ke cakera, nyahzip, kemudian, jika semuanya dilakukan di bawah Windows, dimuat naik menggunakan utiliti Win32DiskImager (pautan ada pada halaman muat turun) ke kad SD, saiznya hendaklah sekurang-kurangnya 2 GB . Tidak setiap kad SD akan berfungsi - terdapat senarai kad yang serasi dan peralatan lain, tetapi walaupun menggunakan kad daripada senarai ini tidak menjamin bahawa kad tertentu bukan kad palsu. Jika RPi tidak dapat boot daripada imej yang baru anda muat naik ke kad, perkara pertama yang perlu dicuba ialah menukar kad SD.

Selepas memasang kad SD dalam RPi, menghidupkannya dan boot (nama pengguna lalai ialah pi, kata laluan adalah raspberi), menu konfigurasi awal dipaparkan, di mana perlu untuk mengembangkan sistem fail dari imej 2 GB ke keseluruhan kad SD dan benarkan SSH. Di samping itu, ia patut menetapkan susun atur papan kekunci, bahasa, zon waktu dan menukar kata laluan lalai.

Adalah lebih baik untuk bereksperimen dengan overclocking secara berasingan, memeriksa kestabilan RPi serta-merta selepas menukarnya. Tetapi ia patut dicuba, kerana peningkatan kelajuan dapat dilihat secara visual. Anda sentiasa boleh kembali ke menu konfigurasi dengan arahan:

$sudo raspi-config

Selepas selesai persediaan awal but semula:

$ sudo reboot

Langkah seterusnya ialah mengemas kini pakej - pembangunan untuk RPi sangat aktif, dan kemas kini utama dikeluarkan dengan kerap.

$ sudo apt-get kemas kini $ sudo apt-get naik taraf

Menyediakan Ethernet dan Wi-Fi

Kad Wi-Fi D-Link DWA-140 B2 yang saya miliki terdapat dalam senarai peralatan yang serasi. Saya menyambungkannya dan menyemak bahawa ia berjaya dikenal pasti:

$lsusb<..>Bas 001 Peranti 006: ID 07d1:3c0a Sistem D-Link DWA-140 RangeBooster N Penyesuai(rev.B2) $ iwconfig sambungan wayarles. eth0 tiada sambungan wayarles. wlan0 IEEE 802.11bgn ESSID:mati/sebarang Mod:Titik Capaian Terurus: Tidak Berkaitan Tx-Power=20 dBm Cuba semula had panjang:7 RTS thr:off Fragmen thr:off Pengurusan Kuasa:hidup

Wi-Fi boleh dikonfigurasikan mengikut dokumentasi.

SSH DAN VNC

Memulakan pelayan SSH dibenarkan dalam menu konfigurasi awal. Untuk mengakses dari mesin Windows anda boleh menggunakan Putty, dari telefon Android - Irssi ConnectBot. Tetapi di sini ia mengenai rasa dan warna ...

Jika SSH tidak mencukupi dan anda memerlukan akses kepada desktop RPi (contohnya, lihat gambar yang diambil oleh Motion tanpa menyalinnya ke mesin tempatan), anda boleh mendapatkannya melalui vncviewer daripada TightVNC, dan untuk akses daripada Android - menggunakan androidVNC. Untuk melakukan ini, anda perlu memasang VNC menggunakan pengesyoran bit.ly dan bit.ly.

WEB CAM DAN MOTION

Versi saya menggunakan Logitech HD Webcam C525 sebagai kamera web. Selepas pembelian kamera web baharu Perlu menyemak senarai peralatan yang serasi dengan RPI; sesetengahnya mungkin memerlukan hab USB dengan kuasa tambahan. Anda juga patut menyemak keserasian Motion menggunakan pautan "Peranti Bekerja" dan "Peranti Tidak Berfungsi". Jika kamera tidak berada dalam senarai "Peranti Bekerja", ini tidak bermakna ia tidak akan berfungsi, tetapi pastinya tidak berbaloi untuk membeli kamera dari senarai kedua.

$lsusb<..>Bas 001 Peranti 007: ID 046d:0826 Logitech, Inc.

Anda boleh menyemak kamera dengan cuba mengambil tangkapan skrin daripada kamera:

$ sudo apt-get pasang uvccapture $ uvccapture -S80 -B80 -C80 -G80 -x800 -y600

DALAM direktori semasa Fail snap.jpg akan muncul (walaupun terdapat mesej ralat) yang boleh dibuka pada RPi dengan Pemapar Imej. Motion ialah aplikasi untuk memantau isyarat dari kamera, membolehkan anda menentukan bahawa sebahagian besar imej telah berubah (iaitu, mengesan pergerakan dalam bingkai), dan dalam kes ini, simpan imej dan lancarkan program luaran. Laman utama projek.

$ sudo apt-get install motion

Untuk membenarkan Motion untuk autorun:

$ sudo nano /etc/default/motion # set kepada "yes" untuk membolehkan daemon motion start_motion_daemon=yes

Benarkan akses kepada antara muka web Motion daripada hos luaran:

$ sudo nano /etc/motion/motion.conf webcam_localhost off control_localhost off

Fail yang sama menyimpan tetapan untuk pengesanan gerakan, permulaan dan tamat rakaman kamera dan pelancaran program luar apabila gerakan dikesan.

$ sudo nano /etc/motion/motion.conf # Perintah untuk dilaksanakan apabila bingkai gerakan dikesan (lalai: tiada) on_event_start sudo /home/pi/motion-det

/home/pi/motion-det - skrip yang akan dilaksanakan apabila gerakan dikesan. Dia akan perlukan hak akar untuk pengurusan pelabuhan. Tambahkan gerakan pengguna (gerakan) ke senarai sudoers:

$ sudo visudo

menambah baris berikut pada akhir fail:

Usul SEMUA=(SEMUA) NOPASSWD: SEMUA

Jalankan dengan output maklumat ke konsol:

$ sudo motion -n

Apabila Motion sedang berjalan, tetapan boleh ditukar daripada penyemak imbas di: //:8080

Sebaliknya, anda perlu menggantikan alamat IP sebenar RPi. Anda boleh melihat imej dari kamera di //:8081

Dalam Firefox, imej mungkin tidak dikemas kini dengan betul. Semuanya OK dalam Chrome. Pelayar yang diprapasang pada RPi tidak boleh memaparkannya sama sekali. Mod konfigurasi disediakan untuk mengkonfigurasi pengesanan gerakan

$ sudo motion -s

Dalam mod ini, apabila melihat imej kamera, pengesanan gerakan itu sendiri akan ditunjukkan dalam warna yang berbeza, dan anda boleh melaraskan parameter pengesanan pada halaman tetapan.

Imej daripada kamera disimpan dalam direktori /tmp/motion, format imej individu secara lalai jpg, video - swf. Format boleh ditukar dalam fail konfigurasi. Anda boleh melumpuhkan penyimpanan fail seperti ini:

Output_normal off ffmpeg_cap_new off

GPIO PORTS - CIRI DAN KAWALAN

RPi mempunyai port I/O terbina dalam. Mereka dipanggil GPIO, Input/Output Tujuan Umum, iaitu port input/output tujuan umum. Tegasnya, anda boleh menyambungkan penggerak tanpa masalah khas dan ke PC yang mudah, tetapi mengapa tidak menyimpan PC di dapur? Itulah kelebihan RPi yang murah dan kecil - ia boleh diletakkan dengan mudah di sebelah penggerak.

Port GPIO beroperasi pada tahap 3.3 V. Walau bagaimanapun, papan RPi tidak memberikan perlindungan untuk port, dan secara tidak sengaja memendekkan 5 V kepada mereka boleh membawa maut.

Pendawaian port dan contoh mengaksesnya daripada pelbagai bahasa pengaturcaraan diberikan di sini: bit.ly/StAJXA.

Terdapat dua versi utama papan, Semakan 1 dan 2, dengan tugasan pendawaian dan port yang sedikit berbeza. Untuk menentukan versi yang anda perlu masukkan perintah kucing/proc/cpuinfo dan cari kod semakan perkakasan dalam jadual: Terdapat maklumat tambahan tentang perbezaan antara Semakan 1 dan 2.

Bekalan kuasa +5 V dan 3.3 V, pembumian (GND) dan port GPIO 4, yang kami akan terus gunakan, diletakkan pada pin yang sama dalam kedua-dua versi. Pembangun RPi berulang kali mencatat bahaya membakar port atau keseluruhan RPi jika port tidak disambungkan dengan betul. Untuk mengelakkan perkara ini berlaku, adalah disyorkan untuk melindungi pelabuhan daripada tindakan yang salah. Skim perlindungan pelabuhan (dan juga contoh penyambungan pelbagai peranti) boleh dilihat.

Akses Pelabuhan

Cara paling mudah untuk menguruskan port adalah dari baris arahan. Status port boleh diperiksa dengan voltmeter. Semua tindakan dilakukan di bawah akar.

$ sudo -i

Bermula dengan pelabuhan:

$ echo "4" > /sys/class/gpio/export

Mod pengendalian - output:

$ gema "keluar" >

Output nilai:

$ echo "1" > /sys/class/gpio/gpio4/value $ echo "0" > /sys/class/gpio/gpio4/value

Mod pengendalian - input:

$ echo "in" > /sys/class/gpio/gpio4/direction

$ cat /sys/class/gpio/gpio4/value

Berhenti bekerja dengan pelabuhan:

$ echo "4" > /sys/class/gpio/unexport

Mari sediakan skrip untuk mengawal port tertentu, yang akan kita gunakan kemudian:

$ sudo nano switch_gpio

#! /bin/bash PORT_NUM=$1 jika [ $2. == "hidup." ]; maka NEW_VALUE=1 lagi jika [ $2. == "mati." ]; kemudian NEW_VALUE=0 else echo "Penggunaan: $0 PORT_NUM on|off" exit fi fi # Konfigurasikan port GPIO untuk output jika [ ! -e /sys/class/gpio/gpio$PORT_NUM ] kemudian echo $PORT_NUM > /sys/class/gpio/export fi # Baca keadaan lama OLD_VALUE=$(cat /sys/class/gpio/gpio$PORT_NUM/value) jika [ $OLD_VALUE == 1 ]; kemudian OLD_VALUE_TEXT="on" lain OLD_VALUE_TEXT="off" fi echo "out" > /sys/class/gpio/gpio$PORT_NUM/direction echo -ne "Menukar GPIO "$PORT_NUM" daripada "$OLD_VALUE_TEXT" kepada "$2". .." echo $NEW_VALUE > /sys/class/gpio/gpio$PORT_NUM/value echo " selesai."

Hak prestasi:

$ chmod +x switch_gpio

Dan mari semak:

$ switch_gpio 4 on $ switch_gpio 4 off

MODUL relay

Sambungan geganti dilaksanakan mengikut rajah dari artikel ini. DALAM kedudukan biasa, apabila output port GPIO adalah sifar logik dan potensi sifar, transistor ditutup dan voltan tidak dibekalkan kepada beban. Jika yang logik digunakan pada GPIO, 3.3 V melalui perintang akan membuka transistor, arus akan mengalir melaluinya dan geganti akan beroperasi. Diod direka untuk mengeluarkan lonjakan negatif apabila geganti dimatikan.

Relay lain digunakan (lebih lanjut mengenainya sedikit kemudian) dan transistor dengan diod - yang ada di tangan, ciri yang serupa. Perintang R1 (1 kOhm), jenis diod KD522 (1N4148), transistor H547. Artikel itu mengandungi cadangan tentang cara memilih analog. Selain itu, adalah bernilai memeriksa arus keluaran port apabila geganti dihidupkan.


Beban yang disambungkan ke litar ialah 640 W. Ini bermakna pada voltan 220 V, arus akan menjadi 640 W / 220 V = 2.9 A. Keperluan lain untuk geganti ialah dua wayar ditutup dan dibuka serentak dan beban dinyahtenagakan sepenuhnya. Satu pilihan yang sesuai untuk keperluan tersebut ialah geganti TRIL-5VDC-SD-2CM-R, dikawal daripada 5 V dan mampu menukar sehingga 8 A 250 V AC.

Anda boleh memulakan pemasangan pada papan prototaip kenalan. Sudah tentu untuk tugas berat ia tidak sesuai, tetapi litar kecil seperti itu boleh dipasang dengan cepat dan dinyahpepijat padanya. Mula-mula, kami kuasakannya dari sumber +5 V yang berasingan, semak segala-galanya tanpa menyambung ke RPi, menggantikan sambungan ke port dengan perintang dan butang ke +5 V, ukur semua arus dan pasang penyambung untuk menyambung ke papan RPi utama. Adalah mustahil untuk menyambungkan 220 V ke papan sedemikian, jadi anda masih perlu mengambil besi pematerian dan memindahkannya ke papan litar bercetak.

Untuk menyambung ke papan RPi utama, anda boleh memasang kabel daripada sepasang penyambung dan kabel rata, sambungkan padanya papan perantaraan yang pelabuhan yang diperlukan dan bekalan kuasa ke kabel peranti persisian, setakat ini hanya ada satu, bukan lagi gelung 26-, tetapi gelung 4 wayar. Ia disambungkan ke papan litar, di mana ia dipasang betul-betul sama seperti dalam pilihan pertama, dengan menambah blok terminal untuk 220 V. Kami menyolder blok terminal ke geganti dengan wayar dengan keratan rentas 0.75, dan semak dengan teliti kefungsian litar dengan penguji dengan mengklik geganti. Di samping itu, anda boleh mencairkan tanah. Kemudian kami menyambungkan wayar ke terminal, juga dengan keratan rentas 0.75, pada salah satu palam diletakkan, di sisi lain - soket untuk wayar.


Seterusnya, berhati-hati dan berhati-hati: 220 V dengan frekuensi 50 Hz adalah voltan, jika dikendalikan dengan cuai, akibatnya boleh menjadi lebih tragis daripada RPi yang terbakar. Periksa pematerian pada papan geganti secara visual, pastikan wayar 220 V diikat dengan selamat pada blok terminal. Kami membetulkan papan, atau lebih baik lagi, memasangnya dalam kes tertutup supaya tidak menyentuhnya secara tidak sengaja buka kenalan di bawah voltan. Kami mengambil masa kami dan secara konsisten menyemak dengan penguji pada setiap langkah. Kami mencabut papan geganti dari papan RPi utama, pasangkannya ke 220. Tiada asap. Kami memutuskan sambungan dari rangkaian, sambungkan papan RPi utama, hidupkan semula pada 220. Tidak ada asap lagi, RPi masih hidup. Kami mengklik geganti, kami melihat 220 pada soket. Putuskan sambungan geganti dan 220, sambung ke alur keluar lampu meja, gunakan 220, klik geganti. Hooray!

nasi. 5. Versi kedua modul geganti, dipateri pada papan litar bercetak
dengan papan suis perantaraan

Mari kita tarik nafas dan pasangkan papan geganti ke dalam perumah asas kekal, kami mencubanya dalam versi terakhir, dengan pembancuh kopi sebagai beban.

PENGURUSAN PELABUHAN MENGGUNAKAN WEBIOPI

Cara paling mudah untuk mengakses port GPIO melalui web ialah memasang WebIOPi. Ini ialah aplikasi yang membolehkan anda menetapkan secara visual arah port (input/output), melihat keadaannya semasa input dan menetapkan nilai pada output.

Pemasangan diterangkan secara terperinci.

$ sudo apt-get install apache2 php5

Untuk beroperasi, WebIOPi menggunakan modul tulis semula dan penggantian konfigurasi (.htaccess):

$ sudo a2enmod tulis semula $ sudo nano /etc/apache2/sites-enabled/000-default

Dalam bab tukar baris "AllowOverride None" kepada "AllowOverride All":

Indeks Pilihan FollowSymLinks MultiViews AllowOverride All Order allow, deny allow from all

Tambahkan pengguna Apache (www-data) ke senarai sudoers:

$ sudo visudo

Tambahkan baris berikut pada akhir fail:

www-data SEMUA=(SEMUA) NOPASSWD: SEMUA

Mulakan semula Apache:

$ sudo /etc/init.d/apache2 mulakan semula

$ wget //webiopi.googlecode.com/files/WebIOPi-0.3.tar.gz $ tar xvzf WebIOPi-0.3.tar.gz

Alihkan fail ke direktori yang sesuai:

$ sudo mv webiopi /var/www

Antara muka utama boleh didapati di: //localhost/webiopi.

Jika anda membuka halaman terus daripada RPi, maka anda perlu melakukan ini dalam Chromium atau Midori; ia tidak berfungsi sama ada dalam NetSurf atau Dillo kerana kekurangan sokongan JavaScript di dalamnya.

MEMAUTKAN SEGALANYA BERSAMA

Untuk mengawal port daripada penyemak imbas melalui web, antara muka web WebIOPi adalah mencukupi; jika dikehendaki, ia boleh dikonfigurasikan untuk memenuhi keperluan anda. Untuk menghidupkan geganti apabila gerakan dikesan, tambahkan Permulaan Gerakan masa yang ditentukan pada waktu pagi, contohnya pada 8:00, dalam /etc/crontab:

0 8* * * gema $(tarikh)": "$(permulaan gerakan perkhidmatan) >> /var/log/motion_start.log

Crontab /etc/crontab

Mari buat skrip yang akan dilancarkan daripada Motion:

$ nano /home/pi/motion_det

#!/bin/bash /home/pi/switch_gpio 4 pada gerakan perkhidmatan berhenti tidur 1800 /home/pi/switch_gpio 4 off

Hak prestasi:

Chmod +x /home/pi/motion_det

Sekarang pada pukul lapan pagi Motion akan dilancarkan, yang akan mula mengesan pergerakan. Apabila gerakan dikesan, skrip motion_det akan berjalan, yang akan mengeluarkan satu logik ke port GPIO 4, menggunakan voltan pada geganti dan menghidupkan pembuat kopi, hentikan Gerakan, tunggu 30 minit dan mengeluarkan sifar logik ke port yang sama , mematikan beban.

KESIMPULAN

Kebanyakan komponen dibeli daripada Chip dan Dip (termasuk perumah, kelenjar kabel, papan, penyesuai, dan sebagainya). Ini adalah kedai dengan pilihan yang baik, di mana anda boleh pergi, melihat dan menyentuh, tetapi ia tidak murah, terdapat yang jauh lebih murah. Mereka yang tidak mahu menunggu lama untuk RPi dihantar sudah boleh membelinya, sebagai contoh, di Terraelectronics, walaupun tidak sama sekali untuk $25.

Untuk mengelakkan kegelapan pada pagi musim sejuk, anda boleh menyambungkan penderia gerakan IR dan bukannya kamera (atau sebagai tambahan kepadanya). Anda boleh memikirkan cara menggunakan pembuat espreso automatik dan tidak perlu risau tentang mengisi semula kopi anda pada keesokan harinya. Anda boleh menyambungkan geganti melalui ZygBee, tambah yang lain penggerak, sebagai contoh, lampu di dalam bilik tidur. Anda boleh melaksanakan kawalan melalui SMS dengan menyambungkan modem 3G, atau dengan telefon biasa melalui DTMF, menaikkan Asterisk atau Freeswitch. Atau anda boleh menulis aplikasi untuk Android dan iPhone/iPad.

Terdapat banyak pilihan, dan dengan kemunculan RPi, keupayaan untuk bereksperimen di sempadan antara pengaturcaraan dan dunia fizikal telah berkembang secara mendadak. Ya, dan, sudah tentu, 1 April depan anda perlu memikirkan tentang sokongan penuh untuk standard RFC 2324.

Raspberry Pi bukan sekadar komputer mini yang direka untuk digunakan untuk memainkan muzik di atasnya. Ia juga boleh digunakan dalam aplikasi elektrik yang lebih serius. Untuk melakukan ini, ia mempunyai baris input/output tujuan umum (GPIO), yang akan kita lihat hari ini.



GPIO terletak pada penyambung 2x13, di mana anda boleh menemui antara muka SPI, I2C, UART dan talian kuasa 3.3 V dan 5 V.



Lapan daripada pin ini boleh digunakan secara langsung sebagai input atau output digital. Oleh itu, ia boleh digunakan untuk mengawal LED, pemandu motor dan peranti lain yang serupa. Sememangnya, butang dan suis boleh disambungkan kepada mereka untuk memasukkan maklumat ke dalam Raspberry Pi.



Jadi bagaimana anda menguruskan talian GPIO pada Raspberry Pi?


Mula-mula anda perlu memasang Perpustakaan Python RPi.GPIO. Ia mungkin telah diprapasang pada pengedaran sistem pengendalian OS Raspbian anda. Untuk menyemak ini, masukkan:


sudo python


Kemudian masukkan dalam baris:


import RPi.GPIO sebagai GPIO


Jika tiada ralat muncul, maka semuanya baik-baik saja. Tetapi jika ia timbul, maka anda perlu mengambil langkah-langkah berikut.


Mula-mula, muat turun Perpustakaan RPi GPIO:


wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.3.1a.tar.gz


Kemudian ekstrak fail:


tar zxf RPi.GPIO-0.3.1a.tar.gz


Kemudian kita pergi ke direktori yang diekstrak:


cd RPi.GPIO-0.3.1a


Dan pasang perpustakaan:


sudo python setup.py pasang


Menggunakan Perpustakaan Python RPi.GPIO


# import perpustakaan import RPi.GPIO sebagai GPIO # gunakan penyambung Raspberry Pi yang menomborkan GPIO.setmode(GPIO.BOARD) # atau GPIO.setmode(GPIO.BCM) # konfigurasikan pin GPIO sebagai input atau output GPIO.setup(11, GPIO.IN ) GPIO.setup(13, GPIO.OUT) # ambil nilai input daripada pin 11 input_value = GPIO.input(11) # tetapkan nilai output kepada pin 13 GPIO.output(13, GPIO.HIGH) #GPIO.output( 13, GPIO.LOW)

Perbezaan antara GPIO.setmode(GPIO.BOARD) Dan GPIO.setmode(GPIO.BCM) terdiri dalam sistem penomboran pin. Dalam kes pertama, penomboran penyambung P1 pada papan Raspberry Pi digunakan, dan dalam kes kedua, penomboran pin sistem-pada-cip Broadcom, yang merupakan teras Raspberry Pi. Anda harus tahu bahawa dalam kes BCM, penomboran pin antara semakan pertama dan kedua adalah sedikit berbeza, dan apabila menggunakan BOARD, semakan tidak penting, semuanya tetap sama.


Sekarang mari kita sambungkan LED dan butang ke Raspberry Pi. Lapan GPIO tersedia untuk kami pada penyambung.



Sambungan:



Nilai perintang boleh dikira seperti berikut. LED 5 mm yang digunakan dalam kes ini menggunakan arus 20 mA. Voltan yang dibekalkan daripada Raspberry Pi ialah 3.3 V. Maka rintangannya ialah 3.3 V / 20 mA = 165 Ohms. Untuk butang, perintang 1KOhm digunakan.




dari masa import sleep import RPi.GPIO sebagai GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(16, GPIO.IN) GPIO.setup(18, GPIO.IN) GPIO.setup(11, GPIO.OUT) GPIO. persediaan(13, GPIO.OUT) GPIO.setup(15, GPIO.OUT) GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) # keadaan - menentukan sama ada LED harus hidup atau mati keadaan = 0 # kenaikan - arah perubahan keadaan inc = 1 manakala Benar: # butang ditekan jika (GPIO.input(16) == Benar): jika (inc == 1): negeri = negeri + 1; lain: negeri = negeri - 1; # keadaan maksimum dicapai, kembali (penurunan) jika (keadaan == 3): inc = 0 #keadaan minimum dicapai, kembali (kenaikan) elif (keadaan == 0): inc = 1 jika (keadaan == 1 ): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) elif (keadaan == 2): GPIO.output(11, GPIO.HIGH) GPIO. output(13, GPIO.HIGH) GPIO.output(15, GPIO.LOW) elif (keadaan == 3): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.HIGH) GPIO. output( 15, GPIO.HIGH) lain: GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) print("tekan B1 ", nyatakan) # butang set semula ditekan jika (GPIO.input(18) == True): keadaan = 0 inc = 1 GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO. LOW) print("tekan B2", nyatakan) sleep(0.2);

Jadi, seperti yang kita lihat, menggunakan GPIO pada Raspberry Pi agak mudah. Walaupun jumlahnya tidak sebanyak Arduino, tetapi bersama-sama dengan kuasa pengkomputeran sistem-pada-cip komputer mini ini akan berguna dalam

. Hari ini ialah pelajaran ketiga, di mana kami akan bekerja dengan konsol dan utiliti apt-get, belajar cara mengambil tangkapan skrin dan menyediakan alat kawalan jauh melalui VNC.

Video pelajaran ketiga:

Untuk pelajaran ketiga kita perlukan:

  • Papan Raspberry Pi;
  • kabel kuasa;
  • papan kekunci USB;
  • tetikus USB;
  • monitor atau TV dengan antara muka HDMI/RCA/DVI;
  • kabel, satu hujungnya ialah RCA atau HDMI, dan satu lagi sepadan dengan monitor anda;
  • Kad SD dengan OS Raspbian telah dipasang (lihat cara memasangnya);
  • Pembahagi USB dengan bekalan kuasa sendiri;
  • modem WiFi.

Bekerja dengan konsol pada Raspberry Pi

Dalam OS Raspbian(seperti dalam pengedaran lain Linux) terdapat konsol utama. Jika kita tidak membuat yang sesuai rasppi-config, konsol akan dibuka serta-merta apabila sistem pengendalian dimulakan. Bekerja dengan konsol sedemikian tidak mudah, kerana anda perlu keluar dari mod grafik. Jauh lebih mudah untuk digunakan program prapasang LXTerminal, yang meniru konsol utama sebagai tetingkap dalam GUI. Apabila kita membuka program ini, kita akan melihat baris pi@raspberrypi ~ $ Di sini pi— nama pengguna dalam OS, pai raspberi- nama hos, ~ - direktori semasa, ~ menggantikan /home/pi. Apabila kita melihat baris sedemikian, kita boleh menulis arahan kita sendiri. Khususnya, di sini anda boleh melakukan tindakan dengan fail, folder, arkib (tetapi tindakan ini juga boleh dilakukan dalam mod grafik, yang lebih mudah).

Sudo

Sesetengah tindakan memerlukan hak pentadbir, anda boleh menggunakannya hanya dengan menambah sudo pada permulaan arahan.

utiliti apt-get dan pemasangan program

Kami melihat memasang program menggunakan PiStore. Ini adalah cara yang mudah dan intuitif dengan antara muka grafik, tetapi perpustakaan PiStore tidak mengandungi seberapa banyak program yang kita mahu.

Cara alternatif untuk mencari, memuat turun dan memasang program pada Pai raspberi- utiliti konsol apt-get.

Apt-dapat menyimpan data tentang pelbagai konsol dan program grafik dan utiliti pada Pai raspberi. Sebelum bekerja dengan utiliti ini, anda perlu mengemas kini pangkalan data programnya menggunakan arahan

sudo apt-get kemas kini

Selepas kemas kini, anda boleh memuat turun program. Untuk mencari pangkalan data utiliti, anda perlu membuat permintaan berikut:

carian apt-cache<запрос>

Sebagai contoh,

pokok carian apt-cache

Selepas permintaan, senarai program dan utiliti akan dipaparkan, nama atau perihalannya mengandungi permintaan yang dimasukkan. Kami memilih program yang sesuai dan ingat namanya.

Kami meminta pemasangan:

sudo apt-get install<название>

Sebagai contoh,

sudo apt-get install tree

Anda perlu mengesahkan pemasangan menggunakan Masuk.

Selepas pemasangan, anda boleh mengetahui maklumat tentang program atau utiliti:

info<название>

Sebagai contoh,

Dalam fail output anda boleh mencari maklumat am tentang program, lesen, parameter yang digunakan (jika ia adalah versi konsol) dan maklumat lain.

Untuk kegunaan program konsol masuk<название> <параметры и флаги>, Sebagai contoh pokok.

Untuk mengalih keluar program, gunakan arahan (pemadaman juga perlu disahkan):

sudo apt-get remove<название>
Sebagai contoh,
sudo apt-get remove tree
Secara berkala, adalah dinasihatkan untuk melakukan tindakan berikut dengan utiliti ini:
sudo apt-get update (mengemas kini pangkalan data program)
sudo apt-get upgrade (kemas kini program yang dipasang)
sudo apt-get autoremove (mengalih keluar perpustakaan, program yang disertakan, dll. yang tinggal selepas menyahpasang program)

Mengambil Tangkapan Skrin pada Raspberry Pi

Malangnya, Raspbian OS tidak mempunyai alat prapasang untuk membuat tangkapan skrin - tangkapan skrin.

Anda boleh mencari alat untuk membuat tangkapan skrin dalam apt-get menggunakan permintaan:

tangkapan skrin carian apt-cache

ia kelihatan kepada saya utiliti yang selesa scrot untuk tangkapan skrin. Memasang utiliti scrot:

sudo apt-get install scrot

Untuk mengambil tangkapan skrin, anda mesti memasukkan arahan scrot. Anda boleh menentukan kelewatan pelaksanaan arahan - ini perlu supaya anda mempunyai masa untuk meminimumkan atau menutup konsol - jika tidak, ia akan disertakan dalam tangkapan skrin. Untuk kelewatan selama 5 saat anda mesti memasukkan:

Menyediakan alat kawalan jauh melalui VNC

Pengkomputeran Rangkaian Maya (VNC) - sistem untuk capaian jauh ke desktop komputer. Kawalan dicapai dengan menghantar ketukan kekunci papan kekunci dan pergerakan tetikus dari satu komputer ke komputer lain dan menyampaikan kandungan skrin ke seluruh rangkaian komputer . Kami akan menggunakan VNC untuk jarak jauh Kawalan raspberry Pi.

Untuk menyediakan alat kawalan jauh, pasang dan lancarkan pelayan VNC x11vnc, Ketahui alamat IP Raspberry Pi:
sudo apt-get install x11vnc
x11vnc -desktop:0
Mari lihat alamat IP Raspberry Pi menggunakan arahan nama hos -I.

Pada komputer yang kami mahu mengawal Raspberry Pi dari jauh, kami akan memuat turun dan memasang klien VNC, contohnya, dari realVNC. Mari lancarkannya dan masukkan alamat IP Raspberry Pi. Selepas ini kita boleh mengawal dari jauh.

Ini menyimpulkan pelajaran ketiga, ikuti!

Dalam pelajaran seterusnya kita akan bekerja dengan port GPIO, khususnya kita akan berkelip LED dalam mod yang berbeza.