Inhoudsopgave:
- Stap 1: Wat is klok uitrekken?
- Stap 2: Een beetje hulp van vliegende varkens
- Stap 3: TL;DR-versie
- Stap 4: Installatie
- Stap 5: Installeer Pigpio
- Stap 6: Optioneel: Dev System Setup
- Stap 7: WinSCP instellen
- Stap 8: (w)de code verkrijgen
- Stap 9: Opmerking voor toekomstige hackers
Video: TinyLiDAR op een Pi? - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
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?
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
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
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 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
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:
Een e-mailmelding ontvangen wanneer een kanaal op ThingSpeak een tijdje niet is bijgewerkt: 16 stappen
Ontvang een e-mailmelding als een kanaal op ThingSpeak een tijdje niet is bijgewerkt: Achtergrondverhaal Ik heb zes geautomatiseerde kassen verspreid over Dublin, Ierland. Door een op maat gemaakte app voor mobiele telefoons te gebruiken, kan ik op afstand de geautomatiseerde functies in elke kas volgen en ermee communiceren. Ik kan de win handmatig openen / sluiten
Automatisch een programma starten bij het aansluiten van een laptop op een dockingstation: 5 stappen
Een programma automatisch starten wanneer u een laptop op een dockingstation aansluit: deze instructie gaat over het uitvoeren van een programma of een toepassing wanneer u uw laptop op een dockingstation aansluit. In dit voorbeeld gebruik ik Lenovo T480 Windows 10
Een condensator of een inductor meten met een mp3-speler: 9 stappen
Een condensator of een inductor meten met een mp3-speler: Hier is een eenvoudige techniek die kan worden gebruikt om de capaciteit en inductantie van een condensator en inductor nauwkeurig te meten zonder dure apparatuur. De meettechniek is gebaseerd op een gebalanceerde brug en kan eenvoudig worden geconstrueerd uit onde
Een lijn toevoegen aan een Boombox met een cassettespeler: 5 stappen
Een line-in toevoegen aan een boombox met een tapespeler: ** Zoals bij alle instructables, neem je je item / gezondheid / wat dan ook in eigen handen wanneer je het probeert! Houd rekening met hoge spanningen op het hoofdvoedingsbord, de hete soldeerbout, enz. Voorzichtig en geduldig zijn, zal u succes brengen. **NS
Een Halloween Scare Machine met behulp van een PIR, een 3D-geprinte pompoen en de Troll Arduino Compatible Audio Pranker/praktische Joke Board.: 5 stappen
Een Halloween Scare Machine met behulp van een PIR, een 3D-geprinte pompoen en het Troll Arduino-compatibele audio-pranker/praktische grapbord.: Het Troll-bord gemaakt door Patrick Thomas Mitchell van EngineeringShock Electronics, en niet zo lang geleden volledig gefinancierd op Kickstarter. Ik kreeg mijn beloning een paar weken te vroeg om te helpen bij het schrijven van enkele gebruiksvoorbeelden en het bouwen van een Arduino-bibliotheek in een po