Inhoudsopgave:

TinyLiDAR op een Pi? - Ajarnpa
TinyLiDAR op een Pi? - Ajarnpa

Video: TinyLiDAR op een Pi? - Ajarnpa

Video: TinyLiDAR op een Pi? - Ajarnpa
Video: Как использовать 2 или более лазерных датчиков расстояния VL53L0X 2024, November
Anonim
TinyLiDAR op een Pi?
TinyLiDAR op een Pi?

Welkom terug!

Welnu, nu je wat quality time hebt doorgebracht met tinyLiDAR en je Arduino, voelt je Raspberry Pi zich misschien een beetje eenzaam;)

De pi heeft toch een I2C-poort? Dus waarom niet aansluiten en het daar proberen?! Goed plan, maar als je het al geprobeerd hebt, is het je misschien opgevallen dat de gegevens er een beetje vreemd uitzien.

Ja, de pi heeft al 1.8K pull-ups ingebouwd, dus je zult de I2C-pads op tinyLiDAR moeten knippen om de 4.7K pull-ups uit het circuit te halen - zie de referentiehandleiding voor details. Maar dit is niet de reden voor de vreemde gegevens.

Het is omdat de I2C-bus van de pi niet helemaal voldoet aan de specificaties. Het is al zo sinds de pi voor het eerst werd geïntroduceerd vanwege de Broadcom-chipset. Vanaf het begin hebben ze een I2C-functie genaamd "clock stretching" niet goed ondersteund.

U kunt hier meer lezen over deze h/w-bug.

Stap 1: Wat is klok uitrekken?

Wat is klok uitrekken?
Wat is klok uitrekken?

Zoals je wellicht weet, bestaat de I2C-bus uit 3 draden. Deze zijn voor klok (SCL), data (SDA) en common ground. De klok- en datalijnen zijn van het type open-collector/open-drain, wat betekent dat ze pull-up-weerstanden nodig hebben die zijn aangesloten op een positieve voedingsrail om ze een logische high te geven. Om een logisch laag niveau te krijgen, kan elk apparaat op de bus de lijn naar de gemeenschappelijke grond trekken.

Volgens de I2C-standaard is het Master-apparaat degene die het kloksignaal op de SCL-lijn levert, maar als deze snelheid te snel is, mag het Slave-apparaat het vertragen door simpelweg de kloklijn ingedrukt te houden totdat het klaar is om te handelen met de informatie. Dit noemen we "clock stretching".

Officieel werd het uitrekken van de klok vermeld als een optionele functie in de I2C-standaard, maar het is een veel voorkomende functie die nodig is voor de meeste "intelligente" slaven die wat extra tijd nodig hebben om sensorgegevens enz.

Stap 2: Een beetje hulp van vliegende varkens

Om deze I2C h/w-bug aan te pakken, hebben we een leuke kleine gratis bibliotheek gevonden genaamd "pigpio". Het is een zeer populaire, snelle en lichtgewicht bibliotheek geschreven in C. Het draait als een achtergronddaemon voor de Raspberry Pi en stelt ons in staat om zowel de I2C als elke GPIO gemakkelijk vanuit Python te besturen. De bibliotheek behandelt de I2C-poorten meer als GPIO en heeft daardoor de I2C-klok-uitrekkende bug omzeild. Zoals alle software op de pi, is de pigpio-bibliotheek slechts een simpele "opnemen" verwijderd, dus laten we gaan!

Stap 3: TL;DR-versie

Stel Pi in Schakel SSH in om in te loggen met PuttyInstalleer de pigpio-bibliotheekGet tinyLiDAR zip-bestandUnzip en voer uit Putty

Optioneel:

SublimeText instellen met WinSCP

Stap 4: Installatie

Installatie
Installatie

Voor onze Raspberry Pi 3 hebben we het standaard New Out Of the Box Software (NOOBS Lite v2.4) besturingssysteem gebruikt. Het bevat een standaardversie van Python die al voor ons is geïnstalleerd, klaar om mee te coderen. U kunt het besturingssysteem hier downloaden.

Eenmaal geïnstalleerd op een micro SD-kaart moet je een toetsenbord en monitor aansluiten, zodat je voor de eerste keer op de pi kunt inloggen:

Gebruikersnaam: pi Wachtwoord: framboos

Dan kun je een secure shell server (SSH) starten met deze commando's:

sudo systemctl activeer sshsudo systemctl start ssh

Vervolgens hebben we het IP-adres van de pi op uw netwerk nodig, zodat we kunnen inloggen met PuTTY. Om dit te krijgen, typt u gewoon:

hostnaam -I

En zoek naar een adres in IPv4-formaat (voor onze installatie was dit: 192.168.0.27)

Met de bovenstaande stappen kan de pi "headless" worden uitgevoerd, wat betekent dat u niet opnieuw op dit toetsenbord hoeft te typen en dat er ook geen videomonitor meer nodig is. We zullen vanaf nu inloggen via het netwerk via een beveiligde SSH-verbinding. De bovenstaande opdracht zorgt ervoor dat de SSH-server automatisch wordt gestart telkens wanneer de pi wordt ingeschakeld. Dit is handig voor ons terwijl we aan het coderen zijn, maar het kan later een veiligheidsrisico zijn (paranoïde zijn is goed), dus als je klaar bent, kun je deze SSH-functie voor automatisch starten uitschakelen met deze opdracht:

sudo systemctl schakel ssh uit

Deze opdracht moet natuurlijk worden getypt op het toetsenbord dat op de pi is aangesloten.

PuTTY is een terminalprogramma dat nodig is om commando's van de pc naar de pi te geven, dus je moet hier de nieuwste kopie pakken.

Installeer en start PuTTY. U moet het IP-adres van boven invoeren bij het item Hostnaam en de standaard SSH-instellingen gebruiken. Geef de sessie elke gewenste naam en druk op opslaan. Druk vervolgens op laden en klik op OPENEN om een sessie te starten.

Het zou je naar het inlogscherm voor de pi moeten brengen. Gebruik dezelfde gebruikersnaam en hetzelfde wachtwoord die u eerder gebruikte.

Stap 5: Installeer Pigpio

Het enige dat we hierna hoeven te installeren, is de pigpio-bibliotheek en we kunnen dit doen door de volgende opdrachten te gebruiken.

Tip: U kunt eenvoudig [ctrl+c] kopiëren en [muis rechtermuisknop] deze en andere opdrachten in de PuTTY-terminal plakken

sudo apt-get update

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

Stap 6: Optioneel: Dev System Setup

Optioneel: Dev System Setup
Optioneel: Dev System Setup

Dus hier is een tip die kan helpen om wat tijd te besparen in de wereld van uw code-ontwikkeling. We hebben echt een hekel aan de op Unix gebaseerde teksteditors. De gebruikersinterface is normaal gesproken onhandig en de lettertypen zuigen. GNU nano is bijna draaglijk, maar geen enkele is zo verfijnd als SublimeText die je hier kunt downloaden

We hebben een op Windows gebaseerde ontwikkelomgeving en gebruiken deze teksteditor graag waar mogelijk. Dus de tip hier is om je systeem in te stellen om deze professionele teksteditor native op je Windows-bureaublad te kunnen gebruiken om direct op je headless pi te coderen.

Hoe? Een gratis app genaamd WinSCP gebruiken die u hier kunt downloaden

Stap 7: WinSCP instellen

WinSCP instellen
WinSCP instellen
WinSCP instellen
WinSCP instellen

WinSCP is een beveiligd programma voor bestandsoverdracht dat een grafische weergave geeft van de bestanden die aanwezig zijn op uw rpi, vergelijkbaar met wat u ziet in bestandsbeheer op uw Windows-pc.

Dus ga je gang en installeer nu ook de bovenstaande twee programma's.

Vervolgens moet u een paar aanpassingen maken om ze allemaal goed te laten werken.

Voor WinSCP kunt u klikken op NIEUWE site. We zullen de standaard SFTP-instellingen gebruiken en u hoeft alleen het IP-adres (voor hostnaam) van uw pi en de inlognaam (voor gebruikersnaam) in te voeren. U kunt ervoor kiezen om het wachtwoord leeg te laten als u dat wilt - het zal u elke keer dat u inlogt om het wachtwoord vragen.

Klik vervolgens op de knop Geavanceerd en klik vervolgens aan de linkerkant voor Omgevingsshell-instellingen. Wijzig aan de rechterkant de vervolgkeuzelijst "Standaard" in de optie "sudo su -". Hierdoor kunnen wijzigingen naar uw pi worden geschreven zonder toestemmingsfouten wanneer u op opslaan klikt vanuit SublimeText.

Stel SublimeText in als standaardeditor in WinSCP

Om dit te doen, klikt u op de knop Tools in het WinSCP Login-instellingenscherm waar u uw NewSite-dialoogvenster hebt gestart. De twee schermafbeeldingen laten zien hoe dit is geconfigureerd, maar in principe klikt u om de Editors-voorkeur te configureren en een Editor toe te voegen die een externe editor zal zijn. U kunt vervolgens bladeren naar het.exe-bestand van waar deze editor zich op uw computer bevindt.

Stap 8: (w)de code verkrijgen

(w)de code verkrijgen
(w)de code verkrijgen

Als je klaar bent, ga je gang en log je in met WinSCP en met PuTTY.

Nu we er helemaal klaar voor zijn, kunnen we onze tinyLiDAR-code starten.

Maak een map met de naam tinyLiDAR onder je home/pi-map.

U kunt dit doen door met de rechtermuisknop aan de rechterkant van het WinSCP-scherm te klikken en Nieuw / Directory te kiezen.

Nu kun je op de PuTTY-terminal typen

cd naar

en druk op tab om uw opdracht automatisch aan te vullen om naar de tinyLiDAR-map te gaan.

Typ hier het volgende:

wget

om de bestanden rechtstreeks van onze server te krijgen. We kunnen ze dan uitpakken door te typen

unzip r

en druk op tab om de naam opnieuw automatisch aan te vullen

Om het uit te voeren, typt u gewoon

python tlgui.py

En je tinyLiDAR reageert op al je opdrachten op de pi:)

Stap 9: Opmerking voor toekomstige hackers

Ga je gang en neem een kijkje onder de motorkap door te dubbelklikken op een van de codebestanden van WinSCP. Zij zijn degenen met een.py-extensie. De bestanden zouden in SublimeText direct op uw pc moeten openen. Verander wat je maar wilt en klik vervolgens op opslaan. Uw wijzigingen worden direct op uw pi opgeslagen.

Als u klaar bent, voert u het opnieuw uit met de pijl-omhoog voor de laatst getypte opdracht of typt u het gewoon opnieuw en drukt u op enter:

python tlgui.py

Het is je misschien opgevallen dat de Terminal GUI-lay-out er een beetje mooier uitziet dan de Arduino-versie. Het is omdat PuTTY unicode-tekens ondersteunt, dus we konden wat extra cursorbesturingstekens gebruiken om het er verfijnder uit te laten zien.

Er is hier ook een toegevoegd commando (vergeleken met de Arduino-versie) dat "dc" is voor de functie Continu lezen. Probeer het uit en kijk wat je ervan vindt.

Dat is alles!

Bedankt voor het lezen en veel plezier met hacken op de pi:)

Aanbevolen: