Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

So erstellen Sie mit MIT App Inventor eine benutzerdefinierte Android-App für Ihr Arduino-Projekt

In diesem Arduino-Tutorial erfahren Sie, wie Sie mithilfe der Online-Anwendung MIT App Inventor benutzerdefinierte Android-Anwendungen zur Steuerung von Arduino erstellen. Sie können sich das folgende Video ansehen oder das schriftliche Tutorial unten lesen.

Übersicht

Für dieses Tutorial haben wir zwei Beispiele. Das erste Beispiel steuert eine einfache LED und das zweite steuert einen Schrittmotor mit einem Smartphone. In meinem vorherigen Tutorial haben wir bereits gelernt, wie man die Bluetooth-Kommunikation zwischen dem Arduino-Board und dem Smartphone mit dem HC-05-Bluetooth-Modul herstellt, und den Arduino-Code erklärt, der für das erste Beispiel benötigt wird.

Arduino-Code

Hier ist ein kurzer Überblick über diesen Code. Über die serielle Schnittstelle empfangen wir also die eingehenden Daten vom Smartphone und speichern sie in der Variable „state“. Wenn wir das Zeichen „0“ erhalten, das vom Smartphone gesendet wird, wenn die Taste „LED:OFF“ gedrückt wird, schalten wir die LED aus und senden den String „LED:OFF“ an das Smartphone zurück. Wenn wir andererseits das Zeichen „1“ erhalten, schalten wir die LED ein und senden den String „LED:ON“ zurück.

/* Arduino and HC-05 Bluetooth Module Tutorial * * by Dejan Nedelkovski, www.HowToMechatronics.com * */ #define ledPin 7 int state = 0; void setup() { pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); Serial.begin(38400); // Default communication rate of the Bluetooth module } void loop() { if(Serial.available() > 0){ // Checks whether data is comming from the serial port state = Serial.read(); // Reads the data from the serial port } if (state == '0') { digitalWrite(ledPin, LOW); // Turn LED OFF Serial.println("LED: OFF"); // Send back, to the phone, the String "LED: ON" state = 0; } else if (state == '1') { digitalWrite(ledPin, HIGH); Serial.println("LED: ON");; state = 0; } } Codesprache:Arduino (arduino)

Also müssen wir jetzt unsere benutzerdefinierte Android-Anwendung erstellen, die die Zeichen „0“ und „1“ sendet, wenn eine bestimmte Taste gedrückt wird, und die eingehenden Strings vom Arduino empfängt.

MIT-App-Erfinder

Auf der MIT App Inventor-Website müssen wir uns bei der Online-Gebäudeanwendung anmelden, indem wir auf „Apps erstellen!“ klicken. Taste. Um sich anzumelden, benötigen wir ein Gmail-Konto. Sobald wir eingeloggt sind, können wir unser erstes Projekt erstellen. So sieht das Designfenster aus und jetzt können wir mit der Erstellung unserer Anwendung beginnen.

Aber vorher können wir unser Smartphone mit diesem Projekt verbinden, damit wir direkt auf unserem Smartphone in Echtzeit sehen können, wie die App Gestalt annimmt. Dazu müssen wir zunächst die MIT AI2 Companion App aus dem Play Store herunterladen und auf unserem Smartphone installieren. Dann wählen wir aus dem Connect-Menü des Online-Editors AI Companion und es erscheint ein Barcode, den wir nur scannen müssen, oder den Code in die Smartphone-App einfügen, und die Verbindung zwischen dem Online-Editor und der Smartphone-App wird hergestellt.

Wenn wir also jetzt zum Beispiel einen Button in den Bildschirm des Online-Editors einfügen, erscheint der Button in Echtzeit auch auf dem Smartphone. Wenn Sie Ihr Smartphone beim Erstellen der App nicht verwenden möchten, können Sie ähnlich wie hier den Android-Emulator auf Ihrem Computer installieren und auf die gleiche Weise verwenden. Weitere Einzelheiten zur Einrichtung des Emulators finden Sie auf deren Website.

Erstellen der App – Beispiel 1

Jetzt können wir das erste Beispiel bauen. Wir beginnen mit dem Layout des Programms. Zuerst werden wir einige HorizontalArrangements aus der Layout-Palette hinzufügen und ihre Eigenschaften wie die Höhe, die Breite und die Ausrichtung so einstellen, dass sie zu unserem vom Programm gewünschten Aussehen passen. Dann fügen wir aus der UserInterface-Palette einen ListPicker hinzu und hängen ein Bild daran an. Der ListPicker wird verwendet, um das Bluetooth-Gerät auszuwählen, mit dem sich unser Smartphone verbinden wird.

Als nächstes fügen wir ein weiteres HorizontalArrangements hinzu, in dem wir ein Label platzieren. Dieses Etikett zeigt an, ob das Smartphone mit dem Bluetooth-Modul verbunden ist oder nicht, und deshalb setzen wir den Anfangstext dieses Etiketts auf „Nicht verbunden“. Das nächste Etikett wird verwendet, um den Status der LED anzuzeigen, ob sie aus- oder eingeschaltet ist. Der Anfangszustand ist „LED:OFF“. Als nächstes fügen wir die beiden Schaltflächen „Einschalten“ und „Ausschalten“ zur Steuerung der LED hinzu. An dieser Stelle ist es gut, die Komponenten umzubenennen, damit wir sie später leichter erkennen und im Blockeditor verwenden können. Was jetzt übrig bleibt, ist den BluetoothClient hinzuzufügen, der eine nicht sichtbare Komponente ist, sowie eine Uhr, die für die Echtzeitanzeige des Verbindungsstatus verwendet wird.

Blockeditor

Jetzt sind wir im Blockeditor bereit, unserem Programm Leben einzuhauchen. Von der linken Seite haben wir alle Blöcke und Funktionen, die sich auf die zuvor hinzugefügten Komponenten beziehen.

Wir beginnen mit dem BluetoothList ListPicker. Von dort aus fügen wir zuerst den Block „BeforePicking“ hinzu und hängen daran den Block „Set Bluetooth Elements“ an. Dann fügen wir aus den BluetoothClient-Blöcken den Block „BluetoothClient AddressesAndNames“ hinzu. Was dieser Satz von Blöcken tut, ist eine Liste von Bluetooth-Geräten zu erstellen, die bereits mit unserem Telefon gekoppelt sind, so dass, wenn wir auf die ListPicker-Schaltfläche „Verbinden“ klicken, die Liste aller gekoppelten Geräte angezeigt wird.

Als nächstes müssen wir festlegen, was passieren wird, nachdem wir unser spezielles Bluetooth-Modul ausgewählt oder ausgewählt haben. Aus dem BluetoothClient-Block fügen wir den Block „BluetoothClient anrufen. Adresse verbinden“ und den Block „BluetoothList Selection“ hinzu, was bedeutet, dass sich unser Telefon mit der zuvor ausgewählten Bluetooth-Adresse verbindet.

Als nächstes fügen wir aus den Clock-Blöcken den „.Timer“-Block hinzu. Innerhalb dieses Blocks geben wir in Echtzeit an, ob das Telefon mit dem Bluetooth-Modul verbunden ist oder nicht, indem wir den Block „Set Text“ des Labels „Connected“ verwenden.

Als nächstes müssen wir den beiden Knöpfen Leben einhauchen. Wenn also auf den „TurnOn_Button“ geklickt wird, verwenden wir die Bluetooth-Client-Funktion „Send1ByteNumber“, um eine Nummer an das Arduino Bluetooth-Modul zu senden. In unserem Fall ist das die Zahl 49, die laut ASCII-Tabelle dem Zeichen „1“ entspricht und die LED einschaltet. Gleich danach verwenden wir die BluetoothClient-Funktion „ReceiveText“, um den eingehenden String zu empfangen, der vom Arduino an das Telefon zurückgesendet wird. Dieser String wird auf das Label „LED_Status“ gesetzt.

Das gleiche Verfahren gilt für den „TurnOff_Button“, bei dem die Sendenummer auf 48 geändert werden soll, was dem Zeichen „0“ entspricht. Jetzt müssen wir nur noch das Programm herunterladen und auf unserem Smartphone installieren. Wir können dies über das Menü „Build“ tun, indem wir es entweder auf unserem Computer speichern und dann auf unser Telefon übertragen oder einen QR-Code scannen, um das Programm online herunterzuladen. Hier ist die Demonstration des Beispiels.

Hier ist eine Download-Datei des oben genannten MIT App Inventor-Projekts:

BluetoothTest.aia

1 Datei(en) 5,16 KB herunterladen

Beispiel einer Schrittmotorsteuerung


Schauen wir uns nun das zweite Beispiel an, die Steuerung eines Schrittmotors. Oben auf dem Bildschirm haben wir die gleichen Komponenten für die Bluetooth-Verbindung wie im vorherigen Beispiel. Als nächstes haben wir eine Canvas-Komponente, die zum Zeichnen und Einfügen von Bildern verwendet wird. Ich habe zwei transparente Bilder eingefügt, die ich zuvor gezeichnet habe. Das erste ist ein Bild eines Messgeräts, das an Ort und Stelle fixiert wird, und das zweite ist ein Bild eines sich drehenden Zeigers. Als nächstes haben wir eine Check-Taste zum Umschalten zwischen Manuell- und Auto- oder Dauerlaufmodus und eine Taste zum Ändern der Drehrichtung. Bei der Schaltfläche haben wir einen Schieberegler zum Ändern der Drehzahl des Schrittmotors.

Hier sind die Blöcke und der Arduino-Code hinter diesem Beispiel. Im Blockeditor haben wir also wieder die gleichen Blöcke für die Bluetooth-Verbindung wie im vorherigen Beispiel.

Zum Drehen des Zeigerbildes verwenden wir nun die ImageSprite-Funktion „.PointInDirection“, die das Bild von der 0°-Position zu den X- und Y-Koordinaten dreht, wo die Leinwand berührt wurde. Gleichzeitig setzen wir die gedrehte ImageSprite-Überschrift auf die Textbeschriftung darüber. Danach rufen wir eine benutzerdefinierte Prozedur oder Funktion auf, die eigentlich eine Verzögerung von 10 Millionen Sekunden ist.

Zuletzt senden wir den Überschriftswert als Text mit der Bluetooth-Funktion „SendText“ an den Arduino. Dieser Wert wird vom Arduino akzeptiert und der Schrittmotor entsprechend gedreht.

Als nächstes kommt der CheckBox-Block. Wenn also die CheckBox aktiviert ist, senden wir den Text „Auto“ an den Arduino, der den Schrittmotor aktiviert, um sich kontinuierlich zu drehen. Wenn wir uns in diesem Modus befinden, wenn wir die Taste „Reverse“ drücken, senden wir den Text „Reverse“ an den Arduino, der die Drehrichtung des Motors ändert. Während wir uns in diesem Modus befinden, können wir auch die Rotationsgeschwindigkeit ändern. Wenn wir die Position des Schiebereglers ändern, wird der aktuelle Wert der Schiebereglerposition an den Arduino gesendet, der die Rotationsgeschwindigkeit des Steppers ändert. Wenn wir die CheckBox deaktivieren, gelangen wir zurück in den manuellen Modus. Hier ist die Demonstration des Beispiels.

Hier ist eine Download-Datei des obigen MIT App Inventor-Projekts sowie der beiden im Projekt verwendeten Bilder:

StepperMotorTest.aia

1 Datei(en) 60,96 KB Herunterladen

Schrittmotoranzeige und Zeigerbilder

1 Datei(en) 27,34 KB Herunterladen

Hier ist der Arduino-Code des zweiten Beispiels:

/*  Stepper Motor Control via HC-05 Bluetooth Module
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */

// Defining variables
const int stepPin = 7; 
const int dirPin = 6;
String state = ""; 
int currentHeading=0;
int currentAngle=0;
int lastAngle=0;
int angle=0;
int rotate=0;
int runContinuously=0;
String mode = "Manual";
boolean dirRotation = HIGH;
int rotSpeed = 1500;
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
  Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
  delayMicroseconds(1);
  if(Serial.available() > 0){ // Checks whether data is comming from the serial port
    state = Serial.readString(); // Reads the data from the serial port
 }
 // When Auto Button is pressed
 if (mode == "Auto") {
  if (state == "Reverse") {
    delay(10);
    if (dirRotation == HIGH) {
      dirRotation = LOW;
    }
    else {
      dirRotation = HIGH;
    }  
    digitalWrite(dirPin,dirRotation);
    delay(10);
    state = "";
  }
  rotSpeed = state.toInt();
  if (rotSpeed >= 300 && rotSpeed <= 3000) {
  digitalWrite(stepPin,HIGH); 
  delayMicroseconds(rotSpeed); 
  digitalWrite(stepPin,LOW); 
  delayMicroseconds(rotSpeed);
  }
  else {
  digitalWrite(stepPin,HIGH); 
  delayMicroseconds(1500); 
  digitalWrite(stepPin,LOW); 
  delayMicroseconds(1500);
  }
  
  if (state == "Manual"){
    mode = state;
  }
 }
 // When Program is in Manual mode
 else if (mode == "Manual"){ 
 currentHeading = state.toInt();
 //Serial.println(angle);
 //Serial.println(state);
 if (currentHeading < 0 ){
  currentHeading = 360+currentHeading;
 }
 currentAngle = map(currentHeading,0,359,0,200);
 digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  if (currentAngle != lastAngle){
    if(currentAngle > lastAngle){  
      rotate = currentAngle - lastAngle;  
      for(int x = 0; x < rotate; x++) {
      digitalWrite(stepPin,HIGH); 
      delayMicroseconds(500); 
      digitalWrite(stepPin,LOW); 
      delayMicroseconds(500); 
      }
    }

    if(currentAngle < lastAngle){  
      rotate = lastAngle - currentAngle; 
      digitalWrite(dirPin,LOW); //Changes the rotations direction
      for(int x = 0; x < rotate; x++) {
      digitalWrite(stepPin,HIGH); 
      delayMicroseconds(500); 
      digitalWrite(stepPin,LOW); 
      delayMicroseconds(500); 
      }
    }
  }
  lastAngle = currentAngle;
  if (state == "Auto"){
    mode = state;
  }
 }
}
 Codesprache:Arduino (arduino) 

Herstellungsprozess

  1. Bauen Sie ein ballistisches Fallschirm-Wiederherstellungssystem für Ihre Drohne
  2. Wie wählt man das richtige Material für Ihr Projekt aus?
  3. Erstellen von Monitor-Ambilight mit Arduino
  4. Universelle Fernbedienung mit Arduino, 1Sheeld und Android
  5. So erstellen Sie Ihre Automatisierungs-Roadmap in 7 Schritten
  6. Magnesium Vs. Aluminium:So wählen Sie eine Legierung für Ihr individuelles Gussprojekt aus
  7. So wählen Sie den richtigen Kran für Ihr Projekt aus
  8. Kundenspezifische Bearbeitung:So bereiten Sie Ihr Projektangebot vor
  9. Schätzen des Stahlbedarfs für Ihr Projekt
  10. Die Vorteile des Sandstrahlens für Ihr individuelles Metallherstellungsprojekt