Table des matières:
- Étape 1: Qu'est-ce qu'un Pi Zero W ?
- Étape 2: Scotty, nous avons besoin de plus de puissance
- Étape 3: Placement du capteur et logiciel
- Étape 4: Configuration du Pi
- Étape 5: Temps Wi-Fi
- Étape 6: Connexion
- Étape 7: Fils
- Étape 8: Allumez-le
- Étape 9: Étape facultative et commandes utiles
Vidéo: Système d'aide au stationnement basé sur Pi : 9 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Salut! Voici un petit projet sympa que vous pouvez réaliser en une seule après-midi, puis l'utiliser quotidiennement. Il est basé sur le Raspberry Pi Zero W et vous aidera à garer votre voiture parfaitement à chaque fois.
Voici la liste complète des pièces dont vous aurez besoin:
- Raspberry Pi Zero W (nous appellerons cela 'rpi' ou 'pi' dans cet article)
- Carte micro SD de 4 Go ou plus pour le système d'exploitation pi
- Deux modules de capteur de distance TinyLiDAR Time of Flight
- Panneau LED RVB 32x32 (il existe de nombreux fabricants pour cela avec des pas de points variables, vous pouvez par exemple utiliser l'Adafruit 1484 ou similaire, recherchez simplement « 32x32 LED Matrix » sur Google). Notre panneau avait un pas de 6 mm.
- 25 pieds de câble CAT5
- environ 22 fils de cavalier de broche d'en-tête mâle à mâle de couleur
- Alimentation microUSB 5v 2Amp (chargeur de téléphone portable) Tout est prêt ? Allons-y!
TL;Résumé DR
- Télécharger Raspbian Lite OS pour le rpi
- Configurer le pi pour qu'il s'exécute sans tête sur le WiFi avec une IP statique
- Configurez votre environnement de développement PC avec PuTTY, WinSCP et éventuellement SublimeText avec module complémentaire FTP
- Téléchargez, créez et liez le pilote du panneau LED
- Téléchargez et installez pigpio
- Téléchargez notre code Python
- Câblez le panneau d'affichage LED 32x32
- Fabriquer le câble d'extension CAT5 pour le capteur latéral TinyLiDAR
- Étape facultative (mais uniquement pour les utilisateurs avancés): faites une petite danse joyeuse quand tout fonctionne;)
Étape 1: Qu'est-ce qu'un Pi Zero W ?
Vous avez sans doute entendu parler du Raspberry Pi, mais qu'est-ce que c'est qu'un pi 'Zero W' ?
Les Raspberry Pi Zero et Zero W étaient des ajouts plus récents à la famille Pi destinés davantage à l'IoT et à d'autres applications embarquées à faible coût. Ce sont des versions simplifiées de la carte pi d'origine, mais toujours avec un puissant processeur à 1 GHz. Voici une bonne comparaison de tous les modèles.
L'avantage pour nous de choisir le Pi Zero W ici par rapport à d'autres cartes contrôleur est que nous pouvons facilement le programmer dans le langage Python de niveau supérieur tout en utilisant les pilotes de panneau LED C/C++ rapides. Il est également proposé à un prix attractif à seulement 10 USD.
Gardez à l'esprit que puisque cette carte est une version allégée d'un pi complet, certaines choses ont changé. En particulier, la prise Ethernet a été supprimée, le connecteur HDMI a été réduit à une taille mini et les quatre ports USB ont été simplifiés en un seul type micro USB. Il y a un autre connecteur micro USB à bord, mais c'est uniquement pour alimenter la carte. L'élimination de tous les connecteurs USB pleine taille introduit certaines complexités. À savoir, comment pouvez-vous brancher un clavier et une souris ? Les périphériques et concentrateurs USB standard utilisent des connecteurs de type A et non du type micro.
Alors, que pouvons-nous faire?
On peut y aller sans tête !
Non, nous ne voulons pas devenir fous mais utiliser une alternative à la configuration câblée directe normale. Sans tête signifie "tunnel" dans le pi à distance à l'aide d'une connexion réseau Secure Shell (SSH). Pour ce projet, nous utiliserons l'approche sans tête sur WiFi. D'où la raison pour laquelle nous avons choisi la version W du pi zéro au lieu du pi zéro encore moins coûteux.
Notez qu'il existe également une autre façon d'exécuter le pi en mode sans tête en utilisant quelque chose appelé VNC. Il nécessite cependant un logiciel VNC spécial exécuté sur votre PC, car il fournit un bureau graphique virtuel complet sur votre PC. Nous n'avons pas besoin (et ne voulons vraiment pas) du bureau pour notre projet, nous nous en tiendrons donc à la méthode SSH plus simple.
Étape 2: Scotty, nous avons besoin de plus de puissance
Le panneau matriciel 32x32 LED peut, à lui seul, prendre plusieurs ampères de courant. Sans blague! C'est pourquoi la plupart de ces panneaux incluent de gros câbles d'alimentation pour l'alimenter. Heureusement pour nous, nous n'aurons pas besoin d'une alimentation électrique massive pour ce projet. Nous avons pu alimenter tout ce système à partir d'un chargeur de téléphone portable microUSB 5v/2amp de rechange que nous avions. La raison du courant plus faible est que nous utilisons des graphiques relativement simples et n'allumons donc pas la plupart des LED. Si vous envisagez de créer une animation ou d'utiliser des graphiques vidéo/lumineux, vous devez absolument envisager d'alimenter le panneau à partir d'une alimentation séparée.
Étape 3: Placement du capteur et logiciel
Avez-vous remarqué que nous utilisons deux tinyLiDAR dans ce système au lieu d'un seul ? Comme le montre le schéma de configuration du garage, l'un est placé devant la voiture et l'autre est placé le long d'un côté de la voiture.
Le capteur latéral détectera si vous déviez du centre lorsque vous garez la voiture et, bien sûr, le capteur avant vous dira quand vous arrêter.
L'écran LED 32x32 vous assistera en affichant des flèches pour vous déplacer vers l'avant, à gauche ou à droite et un compte à rebours avec des coins colorés pour indiquer la distance qu'il vous reste à parcourir. Jetez un œil à notre courte vidéo pour tous les états d'affichage.
Plan de match
En un mot, nous utilisons la bibliothèque hzeller C pour le pilote LED, Python pour le code de contrôle et la bibliothèque pipgpio C pour un contrôle I2C approprié de nos capteurs.
Python est un langage de haut niveau très simple que vous pouvez facilement éditer sur n'importe quel éditeur de texte. Nous utilisons normalement SublimeText et pour ce projet, nous avons également utilisé un plugin FTP très utile qui nous permet d'éditer les fichiers de script directement sur le pi. Il s'agit d'une étape facultative car elle n'est nécessaire que si vous souhaitez modifier le code. Plus de détails sont disponibles à la fin de cet article.
Comme vous le savez peut-être, toutes les cartes rpi ne prennent pas en charge nativement l'étirement de l'horloge I2C. Nous avons donc réutilisé la bibliothèque pigpio pour ce projet pour contrôler les capteurs tinyLiDAR mais cette fois avec une légère torsion…
Plusieurs tinyLiDAR
Lorsque vous achetez un tinyLiDAR, il est toujours défini sur l'adresse esclave par défaut de 0x10. C'est bien lorsque vous utilisez un seul capteur, mais si vous en avez plus d'un sur le bus, cela peut poser problème si vous écrivez une commande à 0x10 et que tous répondent !
Nous avons donc ici 3 options:
Tout d'abord, nous pouvons utiliser la commande (tinyLiDAR) "R" pour écrire une nouvelle adresse d'esclave sur le capteur connecté au bus I2C. Répétez ensuite cette opération pour chaque capteur. Attacher, écrire et détacher physiquement chaque capteur pour cette procédure. tinyLiDAR stockera l'adresse donnée dans sa mémoire non volatile intégrée. L'adresse persistera même après le redémarrage jusqu'à ce que vous l'effaciez en émettant la commande RESET.
La deuxième option consiste à utiliser la fonctionnalité pratique d'attribution automatique que nous avons créée en tant qu'objectif étendu dans la campagne IGG. Cela implique d'envoyer la commande "AR", puis de pointer votre doigt sur chaque capteur individuellement pour attribuer automatiquement des adresses I2C séquentielles aux capteurs individuels similaires à la première option, mais vous n'avez pas besoin de déconnecter physiquement chaque capteur pour ce faire.
La troisième option est celle que nous utilisons ici dans ce projet et c'est possible grâce à la bibliothèque pigpio. Pour implémenter correctement la norme I2C, pigpio bitbange le GPIO. Ainsi, à cause de cela, nous pouvons facilement créer des bus I2C séparés sur à peu près n'importe quelle paire de broches GPIO de rechange.
Il n'est donc pas nécessaire de reprogrammer les adresses esclaves pour les multiples capteurs LiDAR. Nous pouvons simplement utiliser un bus séparé pour chacun:)
Notez que le bus I2C fonctionnant à 100 Kbps est en fait assez robuste. Nous utilisons un vieux câble Ethernet CAT5 pour faire passer le bus I2C vers le capteur TinyLiDAR latéral qui se trouve à 25 pieds de distance sans aucun composant de répéteur actif ! Les détails de câblage du capteur sont indiqués ci-dessus.
Bon, assez de jibber jabber, commençons à télécharger le code !
Étape 4: Configuration du Pi
Attention: le pi utilise un système de fichiers Linux, il est donc préférable d'effectuer les étapes suivantes sur un système basé sur Linux. Vous risquez de reformater votre carte SD si vous le faites sous Windows. Nous avons utilisé le bureau génial et gratuit Ubuntu 18.04 exécuté dans un environnement virtuel sur un PC Windows 10, mais vous pouvez essayer quelque chose de similaire.
Vous devrez d'abord télécharger le système d'exploitation sur raspberrypi.org, puis le graver sur votre carte microSD. Alors suivez ces étapes:
(1) Dans Ubuntu, allez ici et récupérez l'image Raspbian Lite. Enregistrez-le dans votre dossier de téléchargements.
(2) Téléchargez ensuite l'utilitaire d'écriture de carte SD Etcher. Pour info - le lien de téléchargement officiel d'Etcher pour la version Linux sur leur page d'accueil n'a pas fonctionné pour nous, nous avons donc utilisé la méthode décrite ici à la place:
En résumé, les étapes décrites dans le lien étaient:
Ajoutez le dépôt Debian Etcher:
echo "deb https://dl.bintray.com/resin-io/debian stable etcher" | sudo tee /etc/apt/sources.list.d/etcher.list
Faites confiance à la clé GPG de Bintray.com:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
Mettre à jour et installer:
sudo apt-get mise à jour
sudo apt-get install etcher-electron
Une fois terminé, vous pouvez lancer Etcher à partir de votre bureau Ubuntu. Il vous demandera le fichier source (que vous placez dans le dossier des téléchargements). La prochaine étape dans Etcher consiste à choisir la bonne cible. Etcher détecte bien votre carte micro SD, mais vous devriez être paranoïaque ici. Pour vérifier qu'il trouve la bonne destination, essayez d'éjecter la carte microSD en cliquant sur éjecter dans la fenêtre de l'explorateur de fichiers Ubuntu et vérifiez qu'elle disparaît en tant qu'option cible dans Etcher. Remettez-le ensuite en place et passez à l'étape finale, qui consiste à écrire le fichier sur cette carte microSD.
Attendez un moment jusqu'à ce que ce soit fait, puis continuez.
Étape 5: Temps Wi-Fi
Bon, maintenant il est temps d'entrer vos détails WiFi.
Astuce: vous pouvez toujours copier (Ctrl+C) et coller (clic droit, coller) les informations de cet article sur l'écran du terminal PuTTY au lieu de taper les commandes. Consultez également la fin de cet article pour plusieurs commandes Linux utiles.
Lorsque Etcher a terminé d'écrire sur la carte micro SD, 2 lecteurs s'afficheront comme indiqué ci-dessus. L'un s'appelle boot l'autre s'appelle rootfs
Nous devons utiliser le gestionnaire de fichiers pour aller dans le dossier de démarrage et créer un fichier appelé wpa_supplicant.conf.
Pour effectuer cette étape, vous pouvez simplement cliquer sur le côté gauche où il est écrit boot, puis sur le côté droit de l'écran, vous pouvez cliquer avec le bouton droit sur le fond blanc et choisir Ouvrir dans le terminal.
Cela ouvrira une fenêtre de terminal (similaire à CMD sous Windows) dans laquelle vous pourrez taper ce qui suit:
sudo nano wpa_supplicant.conf Astuce: vous devrez entrer le mot de passe de votre système Linux pour qu'il puisse s'exécuter en tant que super utilisateur. Ceci est obligatoire, sinon vous ne pourrez pas enregistrer les fichiers une fois les modifications terminées.
La commande ci-dessus lancera alors l'éditeur de texte "nano" dans lequel vous pourrez saisir les informations suivantes:
pays = États-Unis
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 }
Remarque: n'oubliez pas de remplacer WiFi_SSID et WiFi_Password par votre propre nom et mot de passe de réseau WiFi.
Lorsque vous avez terminé, cliquez simplement sur Ctrl+X pour quitter et répondez Oui à l'écriture du fichier à la sortie.
Notre prochaine étape consiste à créer un fichier vide appelé ssh. Pour ce faire, il suffit de taper ce qui suit dans la fenêtre du terminal:
toucher ssh
Maintenant, nous devons donner à notre pi une adresse IP statique afin que nous sachions où il se trouve chaque fois que nous voulons nous y connecter. Tapez ce qui suit dans la fenêtre du terminal:
sudo nano /etc/dhcpcd.conf
Cela devrait ouvrir à nouveau l'éditeur de texte nano et nous pouvons ajouter ce texte au bas du fichier:
interface wlan0
static ip_address=192.168.0.static routers=192.168.0.1 static domain_name_servers=192.168.0.1 8.8.8.8
Remarque: Cela suppose que votre préfixe réseau est 192.168.0. Si vous avez 192.168.1 etc, utilisez votre réseau à la place. Le serveur de noms de domaine 8.8.8.8 est pour Google et il est facultatif ici.
Tapez 'exit' dans le terminal pour le fermer. Cliquez ensuite avec le bouton droit sur le nom de démarrage dans la partie gauche de la fenêtre du gestionnaire de fichiers et sélectionnez Éjecter.
Vous pouvez maintenant brancher cette carte microSD sur votre pi et brancher le câble d'alimentation microUSB pour alimenter votre pi.
Si tout se passe bien, la LED verte clignotera pendant un moment comme si elle accédait à un disque dur et elle devrait vous connecter à votre réseau WiFi. Donnez-lui environ une minute pour s'installer et attendez que le voyant devienne vert fixe.
Pour vérifier que tout a fonctionné, nous pouvons essayer de le ping.
Tapez simplement la ligne ci-dessous et recherchez une réponse.
ping 192.168.0.200
Dans Ubuntu, vous devriez obtenir quelque chose de similaire à ceci:
ping 192.168.0.200
PING 192.168.0.200 (192.168.0.200) 56(84) octets de données. 64 octets depuis 192.168.0.200: icmp_seq=1 ttl=128 temps=752 ms 64 octets depuis 192.168.0.200: icmp_seq=2 ttl=128 temps=5.77 ms 64 octets depuis 192.168.0.200: icmp_seq=3 ttl=128 temps=7.33 ms ^C --- 192.168.0.200 statistiques de ping --- 3 paquets transmis, 3 reçus, 0% de perte de paquets, temps 2001ms rtt min/avg/max/mdev = 5.777/255.346/752.922/351.839 ms
Notez que le ping continue de fonctionner jusqu'à ce que vous appuyiez sur Ctrl+C pour quitter.
Sous Windows, vous devriez obtenir quelque chose comme ceci:
ping 192.168.0.200
Ping 192.168.0.200 avec 32 octets de données: Réponse de 192.168.0.200: octets=32 temps=4ms TTL=64 Réponse de 192.168.0.200: octets=32 temps=5ms TTL=64 Réponse de 192.168.0.200: octets=32 temps =6ms TTL=64 Réponse de 192.168.0.200: octets=32 temps=5ms TTL=64 Statistiques de ping pour 192.168.0.200: Paquets: Envoyés = 4, Reçus = 4, Perdus = 0 (0% de perte), Temps d'aller-retour approximatifs en millisecondes: Minimum = 4 ms, Maximum = 6 ms, Moyenne = 5 ms
Tout bon? À partir de…
Étape 6: Connexion
Maintenant que nous avons la connectivité au pi, nous voulons lui envoyer des commandes. Mais comment ? PuTTY bien sûr ! Vous pouvez télécharger PuTTY à partir d'iciConfiguration de PuTTY Après avoir téléchargé le logiciel PuTTY, créez un profil pour votre pi avec les informations suivantes:
Nom d'hôte (ou adresse IP): 192.168.0.200 Type de connexion: SSH Donnez un nom à ce profil sous Sessions enregistrées et cliquez sur Enregistrer. Vous pouvez utiliser n'importe quel nom, par exemple "rpizw_200"
Pour vous connecter, sélectionnez-le simplement dans la liste et appuyez sur Charger. Appuyez ensuite sur Ouvrir. Saisissez le nom d'utilisateur et le mot de passe pour vous connecter:
nom de connexion: pi
Mot de passe par défaut: framboise
Voici un exemple de session affiché dans PuTTY lorsque vous vous connectez:
connectez-vous en tant que: pi
Mot de passe de [email protected]: Linux raspberrypi 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l Les programmes inclus avec le système Debian GNU/Linux sont des logiciels libres; les conditions de distribution exactes pour chaque programme sont décrites dans les fichiers individuels dans /usr/share/doc/*/copyright. Debian GNU/Linux est fourni avec ABSOLUMENT AUCUNE GARANTIE, dans la mesure permise par la loi applicable. Dernière connexion: [date et heure] à partir de 192.168.0.[adresse IP] SSH est activé et le mot de passe par défaut de l'utilisateur « pi » n'a pas été modifié. Il s'agit d'un risque de sécurité - veuillez vous connecter en tant qu'utilisateur 'pi' et tapez 'passwd' pour définir un nouveau mot de passe.
Lors de la première connexion, il vous avertira que vous n'avez pas encore changé le mot de passe. Vous devriez le changer en quelque chose de fort mais simple à retenir, alors allez-y et changez-le en tapant passwd et suivez les invites.
Nous devrions ensuite mettre à jour le logiciel sur le pi en tapant ceci:
sudo apt-get update && sudo apt-get upgrade
Cela téléchargera toutes les mises à jour dont il a besoin à partir de votre connexion Internet. Répondez OUI si vous êtes invité à l'autoriser à continuer, puis laissez-lui le temps de se mettre à jour.
À ce stade, nous devrions probablement également désactiver le son sur le pi car il a un mauvais juju avec la bibliothèque de pilotes LED. Copiez, collez les lignes suivantes une à une et appuyez sur Entrée après chaque ligne:
disque ~
chat <<EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf liste noire snd_bcm2835 EOF sudo update-initramfs -u
La sortie ressemblera à ceci:
pi@raspberrypi:~ $ cd ~
pi@raspberrypi:~ $ cat < > liste noire snd_bcm2835 > > liste noire EOF snd_bcm2835 pi@raspberrypi:~ $ sudo update-initramfs -u pi@raspberrypi:~ $
Ensuite, nous devons redémarrer le pi pour que les modifications prennent effet, alors tapez ce qui suit:
sudo redémarrer maintenant
La connexion sera interrompue bien sûr lors du redémarrage du pi afin que vous puissiez fermer PuTTY. Essayez de vous reconnecter une minute plus tard.
Il est maintenant temps d'obtenir un gestionnaire de fichiers FTP graphique appelé WinSCP. Vous pouvez télécharger WinSCP à partir d'ici
WinSCP ressemble beaucoup au gestionnaire de fichiers sous Windows et Ubuntu. Il nous permet de glisser-déposer facilement des fichiers vers et depuis le pi et de créer des répertoires d'un simple clic droit de la souris.
Une fois téléchargé, vous devrez configurer un profil pour votre pi.
Configuration de WinSCP Dans la fenêtre contextuelle de connexion, choisissez Nouveau site. Utilisez les paramètres suivants pour la session:
Protocole de fichier: SFTP Nom d'hôte: 192.168.0.200 Nom d'utilisateur: pi Mot de passe: {quel que soit le mot de passe que vous avez modifié par défaut à l'étape PuTTY ci-dessus}
Dans Paramètres avancés du site, accédez à Environnement | Répertoires et entrez /home/pi pour le répertoire distant et ce que vous voulez pour le paramètre Répertoire local.
Dans Paramètres avancés du site, accédez à Environnement | Shell et choisissez sudo su - dans la liste déroulante Shell.
Appuyez ensuite sur Enregistrer.
Gardez WinSCP et PuTTY ouverts tout en effectuant les étapes suivantes
Accédez au terminal PuTTY et saisissez ce qui suit:
disque ~
Cela nous amènera à notre répertoire personnel à l'intérieur du pi.
Nous pouvons maintenant récupérer la bibliothèque de pilotes LED à partir de github. Pour utiliser le dernier code, nous devrons extraire le référentiel, nous devons donc installer l'utilitaire git.
Entrez ceci dans PuTTY:
sudo apt-get install git
Répondez Y pour continuer et il faudra quelques secondes pour installer git pour nous depuis Internet.
La sortie devrait ressembler à ceci:
pi@raspberrypi:~ $ sudo apt-get install git
Lecture des listes de paquets… Terminé Construction de l'arbre de dépendance Lecture des informations d'état… Terminé Les paquets supplémentaires suivants seront installés: git-man liberror-perl Paquets suggérés: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Les NOUVEAUX paquets suivants seront installés: git git-man liberror-perl 0 mis à jour, 3 nouvellement installé, 0 à supprimer et 0 non mis à niveau. Besoin d'obtenir 4 848 Ko d'archives. Après cette opération, 26,4 Mo d'espace disque supplémentaire seront utilisés. Voulez-vous continuer? [O/n] y Get:1 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf liberror-perl all 0.17024-1 [26.9 kB] Get:2 https://muug.ca/mirror/ raspbian/raspbian stretch/main armhf git-man all 1:2.11.0-3+deb9u3 [1, 433 kB] Get:3 https://muug.ca/mirror/raspbian/raspbian stretch/main armhf git armhf 1: 2.11.0-3+deb9u3 [3, 388 ko] Récupéré 4, 848 ko en 5s (878 ko/s) Sélection du package liberror-perl précédemment non sélectionné.(Lecture de la base de données … 34363 fichiers et répertoires actuellement installés.) Préparation du décompression …/liberror-perl_0.17024-1_all.deb … Déballage de liberror-perl (0.17024-1) … Sélection du package git-man précédemment non sélectionné. Préparation au déballage …/git-man_1%3a2.11.0-3+deb9u3_all.deb … Déballage de git-man (1:2.11.0-3+deb9u3) … Sélection du package git précédemment non sélectionné. Préparation au déballage …/git_1%3a2.11.0-3+deb9u3_armhf.deb … Déballage de git (1:2.11.0-3+deb9u3) … Configuration de git-man (1:2.11.0-3+deb9u3) … Configuration liberror-perl (0.17024-1) … Traitement des déclencheurs pour man-db (2.7.6.1-2) … Configuration de git (1:2.11.0-3+deb9u3) …
Revenez maintenant à WinSCP et accédez au dossier /home/pi. Ensuite, sur le côté droit de cette fenêtre WinScp, faites un clic droit et choisissez de créer un nouveau répertoire appelé "parking"
De retour dans l'écran PuTTY, vous pouvez taper ls pour confirmer que vous venez de créer un nouveau dossier dans le pi. Saisissez ensuite ceci:
cd p[TAB]Astuce: Appuyez sur la touche TAB pour compléter automatiquement le nom partiel pour vous
Appuyez sur la touche Entrée pour entrer dans ce répertoire.
pi@raspberrypi:~ $ cd parking/
pi@raspberrypi:~/parking $ ls
Nous pouvons maintenant obtenir les fichiers du pilote en entrant ce qui suit dans PuTTY:
git clone
La sortie ressemblera à ceci:
pi@raspberrypi:~/parking $ git clone
Clonage dans 'rpi-rgb-led-matrix'… distant: Comptage des objets: 3740, terminé. distant: Total 3740 (delta 0), réutilisé 0 (delta 0), pack-réutilisé 3740 Objets de réception: 100 % (3740/3740), 20,61 Mio | 1,32 Mio/s, terminé. Résolution des deltas: 100 % (2550/2550), terminé.
Compilez maintenant les fichiers du pilote LED en allant dans ce nouveau répertoire 'rpi-rgb-led-matrix' et en tapant la commande make:
cd r[TAB]
Fabriquer Et voilà à quoi ça ressemblait sur notre planche
pi@raspberrypi:~/parking $ cd rpi-rgb-led-matrix/
pi@raspberrypi:~/parking/rpi-rgb-led-matrix $ make make -C./lib make[1]: Entrer dans le répertoire '/home/pi/parking/rpi-rgb-led-matrix/lib' g++ - I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o gpio.o gpio.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o led-matrix.o led-matrix.cc g++ -I../include - Mur -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o options-initialize.o options-initialize.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o framebuffer.o framebuffer.cc g++ -I../include -Wall -O3 -g - fPIC -DDEFAULT_HARDWARE='"régulier"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o thread.o thread.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE=' "régulier"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o bdf-font.o bdf-fon t.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o graphics.o graphics.cc g++ - I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o transformer.o transformer.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o led-matrix-co led-matrix-c.cc cc -I../ include -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='"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o content-streamer.o content-streamer.cc g++ -I../include -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE='"régulier"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o pixel-mapper.o pixel-mapper.cc g++ -I../include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE='"régulier"' -Wextra -Wno-unused-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 graphics.o transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mapper.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 graphics.o transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers. o -lpthread -lrt -lm -lpthread make[1]: Quitter le répertoire '/home/pi/parking/rpi-rgb-led-matrix/lib' make -C examples-api-use make[1]: Entrer dans le répertoire ' /home/pi/parking/rpi-rgb-led-matrix/examples-api-use' g++ -I../include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o demo-main. o demo-main.cc make -C../lib make[2]: Entrer dans le répertoire '/home/pi/parking/rpi-rgb-led-matrix/lib' make[2]: Quitter le répertoire '/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-parameter -c -o minimal-example.o minimal-example.cc g++ minimal-example.o - o minimal-example -L../lib -lrgbmatrix -lrt -lm -lpthread cc -I../include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o c-example.o c- example.c cc c-example.o -o c-example -L../lib -lrgbmatrix -lrt -lm -lpthread -lstdc++ g++ -I../include -Wall -O3 -g -Wextra -Wno-unused- paramètre -c -o exemple-texte.o exemple-texte.cc g++ exemple-texte.o -o exemple-texte -L../lib -lrgbmatrix -lrt -lm -lpthread g++ -I../include -Mur - O3 -g -Wextra -Wno-unused-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-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-unused-parameter -c -o ledcat.o ledcat.cc g++ le dcat.o -o ledcat -L../lib -lrgbmatrix -lrt -lm -lpthread make[1]: Quitter le répertoire '/home/pi/parking/rpi-rgb-led-matrix/examples-api-use' pi @raspberrypi:~/parking/rpi-rgb-led-matrix $
Notre prochaine étape consistera à lier la bibliothèque de matrices RVB à Python. Nous avons utilisé le Python 2 par défaut pour ce projet. Donc, pour effectuer cette liaison, nous entrons une ligne à la fois comme précédemment:
sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y
make build-python sudo make install-python
Remarque: vous pouvez ignorer en toute sécurité le seul avertissement concernant '-Wstrict-prototype' qui apparaît lors de l'exécution des deux instructions make. Les commandes make prennent quelques minutes à s'exécuter et elles ne disent rien pendant qu'elles sont occupées. Alors n'ayez crainte - votre pi devrait revenir bientôt;)
Voici une sortie partielle sur la première instruction make:
construction d'une extension 'graphique'
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -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 -fPIC -I../../include -I/usr/include/python2.7 -c rgbmatrix/graphics.cpp -o build/temp.linux- armv6l-2.7/rgbmatrix/graphics.o -O3 -Wall cc1plus: avertissement: l'option de ligne de commande '-Wstrict-prototypes' est valide pour C/ObjC mais pas pour C++ arm-linux-gnueabihf-g++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic-functions -Wl, -z, relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -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 -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/graphics.o -L../../lib -lrgbmatrix -o./rgbmatrix/graphics.so make [1]: quitter le répertoire '/home/pi/parking/rpi-rgb-led-matrix/bindings/python' pi@raspberrypi:~/parking/rpi-rgb-led-matrix $
Ensuite, nous allons installer la bibliothèque pigpio C. Pour le faire correctement, nous devons le faire à partir de la source, il suffit donc d'entrer les lignes suivantes:
disque ~
sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip décompresser pigpio.zip cd PIGPIO make sudo make install rm pigpio.zip
L'installation ci-dessus prend environ 3 minutes.
Il est maintenant temps d'obtenir nos fichiers de projet Python. Entrez ce qui suit:
disque ~
cd /home/pi/parking/rpi-rgb-led-matrix/bindings/python/samples wget https://s3.amazonaws.com/microedco/tinyLiDAR/Raspberry+Pi/tinyL_parking.zip unzip -j tinyL_parking.zip rm minusculeL_parking.zip
Ensuite, pour l'exécuter, tapez ce qui suit:
sudo python parking.py
Mais vous n'avez pas besoin de le faire maintenant car nous devons encore tout câbler…
Étape 7: Fils
Comme mentionné précédemment, nous avons alimenté le panneau LED à partir du même adaptateur secteur qui alimente le pi. Pour ce faire, vous devrez épisser les gros fils rouge et noir aux broches mâles de l'en-tête afin qu'ils puissent être branchés sur les broches 2 et 9 du connecteur pi à 40 broches.
Débranchez maintenant l'alimentation du pi et câblez le panneau LED selon le schéma illustré ci-dessus. Gardez la broche 2 déconnectée pour le moment.
REMARQUE: Le panneau matriciel à LED peut parfois s'allumer dans un état génial. Si cela se produit, votre alimentation électrique peut être fortement sollicitée, quelle que soit sa capacité actuelle. Nous l'avons remarqué lors du développement de notre alimentation de banc qui peut fournir plus de 4 ampères. La solution consiste à exécuter d'abord le code pi, puis à brancher la broche 2 pour alimenter le panneau LED. De cette façon, le panneau devrait apparaître dans un état de faible puissance car il évacue les états aléatoires des LED. Le courant de repos (toutes les LED éteintes) pour notre panneau LED n'était que de 50mA à 5v.
CAT5
Nous avons utilisé un câble Ethernet CAT5 de 25 pieds et l'avons modifié pour le brancher sur les broches d'en-tête pi à une extrémité et accepter les broches du connecteur GROVE de l'autre côté afin que nous puissions étendre la distance pour placer notre capteur latéral tinyLiDAR. Les photos ci-dessus montrent ce câble avant et après modifications. Ne tenez pas compte des couleurs des fils des broches de l'embase car elles ne sont pas corrélées aux schémas. Assurez-vous simplement de câbler votre système comme indiqué dans les schémas de connexion illustrés précédemment à l'étape 3.
Étape 8: Allumez-le
La séquence de mise sous tension initiale appropriée doit être de brancher le chargeur microUSB dans le pi et d'attendre que les LED bleues des capteurs tinyLiDAR clignotent rapidement, indiquant qu'ils prennent des mesures. Cela prouve que le code fonctionne correctement.
Vous pouvez ensuite connecter lentement mais fermement la broche 2 pour l'alimentation du panneau LED. Faites attention à ne pas le perturber en faisant cela ! Si le panneau LED affiche quelques LED lumineuses gelées, il y a probablement un problème, alors retirez l'alimentation microUSB du pi et attendez quelques secondes pour essayer à nouveau la séquence de mise sous tension.
Pour exécuter le code, saisissez ce qui suit:
cd /home/pi/parking/rpi-rgb-led-matrix/bindings/python/samples
sudo python parking.py
Si tout se passe bien, vous devriez obtenir un affichage similaire à celui montré dans la vidéo.
Jetez un coup d'œil au code parking.py pour comprendre quelles limites nous avons utilisées. La valeur par défaut pour le capteur avant est de 200 mm. Comme la portée du capteur est de 11 mm à 2 m, c'est une bonne idée de garder la distance nom_parked_Front à 200 mm ou plus. Le capteur latéral nom_parked_Side est réglé sur 600 mm. Voir l'image ci-dessus pour le code Python montrant ces options de configuration.
Si tout fonctionne, vous pouvez monter le système dans votre garage et ajuster les paramètres ci-dessus au besoin. Étant donné que votre pi est connecté à votre WiFi, vous pouvez toujours entrer et modifier vos paramètres de distance selon vos besoins pour la configuration de votre garage particulier alors qu'il est encore monté.
« Est-ce maintenant ? »
Pourquoi oui, oui il est! -- il est temps de faire votre danse joyeuse:)
Merci d'avoir lu et profitez de votre nouvel assistant de stationnement !
Étape 9: Étape facultative et commandes utiles
Étape facultative - Addon FTP pour Sublime Text
Pour éditer les fichiers de script Python directement sur le pi, nous pouvons installer l'addon FTP appelé Sublime SFTP par Wbond. Vous pouvez télécharger cet addon en suivant les instructions ici
Pour configurer cet addon, nous devons configurer les informations d'identification FTP sous Fichier | SFTP/FTP | Configuration du serveur… page.
Pour notre configuration, nous avons utilisé:
"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", Utilisez Ctrl+S ou Fichier | Enregistrer pour enregistrer ces informations. Vous serez invité à entrer un nom pour appeler cette configuration. Nous l'avons simplement appelé "rpizw_0_200"
Maintenant, pour vous connecter au pi à partir de SublimeText, allez dans Fichier | SFTP/FTP | Parcourir le serveur…
Sélectionnez dans la liste d'options qui s'affiche. Vous voudrez choisir le profil avec le nom que vous avez spécifié ci-dessus;) Suivez les invites pour parcourir les dossiers et éditez le fichier souhaité.
Suppléments utiles
Commandes Linux utiles à utiliser sur le pi.
Avant de débrancher le pi, assurez-vous TOUJOURS de l'éteindre afin d'éviter toute corruption de fichier sur votre carte microSD. Saisissez cette commande:
arrêt sudo maintenant
et attendez que le voyant vert s'éteigne avant de débrancher l'alimentation. De même pour le redémarrer, vous pouvez saisir:
sudo redémarrer maintenant
Pour lister les fichiers dans un répertoire, utilisez ceci:
ls
Vous pouvez trouver d'autres commandes Linux utiles ici
Conseillé:
Système de surveillance visuelle basé sur LoRa pour l'agriculture Iot - Concevoir une application frontale à l'aide de Firebase et d'Angular : 10 étapes
Système de surveillance visuelle basé sur LoRa pour l'agriculture Iot | Concevoir une application frontale à l'aide de Firebase & Angular : Dans le chapitre précédent, nous avons expliqué comment les capteurs fonctionnent avec le module lora pour remplir la base de données en temps réel de firebase, et nous avons vu le diagramme de très haut niveau sur le fonctionnement de l'ensemble de notre projet. Dans ce chapitre, nous allons parler de la façon dont nous pouvons
Système de stationnement intelligent basé sur l'IoT utilisant NodeMCU ESP8266 : 5 étapes
Système de stationnement intelligent basé sur l'IoT utilisant NodeMCU ESP8266 : De nos jours, il est très difficile de trouver un parking dans les zones très fréquentées et il n'existe aucun système pour obtenir les détails de la disponibilité du stationnement en ligne. Imaginez si vous pouvez obtenir les informations sur la disponibilité des places de stationnement sur votre téléphone et que vous n'avez pas à vous déplacer pour vérifier t
Système de tri des couleurs : système basé sur Arduino avec deux courroies : 8 étapes
Système de tri par couleur : Système basé sur Arduino avec deux courroies : Le transport et/ou l'emballage des produits et articles dans le domaine industriel se fait à l'aide de lignes réalisées à l'aide de courroies transporteuses. Ces courroies aident à déplacer l'article d'un point à un autre avec une vitesse spécifique. Certaines tâches de traitement ou d'identification peuvent être
DIY - Assistant de stationnement basé sur Arduino V2 : 6 étapes
DIY - Assistant de stationnement basé sur Arduino V2 : Quand la vie vous donne des bananes !!!!! Il suffit de les manger. La nécessité est la mère des inventions, et je ne le nierai pas. Franchement, c'est la 2ème fois que je tombe sur le mur de notre garage depuis que nous avons emménagé dans cette nouvelle maison. Ça y est, il n'y aurait pas de t
Aide au stationnement en marche arrière dans le garage à l'aide d'un capteur de sécurité et d'un circuit analogique existants : 5 étapes
Aide au stationnement en marche arrière dans le garage à l'aide d'un capteur de sécurité et d'un circuit analogique existants : Je soupçonne que de nombreuses inventions dans l'histoire de l'humanité ont été faites à cause de femmes qui se plaignaient. La machine à laver et le réfrigérateur semblent certainement être des candidats viables. Ma petite "invention" décrit dans ce Instructable est un