Cuprins:

TinyLiDAR pe un Pi ?: 9 pași (cu imagini)
TinyLiDAR pe un Pi ?: 9 pași (cu imagini)

Video: TinyLiDAR pe un Pi ?: 9 pași (cu imagini)

Video: TinyLiDAR pe un Pi ?: 9 pași (cu imagini)
Video: Как использовать 2 или более лазерных датчиков расстояния VL53L0X 2024, Noiembrie
Anonim
TinyLiDAR pe un Pi?
TinyLiDAR pe un Pi?

Buna din nou!

Ei bine, acum că ați petrecut ceva timp de calitate cu tinyLiDAR și Arduino - Raspberry Pi poate că se simte puțin singur;)

Pi are un port I2C nu? Deci, de ce să nu-l conectați și să-l încercați acolo ?! Plan bun, dar dacă ați încercat deja - este posibil să fi observat că datele par cam ciudate.

Da, pi-ul a încorporat deja 1,8K pull-up-uri, astfel încât va trebui să tăiați tampoanele I2C pe tinyLiDAR pentru a scoate pull-urile de 4,7K din circuit - consultați manualul de referință pentru detalii. Dar nu acesta este motivul pentru datele ciudate.

Acest lucru se datorează faptului că autobuzul I2C al lui pi nu este exact la înălțime. A fost așa de când pi-ul a fost introdus pentru prima dată datorită setului de cipuri Broadcom. Încă de la început nu au acceptat în mod corespunzător o caracteristică I2C numită „întinderea ceasului”.

Puteți citi mai multe despre acest bug h / w aici.

Pasul 1: Ce este întinderea ceasului?

Ce este întinderea ceasului?
Ce este întinderea ceasului?

După cum știți, autobuzul I2C este format din 3 fire. Acestea sunt pentru ceas (SCL), date (SDA) și teren comun. Ceasul și liniile de date sunt de tip colector deschis / golire deschisă, ceea ce înseamnă că au nevoie de rezistențe de tracțiune conectate la o șină de alimentare pozitivă pentru a le oferi un nivel logic ridicat. Pentru a obține un nivel logic scăzut, orice dispozitiv de pe autobuz poate trage în jos linia către un teren comun.

Conform standardului I2C, dispozitivul Master este cel care furnizează semnalul de ceas pe linia SCL, dar dacă această rată este prea rapidă, atunci dispozitivului Slave i se permite să o încetinească prin simpla menținere a liniei de ceas până când este gata de tranzacționare cu informațiile. Aceasta este ceea ce numim „întinderea ceasului”.

Oficial, întinderea ceasului a fost listată ca o caracteristică opțională în standardul I2C, dar este o caracteristică foarte comună, necesară pentru majoritatea sclavilor „inteligenți” care au nevoie de ceva timp suplimentar pentru a furniza datele senzorilor etc.

Pasul 2: Puțin ajutor de la porci care zboară

Pentru a face față acestui bug I2C h / w, am găsit o mică bibliotecă gratuită, numită „pigpio”. Este o bibliotecă foarte populară, rapidă și ușoară, scrisă în C. Rulează ca un demon de fundal pentru Raspberry Pi și ne permite să controlăm cu ușurință atât I2C, cât și orice GPIO din Python. Biblioteca tratează porturile I2C mai mult ca GPIO și astfel a ocolit eroarea de întindere a ceasului I2C. Ca toate software-urile de pe pi, biblioteca pigpio este doar o simplă „includere”, așa că hai să mergem!

Pasul 3: TL; Versiunea DR

Configurați Pi Activați SSH pentru a vă conecta cu Putty Instalați biblioteca pigpio Obțineți fișier zip tinyLiDAR Dezarhivați și rulați de la Putty

Opțional:

Configurați SublimeText cu WinSCP

Pasul 4: Instalare

Instalare
Instalare

Pentru Raspberry Pi 3, am folosit sistemul de operare standard New Out Of the Box (NOOBS Lite v2.4). Conține o versiune implicită a Python deja instalată pentru noi, gata de codificare. Puteți descărca sistemul de operare de aici.

Odată instalat pe un card micro SD, trebuie să conectați o tastatură și un monitor pentru a vă putea conecta la pi pentru prima dată:

Nume utilizator: pi Parolă: zmeură

Apoi, puteți porni un server shell securizat (SSH) cu aceste comenzi:

sudo systemctl activate sshsudo systemctl start ssh

În continuare, vom avea nevoie de adresa IP a pi din rețeaua dvs., astfel încât să ne putem conecta cu PuTTY. Pentru a obține acest lucru, trebuie doar să tastați:

numele gazdei -I

Și căutați o adresă în format IPv4 (pentru configurarea noastră a fost: 192.168.0.27)

Pașii de mai sus vor permite pi-ului să ruleze „fără cap”, ceea ce înseamnă că nu va mai trebui să tastați din nou pe această tastatură și, de asemenea, nu mai este nevoie de un monitor video. Vom intra în rețea printr-o conexiune SSH sigură în viitor. Comanda de mai sus face ca serverul SSH să se lanseze automat de fiecare dată când pi-ul este pornit. Acest lucru este convenabil pentru noi în timp ce codificăm, dar ar putea fi un risc de securitate mai târziu (a fi paranoic este bine), așa că, atunci când sunteți gata, puteți dezactiva această caracteristică SSH de pornire automată folosind această comandă:

sudo systemctl dezactivează ssh

Această comandă ar trebui să fie tastată la tastatura conectată la pi desigur.

PuTTY este un program terminal care este necesar pentru a emite comenzi de pe PC către pi, deci ar trebui să luați cea mai recentă copie de aici.

Instalați și porniți PuTTY. Va trebui să introduceți adresa IP de mai sus la intrarea Host Name și să utilizați setările implicite SSH. Dați sesiunii orice nume doriți și apăsați pe Salvare. Apoi apăsați încărcare și faceți clic pe DESCHIS pentru a începe o sesiune.

Ar trebui să vă ducă la ecranul de conectare pentru pi. Folosiți același nume de utilizator și parolă pe care le-ați folosit anterior.

Pasul 5: Instalați Pigpio

Acum, singurul lucru pe care trebuie să îl instalăm după aceasta ar fi biblioteca pigpio și putem face acest lucru folosind următoarele comenzi.

Sfat: Puteți pur și simplu să copiați [ctrl + c] și să lipiți [clic dreapta al mouse-ului] pe acestea și pe orice alte comenzi în terminalul PuTTY

sudo apt-get update

sudo apt-get install pigpio python-pigpio python3-pigpio

Pasul 6: Opțional: Configurare sistem Dev

Opțional: Configurare sistem Dev
Opțional: Configurare sistem Dev

Iată deci un sfat care vă poate ajuta să economisiți ceva timp în lumea dezvoltării codului. Urăm cu adevărat editorii de text bazate pe Unix. Interfața cu utilizatorul este, în mod normal, neîndemânatică, iar fonturile sunt nenorocite. GNU nano este aproape suportabil, dar niciunul nu este la fel de rafinat ca SublimeText pe care îl puteți descărca de aici

Avem un mediu de dezvoltare bazat pe Windows și ne place să folosim acest editor de text ori de câte ori este posibil. Deci, sfatul aici este în configurarea sistemului dvs. pentru a putea utiliza acest editor de text profesionist în mod nativ pe desktopul Windows pentru a codifica direct pe pi-ul fără cap.

Cum? Folosind o aplicație gratuită numită WinSCP pe care o puteți descărca de aici

Pasul 7: Configurarea WinSCP

Configurarea WinSCP
Configurarea WinSCP
Configurarea WinSCP
Configurarea WinSCP

WinSCP este un program sigur de transfer de fișiere care oferă o reprezentare grafică a fișierelor prezente pe rpi, cum ar fi ceea ce vedeți în managerul de fișiere de pe computerul Windows.

Deci, mergeți mai departe și instalați și cele două programe de mai sus.

Apoi va trebui să faceți câteva ajustări pentru ca toate să funcționeze corect.

Pentru WinSCP, puteți face clic pe NOU Site. Vom folosi setările implicite SFTP și trebuie doar să introduceți adresa IP (pentru numele gazdei) a pi-ului dvs. și numele de conectare (pentru numele utilizatorului). Puteți alege să lăsați parola goală dacă doriți - vă va solicita parola de fiecare dată când vă conectați.

Apoi, faceți clic pe butonul Avansat și apoi faceți clic pe partea stângă pentru setările Environment Shell. În partea dreaptă schimbați opțiunea „Implicit” în jos la opțiunea „sudo su -”. Acest lucru va permite ca modificările să fie scrise în pi fără erori de permisiune atunci când apăsați Salvare din SublimeText.

Setați SublimeText să fie Editor implicit în WinSCP

Pentru a face acest lucru, faceți clic pe butonul Instrumente de pe ecranul de setări de conectare WinSCP de unde ați început dialogul NewSite. Cele două capturi de ecran arată cum este configurat acest lucru, dar practic veți face clic pentru a configura preferința Editori și a adăuga un editor care va fi un editor extern. Puteți apoi să căutați fișierul.exe în care se află acest editor pe computer.

Pasul 8: (w) obținerea codului

(w) obținerea codului
(w) obținerea codului

După ce ați terminat, continuați și conectați-vă cu WinSCP și cu PuTTY.

Acum suntem pregătiți să putem începe codul nostru tinyLiDAR.

Creați un director numit tinyLiDAR sub directorul home / pi.

Puteți face acest lucru făcând clic dreapta pe partea dreaptă a ecranului WinSCP și selectând New / Directory.

Acum, la terminalul PuTTY puteți tasta

cd t

și apăsați tab pentru a permite completarea automată a comenzii dvs. pentru a ajunge la directorul tinyLiDAR.

Odată ajuns aici, tastați următoarele:

wget

pentru a obține fișierele direct de pe serverul nostru. Le putem dezarhiva apoi tastând

dezarhivați r

și apăsați tasta pentru a completa din nou numele

Pentru al rula, trebuie doar să tastați

python tlgui.py

Și tinyLiDAR dvs. va răspunde la fiecare comandă de pe pi:)

Pasul 9: Notă pentru viitorii hackeri

Continuați și aruncați o privire sub capotă făcând dublu clic pe oricare dintre fișierele de cod de la WinSCP. Acestea sunt cele cu o extensie.py. Fișierele ar trebui să se deschidă în SublimeText direct pe computer. Schimbați orice doriți și apoi apăsați Salvare. Modificările dvs. vor fi salvate direct în pi.

Când sunteți gata, îl rulați din nou utilizând tasta săgeată sus pentru ultima comandă tastată sau pur și simplu tastați-o din nou și apăsați Enter:

python tlgui.py

Este posibil să fi observat că aspectul terminalului GUI arată un pic mai frumos decât versiunea Arduino. Acest lucru se datorează faptului că PuTTY acceptă caractere unicode, așa că am putut folosi câteva caractere suplimentare de control al cursorului pentru a face să pară mai rafinat.

Există, de asemenea, o comandă adăugată aici (în comparație cu versiunea Arduino) care este „dc” pentru funcția de citire continuă. Încercați și vedeți ce credeți.

Asta e tot!

Vă mulțumim pentru citire și bucurați-vă de hacking pe pi:)

Recomandat: