Главная » Arduino
Призовой фонд
на ноябрь 2017 г.
1. Термометр Relsib WT51
Рэлсиб
2. 1000 руб
PCBWay
3. Тестер компонентов LCR-T4
Паяльник
4. 200 руб.
От пользователей

Музыкально-световой клавесин на Intel Galileo

Сначала рассмотрим плату Intel Galileo. Intel Galileo — первый Arduino-совместимый микрокомпьютер на платформе Intel. Galileo полностью совместим с картами Arduino как с точки зрения ПО, так и по распиновке (все цифровые и аналоговые разьемы находятся на тех же местах, что и у Arduino Uno R3). Кроме того, Galileo имеет на борту полноразмерный слот mini-PCI Express, порт 100Mb Ethernet, слот Micro-SD, последовательный порт RS-232, USB хост и клиент, а также 8Мб NOR флеш.

Galileo собран на базе одноядерного х86 процессора Intel Quark X1000 с частотой 400 МГц. Процессор имеет 16 Кб L1 кеша и 512 Кб встроенной в чип памяти.
По сравнению с другими картами Arduino, Galileo имеет несколько особенностей, повышающих ее производительность.

  • SD слот имеет собственный контроллер, обмен данными осуществляется без участия SPI;
  • Ethernet порт также работает без помощи SPI;
  • Впервые реализован полноценный PCI Express слот, позволяющий устанавливать карты расширения, такие как Wi-Fi, Bluetooth, 3G и т.д.

Программирование Galileo осуществляется с помощью ПО Arduino. Во флэш прошит минималистический Yocto Linux образ на ucLibc и busybox, который умеет, в основном, загружать и исполнять Arduino скетчи. Если вдруг разработчику захочется поставить более функциональный дистрибутив можно загрузить на microSD-карту  образ диска IOT(Internet of Things) devkit для Intel Galileo, в который включены  полезные драйверов и библиотеки для разработки на C/C++/Python/Node.js.

Помимо обычных средств программирования, в образе диска IOT devkit для Intel Galileo также содержится одно не совсем обычное. Румынский стартап Wyliodrin (см. рис. 15.1) (http://www.wyliodrin.comразработал среду программирования на основе Blockly, облегчающая графическое программирование сенсоров/актуаторов на Intel Galileo, Edison и Raspberry Pi. Wyliodrin – это онлайн сервис, который позволяет программировать устройства, загружать программы и управлять устройствами прямо из браузера. При программировании встраиваемых устройств, как правило, необходимо подключить их к компьютеру. С Wyliodrin, устройство должно быть подключено только к Интернету. Если устройство подключено к Интернету, оно может быть в любом месте. Вы можете запрограммировать его, просто войдя в свой аккаунт Wyliodrin. Если у вас есть метеостанция ​​или удаленное устройства автоматизации, вы можете запрограммировать и управлять ими из вашего дома или офиса. Программирование встраиваемых устройств обычно означает изучение C или C ++. С Wyliodrin вы можете выбрать язык, который вы любите от C / C ++, Java, Pascal, Shell Script, Perl, PHP, Objective-C, C #, Python, JavaScript. Если вы не знаете никакого языка программирования, вы можете использовать визуальную среду программирования, где построение программы осуществляется простым перетаскиванием блоков. Сервис позволяет строить графики, для отображения данных, получаемых с устройств.

Сервис Wyliodrin с 24.11.2014 по 24.12.2014 года проводит конкурс проектов, в качестве призов купоны для amazon.com и бесплатные аккаунты в сервисе Wyliodrin. О проекте узнал неделю назад, времени осталось совсем мало, но сделать что-то успел. Предлагаю вашему вниманию проект музыкально светового поздравления. Набираем на клавиатуре подключенной к Arduino/Raspbery Pi  нотами в две октавы музыкальный фрагмент, он понотно передается через Интернет и сервис Wyliodrin на плату Intel Galileo, где проигрывается на динамике и кроме того на RGB-ленте воспроизводятся эти ноты в виде цвета.

Raspberry Pi (с Arduino на борту) и плата Intek Galileo подключены к сервису Wyliodrin

Для подключения необходимо создать аккаунт, добавить в профиле плату и загрузить на нее необходимое программное обеспечение.

Первая часть проекта - Отправка сообщений из Raspberry Pi на плату Intel Galileo через сервис Wyliodrin

Плата Arduino Uno подключена  к Raspberry Pi  

При нажатии на кнопки воспроизводится звук ноты и в последовательный порт /dev/ttyAMA0 выдается сообщение в формате JSON, которое скрипт на python в Raspberry Pi перенаправляет в сервис Wyliodrin плате Intel Galileo. 

Скетч на Arduino

#include "Keypad.h"

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {11, 10, 9, 8}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {7, 6, 5, 4}; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 
char key;

#include 
SoftwareSerial mySerial(2, 3); // RX, TX

const int pinTone = 12;
int tones[] = { 3830, 3400, 3038, 2864, 2550, 2272, 2028, 
               1915, 1700, 1519, 1432, 1275, 1136, 1014 };

void setup()
  {
  Serial.begin(9600);
  Serial.println("Project Wyliodrin");
  mySerial.begin(9600);
  mySerial.println("Start Wylio send");
  }
  
void loop()
  {
  key = customKeypad.getKey();
  
  if (key)
    {  
    Serial.println(key);
    mySerial.print("{note:");
    switch(key)
      {
      case '1': 
        tone(pinTone,tones[0]);mySerial.print("C");mySerial.print(",id_note:");  
        mySerial.print("1");mySerial.println("}");  
        break;
      case '2': 
        tone(pinTone,tones[1]);mySerial.print("D");mySerial.print(",id_note:");  
        mySerial.print("2");mySerial.println("}");  
        break;
      case '3': 
        tone(pinTone,tones[2]);mySerial.print("E");mySerial.print(",id_note:");  
        mySerial.print("3");mySerial.println("}");  
        break;
      case 'A': 
        tone(pinTone,tones[3]);mySerial.print("F");mySerial.print(",id_note:");  
        mySerial.print("4");mySerial.println("}");  
        break;
      case '4': 
        tone(pinTone,tones[4]);mySerial.print("G");mySerial.print(",id_note:");  
        mySerial.print("5");mySerial.println("}");  
        break;
      case '5': 
        tone(pinTone,tones[5]);mySerial.print("A");mySerial.print(",id_note:");  
        mySerial.print("6");mySerial.println("}");  
        break;
      case '6': 
        tone(pinTone,tones[6]);mySerial.print("B");mySerial.print(",id_note:"); 
        mySerial.print("7");mySerial.println("}");  
        break;
      case 'B': 
        noTone(pinTone);mySerial.print("S");mySerial.print(",id_note:");  
        mySerial.print("8");mySerial.println("}");  
        break;
      case '7': 
        tone(pinTone,tones[7]);mySerial.print("c");mySerial.print(",id_note:"); 
        mySerial.print("9");mySerial.println("}");  
        break;
      case '8': 
        tone(pinTone,tones[8]);mySerial.print("d");mySerial.print(",id_note:");
        mySerial.print("10");mySerial.println("}");  
        break;
      case '9': 
        tone(pinTone,tones[9]);mySerial.print("e");mySerial.print(",id_note:");
        mySerial.print("11");mySerial.println("}");  
        break;
      case 'C': 
        tone(pinTone,tones[10]);mySerial.print("f");mySerial.print(",id_note:");  
        mySerial.print("12");mySerial.println("}");  
        break;
      case '*': 
        tone(pinTone,tones[11]);mySerial.print("g");mySerial.print(",id_note:");
        mySerial.print("13");mySerial.println("}");  
        break;
      case '0': 
        tone(pinTone,tones[12]);mySerial.print("a");mySerial.print(",id_note:");
        mySerial.print("14");mySerial.println("}");  
        break;
      case '#': 
        tone(pinTone,tones[13]);mySerial.print("b");mySerial.print(",id_note:");
        mySerial.print("15");mySerial.println("}");  
        break;
      case 'D': 
        noTone(pinTone);mySerial.print("S");mySerial.print(",id_note:");
        mySerial.print("8");mySerial.println("}");  
        break;
      default: 
        noTone(pinTone);mySerial.print("S");mySerial.print(",id_note:");
        mySerial.print("8");mySerial.println("}");  
        break;
      }
    }
  } 

Скрипт на Python пишется в сервисе Wyliodrin (My Applications) 

и из приложения загружается на выполнения на плату Raspberry Pi

При нажатии клавиш воспроизводятся ноты и в сервис Wyliodrin отправляются сообщения в формате JSON.

Вторая часть проекта - Получение сообщений платой Intel Galileo через сервис Wyliodrin

Вторая часть проекта - получение платой Intel Galileo приходящих сообщений из сервиса Wyliodrin сообщений из, обработка сообщений, вывод звука приходящей ноты, и вывод цвета ноты на RGB-ленту.

Схема подключения элементов к плате Intel Galileo.

Код приложения для Intel Galileo пишем в визуальном редакторе Wyliodrin

Запускаем приложение на плату Intel Galileo, смотрим в мониторе вывод отладочных сообщений, а на плате происходит вывод звука и цвета для приходящих нот

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Arduino UNO Плата Arduino
Arduino Uno
1 Поиск в LCSCВ блокнот
Galileo Плата Intel Galileo1 Поиск в LCSCВ блокнот
Raspberry Pi МикрокомпьютерRaspberry Pi1 Поиск в LCSCВ блокнот
Converter Преобразователь уровня сигнала1 Поиск в LCSCВ блокнот
T1 Биполярный транзистор
КТ503Е
2 Поиск в LCSCВ блокнот
T2-T4 Биполярный транзистор
TIP120
3 Поиск в LCSCВ блокнот
R1, R5 Резистор
510 Ом
2 Поиск в LCSCВ блокнот
R2-R4 Резистор
200 Ом
3 Поиск в LCSCВ блокнот
SP Динамик8 Ом 1 Вт2 Поиск в LCSCВ блокнот
Клавиатураматричная 4x41 Поиск в LCSCВ блокнот
RGB-tape RGB лента1 Поиск в LCSCВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

-1

[Автор]
victoruni #
Проект выиграл приз — купон на 100$ в Amazon.com за 2 место в конкурсе
Отредактирован 31.12.2014 08:29
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
200 Вт усилитель класса D на IRS2092 Мультиметр Mastech MS8239C
вверх