Table des matières:

RÉTROACTION SONIC LED : 7 étapes (avec photos)
RÉTROACTION SONIC LED : 7 étapes (avec photos)

Vidéo: RÉTROACTION SONIC LED : 7 étapes (avec photos)

Vidéo: RÉTROACTION SONIC LED : 7 étapes (avec photos)
Vidéo: La POSE LONGUE avec un APPAREIL COMPACT? 2024, Juillet
Anonim
RÉTROACTION SONIQUE LED
RÉTROACTION SONIQUE LED
RÉTROACTION SONIQUE LED
RÉTROACTION SONIQUE LED
RÉTROACTION SONIQUE LED
RÉTROACTION SONIQUE LED

Re-bonjour, Vous détestez que votre robot se heurte à tout ? Cela résoudra ce problème. Avec 8 capteurs soniques, cela semble compliqué… mais en fait, j'ai rendu cela très facile. J'essaie de publier des projets qui vous aident à en savoir plus sur Arduino et à montrer un concept « outside the box ». Cet article vous aidera à comprendre la commutation 595, les pro-minis en tant que capteur programmable et la grande utilisation du retour LED en temps réel. Si vous appréciez Arduino en tant que « copier-coller et plug-in », vous pouvez simplement ignorer cela.

J'aime utiliser des pro-minis. Ils coûtent environ 2,50 $, fonctionnent comme un uno complet et l'installation d'en-têtes les rend très flexibles. Utilisé comme micro-capteur, vous pouvez le faire "faire ce que vous voulez" au lieu de ce que dicte un capteur acheté. Avec I2C utilisant seulement 2 fils, ils peuvent être attachés ensemble sur une seule ligne. Alors passez à MEGA, je peux avoir 4 minis exécutant 4 lignes de code distinctes en même temps, pour seulement 10,00 $. Ici, j'utilise un mini pour faire passer les capteurs soniques à travers un 595 et afficher la distance LED en temps réel. Ensuite, partagez simplement 8 bits de données avec la carte mère. Cela soulage la carte mère et rend son code très simple.

Il y a un problème avec les capteurs soniques… pas de retour visuel. Vous ne savez jamais si le capteur n'est qu'un poids mort ou s'il fonctionne ! Je crois que celui qui a jamais inventé 'BLINK' est plus intelligent qu'Einstine. Une seule led et un monde d'informations est relayé par le clignotement. Un capteur sonique a donc besoin d'un retour en temps réel. Ici, j'ai utilisé un tableau de leds pour surveiller chaque capteur. Vous n'en avez pas besoin, fabriquez simplement les capteurs sans les leds. Mais avoir les leds sur le PCB est utile.

Étape 1: FAIRE PCB

FAIRE PCB
FAIRE PCB
FAIRE PCB
FAIRE PCB
FAIRE PCB
FAIRE PCB
FAIRE PCB
FAIRE PCB

faire PCB et peupler. ATTENTION… J'ai fait une erreur sur le PCB au niveau des connexions à 4 broches pour les capteurs soniques à brancher. L'ECHO et le TRIGGER Vcc et les masses allaient se brancher sur le PCB. Il n'y a pas assez de place pour les connecteurs, j'ai donc juste fait le PCB avec des broches. Ainsi, vous pouvez souder un connecteur de fil au PCB et le brancher sur les capteurs soniques réels. Quant aux leds j'ai mis des leds jaunes à l'intérieur du bord et rouges à l'extérieur. cela vous aide à voir à distance si les capteurs mesurent correctement.

C'est l'un des rares circuits imprimés 2 faces que j'ai jamais fabriqués. Je préférerais faire 2 cavaliers d'un seul côté et exécuter des cavaliers. Mais pour obtenir l'affichage LED, vous avez au moins besoin du circuit imprimé supérieur. J'ai séparé la mise en page dans le téléchargement.

Le PCB est pour un pro-mini avec A4-A5 à l'intérieur de l'en-tête de bord. Dans tous les cas, connectez simplement A4-A5 au Master A4-A5. N'oubliez pas non plus le Vcc et les terrains.

Étape 2: DE NOMBREUSES ERREURS

BEAUCOUP D'ERREURS
BEAUCOUP D'ERREURS

Maintenant pour mes erreurs… J'ai essayé de faire éclater les déclencheurs d'un seul coup (tous liés ensemble) et cela a bien fonctionné, mais certaines interactions ont eu lieu. Alors maintenant, tous les échos vont au micro (8) et les DÉCLENCHEURS sont réglés par un 595. Trois autres broches (3). Quant aux leds, le multiplexage ne fonctionnera pas. Vous avez besoin d'un temps d'activation complet pour chaque led. Cela signifie que chaque rangée de 7 LED doit avoir son propre 595. Une fois que vous avez mis à jour le 595, les LED restent allumées jusqu'à la prochaine mise à jour. Où multiplexer la led ne s'allume que pendant ce dixième de seconde. Cela fonctionne bien dans mes lecteurs et il a besoin d'un micro dédié. Pas le temps de scanner 8 capteurs soniques et de mesurer les distances. J'ai essayé et j'ai obtenu de très mauvais résultats. Le multiplexage des leds signifiera également une grille de rangées + colonnes, ce qui signifie environ 64+ traversées dans le PCB.

Je n'ai utilisé que 7 sorties du 595 à cause de l'encombrement sur le PCB. À distance, vous ne pouvez pas dire s'il y a 7 ou 8 leds juste leur mouvement. Vous pouvez être tenté de lier toutes les LED à une seule résistance et cela fonctionne, mais la luminosité du réseau change avec la quantité de LED allumées. Donc, une résistance par led est la meilleure. J'adore le 595, mais s'ils déplaçaient simplement les broches Vcc et 0 ou faisaient un circuit intégré à 18 broches avec TOUTES les sorties du même côté… connecter les huit sorties serait si facile. Mais alors, il ne se vendrait pas moins de 30 cents.

Étape 3: MONTAGE DES CAPTEURS

MONTAGE DES CAPTEURS
MONTAGE DES CAPTEURS
MONTAGE DES CAPTEURS
MONTAGE DES CAPTEURS
MONTAGE DES CAPTEURS
MONTAGE DES CAPTEURS
MONTAGE DES CAPTEURS
MONTAGE DES CAPTEURS

Collez les capteurs soniques sur le couvercle du café. la prise mâle doit être pliée vers l'intérieur sur chaque capteur. Cela fonctionne mieux si vous pliez une broche à la fois. J'ai utilisé du ruban mousse 2 faces juste pour que les vibrations soient moindres. Mes capteurs sont trop proches et ils ont besoin d'un espace de 1/4 pouce pour mieux correspondre au PCB. J'ai déjà utilisé des capteurs soniques et parfois on ne parvient pas à mesurer avec précision et vous devez garder cela à l'esprit. Alors ne les COLLEZ pas tous de façon permanente.

Il est également utile d'effectuer un test de distance rapide sur chacun avant de les utiliser. J'obtiens environ un capteur avec une mauvaise lecture dans un lot de 20. Pas mal pour le prix que j'ai payé.

Étape 4: FIL DUR

FIL DUR
FIL DUR

Je pensais qu'il y aurait de la place pour les prises et les prises du PC au

broches soniques mais j'ai manqué de place. J'ai donc câblé l'extrémité du circuit imprimé et j'ai juste fait des fils d'écho et de déclenchement avec des prises femelles (8ea). J'ai lié les masses 8ea Vcc et 8ea des capteurs ensemble, de sorte que cela n'a fait que 2 connexions au PCB pour eux.

Avec 8 capteurs et 8 595s, un uno ou un pro-mini NE PEUT PAS alimenter cela. Il doit y avoir une source régulée 5v dans le cadre de ce projet. Mon robot a un simple 7805 @ 1amp des batteries. Cela est lié à tous les 5v Vcc pour tous les appareils. le 7805 chute d'environ un volt, vous avez donc besoin d'au moins 6,5 volts pour l'alimenter. C'est 2 piles au lithium à 3.3v. Mon robot a de vieux nicads provenant de packs de perceuses usagés et 8 nicads font fonctionner le moteur 12v à engrenages chinois typique dans le châssis de type réservoir à 20 $.

Étape 5: TÉLÉCHARGER SONIC SKETCH

TÉLÉCHARGER LE CROQUIS SONIQUE
TÉLÉCHARGER LE CROQUIS SONIQUE

Téléchargez le croquis et installez. Il y a plusieurs façons de parler

un autre uno mais j'aime bien I2c. la confusion est adressage et maître/esclave. Comme avec la plupart des capteurs (pensez au 2ème mini comme un capteur), vous adressez le capteur et demandez x nombre d'octets. même chose ici. Dans le 2ème mini, vous mettez de côté le nombre d'octets que vous souhaitez envoyer. La confusion est que les noms n'ont pas d'importance. Cela ne vous aide à vous souvenir que si vous partagez les noms. Donc dans le croquis j'envoie les 8 mesures de distance sonique en cm comme sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Le maître n'obtient que 8 octets de données et vous pouvez appeler ces octets comme vous le souhaitez. Je les ai lu comme gotR1, gotR2, got….. L'ordre d'envoi des octets est le même. Donc, les octets A, B, C….. ne pensez pas qu'en changeant le nom, vous obtiendrez des données différentes. Et l'autre hic, vous ne pouvez recevoir que des données qui sont censées être envoyées. Donc, si vous voulez d'autres données, vous devez changer à la fois le maître et l'esclave.

Étape 6: COMMUNICATION

LA COMMUNICATION
LA COMMUNICATION

Vous pouvez ignorer cela si vous savez comment configurer 2 Uno pour qu'ils se parlent. J'ai quelques infos à la fin. Pour faciliter les choses, j'appellerai l'uno dans la base du robot M1 et le capteur sonique en tant que S2. Connectez Vcc, masse, A4, A5 les uns aux autres.

Dans le croquis du S2, cela commence par #include

Créez ensuite les 8 octets à envoyer. octet R1, octet R2, octet L1, etc. Uno est un micro 8 bits, ils envoient donc 1 octet à la fois en utilisant 'byte' au lieu de 'int' est correct.

Dans le 'setup()', ajoutez 'Wire.begin(address)' cela indique à I2c de quel périphérique il s'agit. L'adresse est généralement n'importe quel nombre entre 4 et 200. la taille d'un octet. Ici, j'ai utilisé le numéro 10. Donc, pour parler à ce capteur S2, le maître doit appeler Wire.requestFrom (10, 8). Il s'agit de l'adresse 10 et le 8 correspond au nombre d'octets souhaités. Également dans 'setup()', ajoutez Wire.onRequest(isr anyName). Lorsque le M1 appelle la demande, le capteur S2 réagit avec l'interruption. Cela appelle simplement la fonction anyName. Cette fonction anyName doit donc être créée. Regardez le croquis et voyez la fonction 'sendThis()' C'est là que les octets sont réellement envoyés au M1. Les octets seuls vont et NON les noms et dans l'ordre envoyé. C'est à partir de là que commencent la taille et la quantité de données à envoyer. Dans ce format simple d'octets, l'envoi et la réception doivent correspondre. Ici 8 octets envoyés et 8 octets reçus. Une note ici est que l'appel d'une fonction nécessite le (). Comme delay(), millis(), Serial.print(). Lors de l'utilisation d'un ISR (routine de service d'interruption), l'appel de la fonction supprime le (). Donc Wire.onRequest(sendThis) pas Wire.onRequest(sendThis()).

La confusion que j'avais était la chose maître/esclave. Au début, je pensais que le maître était TOUJOURS le maître. Mais dans le croquis, vous pouvez basculer maître/esclave pour demander à d'autres micros ou envoyer à d'autres micros. Tant que vous avez suivi le format de base décrit ci-dessus. N'oubliez pas que vous partagez UNIQUEMENT les données qui vous ont été attribuées.

Deux mèches hors du mur. L'interruption isr n'interrompt qu'entre les lignes d'esquisse. Si vous êtes bloqué dans une boucle « while ou for », rien ne se passe tant que la boucle n'est pas terminée. PAS grave car cela peut prendre quelques microsecondes et les données sont anciennes.

L'autre problème est qu'à l'intérieur d'un micro, il y a un calcul 100% sans erreur. Toute communication « extérieure » (fils) est sujette à des erreurs. Il existe de nombreuses façons de vérifier que les données fournies sont exemptes d'erreurs et correspondent à la source. Le moyen le plus simple est d'utiliser la somme de contrôle. Ajoutez simplement les totaux des octets d'envoi (valeurs réelles) et envoyez les totaux et à la réception, ajoutez les totaux et voyez s'ils correspondent. S'ils correspondent, ou jetez cet ensemble de données si ce n'est pas le cas. Bien sûr, cela implique l'envoi d'une valeur entière et non d'octets. Il vous suffit donc de diviser l'entier en octets HI et LO et de les envoyer sous forme d'octets séparés. Puis réunis au niveau du récepteur.

FACILE:

entier x = 5696; (toute valeur int valide, max est 65k ou 32k négatif)

octet hi = x >>8; (22)

octet lo = x; (64)

envoyer les octets et combiner à l'autre extrémité….

octet hi = Wire.read();

octet lo = Wire.read();

int newx = (hi <<8) + bas; (5696)

Étape 7: FERMETURE

FERMETURE
FERMETURE
FERMETURE
FERMETURE
FERMETURE
FERMETURE
FERMETURE
FERMETURE

Pour fermer, ce capteur sonique donne à la carte mère des données de distance brutes en temps réel. Cela libère le micro et rend le croquis beaucoup moins compliqué. Le micro peut maintenant prendre une bonne décision pour ralentir, tourner, arrêter ou inverser en fonction de bonnes données au lieu de suppositions aléatoires. Voir mon autre article sur Bluetooth IDE pour télécharger des croquis sans fil et devoir connecter votre robot tout le temps pour un changement rapide dans votre croquis. Merci d'avoir regardé ça. oldmaninsc.

Conseillé: