цифровая электроника
вычислительная техника
встраиваемые системы

 

Прошивка Arduino по Bluetooth

Автор: Mike(admin) от 25-01-2018, 03:15

Экосистема Arduino позволяет загружать скетчи не только проводным способом через USB, но и беспроводным, например, с помощью Bluetooth. Благодаря такому способу прошивки программировать Arduino можно на некотором расстоянии от компьютера, что, несомненно, удобно при отладке какого-нибудь стационарного объекта с Arduino, который проблематично поднести и подключить к компьютеру через USB.


Прошивка Arduino по Bluetooth

Для загрузки прошивки по Bluetooth можно использовать классический модуль HC-06. В данном материале будет показан пример программирования Arduino по Bluetooth через HC-06.


У модуля Bluetooth HC-06 есть линия сигнала STATUS. Этот сигнал указывает, когда установлено соединение Bluetooth. Также нам нужно управлять сбросом (Reset) Arduino до и после прошивки. Поэтому помимо HC-06 нам может понадобиться какой-нибудь простейший микроконтроллер для несложного управления процессом прошивки. Для этих целей может подойти, например, ATTINY85. Ниже показана схема подключения платы TRINKET на основе этого МК к HC-06 и Arduino.


Прошивка Arduino по Bluetooth

Поскольку логика управляющей части имеет напряжение 3.3 В, а не 5 В, то был задействован делитель напряжения на линии Tx. При использовании платы Arduino с логикой 3.3 В подключение упрощается, как показано ниже.


Прошивка Arduino по Bluetooth

Плата TRIKET проверяет уровень сигнала STATE для определения наличия или отсутствия подключения по Bluetooth и генерирует импульс RESET.


Прошивка Arduino по Bluetooth

Ниже приведен скетч (код) для платы TRIKET, позволяющей управлять процессом загрузки прошивки для Arduino по Bluetooth.



#define LEDPIN     1               // вывод светодиода для индикации
#define RESETPIN   0               // на линию RESET платы Arduino.
#define STATPIN    2               // на линию STATUS модуля HC-06
volatile bool flag= false;
int pulseTimer= 120;               // время ожидания импульсов STATPIN

/*------------------------------------------------------------------------------
  setup() - настройка
------------------------------------------------------------------------------*/
void setup(){
    GIMSK = 0b00100000;            // настраиваем прерывания по изменению состояния сигналов на линиях
//    PCMSK = 0b00010011;          // прерывания на линиях PB0, PB1, & PB4
    PCMSK = 0b00000100;            // прерывание на линии 2 (PB2)
    sei();                         // разрешаем прерывания
    
    pinMode(LEDPIN, OUTPUT);    
    pinMode(RESETPIN, OUTPUT);
    pinMode(STATPIN, INPUT_PULLUP);
    digitalWrite(RESETPIN, HIGH);  // RESET в высокий логический уровень  
}

/*------------------------------------------------------------------------------
  loop() - бесконечный цикл
------------------------------------------------------------------------------*/
void loop(){
  delay(1);

	if(flag){
    pulseTimer=120;                // заново настраиваем время ожидания импульсов STATPIN.
    flag = false;
	}
  else pulseTimer--;
  
	if(pulseTimer == 0){
    // здесь мы можем проверить «0» в последовательном канале (57600 бод)
	  digitalWrite(RESETPIN, LOW);   // отправляем импульс на линию RESET в течение 1 мс.
    delay(1);
    digitalWrite(RESETPIN, HIGH);  // снова в высокий логический уровень
    
    while(!flag){
      digitalWrite(LEDPIN,LOW);
      delay(500);
      digitalWrite(LEDPIN,HIGH);
      delay(500);          
      } 
	}

}

/*------------------------------------------------------------------------------
  Pin Change Interrupt of pin 2 (PB2).
------------------------------------------------------------------------------*/
ISR(PCINT0_vect){
    flag = true;                   // сигнализирует об изменении вывода 2
    digitalWrite(LEDPIN,digitalRead(STATPIN));   // сигнализирует о статусе STATUS модуля HC-06
    sei();                         // разрешаем прерывания
}



© digitrode.ru


Теги: Arduino, Bluetooth



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий