### Project 17: Bluetooth Besturing Tank
#### **(1)Beschrijving:**
We hebben de basiskennis van Bluetooth geleerd in het vorige project. In deze les zullen we Bluetooth gebruiken om de slimme auto te besturen. Omdat het Bluetooth betreft, zijn een verzendend en een ontvangend einde nodig. In het project gebruiken we de mobiele telefoon als zender (master), en de slimme auto verbonden met de HM-10 Bluetooth module (slave) als ontvanger.
We hebben eerder geleerd dat het verzenden van een bit LED's kan besturen. En het principe van het besturen van deze robotauto is hetzelfde.
Om de intelligente tanktrobot beter te kunnen besturen, hebben we speciaal een APP gemaakt. In deze les lezen we alle toetswaarden op deze APP via code uit, en introduceren we vervolgens de exclusieve APP van onze tanktrobot.
#### **(2)Sleutelfuncties op de APP:**
De volgende tabel illustreert de functies van de bijbehorende toetsen:
| Toetsen | | Functies |
| :---------------------------------------------: | :--------------------------------------------: | :----------------------------------------------------------: |
|  | | Koppel en verbind de HM-10 Bluetooth module; klik opnieuw om de verbinding te verbreken |
|  | | Selecteer de robot om te bedienen |
|  | | Bestuur de bewegingen van de robot via knoppen |
|  | | Bestuur de bewegingen van de robot via joystick |
|  | | Bestuur de bewegingen van de robot via zwaartekracht |
|  | Stuurt "F" bij indrukken en "S" bij loslaten | De auto beweegt vooruit wanneer ingedrukt en stopt wanneer losgelaten |
|  | Stuurt "L" bij indrukken en "S" bij loslaten | De auto draait links wanneer stevig ingedrukt en stopt wanneer losgelaten |
|  | Stuurt "R" bij indrukken en "S" bij loslaten | De auto draait rechts wanneer stevig ingedrukt en stopt wanneer losgelaten |
|  | Stuurt "B" bij indrukken en "S" bij loslaten | De auto rijdt achteruit wanneer stevig ingedrukt en stopt wanneer losgelaten |
|  | Stuurt "u"+cijfer+"\#" bij slepen | Sleep om de snelheid van de linkermotor te wijzigen |
|  | Stuurt "v"+cijfer+"\#" bij slepen | Sleep om de snelheid van de rechtermotor te wijzigen |
|  | Selecteer om de Functiepagina te openen | |
|  | Stuurt "G" bij indrukken en "S" bij opnieuw indrukken | Activeer obstakelvermijdingsmodus bij indrukken en deactiveer bij opnieuw indrukken |
|  | Stuurt "h" bij indrukken en "S" bij opnieuw indrukken | Activeer volgmodus bij indrukken en deactiveer bij opnieuw indrukken |
|  | Stuurt "e" bij indrukken en "S" bij opnieuw indrukken | Activeer lijnvolgmodus bij indrukken en deactiveer bij opnieuw indrukken |
|  | Stuurt "f" bij indrukken en "S" bij opnieuw indrukken | Activeer rijden-in-beperkte-ruimte-modus bij indrukken en deactiveer bij opnieuw indrukken |
|  | Stuurt "i" bij indrukken en "S" bij opnieuw indrukken | Activeer lichtvolgende modus bij indrukken en deactiveer bij opnieuw indrukken |
|  | Stuurt "j" bij indrukken en "S" bij opnieuw indrukken | Activeer brandblussende modus bij indrukken en deactiveer bij opnieuw indrukken |
|  | Selecteer om de weergavemodus voor gezichtsuitdrukkingen te openen | |
|  | Stuurt "k" bij indrukken en "z" bij opnieuw indrukken | Toont lachend patroon bij klikken en wist de uitdrukking bij opnieuw klikken |
|  | Stuurt "l" bij indrukken en "z" bij opnieuw indrukken | Toont walgend patroon bij klikken en wist de uitdrukking bij opnieuw klikken |
|  | Stuurt "m" bij indrukken en "z" bij opnieuw indrukken | Toont blij gezicht bij klikken en wist de uitdrukking bij opnieuw klikken |
|  | Stuurt "n" bij indrukken en "z" bij opnieuw indrukken | Toont verdrietig patroon bij klikken en wist de uitdrukking bij opnieuw klikken |
|  | Stuurt "o" bij indrukken en "z" bij opnieuw indrukken | Toont minachtend patroon bij klikken en wist de uitdrukking bij opnieuw klikken |
|  | Stuurt "p" bij indrukken en "z" bij opnieuw indrukken | Toont hartvormig patroon bij klikken en wist de uitdrukking bij opnieuw klikken |
|  | | Kies om de aangepaste functie-interface te openen; er zijn zes toetsen 1,2,3,4,5,6; met deze toetsen kunt u zelf enkele functies uitbreiden |
|  | Klik om "w" te versturen | Klik om de analoge waarde weergeven die wordt gedetecteerd door de linker fotoweerstand |
|  | Klik om "y" te versturen | Klik om de analoge waarde weer te geven die wordt gedetecteerd door de rechter fotoweerstand |
|  | Klik om "x" te versturen | Klik om de afstand weer te geven die wordt gedetecteerd door de ultrasone sensor (eenheid: cm) |
|  | Klik om "c" te versturen
Klik opnieuw om "d" te versturen | Druk om de ventilator aan te zetten en druk opnieuw om hem uit te zetten |
#### **(3)Stroomdiagram:**

#### **(4)Aansluitingsdiagram:**

Opmerking:
GND, VCC, SDA en SCL van het 8x16 LED-paneel zijn verbonden met G(GND), V(5V), A4 en A5 van de uitbreidingskaart. STATE en BRK hoeven niet te worden aangesloten. De BT-module wordt in de uitbreidingskaart gestoken.
#### **(5)Testcode:**
U kunt blokken slepen om uw code te bewerken
(1)
(2)
(3) 
(4)
(5)
(6) 
(7)
(8)
(9)
**Volledige Testcode**
(**Opmerking:** Sluit de Bluetooth-module niet aan voordat u de code uploadt, omdat het uploaden van de code ook gebruik maakt van seriële communicatie, en er kunnen conflicten optreden met de Bluetooth seriële communicatie, waardoor het uploaden kan mislukken.)

#### **(6)Testresultaat:**
Na het uploaden van de code, verbindt u de robot met de Bluetooth-module en koppelt u de Bluetooth APP. Zet de aan/uitschakelaar van het motoraandrijfschild aan. Plaats de robot op de vloer, u kunt de knoppen van de Bluetooth-app gebruiken om de robot te besturen.

1. De pijlen omhoog, omlaag, links en rechts besturen de robot om respectievelijk vooruit, achteruit, naar links en naar rechts te bewegen.

2. Klik op de joystickknop en trek de richting van het zwarte punt in de witte cirkel om de bewegingsrichting van de robot te besturen.

3. Klik op de Zwaartekrachtknop en kantel de telefoon in de voorwaartse, achterwaartse, linker en rechter richtingen, en de robot zal bewegen in de richting waarin de telefoon wordt gekanteld.
