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

 

Прошивка 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




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

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

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