Table des matières:

TinyLiDAR sur Pi ? : 9 étapes (avec photos)
TinyLiDAR sur Pi ? : 9 étapes (avec photos)

Vidéo: TinyLiDAR sur Pi ? : 9 étapes (avec photos)

Vidéo: TinyLiDAR sur Pi ? : 9 étapes (avec photos)
Vidéo: tinyLiDAR From Concept to Creation 2024, Novembre
Anonim
TinyLiDAR sur un Pi ?
TinyLiDAR sur un Pi ?

Rebonjour!

Eh bien, maintenant que vous avez passé du temps de qualité avec tinyLiDAR et votre Arduino - votre Raspberry Pi se sent peut-être un peu seul;)

Le pi a un port I2C non? Alors pourquoi ne pas le brancher et l'essayer là-bas ?! Bon plan, mais si vous avez déjà essayé, vous avez peut-être remarqué que les données semblent un peu étranges.

Oui, le pi a déjà intégré des pull-ups 1.8K, vous devrez donc couper les pads I2C sur tinyLiDAR pour sortir les pull-ups 4.7K du circuit - voir le manuel de référence pour plus de détails. Mais ce n'est pas la raison des données étranges.

C'est parce que le bus I2C du pi n'est pas exactement conforme aux spécifications. C'est comme ça depuis que le pi a été introduit pour la première fois en raison du jeu de puces Broadcom. Depuis le tout début, ils n'ont pas correctement pris en charge une fonctionnalité I2C appelée "clock stretching".

Vous pouvez en savoir plus sur ce bogue matériel ici.

Étape 1: Qu'est-ce que l'étirement de l'horloge ?

Qu'est-ce que l'étirement de l'horloge ?
Qu'est-ce que l'étirement de l'horloge ?

Comme vous le savez peut-être, le bus I2C se compose de 3 fils. Il s'agit de l'horloge (SCL), des données (SDA) et de la masse commune. L'horloge et les lignes de données sont de type collecteur ouvert/drain ouvert, ce qui signifie qu'elles ont besoin de résistances de rappel connectées à un rail d'alimentation positif pour leur donner un niveau logique haut. Pour obtenir un niveau logique bas, n'importe quel périphérique sur le bus peut tirer la ligne vers la terre commune.

Selon la norme I2C, le périphérique maître est celui qui fournit le signal d'horloge sur la ligne SCL, mais si ce taux est trop rapide, le périphérique esclave est autorisé à le ralentir en maintenant simplement la ligne d'horloge enfoncée jusqu'à ce qu'il soit prêt à traiter avec les informations. C'est ce que nous appelons "l'étirement de l'horloge".

Officiellement, l'étirement de l'horloge était répertorié comme une fonctionnalité facultative dans la norme I2C, mais c'est une fonctionnalité très courante qui est nécessaire pour la plupart des esclaves "intelligents" qui ont besoin de plus de temps pour fournir des données de capteur, etc.

Étape 2: Un peu d'aide des cochons qui volent

Pour faire face à ce bug matériel I2C, nous avons trouvé une jolie petite bibliothèque gratuite appelée "pigpio". C'est une bibliothèque très populaire, rapide et légère écrite en C. Elle fonctionne comme un démon d'arrière-plan pour le Raspberry Pi et nous permet de contrôler facilement l'I2C ainsi que n'importe quel GPIO à partir de python. La bibliothèque traite les ports I2C davantage comme GPIO et a ainsi contourné le bogue d'étirement de l'horloge I2C. Comme tous les logiciels sur pi, la bibliothèque pigpio n'est qu'un simple "include", alors allons-y !

Étape 3: TL; Version DR

Configurez PiEnable SSH pour vous connecter avec PuttyInstallez la bibliothèque pigpioObtenez le fichier zip tinyLiDARDécompressez et exécutez depuis Putty

Optionnel:

Configurer SublimeText avec WinSCP

Étape 4: Installation

Installation
Installation

Pour notre Raspberry Pi 3, nous avons utilisé le système d'exploitation standard New Out Of the Box Software (NOOBS Lite v2.4). Il contient une version par défaut de Python déjà installée pour nous, prête à coder avec. Vous pouvez télécharger le système d'exploitation ici.

Une fois installé sur une carte micro SD, vous devez connecter un clavier et un moniteur pour pouvoir vous connecter au pi pour la première fois:

Nom d'utilisateur: pi Mot de passe: framboise

Ensuite, vous pouvez démarrer un serveur shell sécurisé (SSH) avec ces commandes:

sudo systemctl activer sshsudo systemctl démarrer ssh

Ensuite, nous aurons besoin de l'adresse IP du pi sur votre réseau pour pouvoir nous connecter avec PuTTY. Pour l'obtenir, il suffit de taper:

nom d'hôte -I

Et recherchez une adresse au format IPv4 (Pour notre configuration, c'était: 192.168.0.27)

Les étapes ci-dessus permettront au pi de fonctionner "sans tête", ce qui signifie que vous n'aurez plus besoin de taper sur ce clavier et qu'il n'y aura plus besoin d'un moniteur vidéo. Nous nous connecterons via le réseau via une connexion SSH sécurisée à l'avenir. La commande ci-dessus provoque le lancement automatique du serveur SSH à chaque mise sous tension du pi. C'est pratique pour nous pendant que nous codons, mais cela pourrait être un risque de sécurité plus tard (être paranoïaque, c'est bien) donc lorsque vous êtes prêt, vous pouvez désactiver cette fonctionnalité de démarrage automatique SSH en utilisant cette commande:

sudo systemctl désactiver ssh

Cette commande doit être tapée au clavier connecté au pi bien sûr.

PuTTY est un programme de terminal qui est requis pour émettre des commandes du PC vers le pi, vous devez donc récupérer la dernière copie à partir d'ici.

Installez et démarrez PuTTY. Vous devrez saisir l'adresse IP ci-dessus à l'entrée du nom d'hôte et utiliser les paramètres SSH par défaut. Donnez à la session le nom que vous voulez et cliquez sur Enregistrer. Appuyez ensuite sur charger et cliquez sur OUVRIR pour démarrer une session.

Cela devrait vous amener à l'écran de connexion pour le pi. Utilisez votre même nom d'utilisateur et mot de passe que vous avez utilisé précédemment.

Étape 5: Installer Pigpio

Maintenant, la seule chose que nous devons installer après cela serait la bibliothèque pigpio et nous pouvons le faire en utilisant les commandes suivantes.

Astuce: vous pouvez simplement copier [ctrl+c] et coller [clic droit de la souris] ces commandes et toute autre commande dans le terminal PuTTY

sudo apt-get mise à jour

sudo apt-get installer pigpio python-pigpio python3-pigpio

Étape 6: Facultatif: Configuration du système de développement

Facultatif: configuration du système de développement
Facultatif: configuration du système de développement

Voici donc une astuce qui peut vous aider à gagner du temps dans votre monde de développement de code. Nous détestons vraiment les éditeurs de texte basés sur Unix. L'interface utilisateur est normalement maladroite et les polices sont nulles. GNU nano est presque supportable mais aucun n'est aussi raffiné que SublimeText que vous pouvez télécharger ici

Nous avons un environnement de développement basé sur Windows et aimons utiliser cet éditeur de texte chaque fois que possible. Le conseil ici consiste donc à configurer votre système pour pouvoir utiliser cet éditeur de texte professionnel de manière native sur votre bureau Windows pour coder directement sur votre pi sans tête.

Comment? En utilisant une application gratuite appelée WinSCP que vous pouvez télécharger ici

Étape 7: Configuration de WinSCP

Configuration de WinSCP
Configuration de WinSCP
Configuration de WinSCP
Configuration de WinSCP

WinSCP est un programme de transfert de fichiers sécurisé qui donne une représentation graphique des fichiers présents sur votre rpi un peu comme ce que vous voyez dans le gestionnaire de fichiers sur votre PC Windows.

Alors allez-y et installez également les deux programmes ci-dessus maintenant.

Ensuite, vous devrez faire quelques ajustements pour qu'ils fonctionnent tous correctement.

Pour WinSCP, vous pouvez cliquer sur NOUVEAU site. Nous utiliserons les paramètres SFTP par défaut et vous n'aurez qu'à entrer l'adresse IP (pour le nom d'hôte) de votre pi et le nom de connexion (pour le nom d'utilisateur). Vous pouvez choisir de laisser le mot de passe vide si vous le souhaitez - il vous demandera le mot de passe à chaque fois que vous vous connecterez.

Ensuite, cliquez sur le bouton Avancé, puis sur le côté gauche pour les paramètres de l'environnement Shell. Sur le côté droit, remplacez le menu déroulant "Par défaut" par l'option "sudo su -". Cela permettra d'écrire des modifications sur votre pi sans erreur d'autorisation lorsque vous appuyez sur Enregistrer à partir de SublimeText.

Définir SublimeText comme éditeur par défaut dans WinSCP

Pour ce faire, cliquez sur le bouton Outils sur l'écran des paramètres de connexion WinSCP où vous avez démarré votre boîte de dialogue NouveauSite. Les deux captures d'écran montrent comment cela est configuré, mais en gros, vous cliquerez pour configurer la préférence Éditeurs et Ajouter un éditeur qui sera un éditeur externe. Vous pouvez ensuite rechercher le fichier.exe de l'emplacement de cet éditeur sur votre ordinateur.

Étape 8: (w)obtenir le code

(w)obtenir le Code
(w)obtenir le Code

Une fois cela fait, allez-y et connectez-vous avec WinSCP et avec PuTTY.

Maintenant que nous sommes tous prêts, nous pouvons commencer notre code tinyLiDAR.

Créez un répertoire appelé tinyLiDAR dans votre répertoire home/pi.

Vous pouvez le faire en faisant un clic droit sur le côté droit de l'écran WinSCP et choisissez Nouveau / Répertoire.

Maintenant, au terminal PuTTY, vous pouvez taper

cd t

et appuyez sur tab pour le laisser compléter automatiquement votre commande pour accéder au répertoire tinyLiDAR.

Une fois ici, tapez ce qui suit:

wget

pour obtenir les fichiers directement depuis notre serveur. Nous pouvons ensuite les décompresser en tapant

décompresser r

et appuyez sur tab pour compléter automatiquement le nom

Pour l'exécuter, tapez simplement

python tlgui.py

Et votre tinyLiDAR répondra à toutes vos commandes sur le pi:)

Étape 9: Note pour les futurs pirates informatiques

Allez-y et jetez un œil sous le capot en double-cliquant sur l'un des fichiers de code de WinSCP. Ce sont eux avec une extension.py. Les fichiers devraient s'ouvrir dans SublimeText directement sur votre PC. Modifiez ce que vous voulez, puis appuyez sur Enregistrer. Vos modifications seront enregistrées directement dans votre pi.

Lorsque vous êtes prêt, vous l'exécutez à nouveau en utilisant la touche fléchée vers le haut pour la dernière commande tapée ou tapez-la à nouveau et appuyez sur Entrée:

python tlgui.py

Vous avez peut-être remarqué que la disposition de l'interface graphique du terminal est un peu plus agréable que la version Arduino. C'est parce que PuTTY prend en charge les caractères Unicode, nous avons donc pu utiliser des caractères de contrôle de curseur supplémentaires pour le rendre plus raffiné.

Il y a aussi une commande ajoutée ici (par rapport à la version Arduino) qui est "dc" pour la fonction de lecture continue. Essayez-le et voyez ce que vous pensez.

C'est tout!

Merci d'avoir lu et profitez du piratage sur le pi:)

Conseillé: