Table des matières:

Un robot qui dit si un fournisseur d'électronique vous trompe ou non : 6 étapes
Un robot qui dit si un fournisseur d'électronique vous trompe ou non : 6 étapes

Vidéo: Un robot qui dit si un fournisseur d'électronique vous trompe ou non : 6 étapes

Vidéo: Un robot qui dit si un fournisseur d'électronique vous trompe ou non : 6 étapes
Vidéo: Les Distributeurs Ne Veulent Pas Que Vous Sachiez Ça 2024, Juillet
Anonim
Un robot qui dit si un fournisseur d'électronique vous trompe ou non
Un robot qui dit si un fournisseur d'électronique vous trompe ou non

L'année dernière, mon père et moi sommes allés dans un nouveau magasin de robotique/électronique très proche de chez nous. Lorsque j'y suis entré, il était plein d'électronique, de serovs, de capteurs, de Raspberry Pis et d'Arduinos. Le lendemain, nous sommes allés dans le même magasin et avons acheté de nombreux senors et 3 Arduinos d'une valeur d'environ 150 USD. Dès que je suis rentré chez moi, aucun autre produit n'a fonctionné à l'exception de l'Arduino Mega. Nous avons été arnaqués pour environ 130 USD, ce qui est beaucoup.

J'ai donc décidé de créer un robot qui peut tester environ 12 capteurs et 2 moteurs (toujours fonctionnant sur le servo) et peut déterminer si le produit est défectueux.

Allons-y directement !

Fournitures

1. Arduino UNO

2. Écran tactile TFT 2,4"

3. couple de cavaliers

4. capteurs et moteurs pour que vous puissiez les tester (ici j'ai utilisé - Capteur de mouvement, capteur de gaz MQ6, capteur de son, potentiomètre et capteur de niveau d'eau)

Étape 1: Comment ça marche…

Image
Image

J'ai programmé un Arduino pour créer une interface utilisateur interactive avec un écran TFT. Comme nous le savons, l'écran TFT n'a qu'une seule broche libre, c'est-à-dire la broche A5. (si vous utilisez l'ONU). Ainsi, tout capteur qui utilise des broches analogiques pour lire les données est compatible avec cette configuration…

Dans l'interface utilisateur, vous pouvez modifier la couleur de l'arrière-plan du bureau et ouvrir l'application que j'ai développée pour Arduino afin de tester les capteurs.

À l'ouverture de l'application, vous pouvez voir 2 options, INPUT et OUTPUT. donc si vous cliquez sur Entrée, il affiche 4 capteurs (il est compatible avec 12, mais je ne l'ai pas encore programmé car j'ai des examens qui approchent… pas le temps:(. Tout le monde est libre de modifier le code…)

Et il peut également vérifier si le servomoteur fonctionne si vous le connectez dans la fente.

regarde:

Étape 2: Téléchargement du code

Le code est un programme de 600 lignes que j'ai méticuleusement codé en 50 heures environ. Il a quelques bugs alors veuillez le modifier et me l'envoyer dans mon courrier ([email protected]).

Téléchargez le code et connectez le shield TFT à l'Arduino. Je vous recommande de jouer avec l'interface utilisateur afin de mieux la maîtriser.

Le code:

#comprendre

#include #include #include #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define BLUE 0x001F #define MARINE 0x000F #define RED 0xF800 #define GREEN 0define 0x07E0 #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define VIOLET 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XM A2 #define YMTS 7 #define_ 6 #define_MINTS 160 #définir TS_MAXX 160 #définir TS_MAXY 970 Écran tactile ts = Écran tactile(XP, YP, XM, YM, 300); Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); #define BOXSIZE 40 #define PENRADIUS 3 #define MINPRESSURE 10 #define MAXPRESSURE 1000 int sound; état du caractère = 6; touche int = 0; couleur int = NOIR; rédir int = 0; int ota; void setup() { Serial.begin(9600); tft.reset(); tft.setFont(&FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation(45); tft.setTextSize(0.5); tft.fillScreen(BLANC); tft.setCursor(60, 160); tft.setTextColor(NOIR); tft.print("Balayez pour vous connecter"); } void loop() { float sensorVoltage; float sensorValue; TSPoint p = ts.getPoint(); pinMode(XM, SORTIE); pinMode(YP, SORTIE); if (pz > MINPRESSURE && pz 240 && px 130 && py 240 && px 20 && py 240 && px 20 && py 160 && px 12 && py 240 && px 20 && py 240 && px 20 && py 40 && px 15 && py 150 && px 40 && py 150 && px 80 && py 150 && px 120 && py 150 && px 170 && py 90 && px 40 && py 90 && px 80 && py 90 && px 120 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 100 && px 20 && py 200 && px 100 && py 100 && px 20 && py 100 && px 20 && py 100 && px 20 && py < 100) { toucher = 26; } } if (touchez == 1 && state == 6) { tft.setRotation(0); tft.fillScreen(couleur); son = 0; tft.fillRect(200, 180, 80, 140, BLANC); tft.drawRect(201, 181, 81, 141, NOIR); tft.fillRect(80, 30, 100, 100, CYAN); tft.drawRect(81, 31, 101, 101, NOIR); tft.fillRect(10, 30, 50, 100, MARINE); tft.drawRect(11, 31, 51, 101, NOIR); tft.fillRect (10, 180, 30, 120, VIOLET); tft.drawRect(11, 181, 31, 121, NOIR); tft.fillRect(45, 180, 30, 120, BLEU); tft.drawRect(46, 181, 31, 121, NOIR); tft.fillRect(80, 180, 30, 120, CYAN); tft.drawRect(81, 181, 31, 121, NOIR); tft.fillRect(115, 180, 30, 120, VERT); tft.drawRect(116, 181, 31, 121, NOIR); tft.fillRect(150, 180, 30, 120, JAUNE); tft.drawRect(151, 181, 31, 121, NOIR); tft.fillTriangle (210, 30, 210, 50, 220, 40, BLANC); tft.fillRect(200, 35, 12, 12, BLANC); tft.drawTriangle (210, 30, 210, 50, 220, 40, NOIR); tft.drawRect(200, 35, 12, 12, NOIR); tft.drawCircle (210, 40, 14, BLANC); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation(45); tft.setCursor(200, 20); tft.print("Paramètres"); tft.fillRoundRect(45, 75, 75, 75, 4, BLANC); tft.drawRoundRect(45, 75, 75, 75, 4, NOIR); tft.fillRect(75, 75, 15, 30, NOIR); tft.fillRect(75, 120, 15, 30, NOIR); tft.fillRect(90, 105, 30, 15, NOIR); tft.fillRect(45, 105, 30, 15, NOIR); état = 7; toucher = 0; ota = 0; } if (touchez == 2) { tft.fillScreen(WHITE); tft.setRotation(0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BLANC); tft.fillRect(200, 35, 12, 12, BLANC); tft.drawTriangle (210, 30, 210, 50, 220, 40, NOIR); tft.drawRect(200, 35, 12, 12, NOIR); tft.drawCircle (210, 40, 14, NOIR); tft.setRotation(45); tft.fillTriangle (270, 40, 270, 20, 260, 30, NOIR); tft.drawLine(300, 30, 270, 30, NOIR); tft.setCursor(20, 200); tft.print("personnalisation"); tft.setCursor(20, 170); tft.print("déconnexion"); tft.setCursor(20, 140); tft.print("périphériques"); tft.setCursor(20, 110); tft.print("À propos"); toucher = 1; état = 2; } if (touchez == 10 && state == 2){ tft.fillScreen(WHITE); tft.setCursor (10, 160); tft.setTextColor(NOIR); tft.print("Créé et développé"); tft.setCursor(100, 190); tft.print("par:"); tft.setCursor(60, 220); tft.print("Un adolescent d'Inde"); tft.setRotation(0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BLANC); tft.fillRect(200, 35, 12, 12, BLANC); tft.drawTriangle (210, 30, 210, 50, 220, 40, NOIR); tft.drawRect(200, 35, 12, 12, NOIR); tft.drawCircle (210, 40, 14, NOIR); tft.setRotation(45); tft.fillTriangle (270, 40, 270, 20, 260, 30, NOIR); tft.drawLine(300, 30, 270, 30, NOIR); état = 6; } if (touchez == 11 && state == 2){ tft.fillScreen(WHITE); tft.setCursor(60, 40); tft.print("Choisissez un"); tft.setCursor (40, 60); tft.print("couleur de fond"); tft.fillRect(60, 180, 45, 45, ROUGE); tft.fillRect(120, 180, 45, 45, JAUNE); tft.fillRect(180, 180, 45, 45, BLEU); tft.fillRect(240, 180, 45, 45, VERT); tft.fillRect(60, 130, 45, 45, MAGENTA); tft.fillRect(120, 130, 45, 45, MARINE); tft.fillRect(180, 130, 45, 45, GRIS CLAIR); tft.fillRect(240, 130, 45, 45, CYAN); tft.fillRect(60, 80, 45, 45, BLANC); tft.drawRect(60, 80, 45, 45, NOIR); tft.fillRect(120, 80, 45, 45, NOIR); tft.fillRect(180, 80, 45, 45, OLIVE); tft.fillRect(240, 80, 45, 45, VIOLET); tft.setRotation(0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BLANC); tft.fillRect(200, 35, 12, 12, BLANC); tft.drawTriangle (210, 30, 210, 50, 220, 40, NOIR); tft.drawRect(200, 35, 12, 12, NOIR); tft.drawCircle (210, 40, 14, NOIR); tft.setRotation(45); tft.fillTriangle (270, 40, 270, 20, 260, 30, NOIR); tft.drawLine(300, 30, 270, 30, NOIR); état = 6; if (redir == 1){ color = WHITE; } if (redir == 2){ color = BLACK; } if (redir == 3){ color = OLIVE; } if (redir == 4){ couleur = VIOLET; } if (redir == 5){ color = MAGENTA; } if (redir == 6){ color = NAVY; } if (redir == 7){ color = GRIS CLAIR; } if (redir == 8){ color = CYAN; } if (redir == 9){ color = RED; } if (redir == 10){ color = JAUNE; } if (redir == 11){ color = BLUE; } if (redir == 12){ color = GREEN; } } if (touchez == 26){ ota = 1; tft.fillScreen(BLANC); tft.setRotation(0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BLANC); tft.fillRect(200, 35, 12, 12, BLANC); tft.drawTriangle (210, 30, 210, 50, 220, 40, NOIR); tft.drawRect(200, 35, 12, 12, NOIR); tft.drawCircle (210, 40, 14, NOIR); tft.setRotation(45); tft.fillTriangle (270, 40, 270, 20, 260, 30, NOIR); tft.drawLine(300, 30, 270, 30, NOIR); tft.setRotation(1); tft.setCursor(30, 80); tft.print("Entrée"); tft.setCursor(30, 150); tft.print("Sortie"); tft.drawRect (25, 130, 90, 30, NOIR); tft.drawRect (25, 60, 90, 30, NOIR); if (p.x > 190 && p.x 30 && p.y < 90){ tft.setCursor(150, 220); tft.print("Niveau d'eau"); tft.setCursor(150, 170); tft.print("Niveau de gaz"); tft.setCursor(150, 120); tft.print("Distance "); tft.setCursor(150, 70); tft.print("Son"); toucher = 1; état = 2; } } } while (son == 1){ tft.fillScreen(WHITE); sensorValue = analogRead(A5); sensorVoltage = sensorValue; tft.setCursor(60, 160); tft.print(sensorVoltage); Serial.println("Niveau sonore = "); Serial.println(sensorVoltage); retard(1000); if (son == 0){ break; } } } }

Étape 3: Bibliothèques requises:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • Écran tactile.h

Liens Github pour le même:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Étape 4: les connexions

Slap tout ensemble
Slap tout ensemble

Vous avez besoin de 6 cavaliers. 3 mâles et 3 femelles. soudez-les directement à la carte Arduino comme ceci:

Étape 5: gifler le tout ensemble

Rentrez les fils dans l'arduino (voir l'image), utilisez un pistolet à colle si nécessaire…

Fixez ensuite le blindage TFT puis testez vos capteurs.

Merci d'avoir fait défiler jusqu'en bas. Assurez-vous de voter pour moi si vous pensez que ce projet est unique et utile

Bonne fabrication et méfiez-vous des escrocs électroniques ?

Étape 6: Autres améliorations:

  • Plus de compatibilité des capteurs
  • Le code du servomoteur devait être terminé
  • Une autre application qui peut s'interfacer avec des modules Bluetooth afin que nous puissions contrôler un robot alimenté par Bluetooth.
  • Corrections de bugs

Conseillé: