Цена:
Плата расширения DFRobot Accessory Shield V1.0 для Ардуино
Вступление
Многофункциональный 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 для Ардуино
Подключенный к микроконтроллеру Arduino, модуль полностью готов к работе "из коробки". И вам не потребуется устанавливать дополнительное программное обеспечение, кроме совместимых библиотек для взаимодействия с каждым отдельным элементом. Модуль Accessory Shield V1.0 повторяет размеры и расположение выводов флагманской платы Arduino Uno. Подготовка к использованию расширения крайне проста и не вызовет никаких затруднений, достаточно просто установить его сверху, совместив все штырьевые контакты обеих плат. В дополнительном питании модуля нет необходимости — плата работает от двух типов напряжения 3.3 и 5 вольт, получаемых от силовых выводов базовой Arduino. Все компоненты, размещённые на плате расширения, абсолютно независимы друг от друга. Чтобы получить контроль над каждым из них, достаточно знать, к каким цифровым или аналоговым контактам они присоединены (не обращая внимания на выводы питания).
Расположением выводов компонентов модуля на примере Arduino Uno:
Более детально ознакомиться с конструкцией модуля DFRobot Accessory Shield можно по его открытой принципиальной схеме в PDF.
Подготовка
Если ранее вам не приходилось программировать, загрузите и установите бесплатно распространяемый редактор Arduino IDE с сайта разработчика. Соедините микроконтроллерную плату Arduino с вашим ПК, операционная система определит для неё COM-порт. Произведите несложную настройку редактора путём выбора из раскрывающего меню типа программируемой платы (Arduino/Genuino UNO) с указанием номера выделенного COM-порта.
Удалённое общение с модулем по Bluetooth 4.0 BLE
Необходимое оборудование и программное обеспечение
Распакуйте ".zip" архив и установите библиотеки PlainProtocol, U8glib и BlunoAccessory. О том, как установить внешнюю библиотеку в среде разработки Arduino IDE, можно ознакомиться на сайте разработчика Arduino IDE.
Откройте файл "BLUNO.ino" в редакторе и прошейте его в память контроллера Arduino.
Для Android
Установите приложение "BLUNO.apk" на вашем устройстве с ОС Android. Запустите приложение, нажмите кнопку сканирования доступных подключений, и выберите из списка BLUNO, чтобы установить с ним связь. В случае удачного соединения вам предоставится возможность управлять светодиодом, реле, тональным зуммером и получать показания температуры и влажности.
Для iOS
Установите приложение "Play Bluno" по ссылке на APP Store. Запустите приложение, которое самостоятельно соединится с платой BLUNO. Вам предоставится возможность управлять светодиодом, реле, тональным зуммером и получать показания температуры и влажности. Попробуйте перезапустить ваше iOS-устройство в случае неудачного Bluetooth-соединения.
Что-то пошло не так
Примеры программирования DFRobot Expansion Accessory Shield V1.0
Перед началом загрузите на ваш компьютер библиотеку с примерами BlunoAccessory.zip, в которой содержаться одноимённые файлы с расширением ".h" и ".cpp", необходимые для правильной работы с расширением. После распаковки архива, расположите эти файлы в каждой папке с примером.
#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");
}
#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);
}
#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);
}
#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);
}
}
#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;
}
}
}
#include "blunoAccessory.h"
blunoAccessory myAccessory;
void setup() {
myAccessory.begin();
}
void loop() {
myAccessory.setRelay(true);
delay(2000);
myAccessory.setRelay(false);
delay(2000);
}
#include "blunoAccessory.h"
blunoAccessory myAccessory;
void setup() {
myAccessory.begin();
}
void loop() {
myAccessory.setBuzzer(true);
delay(1000);
myAccessory.setBuzzer(false);
delay(1000);
}
#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;
}
}
void setBuzzer(bool value=true);
и замените на строкуvoid setBuzzer(bool value=true, int pitch=100);
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);
}
Строку 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
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru