Универсальный шилд (для обучения)


Немного лирического вступления.
После моего увлечения Arduino , я, естественно, пытался подсадить заинтересовать этим делом многих своих знакомых. И одной из жертв моих попыток стал паренек лет 12. Очень страстно увлекался компьютерами. Ну как компьютерами, в основном игры и соц. сети. Даже так, ТОЛЬКО ИГРЫ и иногда соц. сети 🙂 Дай думаю, сделаю доброе дело, пускай займется чем-то полезным, пробует, творит, программирует и т.д. Я подарил ему плату Arduino (один из китайских клонов) и небольшую макетную плату с кучкой соединительных проводков. Несколько вечеров потратил на «вводную часть», распечатал для него какую-то книгу с примерами (что-то типа, «Ардуино для маленьких волшебников»), собрал небольшой Starter Kit (резисторы, светодиоды, пищалки…). Ну и вперед! Что-то у него получалось, что-то не очень. Причем иногда из-за проблем с соединениями на макетке, будь оно не ладно. И мне пришла мысль, что для таких целей было бы удобно иметь некий простенький шилд с необходимыми кусками схем из примеров. Помимо обучения, такой шилдик можно использовать для быстрой отладки какой-нибудь идеи… Как говориться: «Мужик сказал-мужик сделал!». Изготовление такого «Shield для обучения» у меня заняло один выходной. Готовое устройство было торжественно вручено юному «программисту»!
А у меня осталось несколько фоток процесса сборки и печатная плата в SprintLayout. И вот, наконец-то, поборов природную лень, я решил собрал все, что касалось этого шилда в некий законченный вид. (Нарисовать, в конце концов, схему хотя бы :)).

Вот схема (или даже набор схем) данного шилда:

Фактически, данный шилд — это набор полезных для обучения модулей, которые с помощью перемычек, подключаются к соответствующим пинам:
Сдвиговый регистр 74НС595 с набором светодиодов
— Микрофонный усилитель на LM386
— терморезистор с обвязкой
фоторезистор с обвязкой
— RGB светодиод
— обычный 5мм светодиод
— небольшой KeyPAD
Буззер

И все это богатство на одной маленькой плате 🙂 Ну разве не клево?

Печатная плата вышла такая (не критикуйте сильно, это период моего освоения SprintLayout…):

Каждый узел отключается соответствующей перемычкой. Дефицитных деталей нету. Единственное, что я купил — это RGB-светодиод, фоторезистор и SMD резисторы. Буззер и терморезистор были «извлечены» из старой материнской платы. Ниже подготовка к запайке и сбор деталек:

Про ЛУТ и пайку писать особо нечего. Получившейся результат в разных ракурсах:

еще:

еще:

Немного поясняющих надписей:

Красным цветом я обозначил назначение перемычек. Поясню. Допустим для некого проекта нам нужны кнопки и RGB светодиод. Значит оставляем перемычки на выводах [Key En] и [RGB En], остальные можно снять…Ну и так далее. В правом верхнем углу нашлось место для выводов сигналов TX,RX,GND,+5В, это для возможного подключения всяких радио/блютуз и т.п. модулей. Чтобы не забыть, что куда подключается, я приклеил в левом нижнем углу платы небольшую бумажную памятку 🙂

Из примеров работы, я сумел отыскать у себя только вот такой скетч (я только немного дописал комментарии):
(Напомню, что для работы этого примера перемычки должны стоять на [74HC595 En], [Led En], [Mic En]).

/**
Demo для универсального шилда
сигнал с микрофона выводиться на линейку светодиодов

 **/
 //хардварное подключение узлов
const byte MicPin=3; //
const byte TermoPin=2; //
const byte PhotoPin=1;
const byte ledPin=11;
//это подключение 74HC595
byte latchPin = 9;
byte clockPin = 8;
byte dataPin = 10;

int result=0;

void setup() {
  Serial.begin(9600); //осталось от отладки
  pinMode(ledPin,OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(A0, INPUT);
}

void loop() {


 digitalWrite (ledPin,LOW);
 result = mic_level(MicPin);//сигнал будем брать с микрофона
// result=Photo_level(PhotoPin)-80; //сигнал будем брать с фоторезистора
//  result = (1023-Termo_level(TermoPin)); //сигнал будем брать с терморезистора
  if (result>750) digitalWrite(ledPin,HIGH); //Отображение пикового сигнала, а-ля перегруз
  result = map(result, 0, 1023, 1, 256); //пересчет результата

Show (result,0); //вывод результата
//  delay(200);

}


//процедура вывода результата на линейку светодиодов
//второй параметр определяет как выводить результат
// 1- в линейном виде
// 0- в двоичном коде
void Show (int result, boolean lin){
  if (lin){
    result=(result>>5);
 // result=result/32;
  result=255>>(8-result);
  }
  Serial.println(result);
  digitalWrite(latchPin, LOW);
  shiftOut (dataPin, clockPin, MSBFIRST, result);
  digitalWrite(latchPin, HIGH);

}


// Читаем данные с фоторезистора
int Photo_level(int PhotoPin){
  int val = analogRead(PhotoPin);
  return val;
}

// Читаем данные с терморезистора
int Termo_level(int TermoPin){
  int val = analogRead(PhotoPin);
  return val;
}

// Читаем данные с микрофона и считаем макс. амплитуду
int mic_level(int MicPin){
  int mn = 1024;     // mn only decreases
  int mx = 0;        // mx only increases
  for (int i = 0; i < 200; ++i) {
    int val = analogRead(MicPin);
    mn = min(mn, val);
    mx = max(mx, val);
     }
   return (mx-mn);
}

Вот такая загогулина. Весь материал забираем одним архивом тут!


0 комментариев на «“Универсальный шилд (для обучения)”»

  1. Отличная идея! Делай в домашних масштабах и продавай недорого — спрос будет.

    единственно я бы сделал более модульно, но тогда получается уже прото шилд.

  2. Отличный шилд. только есть небольшой вопрос по обозначению на схеме. подключение светодиодов, на схеме не указано, где анод и катод. если можно, то объясните. спасибо

    • Ну, сорри. Не акцентировал на это внимание.
      У светодиода длинный вывод — анод — сюда надо подавать плюсик (лог. единицу, HIGH) — Т.е., паять к резисторам.
      А катод (короткая ножка) — на землю GND (катоды в схеме объеденены на землю).
      Вот, почитай robocraft.ru/blog/arduino/1010.html.
      P.S., если сделаешь пришли фото (очень любопытно)!!!

    • Я ставил терморезистор, который был выпаян из старой мат. платы (стояла такая капелька под процессором, вот примерно такой http://www.overclockers.ru/images/lab/2007/09/26/39b_sil35_DCE.jpg). На плате было маркировка, что это терморезистор. Померял тестером — 10 кОм. Нагрел, сопротивление изменилось, остыл — вернулось. Значит — то, что мне нужно. Еще встречал такие в БП.
      А тот вариант, что вы насмотрели, наверное тоже можно использовать, но скорее всего последовательно с ним нужной поставить резистор 🙂

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение