Isi kandungan:

Sistem Bantuan Tempat Letak Kereta Berasaskan Pi: 9 Langkah
Sistem Bantuan Tempat Letak Kereta Berasaskan Pi: 9 Langkah

Video: Sistem Bantuan Tempat Letak Kereta Berasaskan Pi: 9 Langkah

Video: Sistem Bantuan Tempat Letak Kereta Berasaskan Pi: 9 Langkah
Video: Pegawai Kanan TLDM Yang Kurang Ajar 2024, November
Anonim
Sistem Bantuan Tempat Letak Kereta Berasaskan Pi
Sistem Bantuan Tempat Letak Kereta Berasaskan Pi

Hai ada! Inilah projek kecil yang menarik yang boleh anda buat dalam satu petang dan kemudian gunakannya setiap hari. Ia berdasarkan Raspberry Pi Zero W dan akan membantu anda memarkir kereta anda dengan sempurna setiap masa.

Inilah senarai bahagian yang anda perlukan:

  • Raspberry Pi Zero W (kami akan menyebutnya 'rpi' atau 'pi' dalam artikel ini)
  • Kad SD mikro 4GB atau lebih besar untuk OS pi
  • Dua modul sensor jarak Penerbangan kecilLiDAR
  • Panel LED 32x32 RGB (terdapat banyak pengeluar untuk ini dengan nada titik yang berbeza-beza, misalnya anda boleh menggunakan Adafruit 1484 atau yang serupa, hanya mencari '32x32 LED Matrix' di Google). Panel kami mempunyai nada 6mm.
  • 25 kaki kabel CAT5
  • kira-kira 22 wayar jumper pin header lelaki hingga lelaki berwarna
  • Bekalan kuasa microUSB 5v 2Amp (pengecas telefon bimbit) Sudah siap? Mari pergi!

TL; Ringkasan DR

  • Muat turun OS Raspbian Lite untuk rpi
  • Konfigurasikan pi untuk berjalan tanpa kepala melalui WiFi dengan IP statik
  • Siapkan persekitaran dev PC anda dengan PuTTY, WinSCP dan opsyen SublimeText w / FTP
  • Muat turun, buat dan ikat pemacu panel LED
  • Muat turun dan pasang pigpio
  • Muat turun kod Python kami
  • Pasangkan panel paparan LED 32x32
  • Buat kabel sambungan CAT5 untuk sensor kecilLiDAR sisi
  • Langkah pilihan (tetapi hanya untuk pengguna lanjutan): lakukan tarian gembira cepat ketika semuanya berfungsi;)

Langkah 1: Apa itu Pi Zero W?

Apa itu Pi Zero W?
Apa itu Pi Zero W?

Anda pasti pernah mendengar tentang Raspberry Pi tetapi apa sihnya pi 'Zero W'?

Raspberry Pi Zero dan Zero W adalah penambahan terbaru untuk keluarga Pi yang lebih bermakna untuk IoT dan aplikasi tertanam kos rendah yang lain. Mereka dilucutkan versi papan pi asli tetapi masih menggunakan pemproses 1GHz yang kuat. Berikut adalah perbandingan yang baik untuk semua model.

Manfaat bagi kita dalam memilih Pi Zero W di sini berbanding papan pengawal yang lain adalah kita dapat memprogramnya dengan mudah dalam bahasa Python tahap lebih tinggi sambil masih menggunakan pemacu panel LED C / C ++ yang pantas. Ia juga menarik dengan harga hanya $ 10USD.

Ingatlah bahawa kerana papan ini adalah versi lengkap dari pi penuh - beberapa perkara telah berubah. Khususnya, jack ethernet telah dihapuskan, penyambung HDMI telah berubah menjadi ukuran mini dan keempat port USB telah dipermudah menjadi hanya satu jenis USB mikro. Terdapat penyambung USB mikro yang lain, tetapi hanya untuk menghidupkan papan. Penghapusan semua penyambung USB bersaiz penuh memperkenalkan beberapa kerumitan. Yaitu, bagaimana anda boleh memasang papan kekunci dan tetikus? Perisian dan hub USB standard menggunakan penyambung Jenis A bukan jenis mikro.

Jadi apa yang boleh kita lakukan?

Kita boleh pergi tanpa kepala!

Tidak, kami tidak bermaksud menjadi gila tetapi menggunakan alternatif untuk penyediaan kabel langsung langsung. Headless bermaksud "terowong" ke pi dari jarak jauh menggunakan sambungan rangkaian shell selamat (SSH). Untuk projek ini, kami akan menggunakan pendekatan tanpa kepala melalui WiFi. Oleh itu, alasan bagi kita dalam memilih versi W pi sifar dan bukannya kos sifar pi yang lebih rendah.

Perhatikan bahawa ada juga cara lain untuk menjalankan pi dalam mod tanpa kepala menggunakan sesuatu yang disebut VNC. Ia memerlukan perisian VNC khas yang berjalan di PC anda kerana ia menyediakan desktop grafik maya penuh pada PC anda. Kami tidak memerlukan (dan benar-benar tidak mahu) desktop untuk projek kami jadi kami akan berpegang pada kaedah SSH yang lebih mudah.

Langkah 2: Scotty, Kami Memerlukan Lebih Banyak Kuasa

Scotty, Kami Memerlukan Lebih Kuasa!
Scotty, Kami Memerlukan Lebih Kuasa!

Panel matriks LED 32x32 boleh, dengan sendirinya, mengambil beberapa amp arus. Jangan main-main! Itulah sebabnya sebahagian besar panel ini merangkumi beberapa kabel kuasa yang kelihatan besar untuk menghidupkannya. Nasib baik bagi kami walaupun kami tidak perlu mendapatkan bekalan elektrik yang besar untuk projek ini. Kami dapat menghidupkan keseluruhan sistem ini dengan hanya pengecas telefon bimbit microUSB 5v / 2amp yang kami miliki. Sebab arus lebih rendah adalah kerana kami menggunakan grafik yang agak mudah dan oleh itu tidak menyalakan kebanyakan LED. Sekiranya anda berfikir untuk membuat animasi atau menggunakan video / grafik terang, anda pasti harus mempertimbangkan untuk menghidupkan panel dari bekalan kuasa yang berasingan.

Langkah 3: Penempatan Sensor dan Perisian

Penempatan dan Perisian Sensor
Penempatan dan Perisian Sensor
Penempatan dan Perisian Sensor
Penempatan dan Perisian Sensor

Adakah anda menyedari bahawa kami menggunakan dua tinyLiDAR dalam sistem ini dan bukan hanya satu? Seperti yang ditunjukkan dalam rajah penyediaan garaj, satu diletakkan di hadapan kereta dan yang lain diletakkan di sepanjang satu sisi kereta.

Sensor sisi akan mengesan jika anda berpusing ke arah tengah semasa anda meletakkan kereta dan sudah tentu bahagian depan akan memberitahu anda bila hendak berhenti.

Paparan LED 32x32 akan membantu anda dengan menunjukkan anak panah untuk bergerak ke depan, kiri atau kanan dan paparan undur dengan sudut berwarna untuk menunjukkan sejauh mana anda masih perlu memandu. Lihat video pendek kami untuk semua keadaan paparan.

Rancangan Permainan

Ringkasnya, kami menggunakan perpustakaan hzeller C yang paling popular untuk pemacu LED, Python untuk kod kawalan dan perpustakaan pipgpio C untuk kawalan I2C sensor kami yang betul.

Python adalah bahasa tahap tinggi yang sangat mudah yang anda boleh edit dengan mudah di mana-mana penyunting teks. Kami biasanya menggunakan SublimeText dan untuk projek ini kami juga menggunakan plugin FTP yang sangat berguna yang membolehkan kami mengedit fail skrip secara langsung pada pi. Ini adalah langkah pilihan kerana hanya diperlukan jika anda ingin mengedit kodnya. Maklumat lebih lanjut terdapat di akhir artikel ini.

Semua papan rpi, seperti yang anda ketahui, tidak menyokong peregangan jam I2C. Oleh itu, kami menggunakan lagi perpustakaan pigpio untuk projek ini untuk mengawal sensor tinyLiDAR tetapi kali ini dengan sedikit kelainan…

BanyakLIDAR kecil

Apabila anda membeli tinyLiDAR, ia selalu ditetapkan ke alamat hamba lalai 0x10. Ini baik untuk apabila anda menggunakan sensor tunggal tetapi jika anda mempunyai lebih dari satu di dalam bas, ia mungkin menjadi masalah jika anda menulis arahan ke 0x10 dan semuanya menjawab kembali!

Oleh itu, kami mempunyai 3 pilihan di sini:

Pertama, kita dapat menggunakan perintah (tinyLiDAR) "R" untuk menulis alamat hamba baru ke sensor yang disambungkan ke bas I2C. Kemudian ulangi ini untuk setiap sensor. Melampirkan, menulis dan melepaskan setiap sensor secara fizikal untuk prosedur ini. tinyLiDAR akan menyimpan alamat yang diberikan dalam ingatannya yang tidak mudah berubah. Alamat akan tetap ada walaupun selepas kitaran kuasa sehingga anda mengosongkannya dengan mengeluarkan arahan RESET.

Pilihan kedua adalah menggunakan fitur Auto Assign yang sesuai yang kami buat sebagai tujuan utama dalam kempen IGG. Ini melibatkan menghantar arahan "AR" dan kemudian menuding jari ke setiap sensor secara berasingan untuk secara automatik memberikan alamat I2C berurutan ke sensor individu yang serupa dengan pilihan pertama tetapi anda tidak perlu melepaskan setiap sensor secara fizikal untuk melakukan ini.

Pilihan ketiga adalah pilihan yang kami gunakan di sini dalam projek ini dan mungkin berkat perpustakaan pigpio. Untuk melaksanakan standard I2C dengan betul, pigpio bitbangs GPIO. Oleh kerana itu, kami dapat dengan mudah membuat bas I2C yang terpisah dengan hampir semua pasang pin GPIO ganti.

Oleh itu, tidak perlu memprogramkan semula alamat hamba untuk pelbagai sensor LiDAR. Kami hanya boleh menggunakan bas yang berasingan untuk setiap satu:)

Perhatikan bahawa bas I2C yang berjalan pada 100Kbps sebenarnya cukup mantap. Kami menggunakan kabel ethernet CAT5 lama biasa untuk menjalankan bas I2C ke sensor kecilLiDAR sisi yang berjarak 25 kaki penuh tanpa komponen pengulang aktif! Perincian pendawaian sensor ditunjukkan di atas.

Baiklah, cukup jabber, mari mulakan memuat turun kodnya!

Langkah 4: Menyiapkan Pi

Menyiapkan Pi
Menyiapkan Pi
Menyiapkan Pi
Menyiapkan Pi

Perhatian: Pi menggunakan sistem fail Linux jadi sebaiknya lakukan langkah-langkah berikut pada sistem berasaskan Linux. Anda mungkin akhirnya memformat semula kad SD anda jika anda melakukan ini di Windows. Kami menggunakan desktop Ubuntu 18.04 yang hebat & percuma yang berjalan di persekitaran maya pada PC Windows 10 tetapi anda boleh mencuba sesuatu yang serupa.

Anda perlu memuat turun OS terlebih dahulu dari raspberrypi.org dan kemudian membakarnya ke kad microSD anda. Oleh itu, ikuti langkah berikut:

(1) Di Ubuntu pergi ke sini dan ambil gambar Raspbian Lite. Simpan ke folder muat turun anda.

(2) Seterusnya muat turun utiliti penulisan kad SD Etcher. FYI - pautan muat turun Etcher rasmi untuk versi Linux di laman utama mereka tidak berfungsi untuk kami, jadi kami menggunakan kaedah yang dinyatakan di sini:

Secara ringkas langkah-langkah yang dijelaskan dalam pautan adalah:

Tambahkan repositori debian Etcher:

echo "deb https://dl.bintray.com/resin-io/debian stable etcher" | sudo tee /etc/apt/sources.list.d/etcher.list

Percayai kunci GPG Bintray.com:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61

Kemas kini dan pasang:

sudo apt-get kemas kini

sudo apt-get install etcher-electron

Setelah selesai, anda boleh terus melancarkan Etcher dari desktop Ubuntu anda. Ini akan meminta fail sumber (yang anda masukkan ke dalam folder muat turun). Langkah seterusnya di Etcher adalah memilih sasaran yang betul. Etcher berfungsi dengan baik untuk mengesan kad SD mikro anda tetapi anda harus paranoid di sini. Untuk mengesahkan bahawa ia menemui destinasi yang tepat - cuba keluarkan kad microSD dengan mengklik eject di tetingkap penjelajah fail Ubuntu dan sahkan bahawa ia hilang sebagai pilihan sasaran di dalam Etcher. Kemudian masukkan kembali dan teruskan ke langkah terakhir, iaitu menulis fail ke kad microSD ini.

Tunggu sebentar sehingga selesai dan kemudian teruskan.

Langkah 5: Masa WiFi

Masa WiFi
Masa WiFi
Masa WiFi
Masa WiFi

Baiklah, sekarang tiba masanya untuk memasukkan butiran WiFi anda.

Petua: anda selalu boleh menyalin (Ctrl + C) dan menampal maklumat (Klik Kanan, Tampal) dari artikel ini ke skrin terminal PuTTY dan bukannya mengetik perintah. Lihat akhir artikel ini untuk beberapa arahan Linux yang berguna juga.

Apabila Etcher selesai menulis kad SD mikro, akan ada 2 pemacu yang ditunjukkan seperti gambar di atas. Satu dipanggil boot yang lain disebut rootfs

Kita perlu menggunakan pengurus fail untuk masuk ke folder but dan membuat fail bernama wpa_supplicant.conf.

Untuk melakukan langkah ini, anda hanya boleh mengklik di sebelah kiri di mana dikatakan but dan kemudian di sebelah kanan skrin anda boleh klik kanan pada backgroud putih dan pilih Buka di Terminal.

Ini akan membuka tetingkap terminal (serupa dengan CMD di Windows) di mana anda boleh menaip perkara berikut:

sudo nano wpa_supplicant.conf Petua: Anda perlu memasukkan kata laluan sistem Linux anda agar dapat berjalan sebagai Pengguna Super. Ini diperlukan atau jika tidak, anda tidak akan dapat menyimpan fail apabila anda selesai mengedit

Perintah di atas kemudian akan melancarkan editor teks "nano" di mana anda boleh memasukkan maklumat berikut:

negara = AS

ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1 network = {ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK}

Catatan: Ingatlah untuk mengganti WiFi_SSID dan WiFi_Password dengan nama dan kata laluan rangkaian WiFi anda sendiri.

Setelah selesai, cukup klik Ctrl + X untuk keluar dan jawab Ya untuk menulis fail semasa keluar.

Langkah seterusnya adalah membuat fail kosong yang disebut ssh. Untuk melakukan ini, kita ketikkan perkara berikut di tetingkap terminal:

sentuh ssh

Sekarang kita perlu memberikan alamat IP statik kepada pi supaya kita tahu di mana letaknya setiap kali kita mahu menyambung ke alamat tersebut. Taipkan perkara berikut di tetingkap terminal:

sudo nano /etc/dhcpcd.conf

Ini akan membuka penyunting teks nano sekali lagi dan kita dapat menambahkan teks ini ke bahagian bawah fail:

antara muka wlan0

statik ip_address = 192.168.0. router statik = 192.168.0.1 domain_name_servers statik = 192.168.0.1 8.8.8.8

Catatan: Ini menganggap awalan rangkaian anda adalah 192.168.0. Sekiranya anda mempunyai 192.168.1 dll maka gunakan rangkaian anda sebagai gantinya. Pelayan nama domain 8.8.8.8 adalah untuk Google dan pilihannya di sini.

Ketik 'exit' di Terminal untuk menutupnya. Kemudian klik kanan pada nama but di sebelah kiri tetingkap pengurus Fail dan pilih Keluarkan.

Anda kini boleh memasang kad microSD ini ke pi anda dan pasangkan kabel kuasa microUSB untuk menghidupkan pi anda.

Sekiranya semuanya berjalan lancar, LED hijau akan berkelip seketika seperti sedang memasuki pemacu cakera keras dan ia harus memasukkan anda ke rangkaian WiFi anda. Beri masa kira-kira satu minit untuk menetap dan tunggu LED menjadi hijau pekat.

Untuk mengesahkan bahawa semuanya berfungsi, kita boleh mencuba ping.

Oleh itu, taipkan baris di bawah dan periksa jawapan.

ping 192.168.0.200

Di Ubuntu anda harus mendapatkan sesuatu yang serupa dengan ini:

ping 192.168.0.200

PING 192.168.0.200 (192.168.0.200) 56 (84) bait data. 64 bait dari 192.168.0.200: icmp_seq = 1 ttl = 128 masa = 752 ms 64 bait dari 192.168.0.200: icmp_seq = 2 ttl = 128 masa = 5.77 ms 64 bait dari 192.168.0.200: icmp_seq = 3 ttl = 128 masa = 7.33 ms ^ C --- 192.168.0.200 statistik ping --- 3 paket dihantar, 3 diterima, 0% kehilangan paket, masa 2001ms rtt min / avg / max / mdev = 5.777 / 255.346 / 752.922 / 351.839 ms

Perhatikan bahawa ping terus beroperasi sehingga anda menekan Ctrl + C untuk berhenti.

Di Windows anda mesti mendapat sesuatu seperti ini:

ping 192.168.0.200

Ping 192.168.0.200 dengan 32 bait data: Balas dari 192.168.0.200: bait = 32 masa = 4ms TTL = 64 Balasan dari 192.168.0.200: bait = 32 masa = 5ms TTL = 64 Balasan dari 192.168.0.200: bait = 32 masa = 6ms TTL = 64 Balasan dari 192.168.0.200: bytes = 32 waktu = 5ms TTL = 64 statistik Ping untuk 192.168.0.200: Paket: Dihantar = 4, Diterima = 4, Hilang = 0 (kehilangan 0%), anggaran masa perjalanan pergi dan balik dalam mili saat: Minimum = 4ms, Maksimum = 6ms, Purata = 5ms

Semua baik? Seterusnya …

Langkah 6: Log Masuk

Melog masuk
Melog masuk

Sekarang kita mempunyai sambungan ke pi, kita ingin menghantarnya perintah. Tetapi bagaimana? Tentunya tentu saja! Anda boleh memuat turun PuTTY dari siniMenyiapkan PuTTY Setelah memuat turun perisian PuTTY, buat profil untuk pi anda dengan maklumat berikut:

Nama Hos (atau alamat IP): 192.168.0.200 Jenis sambungan: SSHBerikan profil ini nama di bawah Sesi Tersimpan dan tekan Simpan. Anda boleh menggunakan nama yang anda suka misalnya "rpizw_200"

Untuk log masuk, pilih saja dari senarai dan tekan Load. Kemudian tekan Buka. Masukkan nama pengguna dan kata laluan untuk log masuk:

nama masuk: pi

Kata laluan defalt: raspberry

Berikut adalah contoh sesi yang ditunjukkan di PuTTY semasa anda log masuk:

log masuk sebagai: pi

Kata laluan [email protected]: Linux raspberrypi 4.14.34+ # 1110 Isn 16 Apr 14:51:42 BST 2018 armv6l Program yang disertakan dengan sistem Debian GNU / Linux adalah perisian percuma; syarat pengedaran yang tepat untuk setiap program dijelaskan dalam fail individu di / usr / share / doc / * / copyright. Debian GNU / Linux hadir dengan TIDAK ADA JAMINAN, sejauh yang dibenarkan oleh undang-undang yang berlaku. Log masuk terakhir: [tarikh dan waktu] dari 192.168.0. [Alamat ip] SSH diaktifkan dan kata laluan lalai untuk pengguna 'pi' belum diubah. Ini adalah risiko keselamatan - sila log masuk sebagai pengguna 'pi' dan ketik 'passwd' untuk menetapkan kata laluan baru.

Pada log masuk pertama, ia akan memberi amaran bahawa anda belum menukar kata laluan. Anda harus mengubahnya menjadi sesuatu yang kuat namun mudah diingat jadi teruskan dan ubah dengan menaip passwd dan ikuti arahannya.

Sebaiknya kita mengemas kini perisian pada pi dengan menaip ini:

sudo apt-get update && sudo apt-get upgrade

Ini akan memuat turun sebarang kemas kini yang diperlukan dari sambungan internet anda. Jawab YA jika diminta untuk membiarkannya berterusan dan beri masa untuk mengemas kini.

Pada masa ini kita mungkin juga harus mematikan suara pada pi kerana ia mempunyai juju buruk dengan perpustakaan pemandu LED. Salin, tampal baris berikut satu demi satu dan tekan enter selepas setiap baris:

cd ~

kucing << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf senarai hitam snd_bcm2835 EOF sudo kemas kini-initramfs -u

Hasilnya akan seperti ini:

pi @ raspberrypi: ~ $ cd ~

pi @ raspberrypi: ~ $ cat <> senarai hitam snd_bcm2835>> Senarai hitam EOF snd_bcm2835 pi @ raspberrypi: ~ $ sudo kemas kini-initramfs -u pi @ raspberrypi: ~ $

Kemudian kita harus reboot pi agar perubahan berlaku, jadi ketik perkara berikut:

rebo sudo sekarang

Sambungannya akan putus tentu saja kerana pi sedang dimulakan semula sehingga anda dapat menutup PuTTY. Cuba log masuk semula seminit kemudian.

Kini tiba masanya untuk mendapatkan pengurus fail FTP grafik yang disebut WinSCP. Anda boleh memuat turun WinSCP dari sini

WinSCP mirip dengan file mangager pada Windows dan Ubuntu. Ini membolehkan kita menyeret dan melepaskan fail dengan mudah ke & dari pi dan membuat diretori dengan hanya klik kanan tetikus.

Setelah dimuat turun, anda perlu menyediakan profil untuk pi anda.

Persediaan WinSCP Pada pop timbul Masuk, pilih Laman Baru. Gunakan tetapan berikut untuk sesi:

Protokol fail: SFTP Nama hos: 192.168.0.200 Nama pengguna: pi Kata Laluan: {kata laluan apa pun yang anda ubah menjadi lalai dalam langkah PuTTY di atas}

Dalam Tetapan Laman Lanjutan, pergi ke Alam Sekitar | Direktori dan masukkan / home / pi untuk direktori Jauh dan apa sahaja yang anda suka untuk tetapan Direktori Tempatan.

Dalam Tetapan Laman Lanjutan, pergi ke Alam Sekitar | Shell dan pilih sudo su - dalam senarai drop-down Shell.

Kemudian tekan Simpan.

Pastikan WinSCP dan PuTTY terbuka semasa melakukan langkah-langkah berikut

Pergi ke terminal PuTTY dan masukkan yang berikut:

cd ~

Ini akan membawa kita ke direktori rumah kita di dalam pi.

Kita sekarang boleh merebut perpustakaan pemacu LED dari github. Untuk menggunakan kod terkini, kita perlu menarik repo jadi kita perlu memasang utiliti git.

Masukkan ini di PuTTY:

sudo apt-get install git

jawab Y untuk meneruskan dan memerlukan beberapa saat untuk memasang git untuk kita dari internet.

Keluarannya akan kelihatan seperti ini:

pi @ raspberrypi: ~ $ sudo apt-get install git

Membaca senarai pakej… Selesai Membangun pohon pergantungan Membaca maklumat keadaan… Selesai Pakej tambahan berikut akan dipasang: git-man liberror-perl Pakej yang dicadangkan: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Pakej BARU berikut akan dipasang: git git-man liberror-perl 0 dinaik taraf, 3 baru dipasang, 0 untuk dikeluarkan dan 0 tidak ditingkatkan. Perlu mendapatkan arkib 4, 848 kB. Selepas operasi ini, ruang cakera tambahan 26.4 MB akan digunakan. Adakah anda mahu meneruskan? [Y / n] y Dapatkan: 1 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf liberror-perl semua 0.17024-1 [26.9 kB] Dapatkan: 2 https://muug.ca/mirror/ peregangan raspbian / raspbian / armhf utama git-man all 1: 2.11.0-3 + deb9u3 [1, 433 kB] Dapatkan: 3 https://muug.ca/mirror/raspbian/raspbian regangan / mainhhf git armhf 1: 2.11.0-3 + deb9u3 [3, 388 kB] Diambil 4, 848 kB dalam 5 saat (878 kB / s) Memilih pakej liberror-perl yang sebelumnya tidak dipilih.(Membaca pangkalan data… 34363 fail dan direktori yang sedang dipasang.) Bersedia untuk membongkar… / liberror-perl_0.17024-1_all.deb… Membongkar liberror-perl (0.17024-1)… Memilih paket git-man yang sebelumnya tidak dipilih. Bersedia untuk membongkar… / git-man_1% 3a2.11.0-3 + deb9u3_all.deb… Membongkar git-man (1: 2.11.0-3 + deb9u3)… Memilih git pakej yang sebelumnya tidak dipilih. Bersedia untuk membongkar… / git_1% 3a2.11.0-3 + deb9u3_armhf.deb… Membongkar git (1: 2.11.0-3 + deb9u3)… Menyiapkan git-man (1: 2.11.0-3 + deb9u3)… Menyiapkan liberror-perl (0.17024-1)… Pemicu pemprosesan untuk man-db (2.7.6.1-2)… Menyiapkan git (1: 2.11.0-3 + deb9u3)…

Sekarang kembali ke WinSCP dan arahkan ke folder / home / pi. Kemudian di sebelah kanan tetingkap WinScp ini, klik kanan dan pilih untuk membuat Direktori Baru yang disebut "tempat letak kereta"

Kembali ke skrin PuTTY anda boleh menaip ls untuk mengesahkan bahawa anda baru saja membuat folder baru di pi. Kemudian masukkan ini:

cd p [TAB]Petua: Menekan kekunci TAB akan melengkapkan secara automatik nama separa untuk anda

Tekan kekunci enter untuk masuk ke direktori ini.

pi @ raspberrypi: ~ $ cd tempat letak kenderaan /

pi @ raspberrypi: ~ / parking $ ls

Sekarang kita boleh mendapatkan fail pemacu dengan memasukkan yang berikut di PuTTY:

git klon

Keluarannya akan kelihatan seperti ini:

pi @ raspberrypi: ~ / parking $ git clone

Pengklonan ke dalam 'rpi-rgb-led-matrix' … jarak jauh: Membilang objek: 3740, selesai. jarak jauh: Jumlah 3740 (delta 0), digunakan kembali 0 (delta 0), pak digunakan semula 3740 Objek penerimaan: 100% (3740/3740), 20.61 MiB | 1.32 MiB / s, selesai. Menyelesaikan delta: 100% (2550/2550), selesai.

Sekarang kumpulkan fail pemacu LED dengan masuk ke direktori 'rpi-rgb-led-matrix' baru ini dan ketik perintah make:

cd r [TAB]

membuat Dan inilah yang kelihatan di papan kami

pi @ raspberrypi: ~ / parking $ cd rpi-rgb-led-matrix /

pi @ raspberrypi: ~ / parking / rpi-rgb-led-matrix $ make -C./lib make [1]: Memasukkan direktori '/ home / pi / parking / rpi-rgb-led-matrix / lib' g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-tidak terpakai-parameter -fno-pengecualian -c -o gpio.o gpio.cc g ++ -I../ termasuk -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-tidak terpakai-parameter -fno-pengecualian -c -o led-matrix.o led-matrix.cc g ++ -I../ termasuk - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"biasa"' -Wextra -Wno-tidak digunakan-parameter -fno-pengecualian -c -o options-initialize.o options-initialize.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"biasa"' -Wextra -Wno-tidak digunakan-parameter -fno-pengecualian -c -o framebuffer.o framebuffer.cc g ++ -I../ include -Wall -O3 -g - fPIC -DDEFAULT_HARDWARE = '"biasa"' -Wextra -Wno-tidak digunakan-parameter -fno-pengecualian -c -o thread.o thread.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = ' "biasa" '-Wextra -Wno-tidak digunakan-parameter -fno-pengecualian -c -o bdf-font.o bdf-fon t.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-tidak terpakai-parameter -fno-pengecualian -c -o graphic.o graphic.cc g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-tidak terpakai-parameter -fno-pengecualian -c -o transformer.o transformer.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"biasa"' -Wextra -Wno-tidak digunakan-parameter -fno-pengecualian -c -o led-matrix-co led-matrix-c.cc cc -I../ termasuk -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -c -o-hardware-mapping.o hardware-mapping.c g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"biasa"' -Wextra -Wno-tidak digunakan-parameter -fno-pengecualian -c -o content-streamer.o content-streamer.cc g ++ -I../ include -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '"biasa"' -Wextra -Wno-tidak digunakan-parameter -fno-pengecualian -c -o pixel-mapper.o pixel-mapper.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"biasa"' -Wextra -Wno-tidak digunakan-parameter -fno-excep tions -c -o multiplex-mappers.o multiplex-mappers.cc ar rcs librgbmatrix.a gpio.o led-matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphic.o transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers.o g ++ -shared -Wl, -soname, librgbmatrix.so.1 -o librgbmatrix.so.1 gpio.o led -matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphic.o transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers. o -lpthread -lrt -lm -lpthread make [1]: Meninggalkan direktori '/ home / pi / parking / rpi-rgb-led-matrix / lib' make -C contoh-api-use make [1]: Memasukkan direktori ' / home / pi / parking / rpi-rgb-led-matrix / contoh-api-use 'g ++ -I../ include -Wall -O3 -g -Wextra -Wno-tidak terpakai-parameter -c -o demo-main. o demo-main.cc make -C../lib make [2]: Memasukkan direktori '/ home / pi / parking / rpi-rgb-led-matrix / lib' make [2]: Meninggalkan direktori '/ home / pi / parking / rpi-rgb-led-matrix / lib 'g ++ demo-main.o -o demo -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-used-parameter -c -o minimal-example.o minimal-example.cc g ++ minimal-example.o - o contoh minimum -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ include -Wall -O3 -g -Wextra -Wno-unused-used-parameter -c -o c-example.o c- contoh.c cc c-example.o -o c-contoh -L../ lib -lrgbmatrix -lrt -lm -lpthread -lstdc ++ g ++ -I../ include -Wall -O3 -g -Wextra -Wno-tidak digunakan- parameter -c -o text-example.o text-example.cc g ++ text-example.o -o text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall - O3 -g -Wextra -Wno-tidak digunakan-parameter -c -o scrolling-text-example.o scrolling-text-example.cc g ++ scrolling-text-example.o -o scrolling-text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-used-parameter -c -o clock.o clock.cc g ++ clock.o -o clock -L.. / lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-tidak digunakan-parameter -c -o ledcat.o ledcat.cc g ++ le dcat.o -o ledcat -L../ lib -lrgbmatrix -lrt -lm -lpthread make [1]: Meninggalkan direktori '/ home / pi / parking / rpi-rgb-led-matrix / contoh-api-use' pi @raspberrypi: ~ / parking / rpi-rgb-led-matrix $

Langkah seterusnya adalah mengikat perpustakaan matriks RGB ke Python. Kami menggunakan Python 2 lalai untuk projek ini. Oleh itu, untuk melakukan pengikatan ini kita memasukkan satu baris berikut pada satu masa seperti sebelumnya:

sudo apt-get kemas kini && sudo apt-get install python2.7-dev python-pillow -y

buat build-python sudo buat install-python

Catatan: Anda boleh mengabaikan satu amaran mengenai '-Wstrict-prototype' yang muncul semasa menjalankan kedua-dua pernyataan tersebut. Perintah membuat memerlukan beberapa minit untuk dijalankan dan mereka tidak mengatakan apa-apa sementara mereka sibuk. Oleh itu, jangan takut - pi anda akan segera kembali;)

Berikut adalah output separa pada pernyataan membuat pertama:

membina pelanjutan 'grafik'

arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-سخت-aliasing -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-awalan-peta = / membina / python2.7-kKRR4y / ular sawa2.7-2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security -fPIC -I../../ include -I / usr / include / python2.7 -c rgbmatrix / graphic.cpp -o build / temp.linux- armv6l-2.7 / rgbmatrix / graphic.o -O3 -Wall cc1plus: Warning: option command line '-Wstrict-prototypes' sah untuk C / ObjC tetapi tidak untuk C ++ arm-linux-gnueabihf-g ++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic-functions -Wl, -z, relro -fno-ketat-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-awalan -map = / build / python2.7-kKRR4y / python2.7-2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security -Wl, -z, relro -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix-map = / build / python2.7-kKRR4y / python2.7 -2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security build / temp.linux-armv6l-2.7 / rgbmatrix / graphic.o -L../../ lib -lrgbmatrix -o./rgbmatrix/graphics.so buat [1]: Meninggalkan direktori '/ home / pi / parking / rpi-rgb-led-matrix / bindings / python' pi @ raspberrypi: ~ / parking / rpi-rgb-led-matrix $

Seterusnya kami akan memasang perpustakaan pigpio C. Untuk melakukan ini dengan betul, kita perlu membuatnya dari sumber jadi masukkan baris berikut:

cd ~

sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip unzip pigpio.zip cd PIGPIO buat sudo buat pasang rm pigpio.zip

Pemasangan di atas mengambil masa lebih kurang 3 minit.

Kini tiba masanya untuk mendapatkan fail projek Python kami. Sila isikan:

cd ~

cd / home / pi / parking / rpi-rgb-led-matrix / bindings / python / sample wget https://s3.amazonaws.com/microedco/tinyLiDAR/Raspberry+Pi/tinyL_parking.zip unzip -j tinyL_parking.zip rm tinyL_parking.zip

Kemudian untuk melaksanakannya, taipkan yang berikut:

sudo python parking.py

Tetapi anda tidak perlu melakukan ini sekarang kerana kita masih perlu menyelesaikan semuanya…

Langkah 7: Wayar

Wayar
Wayar
Wayar
Wayar
Wayar
Wayar
Wayar
Wayar

Seperti yang disebutkan sebelumnya, kami menghidupkan panel LED dari penyesuai kuasa yang sama yang memberi kuasa pada pi. Untuk melakukan ini, anda perlu menyambungkan wayar merah dan hitam yang kuat ke pin header lelaki sehingga mereka boleh dipasang ke pin 2 dan 9 dari penyambung pi 40pin.

Cabut plag kuasa ke pi sekarang dan pasangkan panel LED seperti gambar rajah di atas. Pastikan pin 2 terputus buat masa ini.

CATATAN: Panel matriks LED kadangkala dapat dinyalakan dalam keadaan funky. Sekiranya ini berlaku, ia dapat mengurangkan bekalan kuasa anda tanpa mengira kapasiti semasa yang ada. Kami menyedari ini semasa pembangunan di bangku simpanan kami yang dapat menyediakan lebih dari 4 amp. Penyelesaian untuk ini adalah dengan menjalankan kod pi terlebih dahulu dan kemudian pasangkan pin 2 untuk menghidupkan panel LED. Dengan cara ini panel harus muncul dalam keadaan daya rendah kerana ia menyingkirkan keadaan LED rawak. Arus sunyi (semua LED mati) untuk panel LED kami hanya 50mA pada 5v.

CAT5

Kami menggunakan kabel ethernet CAT5 25 kaki dan mengubahnya untuk memasang pin header pi di satu hujung dan menerima pin penyambung GROVE di sisi lain sehingga kami dapat memperpanjang jarak untuk meletakkan sensor kecilLiDAR sisi kami. Foto di atas menunjukkan kabel ini sebelum dan selepas pengubahsuaian. Abaikan warna wayar pin header kerana tidak berkaitan dengan gambar rajah. Pastikan anda memasang sistem anda seperti yang ditunjukkan dalam gambar rajah sambungan bergambar yang ditunjukkan pada langkah 3 sebelumnya.

Langkah 8: Nyalakannya

Image
Image
Langkah Pilihan dan Perintah Berguna
Langkah Pilihan dan Perintah Berguna

Urutan pengaktifan awal yang betul mestilah memasukkan pengecas microUSB ke pi dan menunggu LED biru pada sensor kecilLiDAR berkelip dengan cepat menunjukkan bahawa mereka mengambil ukuran. Ini membuktikan kod berfungsi dengan baik.

Anda kemudian boleh menyambungkan pin 2 dengan perlahan tetapi kuat untuk bekalan panel LED. Berhati-hatilah untuk tidak mengganggu semasa melakukan ini! Sekiranya panel LED menunjukkan beberapa LED terang yang beku maka ia mungkin terganggu jadi keluarkan kuasa mikroUSB dari pi dan tunggu beberapa saat untuk mencuba urutan penambahan semula.

Untuk menjalankan kod, masukkan yang berikut:

cd / rumah / pi / tempat letak kereta / rpi-rgb-led-matrix / binding / ular sawa / sampel

sudo python parking.py

Sekiranya semuanya berjalan lancar, anda harus mendapatkan paparan yang serupa dengan yang ditunjukkan dalam video.

Lihat seketika kod parking.py untuk memahami had apa yang kami gunakan. Lalai untuk sensor depan ialah 200mm. Oleh kerana jarak sensor adalah 11mm hingga 2m, adalah baik untuk mengekalkan jarak nom_parked_Front pada jarak 200mm atau lebih tinggi. Sensor sisi nom_parked_Side ditetapkan ke 600mm. Lihat gambar di atas untuk kod Python yang menunjukkan pilihan konfigurasi ini.

Sekiranya semuanya berfungsi, anda boleh pergi ke depan dan memasang sistem di garaj anda dan menyesuaikan parameter di atas mengikut keperluan. Oleh kerana anda tersambung ke WiFi anda, anda sentiasa boleh masuk dan mengedit tetapan jarak anda seperti yang anda perlukan untuk penyediaan garaj anda semasa ia masih dipasang.

Adakah ini sekarang?

Mengapa ya, ya! - masa untuk menari tarian gembira anda:)

Terima kasih kerana membaca dan nikmati pembantu tempat letak kenderaan baru anda!

Langkah 9: Langkah Pilihan dan Perintah Berguna

Langkah Pilihan - Tambahan FTP untuk Teks Sublime

Untuk mengedit fail skrip Python secara langsung pada pi, kita dapat memasang addon FTP yang disebut Sublime SFTP oleh Wbond. Anda boleh memuat turun addon ini dengan mengikuti arahan di sini

Untuk menyediakan addon ini, kita perlu mengkonfigurasi kelayakan FTP di bawah File | SFTP / FTP | Setup Server… halaman.

Untuk persediaan kami menggunakan:

"type": "sftp", "sync_down_on_open": true, "sync_same_age": true, "host": "192.168.0.200", "user": "pi", "password": "YOUR_RPI_PASSWORD_HERE", "port": "22", "remote_path": "/ home / pi /", "file_permissions": "664", "dir_permissions": "775", Gunakan Ctrl + S atau Fail | Simpan untuk menyimpan maklumat ini. Anda akan diminta nama untuk memanggil konfigurasi ini. Kami hanya menyebutnya "rpizw_0_200"

Sekarang untuk log masuk ke pi dari SublimeText, pergi ke Fail | SFTP / FTP | Layari Pelayan…

Pilih dari senarai pilihan yang muncul. Anda ingin memilih profil dengan nama yang anda nyatakan di atas;) Ikuti arahan untuk menavigasi folder dan mengedit fail yang dikehendaki.

Tambahan Berguna

Perintah Linux yang berguna untuk digunakan pada pi.

Sebelum mencabut kabel pi, SELALU pastikan untuk mematikannya supaya anda tidak mendapat kerosakan fail pada kad microSD anda. Masukkan arahan ini:

tutup sudo sekarang

dan tunggu lampu hijau dimatikan sebelum mencabut kuasa. Begitu juga untuk memulakannya semula, anda boleh memasukkan:

rebo sudo sekarang

Untuk menyenaraikan fail dalam direktori, gunakan ini:

ls

Anda boleh mendapatkan arahan Linux yang berguna di sini

Disyorkan: