Inhoudsopgave:

Een robot die vertelt of een elektronicaverkoper je bedriegt of niet: 6 stappen
Een robot die vertelt of een elektronicaverkoper je bedriegt of niet: 6 stappen

Video: Een robot die vertelt of een elektronicaverkoper je bedriegt of niet: 6 stappen

Video: Een robot die vertelt of een elektronicaverkoper je bedriegt of niet: 6 stappen
Video: The Internet of Things by James Whittaker of Microsoft 2024, November
Anonim
Een robot die vertelt of een elektronicaverkoper je bedriegt of niet
Een robot die vertelt of een elektronicaverkoper je bedriegt of niet

Vorig jaar gingen mijn vader en ik naar een pas geopende robotica-/elektronicawinkel vlakbij waar we wonen. Toen ik daar binnenkwam, zat het vol met elektronica, serovs, sensoren, Raspberry pis en Arduinos. De volgende dag gingen we naar dezelfde winkel en kochten veel senors en 3 Arduino's ter waarde van ongeveer 150 USD. Zodra ik naar huis ging, werkte geen enkel ander product behalve de Arduino Mega. We werden opgelicht voor ongeveer 130 USD, wat veel is.

Dus besloot ik een robot te maken die ongeveer 12 sensoren en 2 motoren kan testen (die nog steeds aan de servo werken) en kan bepalen of het product defect is.

Laten we er meteen op ingaan!

Benodigdheden

1. Arduino UNO

2. 2,4 TFT-aanraakscherm

3. paar jumperdraden

4. sensoren en motoren zodat je ze kunt testen (hier gebruikte ik - Bewegingssensor, MQ6 gassensor, Geluidssensor, potentiometer en waterniveausensor)

Stap 1: Hoe het werkt…

Image
Image

Ik heb een Arduino geprogrammeerd om een interactieve gebruikersinterface te maken met een TFT-scherm. Zoals we weten, heeft het TFT-scherm slechts één vrije pin, namelijk de A5-pin. (als u de UNO gebruikt). Dus elke sensor die analoge pinnen gebruikt om gegevens te lezen, is compatibel met deze opstelling…

In de gebruikersinterface kun je de achtergrondkleur van het bureaublad wijzigen en kun je de app openen die door mij voor Arduino is ontwikkeld om sensoren te testen.

Bij het openen van de app ziet u 2 opties, INPUT en OUTPUT. dus als je op Input klikt, worden 4 sensoren weergegeven (Het is compatibel met 12, maar ik moet het nog programmeren omdat de examens naderen … geen tijd:(. Iedereen is vrij om de code te bewerken …)

En het kan ook controleren of de servomotor werkt als u hem in de sleuf aansluit.

even kijken:

Stap 2: De code uploaden

De code is een programma van 600 regels dat ik minutieus heb gecodeerd in ongeveer 50 uur. Het heeft een paar bugs, dus plz wijzig het en stuur het naar mij in mijn e-mail ([email protected]).

Upload de code en sluit het TFT-schild aan op de Arduino. Ik raad je aan om met de gebruikersinterface te spelen, zodat je het beter onder de knie krijgt.

De code:

#erbij betrekken

#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 GREEN 0x07E0 #define #define MAGENTA 0xF81F #define GEEL 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XM A2 #define YM 7 #define_MITS XP 6 #define_MIN 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 geluid; char-status = 6; int-aanraking = 0; int kleur = ZWART; int redir = 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(WIT); tft.setCursor(60, 160); tft.setTextColor(ZWART); tft.print("Veeg om in te loggen"); } void loop() { float sensorVoltage; vlottersensorWaarde; TSPoint p = ts.getPoint(); pinMode (XM, UITGANG); pinMode (YP, UITGANG); if (pz > MINDRUK && 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) {aanraken = 26; } } if (touch == 1 && state == 6) { tft.setRotation(0); tft.fillScreen(kleur); geluid = 0; tft.fillRect(200, 180, 80, 140, WIT); tft.drawRect(201, 181, 81, 141, ZWART); tft.fillRect(80, 30, 100, 100, CYAAN); tft.drawRect(81, 31, 101, 101, ZWART); tft.fillRect(10, 30, 50, 100, MARINE); tft.drawRect(11, 31, 51, 101, ZWART); tft.fillRect(10, 180, 30, 120, PAARS); tft.drawRect(11, 181, 31, 121, ZWART); tft.fillRect(45, 180, 30, 120, BLAUW); tft.drawRect(46, 181, 31, 121, ZWART); tft.fillRect(80, 180, 30, 120, CYAAN); tft.drawRect(81, 181, 31, 121, ZWART); tft.fillRect(115, 180, 30, 120, GROEN); tft.drawRect(116, 181, 31, 121, ZWART); tft.fillRect(150, 180, 30, 120, GEEL); tft.drawRect (151, 181, 31, 121, ZWART); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, WIT); //tft.fillTriange (a1, b1, a2, b2, c1, c2, ROOD); tft.setRotation(45); tft.setCursor(200, 20); tft.print("Instellingen"); tft.fillRoundRect(45, 75, 75, 75, 4, WIT); tft.drawRoundRect(45, 75, 75, 75, 4, ZWART); tft.fillRect(75, 75, 15, 30, ZWART); tft.fillRect(75, 120, 15, 30, ZWART); tft.fillRect(90, 105, 30, 15, ZWART); tft.fillRect(45, 105, 30, 15, ZWART); staat = 7; aanraken = 0; ota = 0; } if (touch == 2) { tft.fillScreen(WIT); tft.setRotatie(0); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, ZWART); tft.setRotation(45); tft.fillTriangle(270, 40, 270, 20, 260, 30, ZWART); tft.drawLine(300, 30, 270, 30, ZWART); tft.setCursor(20, 200); tft.print("personalisatie"); tft.setCursor(20, 170); tft.print("uitloggen"); tft.setCursor(20, 140); tft.print("randapparatuur"); tft.setCursor(20, 110); tft.print("Over"); aanraken = 1; staat = 2; } if (raak == 10 && staat == 2){ tft.fillScreen(WIT); tft.setCursor(10, 160); tft.setTextColor(ZWART); tft.print("Gemaakt en ontwikkeld"); tft.setCursor(100, 190); tft.print("door:"); tft.setCursor(60, 220); tft.print("Een tiener uit India"); tft.setRotatie(0); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, ZWART); tft.setRotation(45); tft.fillTriangle(270, 40, 270, 20, 260, 30, ZWART); tft.drawLine(300, 30, 270, 30, ZWART); staat = 6; } if (touch == 11 && state == 2){ tft.fillScreen(WIT); tft.setCursor(60, 40); tft.print("Kies een"); tft.setCursor(40, 60); tft.print("achtergrondkleur"); tft.fillRect(60, 180, 45, 45, ROOD); tft.fillRect(120, 180, 45, 45, GEEL); tft.fillRect(180, 180, 45, 45, BLAUW); tft.fillRect(240, 180, 45, 45, GROEN); tft.fillRect(60, 130, 45, 45, MAGENTA); tft.fillRect(120, 130, 45, 45, MARINE); tft.fillRect(180, 130, 45, 45, LICHTGRIJS); tft.fillRect(240, 130, 45, 45, CYAAN); tft.fillRect(60, 80, 45, 45, WIT); tft.drawRect(60, 80, 45, 45, ZWART); tft.fillRect(120, 80, 45, 45, ZWART); tft.fillRect(180, 80, 45, 45, OLIJF); tft.fillRect(240, 80, 45, 45, PAARS); tft.setRotatie(0); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, ZWART); tft.setRotation(45); tft.fillTriangle(270, 40, 270, 20, 260, 30, ZWART); tft.drawLine(300, 30, 270, 30, ZWART); staat = 6; if (redir == 1){ kleur = WIT; } if (redir == 2){ kleur = ZWART; } if (redir == 3){ kleur = OLIJF; } if (redir == 4){ kleur = PAARS; } if (redir == 5){ kleur = MAGENTA; } if (redir == 6){ kleur = MARINE; } if (redir == 7){ kleur = LICHTGRIJS; } if (redir == 8){ kleur = CYAAN; } if (redir == 9){ kleur = ROOD; } if (redir == 10){ kleur = GEEL; } if (redir == 11){ kleur = BLAUW; } if (redir == 12){ kleur = GROEN; } } if (touch == 26){ ota = 1; tft.fillScreen(WIT); tft.setRotatie(0); tft.fillTriangle(210, 30, 210, 50, 220, 40, WIT); tft.fillRect(200, 35, 12, 12, WIT); tft.drawTriangle(210, 30, 210, 50, 220, 40, ZWART); tft.drawRect(200, 35, 12, 12, ZWART); tft.drawCircle(210, 40, 14, ZWART); tft.setRotation(45); tft.fillTriangle(270, 40, 270, 20, 260, 30, ZWART); tft.drawLine(300, 30, 270, 30, ZWART); tft.setRotatie(1); tft.setCursor(30, 80); tft.print("Invoer"); tft.setCursor(30, 150); tft.print("Uitvoer"); tft.drawRect(25, 130, 90, 30, ZWART); tft.drawRect(25, 60, 90, 30, ZWART); if (p.x > 190 && p.x 30 && p.y < 90){ tft.setCursor(150, 220); tft.print("Waterpeil"); tft.setCursor(150, 170); tft.print("Gasniveau"); tft.setCursor(150, 120); tft.print("Afstand "); tft.setCursor(150, 70); tft.print("Geluid"); aanraken = 1; staat = 2; } } } while (geluid == 1){ tft.fillScreen(WIT); sensorWaarde = analoog lezen (A5); sensorVoltage = sensorWaarde; tft.setCursor(60, 160); tft.print(sensorVoltage); Serial.println("Geluidsniveau = "); Serial.println(sensorVoltage); vertraging (1000); if (geluid == 0){ pauze; } } } }

Stap 3: Bibliotheken vereist:

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

Github-links voor hetzelfde:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

Stap 4: De verbindingen

Klap het allemaal samen
Klap het allemaal samen

Je hebt 6 jumperdraden nodig. 3 mannen en 3 vrouwen. soldeer ze rechtstreeks op het Arduino-bord als volgt:

Stap 5: klap het allemaal samen

Steek de draden in de arduino (zie afbeelding), gebruik indien nodig een lijmpistool …

Bevestig vervolgens het TFT-schild en test vervolgens uw sensoren.

Bedankt voor het helemaal naar beneden scrollen. Zorg ervoor dat je op mij stemt als je vond dat dit project uniek en nuttig was

Veel plezier met maken en pas op voor elektronica-oplichters?

Stap 6: Verdere verbeteringen:

  • Meer sensorcompatibiliteit
  • Servomotorcode moest worden afgewerkt
  • Een andere app die kan communiceren met Bluetooth-modules, zodat we er een door Bluetooth aangedreven robot mee kunnen besturen.
  • Bugfixes

Aanbevolen: