Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Как создать собственное приложение Android для вашего проекта Arduino с помощью MIT App Inventor

<основной класс="главный сайт" id="главный">

В этом учебном пособии по Arduino мы узнаем, как создавать собственные приложения для Android для управления Arduino с помощью онлайн-приложения MIT App Inventor. Вы можете посмотреть следующее видео или прочитать письменное руководство ниже.

Обзор

Для этого урока у нас есть два примера. Первый пример — это управление простым светодиодом, а второй — управление шаговым двигателем с помощью смартфона. В моем предыдущем уроке мы уже узнали, как установить связь Bluetooth между платой Arduino и смартфоном с помощью модуля Bluetooth HC-05, и объяснили код Arduino, необходимый для первого примера.

Код Arduino

Вот краткий обзор этого кода. Итак, через последовательный порт мы получаем входящие данные со смартфона и сохраняем их в переменной state. Если мы получим символ «0», который отправляется со смартфона при нажатии кнопки «LED:OFF», мы выключим светодиод и отправим обратно на смартфон строку «LED:OFF». С другой стороны, если мы получим символ «1», мы включим светодиод и отправим обратно строку «LED:ON».

/* 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;
 } 
}Code language: Arduino (arduino)

Итак, теперь нам нужно создать собственное приложение для Android, которое будет отправлять эти символы «0» и «1» при нажатии определенной кнопки, а также получать входящие строки от Arduino.

Изобретатель приложений MIT

На веб-сайте MIT App Inventor нам нужно войти в онлайн-приложение для сборки, нажав кнопку «Создать приложения!». кнопка. Чтобы войти в систему, нам необходимо иметь учетную запись Gmail. Как только мы вошли в систему, мы можем создать наш первый проект. Вот как выглядит окно дизайна, и теперь мы можем приступить к созданию нашего приложения.

Но перед этим мы можем подключить наш смартфон к этому проекту, чтобы мы могли видеть, как приложение принимает форму прямо на нашем смартфоне в режиме реального времени. Для этого сначала нам нужно загрузить приложение MIT AI2 Companion из Play Store и установить его на свой смартфон. Затем в меню «Подключение» в онлайн-редакторе мы выберем AI Companion, и появится штрих-код, который нам просто нужно отсканировать или вставить код в приложение для смартфона, и соединение между онлайн-редактором и приложением для смартфона будет установлено.

Так что теперь, например, если мы вставим кнопку на экран онлайн-редактора, кнопка появится в реальном времени и на смартфоне. Аналогично этому, если вы не хотите использовать свой смартфон при создании приложения, вы можете установить эмулятор Android на свой компьютер и использовать его таким же образом. Вы можете найти более подробную информацию о настройке эмулятора на их веб-сайте.

Создание приложения — пример 1

Теперь мы готовы построить первый пример. Начнем с оформления программы. Сначала мы добавим несколько HorizontalArrangements из палитры макета и установим их свойства, такие как высота, ширина и выравнивание, чтобы они соответствовали желаемому виду нашей программы. Затем из палитры UserInterface мы добавим ListPicker и прикрепим к нему изображение. ListPicker будет использоваться для выбора устройства Bluetooth, к которому будет подключаться наш смартфон.

Далее мы добавим еще один HorizontalArrangements, в который мы поместим метку. Эта метка будет указывать, подключен смартфон или нет к модулю Bluetooth, поэтому мы установим исходный текст этой метки на «Не подключен». Следующая метка будет использоваться для отображения состояния светодиода, выключен он или включен. Начальное состояние будет «LED:OFF». Далее мы добавим две кнопки «Включить» и «Выключить» для управления светодиодом. На этом этапе хорошо переименовать компоненты, чтобы их было легче распознавать и использовать в редакторе блоков позже. Теперь осталось добавить BluetoothClient, который является невидимым компонентом, а также часы, которые будут использоваться для индикации состояния соединения в реальном времени.

Редактор блоков

Теперь в редакторе блоков мы готовы дать жизнь нашей программе. С левой стороны мы получили все блоки и функции, связанные с ранее добавленными компонентами.

Мы начнем с BluetoothList ListPicker. Оттуда сначала мы добавим блок «BeforePicking» и присоединим к нему блок «set Bluetooth Elements». Затем из блоков BluetoothClient мы добавим блок «BluetoothClient AddressesAndNames». Что будет делать этот набор блоков, так это установить список устройств Bluetooth, которые уже сопряжены с нашим телефоном, поэтому, когда мы нажмем кнопку «Подключить» в ListPicker, появится список всех сопряженных устройств.

Затем мы должны установить, что произойдет после того, как мы выберем или выберем наш конкретный модуль Bluetooth. Из блока BluetoothClient мы добавим блок call BluetoothClient .Connect address и добавим к нему блок BluetoothList Selection, что означает, что наш телефон будет подключаться к Bluetooth-адресу, который мы ранее выбрали.

Далее из блоков Clock мы добавим блок «.Timer». В этом блоке мы будем отображать в режиме реального времени, подключен ли телефон к модулю Bluetooth, используя блок «установить текст» метки «Подключено».

Далее нам нужно дать жизнь двум кнопкам. Поэтому, когда будет нажата кнопка «TurnOn_Button», мы будем использовать клиентскую функцию Bluetooth «Send1ByteNumber», чтобы отправить число в модуль Bluetooth Arduino. В нашем случае это число 49, которое соответствует символу «1» в соответствии с таблицей ASCII и включает светодиод. Сразу после этого мы будем использовать функцию BluetoothClient «ReceiveText» для получения входящей строки, которая отправляется обратно с Arduino на телефон. Для этой строки задана метка «LED_Status».

Та же процедура выполняется для «TurnOff_Button», где номер отправки должен быть изменен на 48, что соответствует символу «0». Теперь осталось скачать и установить программу на наш смартфон. Мы можем сделать это из меню «Сборка», либо сохранив его на наш компьютер, а затем передав на наш телефон, либо отсканировав QR-код для онлайн-загрузки программы. Вот демонстрация примера.

Вот файл загрузки указанного выше проекта MIT App Inventor:

BluetoothTest.aia

1 файл(ы) 5,16 КБ Скачать

Пример управления шаговым двигателем


Теперь давайте посмотрим на второй пример, управляющий шаговым двигателем. В верхней части экрана у нас есть те же компоненты для соединения Bluetooth, что и в предыдущем примере. Далее у нас есть компонент Canvas, который используется для рисования и вставки изображений. Я вставил два прозрачных изображения, которые я ранее нарисовал. Первое — изображение датчика, который будет зафиксирован на месте, а второе — изображение указателя, который будет вращаться. Далее у нас есть кнопка «Проверить» для переключения между ручным и автоматическим режимом или режимом непрерывной работы, а также кнопка для изменения направления вращения. На кнопке у нас есть ползунок для изменения скорости вращения шагового двигателя.

Вот блоки и код Arduino для этого примера. Итак, в редакторе блоков у нас снова те же блоки для соединения Bluetooth, что и в предыдущем примере.

Теперь для поворота изображения указателя мы используем функцию ImageSprite «.PointInDirection», которая поворачивает изображение из положения 0 ° в координаты X и Y, где было прикосновение к холсту. В то же время мы устанавливаем повернутый заголовок ImageSprite на текстовую метку выше. После этого мы вызываем пользовательскую процедуру или функцию, которая на самом деле имеет задержку в 10 млн секунд.

Наконец, мы отправляем значение заголовка в виде текста в Arduino, используя функцию Bluetooth «SendText». Это значение будет принято Arduino и соответствующим образом будет вращать шаговый двигатель.

Далее идет блок CheckBox. Поэтому, если флажок установлен, мы отправим текст «Auto» на Arduino, который активирует шаговый двигатель для непрерывного вращения. Пока мы находимся в этом режиме, если мы нажмем кнопку «Reverse», мы отправим текст «Reverse» на Arduino, который изменит направление вращения двигателя. Также, пока мы в этом режиме, мы можем менять скорость вращения. Если мы изменим положение ползунка, текущее значение положения ползунка будет отправлено в Arduino, что изменит скорость вращения шагового двигателя. Если мы снимем флажок CheckBox, мы вернемся в ручной режим. Вот демонстрация примера.

Вот файл загрузки вышеуказанного проекта MIT App Inventor, а также два изображения, использованные в проекте:

StepperMotorTest.aia

1 файл(ы) 60,96 КБ Скачать

Шаговый двигатель и изображения указателя

1 файл(ы) 27,34 КБ Скачать

Вот код Arduino для второго примера:

/*  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;
  }
 }
}
Code language: Arduino (arduino)

Производственный процесс

  1. Создайте систему восстановления баллистического парашюта для вашего дрона
  2. Как выбрать правильный материал для вашего проекта?
  3. Создание монитора Ambilight с помощью Arduino
  4. Универсальный пульт дистанционного управления с использованием Arduino, 1Sheeld и Android
  5. Как создать дорожную карту автоматизации за 7 шагов
  6. Магний против. Алюминий:как выбрать сплав для индивидуального проекта литья
  7. Как правильно выбрать кран для вашего проекта
  8. Индивидуальная обработка:вот как подготовиться к предложению вашего проекта
  9. Как оценить потребности в стали для вашего проекта
  10. Преимущества пескоструйной обработки для вашего индивидуального проекта по изготовлению металлоконструкци…