In den ersten beiden Übersichten ( 1 , 2 ) haben wir Ihnen die Zusammensetzung und die Hauptmerkmale des NR05 Digital Laboratory-Sets aus dem Alphabet der Electronics Worker- Reihe vorgestellt.
Wir haben wiederholt gesagt, dass die Rekrutierungsmöglichkeiten nicht auf die Erfahrungen und Projekte beschränkt sind, die das Schulungshandbuch enthalten. Die Möglichkeiten des Sets sind viel breiter!Lassen Sie uns überlegen, wie Sie die Steuerung von Executive-Geräten von Ihrem Smartphone oder Tablet mithilfe des Digital Laboratory implementieren können.Die Kommunikation zwischen dem Smartphone und dem auf der Erweiterungskarte installierten Arduino-Modul wird mithilfe der Bluetooth-Technologie implementiert. Dies schränkt natürlich die Möglichkeit ein, die Entfernung von etwa 10 m drahtlos zu steuern, aber zu Hause ist häufig nicht mehr erforderlich. Basierend auf dieser Technologie können Sie einfache Roboter oder Heimautomationsgeräte erfolgreich steuern, und Ihr Telefon oder Smartphone dient als kostenloses universelles Bedienfeld, das einfach neu programmiert werden kann, um die Aufgabe optimal zu lösen.Im Internet finden Sie mehrere Projekte, mit denen Sie Arduino über Bluetooth mit einem Telefon verbinden können. Solche Projekte werden sicherlich dazu beitragen, das Prinzip einer solchen Kommunikation zu beherrschen. Ihr Hauptnachteil ist jedoch die Unfähigkeit, die Funktionalität des Steuerungsprogramms und sein Erscheinungsbild an die spezifischen Bedürfnisse des Benutzers anzupassen.Wir werden den Weg eines etwas komplizierteren, aber universelleren beschreiten - wir werden selbst Programme für das Telefon und für Arduino schreiben. Dies wird Ihnen helfen, das Prinzip des Schreibens solcher Anwendungen zu verstehen und es in Ihrer Entwicklung zu verwenden.Lassen Sie uns zunächst erklären, auf welchem Prinzip die Verbindung basiert, die wir verwenden werden. Wie Sie wissen, wird beim Anschließen des Arduino-Moduls an einen Computer eine virtuelle serielle Schnittstelle - eine COM-Schnittstelle - auf dem Computer konfiguriert. Es wird verwendet, um Skizzen auf Arduino hochzuladen und Informationen zwischen einem Computer und dem Arduino-Mikrocontroller auszutauschen. Ebenfalls auf der Arduino-Karte befinden sich zwei Kontakte, die mit den Pins D1 und D0 kombiniert sind und als RX und TX bezeichnet werden - das Senden (Empfangen) und Empfangen (Senden) der Standard-UART-Schnittstelle.Nachdem wir den Bluetooth-UART-Adapter an diese Kontakte angeschlossen haben (das HC-05-Modul steht uns zur Verfügung, es ist nicht im Kit enthalten), erhalten wir einen Hardware-Kommunikationskanal zwischen dem über Bluetooth mit dem Adapter verbundenen Gerät und Arduino.Wenn wir also Informationen von einem Gerät auf die serielle Schnittstelle schreiben und von einem anderen lesen (dies kann in zwei Richtungen erfolgen), können wir den Informationsaustausch zwischen Geräten organisieren. Die Geschwindigkeit eines solchen Austauschs zwischen Arduino und einem Smartphone bei Verwendung des HC-05-Moduls beträgt 57600 Baud.Aus Gründen der Übersichtlichkeit verwenden wir eine RGB-LED und einen Servoantrieb, die beide von PWM-Signalen gesteuert werden.Hier ist das Anschlussdiagramm der Projektkomponenten:
Um die ausführenden Elemente zu steuern, übertragen wir vom Smartphone einen bestimmten Buchstaben, der bestimmt, für welches Element der Befehl bestimmt ist, und eine Zahl, die dem Befehlsparameter entspricht. Der Parameter kann eine Zahl sein, die bestimmt, ob ein Aktuator ein- oder ausgeschaltet werden soll, oder eine Zahl, die den PWM-Parameter definiert.Wir geben den Text des Programms für Arduino. Das Programm empfängt Daten vom Bluetooth-Adapter, entschlüsselt sie und führt die erforderlichen Aktionen aus: Schaltet die LED ein oder aus, passt ihre Helligkeit oder den Drehwinkel der Servowelle an.Der Text enthält genügend Kommentare, um die Logik des Programms zu verstehen:Spoiler// LCD-
#include <Servo.h>
#include <LiquidCrystal.h>
// 5
// get_key
#define NUM_KEYS 5
int adcKeyVal[NUM_KEYS] = {30, 150, 360, 535, 760};
// LCD-
LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);
//
Servo servo;
int btValue; // BT-
char command; // , COM-
void setup() {
// COM- bluetooth, , -
Serial.begin(57600);
Serial.flush();
Serial.setTimeout(4);
// LCD (16 , 2 )
lcd.begin(16, 2);
lcd.clear();
lcd.print(«Master Kit-READY»);
delay(2000);
lcd.clear();
// 3-
servo.attach(3);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(9, LOW);
}
void loop() {
int key = get_key(); // ,
// , COM-
//
if (key > 0){
Serial.print(key);
delay(500);
}
// , bluetooth,
if (Serial.available() > 0) {
// ()
command = Serial.read();
// ( )
btValue = Serial.parseInt();
// LCD , bluetooth
lcd.setCursor(0,0);
lcd.print(command);
lcd.print(' ');
lcd.print(btValue);
lcd.print(" ");
delay(10);
switch (command) {
case 'P': // P,
pinSwitch(btValue);
break;
case 'S': // S — c 1 ( )
pwm5(btValue);
break;
case 'M': // — 2 ( )
servo3(btValue);
break;
}
}
}
//
void pinSwitch(int Pin){
digitalWrite(Pin, !digitalRead(Pin));
}
// 5 ( )
void pwm5(int pwmValue){
analogWrite(5, pwmValue);
}
// 3
void servo3(int angleValue){
int angle = map(angleValue, 0, 180, 5, 180);
servo.write(angle);
}
//
int get_key()
{
int input = analogRead(A6);
int k;
for(k = 0; k < NUM_KEYS; k++)
if(input < adcKeyVal[k])
return k + 1;
return 0;
}
Nehmen wir nun ein Programm für ein Smartphone, das einen Befehl mit einem Parameter übertragen soll. Wir werden hierfür die Funktionen des MIT App Inventor-Projekts nutzen.Der MIT App Inventor ist eine Programmierumgebung, die am Massachusetts Institute of Technology (MIT) entwickelt wurde. Es wird verwendet, um Anwendungen für mobile Geräte (Smartphones und Tablet-Computer) zu entwickeln, die auf dem Android-Betriebssystem ausgeführt werden.Dies ist keine Programmiersprache im allgemein akzeptierten Sinne. Wenn Sie sie verwenden, müssen Sie keinen Textcode in Form von Zeilen schreiben. Das Programm besteht aus Blöcken, die auf dem Bildschirm angezeigt werden und einfach wie Puzzles gezogen und gestapelt werden. Wenn die Blöcke gemäß der Programmlogik zusammenpassen, „haften sie zusammen“, wenn sie nicht zusammenpassen, können sie nicht verbunden werden. Ursprünglich wurde diese Programmiermethode entwickelt, um Schüler zu unterrichten, daher ist es recht einfach zu lernen. Natürlich hat es, wie in jeder Sprache, seine eigenen Feinheiten und Tricks, aber die Site verfügt über genügend Informationen und Beispiele, um die Sprache zu beherrschen. Viele Programme sind auf der Website gemeinfrei verfügbar.Um die unter ai2.appinventor.mit.edu verfügbare App Inventor-Programmierumgebung verwenden zu können, müssen Sie über ein Google-Konto verfügen, mit dem Sie auf der Projektwebsite autorisiert sind. Das Programm wird in jedem Browser erstellt. Der Computer, auf dem dieser Browser ausgeführt wird, muss ständig mit dem Internet verbunden sein. Das Smartphone oder Tablet, auf dem das mit App Inventor erstellte Programm installiert wird, muss über eine Android-Betriebssystemversion von mindestens 4.0 verfügen.Im Browser erstellen Sie das Design (Erscheinungsbild) und die Logik des Programms in Form von Blöcken. An derselben Stelle wird das fertige Projekt in eine ausführbare Datei mit der Erweiterung apk kompiliert. Diese Datei kann auf verschiedene Arten heruntergeladen und auf einem mobilen Gerät ausgeführt werden. Die vielleicht bequemste dieser Methoden ist die Installation der MIT AI2 Companion-Anwendung auf dem mobilen Gerät (auf dem Play Market). App Inventor generiert einen QR-Code, der einen Link zu der von Ihnen erstellten Anwendung enthält, und AI2 Companion liest und installiert (oder aktualisiert) ihn. Sie können sogar Ihr eigenes Symbol zeichnen und hochladen, um Ihre Anwendung zu starten. Auf diese Weise können Sie mit App Inventor voll funktionsfähige und intuitive Anwendungen für Android erstellen. Ihr Code ist zwar nicht optimal, aber Bequemlichkeit,Die Einfachheit und Geschwindigkeit der Erstellung solcher Anwendungen zahlt sich in vielen Fällen aus.Die Anwendung, die in unserem Projekt funktioniert, wird unter dem Namen BToothHC05 in die MIT AI2 Appiventor-Galerie hochgeladen.Mit der Anwendung können Sie ein Bluetooth-Gerät finden, eine Verbindung herstellen, Befehle mit Parametern generieren und an das angeschlossene Gerät senden, Daten vom Gerät lesen und die Nummer der auf der Erweiterungskarte gedrückten Taste anzeigen.Das Bildschirmdesign entspricht dem folgenden Bild:
Es gibt Elemente (grüne Quadrate, die die eingefügten Bilder symbolisieren), die keine Funktionalität aufweisen, aber als Trennzeichen dienen, um das Erscheinungsbild zu verbessern.Wenn Sie die AppInventor-Website aufgerufen haben und sich im Designer-Modus in der Programmierumgebung befinden, werden die Eigenschaften rechts angezeigt, wenn Sie mit der rechten Maustaste auf das entsprechende Designelement klicken. Nachdem Sie in den Blockmodus gewechselt haben, können Sie alle Blöcke der zu entwickelnden Anwendung sehen.Tatsächlich sind fast alle Blöcke Ereignishandler: Drücken einer Taste auf dem Touchscreen, Verschieben des Schiebereglers, Auslösen eines Timers, Ändern der Neigung des Telefons (ja, fast alle Sensoren eines Mobilgeräts können in App Inventor verwendet werden!).Betrachten Sie den funktionalen Zweck jedes Blocks.
Wenn Sie in diesem Block auf die Bildschirmschaltfläche Verbinden / Trennen klicken (Ereignis Button4Connect.Click), wird das Bluetooth-Gerät getrennt (BluetoothClient1.Disconnect aufrufen), wenn es bereits verbunden ist (BluetoothClient1.IsConnected). Der Text auf der Schaltfläche ändert sich in „Getrennt“ und seine Farbe ändert sich in grau oder Aufrufen der Liste der möglichen Geräte, die eine Verbindung herstellen sollen (ListPicker1.Open), wenn keine Verbindung besteht. Wie Sie sehen können, ist der Block selbst aus der Sicht eines unerfahrenen Programmierers gut lesbar!
In diesen drei Blöcken (von oben nach unten):- Weisen Sie eine globale Variable zu (alle Blöcke sehen sie) switch1, um die Betriebsmodi zu wechseln: Schieberegler oder Neigung;- Wenn wir die Liste der Geräte ListPicker1 für die Verbindung aufrufen, möchten wir deren Adressen und Namen anzeigen.- Wenn Sie ein Gerät aus der Liste ListPicker1 auswählen, stellen Sie eine Verbindung her, ändern Sie die Schaltflächenfarbe und zeigen Sie den Text Verbunden mit Gerätename an. Der Gerätename wird aus einer langen Zeichenfolge gebildet. 8 Zeichen werden ab dem 18. genommen.
Die drei oben gezeigten Blöcke senden über die hergestellte Verbindung die Zeichen "P5", "P9" und "P6", die die rote, grüne oder blaue Farbe der LED ein- oder ausschalten sollen.
Wenn der Schieberegler Schieberegler1, der die Helligkeit der roten Farbe der LED steuert, verschoben wird, sendet dieser Block das Symbol "S" und die Zahlen, die der Position des Schiebereglers entsprechen.
Wenn Slider2, der das Servo steuert, verschoben wird und der entsprechende Modus eingeschaltet ist (Schalter1 = 0), senden wir das Zeichen M und die Position des Sliders.
Wenn der Betriebsmodus des Neigungssensors aktiviert ist, sendet das Gerät M und einen Neigungswinkel + 90 Grad, um den Servoantrieb zu steuern.
Dieses Gerät schaltet die Betriebsarten des Servos über den Schieberegler oder Neigungssensor um und ändert entsprechend den Text auf der Schaltfläche (Text) und dessen Farbe (BackgroundColor).
Diese beiden Blöcke werden durch ein Timer-Ereignis ausgelöst. Der erste Block (Clock1) prüft alle 0,1 Sekunden (dieses Intervall wird in den Eigenschaften des Clock1-Timers festgelegt), ob Daten vorhanden sind, ob die Taste auf der Erweiterungskarte gedrückt wurde. Wenn die Taste gedrückt wurde, werden innerhalb von 1 Sekunde (zweiter Block - Clock2) Informationen über die Nummer der gedrückten Taste auf dem Smartphone-Bildschirm angezeigt.Wir werden uns nun das Video ansehen, wie die LED- und Servosteuerung vom Smartphone gemäß unseren Programmen wirklich abläuft.Auf die gleiche Weise kann eine ausreichend große Anzahl von Aktuatoren gesteuert werden, die mit dem Arduino verbunden sind. Dies erfordert keine große Arbeit des Programmierers bei der Verwendung von AppInventor, und die Arduino-Programmierung ist recht einfach und klar. Sie können problemlos unnötige Programmblöcke hinzufügen oder entfernen und erhalten die Funktionen, die Sie benötigen.Wie Sie diesem Material entnehmen können, können Sie mit der Erweiterungskarte aus dem Digital Laboratory Kit die Arduino-Zusatzmodule ganz bequem und visuell verwenden.Anwendung.Erste Schritte in der MIT AppInventor-Programmierumgebung.Wie wir bereits geschrieben haben, benötigen Sie für die Arbeit im AppInventor-Projekt ein Google-Konto. Wenn Sie ein Smartphone auf Android haben, haben Sie höchstwahrscheinlich bereits ein solches Konto. Wenn nicht, können Sie es erhalten, indem Sie über den folgenden Link zu Google gehen .Gehen Sie als Nächstes zur AppInventor- Website und klicken Sie auf den Link Apps erstellen !, In der oberen rechten Ecke der Hauptseite der Website, und wechseln Sie zur Website der Programmierumgebung.Im Folgenden finden Sie einen Link zu einem kurzen Video, das die Erstellung eines einfachen Programms zeigt, das Text anzeigt, wenn Sie auf eine Schaltfläche auf dem Touchscreen eines Smartphones klicken.