Obsah:

Robot, který zjistí, zda vás prodejce elektroniky podvádí nebo ne: 6 kroků
Robot, který zjistí, zda vás prodejce elektroniky podvádí nebo ne: 6 kroků

Video: Robot, který zjistí, zda vás prodejce elektroniky podvádí nebo ne: 6 kroků

Video: Robot, který zjistí, zda vás prodejce elektroniky podvádí nebo ne: 6 kroků
Video: Nachytali jsme je kouřit 2024, Listopad
Anonim
Robot, který zjistí, zda vás prodejce elektroniky podvádí nebo ne
Robot, který zjistí, zda vás prodejce elektroniky podvádí nebo ne

V loňském roce jsme s tátou šli do nově otevřeného obchodu s robotikou/elektronikou velmi blízko místa, kde žijeme. Když jsem tam vstoupil, bylo to plné elektroniky, serovů, senzorů, Raspberry pis a Arduinos. Druhý den jsme šli do stejného obchodu a koupili mnoho senátorů a 3 Arduiny v hodnotě asi 150 USD. Jakmile jsem šel domů, nefungovaly žádné jiné produkty kromě Arduino Mega. Byli jsme scammed asi 130 USD, což je hodně.

Rozhodl jsem se tedy vytvořit robota, který dokáže otestovat asi 12 senzorů a 2 motory (stále pracuje na servu) a dokáže určit, zda je produkt vadný.

Pojďme rovnou do toho!

Zásoby

1. Arduino UNO

2. 2,4 dotykový displej TFT

3. pár propojovacích vodičů

4. senzory a motory, abyste je mohli vyzkoušet (zde jsem použil - pohybový senzor, plynový senzor MQ6, zvukový senzor, potenciometr a snímač hladiny vody)

Krok 1: Jak to funguje …

Image
Image

Naprogramoval jsem Arduino na vytváření a interaktivní uživatelské rozhraní s TFT displejem. Jak víme, displej TFT má pouze jeden volný pin, tj. Kolík A5. (pokud používáte UNO). Takže jakýkoli senzor, který ke čtení dat používá analogové piny, je s tímto nastavením kompatibilní …

V uživatelském rozhraní můžete změnit barvu pozadí plochy a můžete otevřít aplikaci, kterou jsem pro Arduino vyvinul pro testování senzorů.

Při otevření aplikace vidíte 2 možnosti, VSTUP a VÝSTUP. takže pokud kliknete na Vstup, zobrazí se 4 senzory (Je kompatibilní s 12, ale zatím je nemám programovat, protože se blíží zkoušky….bez času:(. Kdokoli může kód upravit…)

A může také zkontrolovat, zda servomotor funguje, připojte jej do slotu.

podívej se:

Krok 2: Nahrání kódu

Kód je 600řádkový program, který jsem pečlivě nakódoval asi za 50 hodin. Má několik chyb, takže je prosím upravte a pošlete mi je na moji poštu ([email protected]).

Nahrajte kód a připojte štít TFT k Arduinu. Doporučuji vám pohrát si s uživatelským rozhraním, abyste se v něm lépe zorientovali.

Kód:

#zahrnout

#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 0x000F #define RED 0xF800 # #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XM A2 #define XM A2 #define XM A2 #define 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 zvuk; znakový stav = 6; int dotek = 0; int barva = ČERNÁ; int redir = 0; int ota; neplatné nastavení () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0,5); tft.fillScreen (BÍLÁ); tft.setCursor (60, 160); tft.setTextColor (ČERNÁ); tft.print („Přejetím se přihlásíte“); } void loop () {float sensorVoltage; float sensorValue; TSPoint p = ts.getPoint (); pinMode (XM, VÝSTUP); 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) {touch = 26; }} if (touch == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (barva); zvuk = 0; tft.fillRect (200, 180, 80, 140, BÍLÁ); tft.drawRect (201, 181, 81, 141, ČERNÁ); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, ČERNÁ); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, ČERNÝ); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, ČERNÝ); tft.fillRect (45, 180, 30, 120, MODRÁ); tft.drawRect (46, 181, 31, 121, ČERNÝ); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, ČERNÝ); tft.fillRect (115, 180, 30, 120, ZELENÁ); tft.drawRect (116, 181, 31, 121, ČERNÁ); tft.fillRect (150, 180, 30, 120, ŽLUTÝ); tft.drawRect (151, 181, 31, 121, ČERNÝ); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, BÍLÁ); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print („Nastavení“); tft.fillRoundRect (45, 75, 75, 75, 4, BÍLÁ); tft.drawRoundRect (45, 75, 75, 75, 4, ČERNÁ); tft.fillRect (75, 75, 15, 30, ČERNÝ); tft.fillRect (75, 120, 15, 30, ČERNÝ); tft.fillRect (90, 105, 30, 15, ČERNÁ); tft.fillRect (45, 105, 30, 15, ČERNÁ); stav = 7; dotek = 0; ota = 0; } if (touch == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, ČERNÁ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČERNÁ); tft.drawLine (300, 30, 270, 30, ČERNÁ); tft.setCursor (20, 200); tft.print („personalizace“); tft.setCursor (20, 170); tft.print („odhlásit se“); tft.setCursor (20, 140); tft.print („periferie“); tft.setCursor (20, 110); tft.print („O aplikaci“); dotek = 1; stav = 2; } if (touch == 10 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (10, 160); tft.setTextColor (ČERNÁ); tft.print ("Vytvořeno a vyvinuto"); tft.setCursor (100, 190); tft.print ("od:"); tft.setCursor (60, 220); tft.print („Dospívající z Indie“); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, ČERNÁ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČERNÁ); tft.drawLine (300, 30, 270, 30, ČERNÁ); stav = 6; } if (touch == 11 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (60, 40); tft.print („Pick a“); tft.setCursor (40, 60); tft.print ("barva pozadí"); tft.fillRect (60, 180, 45, 45, ČERVENÁ); tft.fillRect (120, 180, 45, 45, ŽLUTÝ); tft.fillRect (180, 180, 45, 45, MODRÁ); tft.fillRect (240, 180, 45, 45, ZELENÁ); tft.fillRect (60, 130, 45, 45, MAGENTA); tft.fillRect (120, 130, 45, 45, NAVY); tft.fillRect (180, 130, 45, 45, LIGHTGREY); tft.fillRect (240, 130, 45, 45, CYAN); tft.fillRect (60, 80, 45, 45, BÍLÁ); tft.drawRect (60, 80, 45, 45, ČERNÝ); tft.fillRect (120, 80, 45, 45, ČERNÝ); tft.fillRect (180, 80, 45, 45, OLIVE); tft.fillRect (240, 80, 45, 45, PURPLE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, ČERNÁ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČERNÁ); tft.drawLine (300, 30, 270, 30, ČERNÁ); stav = 6; if (redir == 1) {color = WHITE; } 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 (redir == 8) {color = CYAN; } 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 (BÍLÁ); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BÍLÁ); tft.fillRect (200, 35, 12, 12, BÍLÁ); tft.drawTriangle (210, 30, 210, 50, 220, 40, ČERNÁ); tft.drawRect (200, 35, 12, 12, ČERNÝ); tft.drawCircle (210, 40, 14, ČERNÁ); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, ČERNÁ); tft.drawLine (300, 30, 270, 30, ČERNÁ); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Vstup"); tft.setCursor (30, 150); tft.print ("Výstup"); tft.drawRect (25, 130, 90, 30, ČERNÝ); tft.drawRect (25, 60, 90, 30, ČERNÝ); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Hladina vody"); tft.setCursor (150, 170); tft.print ("Hladina plynu"); tft.setCursor (150, 120); tft.print („Vzdálenost“); tft.setCursor (150, 70); tft.print („Zvuk“); dotek = 1; stav = 2; }}} while (sound == 1) {tft.fillScreen (WHITE); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Hladina zvuku ="); Serial.println (sensorVoltage); zpoždění (1000); if (zvuk == 0) {break; }}}}

Krok 3: Požadované knihovny:

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

Github odkazy pro totéž:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Krok 4: Připojení

Slap It All together
Slap It All together

Potřebujete 6 propojovacích vodičů. 3 muži a 3 ženy. pájejte je přímo na desku Arduino takto:

Krok 5: Slap It All together

Zastrčte dráty do arduina (viz obrázek), v případě potřeby použijte lepicí pistoli …

Poté připevněte štít TFT a poté otestujte své senzory.

Děkujeme, že jste se posunuli úplně dolů. Pokud máte pocit, že je tento projekt jedinečný a užitečný, určitě pro mě hlasujte

Šťastné vytváření a pozor na podvodníky s elektronikou?

Krok 6: Další vylepšení:

  • Větší kompatibilita senzorů
  • Bylo nutné dokončit kód servomotoru
  • Další aplikace, která může komunikovat s moduly Bluetooth, abychom s ní mohli ovládat robota poháněného technologií Bluetooth.
  • Oprava chyb

Doporučuje: