Каталог товаров

Плата расширения DFRobot Accessory Shield V1.0

Цена:

2840 р.
менее 20 шт.
Уже в корзине
Код товара: 13350
Оригинальное название:
DFRobot Arduino Bluno Expansion Accessory Shield V1.0

Описание товара

Плата расширения DFRobot Accessory Shield V1.0 для Ардуино

  • Бренд: DFRobot
  • Питание: 3.3 В и 5 В
  • Экран: монохромный OLED LCD
  • Разрешение: 128х64 точек
  • Контроллер графики: SSD1306
  • Датчик температуры и влажности: DHT11
  • Поворотный потенциометр 10 кОм
  • RGB светодиод
  • Мини-джойстик на 4 направления с функцией кнопки
  • Коммутационное реле: HFD23/005-1ZS, 0.5A 125В AC / 1A 30В DC
  • Тональный зуммер (Buzzer)
  • Размеры: 60 х 53 х 30 мм
  • Вес: 25 гр

Вступление

Многофункциональный Arduino-совместимый модуль расширения Accessory Shield V1.0 способен удивить вас своей эффективностью и максимально интуитивной лёгкостью в применении. Модуль является по настоящему высококачественной новаторской разработкой компании DFRobot, самостоятельно занимающейся выпуском широкого спектра электронных плат для Arduino, Raspberry Pi и многих других популярных платформ. Такой модуль станет незаменимым помощником в процессе обучения и понимания взаимодействия микроэлектроники с окружающим её миром. Несомненно, такая плата просто обязана быть в арсенале каждого профессионала, любителя или юного новичка, делающего первые шаги в знакомстве с микроконтроллерами и робототехникой.

Модуль укомплектован семью основными компонентами контроля и управления, на основе которых у вас получится смастерить разнообразные полезные устройства. В него входят: OLED дисплей с разрешением 128 х 64 точки на графическом контроллере SSD1306, датчик температуры и влажности DHT11, поворотный потенциометр (переменное сопротивлением) 10кОм, трёхцветный RGB SMD светодиод, миниатюрный джойстик на 4 направления с функцией кнопки, тональный зуммер (пищалка, Buzzer), а также коммутационное электромагнитное реле с максимальной токопроводимостью 1,5А. Соберите свой собственный регулируемый термометр-гигрометр, способный измерять температуру и/или влажность, и выполнять разнообразные функции по коммутации других электрических схем (например, включать отопление или кондиционирование). Сделайте его более интерактивным — добавьте отображение температурных показателей или других событий на графический монохромный дисплей, запрограммируйте управление экраном при помощи джойстика. Заставьте вашу конструкцию быть более информативной, воспользовавшись звуковым или световым оповещением. Если имеющихся возможностей мало, прибавьте в ваш проект внешние модули, подружив все необходимые элементы проводным соединением.

Над какой бы задумкой вы не трудились, её "сердцем" всегда будет микроконтроллерная плата. Если вам уже довелось стать счастливым обладателем весьма оригинальной Arduino-совместимой платы DFRobot Bluno, то функционал расширения Accessory Shield V1.0 значительно увеличиться присутствием беспроводной технологии передачи данных с низким энергопотреблением Bluetooth BLE 4.0 (Bluetooth Low Energy). Попробуйте возможности удалённого управления модулем на смартфоне или планшете (Android 4.3+ с поддержкой BLE или iOS 7.0+).

Обзор модуля DFRobot Accessory Shield V1.0 для Ардуино

  Обзор платы расширения DFRobot Accessory Sheild V1.0  

Подключенный к микроконтроллеру Arduino, модуль полностью готов к работе "из коробки". И вам не потребуется устанавливать дополнительное программное обеспечение, кроме совместимых библиотек для взаимодействия с каждым отдельным элементом. Модуль Accessory Shield V1.0 повторяет размеры и расположение выводов флагманской платы Arduino Uno. Подготовка к использованию расширения крайне проста и не вызовет никаких затруднений, достаточно просто установить его сверху, совместив все штырьевые контакты обеих плат. В дополнительном питании модуля нет необходимости — плата работает от двух типов напряжения 3.3 и 5 вольт, получаемых от силовых выводов базовой Arduino. Все компоненты, размещённые на плате расширения, абсолютно независимы друг от друга. Чтобы получить контроль над каждым из них, достаточно знать, к каким цифровым или аналоговым контактам они присоединены (не обращая внимания на выводы питания).

Расположением выводов компонентов модуля на примере Arduino Uno:

  1. OLED LCD экран — контакты SDA, SCL интерфейса I2C/IIC
  2. Датчик температуры и влажности DHT11 — цифровой контакт D2
  3. Поворотный потенциометр 10 кОм — аналоговый контакт А1
  4. Трёхцветный RGB светодиод — красный, цифровой контакт D9; зелёный, цифровой контакт D10, синий, цифровой контакт D3
  5. Мини-джойстик на 4 направления с функцией кнопки — аналоговый контакт А0
  6. Коммутационное реле HFD23/005-1ZS — цифровой контакт D11, управление срабатыванием реле
  7. Тональный зуммер (Buzzer) — цифровой контакт D8

Более детально ознакомиться с конструкцией модуля DFRobot Accessory Shield можно по его открытой принципиальной схеме в PDF.

Подготовка

Если ранее вам не приходилось программировать, загрузите и установите бесплатно распространяемый редактор Arduino IDE с сайта разработчика. Соедините микроконтроллерную плату Arduino с вашим ПК, операционная система определит для неё COM-порт. Произведите несложную настройку редактора путём выбора из раскрывающего меню типа программируемой платы (Arduino/Genuino UNO) с указанием номера выделенного COM-порта.

Удалённое общение с модулем по Bluetooth 4.0 BLE

Необходимое оборудование и программное обеспечение

  • DFRobot Bluno x 1
  • Устройство на Andoid 4.3+ с поддержкой BLE или устройство на iOS 7.0+ x 1
  • Плата расширения DFRobot Accessory Shield V1.0 x1
  • Кабель microUSB
  • Библиотека Bluno Accessory Shield Demo всё в одном, с открытым исходным кодом и примерами

Распакуйте ".zip" архив и установите библиотеки PlainProtocol, U8glib и BlunoAccessory. О том, как установить внешнюю библиотеку в среде разработки Arduino IDE, можно ознакомиться на сайте разработчика Arduino IDE.

Откройте файл "BLUNO.ino" в редакторе и прошейте его в память контроллера Arduino.

Для Android

Установите приложение "BLUNO.apk" на вашем устройстве с ОС Android. Запустите приложение, нажмите кнопку сканирования доступных подключений, и выберите из списка BLUNO, чтобы установить с ним связь. В случае удачного соединения вам предоставится возможность управлять светодиодом, реле, тональным зуммером и получать показания температуры и влажности.

  Демонстрация работоспособности приложения  

 

Для iOS

Установите приложение "Play Bluno" по ссылке на APP Store. Запустите приложение, которое самостоятельно соединится с платой BLUNO. Вам предоставится возможность управлять светодиодом, реле, тональным зуммером и получать показания температуры и влажности. Попробуйте перезапустить ваше iOS-устройство в случае неудачного Bluetooth-соединения.

Что-то пошло не так

  1. Внимательно изучите руководство по настройке DFRobot Bluno.
  2. Проверьте встроенный переключатель платы DFRobot Bluno, он должен находится в положении "NORM".
  3. Обновите прошивку модуля DFRobot Bluno.
  4. Восстановите заводские настройки АТ командой (AT+SETTING=DEFAULT).
  5. Отключите Bluetooth перед прошивкой скетча в DFRobot Bluno.
  6. Отключите и заново подключите питание платы DFRobot Bluno.
  7. Оставшиеся проблемы обсуждаются на официальном форуме.

Примеры программирования DFRobot Expansion Accessory Shield V1.0

Перед началом загрузите на ваш компьютер библиотеку с примерами BlunoAccessory.zip, в которой содержаться одноимённые файлы с расширением ".h" и ".cpp", необходимые для правильной работы с расширением. После распаковки архива, расположите эти файлы в каждой папке с примером.

  • Дисплей. Для корректной работы с графическим контроллером SSD1306 потребуется установка библиотеки U8glib-1.19.1 О том, как установить внешнюю библиотеку в формате ".zip" в среде разработки Arduino IDE, можно ознакомиться на сайте разработчика Arduino IDE.
    Нижеприведённый скетч демонстрирует простой вывод строки "Hello World" на экран.
    #include "blunoAccessory.h"
    #include "U8glib.h"
    U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
    blunoAccessory myAccessory;
    
    void setup() {
      u8g.setColorIndex(1);
      myAccessory.begin();
    }
    
    void loop() {
    	u8g.firstPage();
    	do
    	{
    		draw();
    	}
    	while(u8g.nextPage());
    	delay(500);
    }
    
    void draw (void)
    {
    	u8g.setFont(u8g_font_unifont);
    	u8g.drawStr(0,22,"Hello World");
    }
  • Датчик температуры и влажности DHT11 цифровой. Измеряемый диапазон температуры 0...+50°С с погрешностью ±2.0%. Измеряемый диапазон влажности 20-90%RH с погрешностью ±5.0%RH.
    Следующий скетч демонстрирует вывод полученных измерений температуры и влажности в последовательный порт. В редакторе Arduino IDE окно последовательного порта открывается командой Ctlr+Shift+M. Обратите внимание, по умолчанию скорость обмена данными настроена на 9600 кб/с. Для корректного отображения измерений, установите в нижней части окна монитора последовательного порта скорость 115200 кб/с.
    #include "blunoAccessory.h"
    blunoAccessory myAccessory;
    void setup() {             
    	Serial.begin(115200);   
      myAccessory.begin(); 
      Serial.println("blunoAccessory H/T test!");   
    }
    
    void loop() {
      float h = myAccessory.readHumidity();
      float t = myAccessory.readTemperature();
      Serial.print("Humidity: "); 
      Serial.print(h);
      Serial.print(" %	");
      Serial.print("Temperature: "); 
      Serial.print(t);
      Serial.println(" *C");
      delay(2000);
    }
  • Поворотный потенциометр. Представленный скетч считывает показания аналогового входа Arduino и передаёт данные в последовательный порт. В редакторе Arduino IDE окно последовательного порта открывается командой Ctlr+Shift+M. Положение ручки потенциометра (переменного резистора) отображается цифрами в зацикленном режиме. Полный поворот от начала до конца измеряется 1024 значениями (диапазон значений от 0 до 1023). Обратите внимание, по умолчанию скорость обмена данными настроена на 9600 кб/с. Для корректного отображения измерений, установите в нижней части окна монитора последовательного порта скорость 115200 кб/с.
    #include "blunoAccessory.h"
    blunoAccessory myAccessory;
    void setup() {             
      Serial.begin(115200);   
      myAccessory.begin(); 
      Serial.println("blunoAccessory Knob test!");   
    }
    
    // the loop routine runs over and over again forever:
    void loop() {
      Serial.println(myAccessory.readKnob()); 
      delay(1000);
    }
  • Трёхцветный RGB светодиод. Нижеприведённый скетч воспроизводит красочный эффект переливания всеми цветами радуги на встроенном ярком светодиоде.
    #include "blunoAccessory.h"
    blunoAccessory myAccessory;
    void setup() {
      Serial.begin(115200);             
      myAccessory.begin();
    }
    
    void loop(){
       for (int i=0;i<255;i++)
       {
         myAccessory.setRGBLed(i, 0, 255-i);
         delay (10);
       }
       for (int i=0;i<255;i++)
       {
         myAccessory.setRGBLed(255-i, i, 0);
         delay (10);
       }
       for (int i=0;i<255;i++)
       {
         myAccessory.setRGBLed(0, 255-i, i);
         delay (10);
       }
    }
  • Мини-джойстик на 4 направления с функцией кнопки. Следующий скетч считывает показания аналогового входа Arduino и передаёт данные в последовательный порт. В редакторе Arduino IDE окно последовательного порта открывается командой Ctlr+Shift+M. Положение ручки мини-джойстика отображается текстовым сообщение RIGHT, LEFT, UP, DOWN, PUSH, MID (влево, вправо, вверх, вниз, нажат, отпущен) при каждом действии. Обратите внимание, по умолчанию скорость обмена данными настроена на 9600 кб/с. Для корректного отображения положений, установите в нижней части окна монитора последовательного порта скорость 115200 кб/с.
    #include "blunoAccessory.h"
    #define RIGHT 1
    #define UP 2
    #define LEFT 3
    #define DOWN 4
    #define PUSH 5
    #define MID 0
    
    blunoAccessory myAccessory;
    void setup() {             
      Serial.begin(115200);   
      myAccessory.begin(); 
      Serial.println("blunoAccessory Joystick test!");   
    }
    
    void loop() {
      if (myAccessory.joystickAvailable()){  
        switch (myAccessory.readJoystick()){
          case RIGHT:
          Serial.print("Joystick:");
          Serial.println("RIGHT");
          break;
          case LEFT:
          Serial.print("Joystick:");
          Serial.println("LEFT");
          break;
          case UP:
          Serial.print("Joystick:");
          Serial.println("UP");
          break;
          case DOWN:
          Serial.print("Joystick:");
          Serial.println("DOWN");
          break;
          case PUSH:
          Serial.print("Joystick:");
          Serial.println("PUSH");
          break;
          case MID:
          Serial.print("Joystick:");
          Serial.println("MID");
          break;
          default:
          break;		
        }
      }
    }
  • Коммутационное реле HFD23/005-1ZS. Реле позволяет управлять включением или выключением внешней силовой цепи с переменным напряжением до 125 вольт и максимальным током 0.5A, или с постоянным напряжением до 30 вольт с максимальным током до 1A. Рядом с реле, на плате установлен трёхконтактный винтовой разъём, выводы которого имеют обозначения: NC — нормально закрытый, COM — общий для NC и NO, NO — нормально открытый. Обозначения верны в случае отсутствующего напряжения на катушке индуктивности реле. В обесточенном состоянии, пара выводов NC и COM замкнуты, а пара выводов NO и COM разомкнуты. Подавая напряжение на реле, каждая пара меняет своё положение на противоположное: NC и COM — разомкнуты, NO и COM — замкнуты.
    Представленный скетч демонстрирует управление контактами NO и NC, поочерёдно замыкая и размыкая их с общим COM. Задержка переключения установлена в 2 секунды. Яркий светодиод отображает подаваемое напряжение на катушку реле.
    #include "blunoAccessory.h"
    blunoAccessory myAccessory;
    void setup() {                
      myAccessory.begin();    
    }
    
    void loop() {
      myAccessory.setRelay(true);
      delay(2000);
      myAccessory.setRelay(false);
      delay(2000);
    }
  • Тональный зуммер (Buzzer). Нижеприведённый скетч заставляет генерировать тональный сигнал встроенного зуммера с продолжительностью звучания в 1 секунду и таким же по времени интервалом между сигналами.
    #include "blunoAccessory.h"
    blunoAccessory myAccessory;
    void setup() {                
      myAccessory.begin();    
    }
    
    void loop() {
      myAccessory.setBuzzer(true);
      delay(1000);
      myAccessory.setBuzzer(false);
      delay(1000);
    }
  • В завершающем примере все элементы управления платы интерактивно объединены. На экране отобразится: влажность, температура, положение потенциометра и джойстика, а также цифровое значения каналов RBG светодиода. Нажатие рычажка джойстика приведёт в действие зуммер, положение рычажка джойстика ВНИЗ задействует переключение реле. Удержание джойстика в положениях ВЛЕВО, ВПРАВО, ВВЕРХ, с одновременным вращением ручки потенциометра по часовой или против часовой стрелке, установит яркость свечения одного из трёх цветовых диапазонов светодиода. Свободное вращение ручки потенциометра изменит интенсивность свечения всех RGB-каналов одновременно.
    #include "blunoAccessory.h"
    #include "U8glib.h"
    blunoAccessory myAccessory;
    U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
    #define RIGHT 1
    #define UP 2
    #define LEFT 3
    #define DOWN 4
    #define PUSH 5
    #define MID 0
    
    float h,t;
    
    int ledR,ledG,ledB,brightness;
    bool relayState,buzzerState;
    void setup() {
      Serial.begin(115200);             
      u8g.setColorIndex(1);
      myAccessory.begin();
      h = myAccessory.readHumidity();
      t = myAccessory.readTemperature();
    }
    
    void loop() {
      unsigned long time=0;
      if(millis()-time>=2000){
      h = myAccessory.readHumidity();
      t = myAccessory.readTemperature();
      time=millis();
      }
      switch (myAccessory.readJoystick()){
        case DOWN:
        if (myAccessory.joystickAvailable()){
        relayState=!relayState;
        }
        break;
    		
        case PUSH:
        if (myAccessory.joystickAvailable()){
        buzzerState=!buzzerState;
        }
        break;
    		
        case LEFT:
        ledR=map(myAccessory.readKnob(),0,1023,0,255);	 
        break;
    	 
        case UP:
        ledG=map(myAccessory.readKnob(),0,1023,0,255);	 
        break;
    		
        case RIGHT:
        ledB=map(myAccessory.readKnob(),0,1023,0,255);	 
        break;
    		
        case MID:
        brightness=map(myAccessory.readKnob(),0,1023,0,100);
        default:
        break; 				
      }
      myAccessory.setRGBLed(ledR*brightness/100, ledG*brightness/100, ledB*brightness/100);
      myAccessory.setRelay(relayState);
      myAccessory.setBuzzer(buzzerState);
      
      u8g.firstPage();
      do{
        draw();
      }
      while(u8g.nextPage());
    }
    
    void draw (void)
    {
      u8g.setFont(u8g_font_unifont);
    
      u8g.setPrintPos(10,16);
      u8g.print("H:"); 
      u8g.print(h);
      u8g.print("%");
      
      u8g.setPrintPos(88,16);  
      u8g.print("R:");
      u8g.print(ledR);
      u8g.setPrintPos(88,32);
      u8g.print("G:");
      u8g.print(ledG);
      u8g.setPrintPos(88,48);
      u8g.print("B:");
      u8g.print(ledB);
      
      u8g.setPrintPos(10,32);
      u8g.print("T:"); 
      u8g.print(t);
      u8g.print("C");
      u8g.setPrintPos(10,48);
      
      u8g.print("Knob:"); 
      u8g.print(myAccessory.readKnob());
      u8g.setPrintPos(10,60);
      
      u8g.print("Joystick:");
      switch (myAccessory.readJoystick()){
        case MID:
        u8g.print("Bright");
        break;
        case RIGHT:
        u8g.print("Blue");
        break;
        case UP:
        u8g.print("Green");
        break;
        case LEFT:
        u8g.print("Red");
        break;
        case DOWN:
        u8g.print("Relay");
        break;
        case PUSH:
        u8g.print("Buzzer");
        break;
        default:
        break;
      }
    }

    Если вам захочется поиграться с изменением уровня тональности звука, настраиваемой ручкой потенциометра, внесите в программу следующие изменения:
    • файл blunoAccessory.h — найдите строку
      void setBuzzer(bool value=true);
      и замените на строку
      void setBuzzer(bool value=true, int pitch=100);
    • файл blunoAccessory.cpp — найдите блок
      
      void blunoAccessory::setRelay(bool value){
      	pinMode(relayPin,OUTPUT);
      	digitalWrite(relayPin,value);
      }
      и замените его на
      
      void blunoAccessory::setBuzzer(bool value, int pitch){
      	pinMode(buzzerPin,OUTPUT);
      	if (value) tone(buzzerPin,pitch); else noTone(buzzerPin);
      }
    • файл AccessoryShieldTest.ino — изменений коснутся нескольких строк
      
      Строку int ledR,ledG,ledB,brightness; -> замените на int buzzerTone,ledR,ledG,ledB,brightness;
      После строки buzzerState=!buzzerState; -> добавьте строку buzzerTone=map(myAccessory.readKnob(),0,1023,30,5000);
      Строку myAccessory.setBuzzer(buzzerState); -> замените на myAccessory.setBuzzer(buzzerState,buzzerTone);
      

Техническая документация

Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2021г https://compacttool.ru