Índice:

Um robô que diz se um fornecedor de eletrônicos está te traindo ou não: 6 etapas
Um robô que diz se um fornecedor de eletrônicos está te traindo ou não: 6 etapas
Anonim
Um robô que diz se um fornecedor de eletrônicos está te traindo ou não
Um robô que diz se um fornecedor de eletrônicos está te traindo ou não

No ano passado, eu e meu pai fomos a uma loja recém-inaugurada de robótica / eletrônica muito perto de onde moramos. Quando entrei lá, estava cheio de eletrônicos, serovs, sensores, Raspberry pis e Arduinos. No dia seguinte, fomos à mesma loja e compramos muitos senors e 3 Arduinos no valor de cerca de 150 dólares. Assim que fui para casa, nenhum outro produto funcionou, exceto o Arduino Mega. Fomos enganados por cerca de 130 dólares, o que é muito.

Então, decidi criar um robô que pode testar cerca de 12 sensores e 2 motores (ainda funcionando no servo) e pode determinar se o produto está com defeito.

Vamos direto ao assunto!

Suprimentos

1. Arduino UNO

2. Tela de toque TFT de 2,4"

3. alguns fios de ligação

4. sensores e motores para que você possa testá-los (aqui eu usei - sensor de movimento, sensor de gás MQ6, sensor de som, potenciômetro e sensor de nível de água)

Etapa 1: Como funciona …

Image
Image

Eu programei um Arduino para criar uma IU interativa com um display TFT. Como sabemos, o display TFT tem apenas um pino livre, ou seja, o pino A5. (se você usar o UNO). Portanto, qualquer sensor que usa pinos analógicos para ler dados é compatível com esta configuração …

Na IU, você pode alterar a cor de fundo da área de trabalho e pode abrir o aplicativo que foi desenvolvido para o Arduino por mim para testar sensores.

Ao abrir o aplicativo, você pode ver 2 opções, INPUT e OUTPUT. então, se você clicar em Entrada, ele mostra 4 sensores (é compatível com 12, mas ainda estou para programá-lo, pois tenho exames se aproximando … sem tempo:(. Qualquer pessoa é livre para editar o código …)

E também pode verificar se o servo motor funciona de você conectá-lo no slot.

dar uma olhada:

Etapa 2: Upload do código

O código é um programa de 600 linhas que codifiquei meticulosamente em cerca de 50 horas. Ele tem alguns bugs, então, por favor, altere-o e envie para mim no meu e-mail ([email protected]).

Faça upload do código e conecte o escudo TFT ao Arduino. Eu recomendo que você brinque com a IU para entender melhor.

O código:

#incluir

#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 NAVY NAVY 0x000F #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define BLUE 0x001F #define NAVY 0 x 0 x 0 x 0 0 0 0 0x07 #define MAGENTA 0xF81F #define AMARELO 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define ROXO 0x780F #define OLIVE 0x7BE0 #define Seleção #define YP A1 #define XMYX_MY #define TSIN #define TSIN 7 #define XM A2X2X2X2X2X2X2X_define #define TSIN # 6define TSIN #define YM 7 #define TSIN # 6EFIN TSIN2 #define TSIN #define YM 7 #define TSIN. 160 #define TS_MAXX 160 #define TS_MAXY 970 TouchScreen ts = TouchScreen (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; estado char = 6; toque interno = 0; cor interna = PRETO; redirecionado interno = 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 (BRANCO); tft.setCursor (60, 160); tft.setTextColor (BLACK); tft.print ("Deslize para fazer login"); } void loop () {float sensorVoltage; float sensorValue; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); 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) {toque = 26; }} if (touch == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (color); som = 0; tft.fillRect (200, 180, 80, 140, BRANCO); tft.drawRect (201, 181, 81, 141, PRETO); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, PRETO); tft.fillRect (10, 30, 50, 100, MARINHA); tft.drawRect (11, 31, 51, 101, PRETO); tft.fillRect (10, 180, 30, 120, ROXO); tft.drawRect (11, 181, 31, 121, PRETO); tft.fillRect (45, 180, 30, 120, AZUL); tft.drawRect (46, 181, 31, 121, PRETO); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, PRETO); tft.fillRect (115, 180, 30, 120, VERDE); tft.drawRect (116, 181, 31, 121, PRETO); tft.fillRect (150, 180, 30, 120, AMARELO); tft.drawRect (151, 181, 31, 121, PRETO); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, BRANCO); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Configurações"); tft.fillRoundRect (45, 75, 75, 75, 4, BRANCO); tft.drawRoundRect (45, 75, 75, 75, 4, PRETO); tft.fillRect (75, 75, 15, 30, PRETO); tft.fillRect (75, 120, 15, 30, PRETO); tft.fillRect (90, 105, 30, 15, PRETO); tft.fillRect (45, 105, 30, 15, PRETO); estado = 7; toque = 0; ota = 0; } if (touch == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, PRETO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, PRETO); tft.drawLine (300, 30, 270, 30, PRETO); tft.setCursor (20, 200); tft.print ("personalização"); tft.setCursor (20, 170); tft.print ("sair"); tft.setCursor (20, 140); tft.print ("periféricos"); tft.setCursor (20, 110); tft.print ("Sobre"); toque = 1; estado = 2; } if (touch == 10 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (10, 160); tft.setTextColor (BLACK); tft.print ("Criado e desenvolvido"); tft.setCursor (100, 190); tft.print ("por:"); tft.setCursor (60, 220); tft.print ("Um adolescente da Índia"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, PRETO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, PRETO); tft.drawLine (300, 30, 270, 30, PRETO); estado = 6; } if (touch == 11 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (60, 40); tft.print ("Escolha um"); tft.setCursor (40, 60); tft.print ("cor de fundo"); tft.fillRect (60, 180, 45, 45, VERMELHO); tft.fillRect (120, 180, 45, 45, AMARELO); tft.fillRect (180, 180, 45, 45, AZUL); tft.fillRect (240, 180, 45, 45, VERDE); tft.fillRect (60, 130, 45, 45, MAGENTA); tft.fillRect (120, 130, 45, 45, MARINHA); tft.fillRect (180, 130, 45, 45, LIGHTGREY); tft.fillRect (240, 130, 45, 45, CYAN); tft.fillRect (60, 80, 45, 45, BRANCO); tft.drawRect (60, 80, 45, 45, PRETO); tft.fillRect (120, 80, 45, 45, PRETO); tft.fillRect (180, 80, 45, 45, OLIVE); tft.fillRect (240, 80, 45, 45, ROXO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, PRETO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, PRETO); tft.drawLine (300, 30, 270, 30, PRETO); estado = 6; if (redirecion == 1) {cor = BRANCO; } if (redir == 2) {color = BLACK; } if (redir == 3) {color = OLIVE; } if (redir == 4) {color = PURPLE; } if (redir == 5) {color = MAGENTA; } if (redir == 6) {color = NAVY; } if (redir == 7) {color = LIGHTGREY; } if (redirecion == 8) {cor = CIANO; } if (redir == 9) {color = RED; } if (redir == 10) {color = YELLOW; } if (redir == 11) {color = BLUE; } if (redir == 12) {color = GREEN; }} if (touch == 26) {ota = 1; tft.fillScreen (BRANCO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, PRETO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, PRETO); tft.drawLine (300, 30, 270, 30, PRETO); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Entrada"); tft.setCursor (30, 150); tft.print ("Saída"); tft.drawRect (25, 130, 90, 30, PRETO); tft.drawRect (25, 60, 90, 30, PRETO); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Nível de água"); tft.setCursor (150, 170); tft.print ("Nível de gás"); tft.setCursor (150, 120); tft.print ("Distância"); tft.setCursor (150, 70); tft.print ("Som"); toque = 1; estado = 2; }}} enquanto (som == 1) {tft.fillScreen (BRANCO); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Nível de som ="); Serial.println (sensorVoltage); atraso (1000); if (som == 0) {pausa; }}}}

Etapa 3: Bibliotecas necessárias:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • TouchScreen.h

Links do Github para o mesmo:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Etapa 4: As conexões

Tapa tudo junto
Tapa tudo junto

Você precisa de 6 fios de jumper. 3 homens e 3 mulheres. Solde-os diretamente na placa Arduino assim:

Etapa 5: dê um tapa tudo junto

Coloque os fios no arduino (consulte a imagem), use um pouco de pistola de cola, se necessário …

Em seguida, conecte o escudo TFT e teste seus sensores.

Obrigado por rolar até o fim. Certifique-se de votar em mim se você achou que este projeto foi único e útil

Feliz por fazer e cuidado com os golpistas eletrônicos?

Etapa 6: Outras melhorias:

  • Mais compatibilidade de sensor
  • O código do servo motor teve que ser concluído
  • Outro aplicativo que pode fazer interface com módulos Bluetooth para que possamos controlar um robô alimentado por Bluetooth com ele.
  • Correções de bugs

Recomendado: