четверг, 1 ноября 2018 г.

Как проверить схему Arduino, песочница для радиоэлектронщика

Иногда, нужно проверить схему Arduino, но если Вы новичок в радиоэлектронике,  или просто рассеянный человек, то есть вероятность того, что что-нибудь выйдет из строя, или попросту сгорит. Для таких случаев хорошо бы иметь симулятор электронной схемы, проверить цепь, разобраться с тем будет работать ли ваша программа написанная для Arduino с внешними устройствами. Об одном таком онлайн-сервисе я и расскажу.
Называется он Autodesk TinkercadПосле того, как вы зарегистрируетесь на этом портале, вам станет доступен Dashboard с проектами.
Выбираем в левой колонке Circuits, и создадим новый проект - Create New Circuit, перед нами откроется рабочее пространство для создания и тестирования микросхем и радио-элементов:

Эксперимент с резистором:
1. Добавим макетную плату
2. Добавим батарейку в 9 вольт и подсоединим контакты к шине макетной платы, а так же поменяем цвета проводов (черный - минус, красный - плюс).
3. Добавим мультиметр и подключим его контакты к той же шине макетной платы. Из параметров мультиметра выбираем показатель - Вольты. Жмем кнопку "Start Simulation".
В результате должна запуститься симуляция и вольтметр должен показать напряжение в 9 вольт.
4. Изменим показатель мультиметра на амперы, и увидим силу тока в 6 ампер.
5. Значит у нас сопротивление цепи - 1,5 ома (9 делить на 6), ведь мы знаем что: омы = вольты деленные на амперы.

Остановим симуляцию и добавим на макетную плату резистор 1,5 ома и повторно запустим, как мы видим на дисплее мультиметра показатель изменился до 3х ампер, то есть сопротивление цепи увеличилось с одной трети до две третих.
Тестируем код Arduino в электрической цепи:
1. Добавим на макетную плату светодиод, резистор на 220 Ω и плату - Arduino UNO.

2. Щелкним по кнопке "Code", изменим режим составления программы с "Blocks" на " Text".
3. Здесь мы можем увидеть что при добавлении Arduino уже автоматически добавился пример Blink, вида:


void setup(){
  pinMode(13, OUTPUT);
}

void loop(){
  digitalWrite(13, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(13, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
}


Здесь мы видим что сигнал идет через 13 пин. И хотя я в прошлой статье "Программирование Arduino. Пример #1 - Моргание светодиодом" писал о примере Blink, там в качестве выхода был указан LED_BUILTIN, на самом деле разницы меж-ду 13 пином и LED_BUILTIN - светодиодом на плате абсолютно нету, так как они находятся на одной дорожке. Проверить это можно вставив код из предыдущего поста.
4. Запустим симуляцию, и увидим как моргают оба светодиода (первый на макетной плате, второй на Arduino UNO).
5. Если мы добавим на контакты светодиода мультиметр, то увидим падение напряжения от 1.99 вольт
До абсолютного нуля.
В целом, я постарался на 2х простых примерах показать как работает симуляция и электрическая цепь. Ведь, даже если у вас еще нет Arduino, или нет его просто под рукой, Вы все равно сможете эксперементировать и создавать исходный код для Arduino.

Ну и если вы все еще не приобрели себе Arduino, то я рекомендую посмотреть вот этот бренд на Aliexpress. 
Удачи в экспериментах с Arduino!

Программирование Arduino. Пример #3 - Подключаем температурный датчик LM35

На этом примере я покажу, как просто можно подключить сам сенсор LM35, а за тем снять показания окружающей среды с помощью температурного датчика и Arduino, после чего мы с помощью кода передадим данные в монитор порта.
Для этого нам понадобится:

1. Arduino UNO R3.
2. USB-кабель для прошивки.
3. Макетная плата.
4. 3 проводка (Папа-Папа).
5. Датчик температуры LM35.

Все это можно заказать в наборе на Aliexpress здесь, или по отдельности: Arduino и LM35.
К стати, радиоэлементы для Arduino рекомендую брать именно у Keyestudio и Wavgat, так как у этих продавцов наиболее надежный товар.

Что из себя представляет датчик LM35:
Как мы видим на изображении, внешне LM35 похож на PNP или NPN транзистор с 3 ногами.
На первую ногу подается питание - от 4 до 20 вольт, со второй мы снимаем показания температуры, третья нога бросается на землю.
LM35 - аналоговый элемент, по этому подключать среднюю ногу мы будем к аналоговому входу\выходу A0. Питание подаем на сенсор с выхода 5V, землю подключаем к GND.

На схеме я изобразил, как можно подключить на макетной плате.
Теперь приступим к написанию скетча:

int temperatureSensor = A0;              // Температурный датчик
int temperatureSensorValue = 0;          // Начальное значение температурного датчика
int temperatureSensorData = 0;           // Начальное значение данных температурного датчика

void setup() {
  pinMode(temperatureSensor,INPUT);    // Параметр пина температурного датчика

// Устанавливаем параметр передачи данных серийного порта в бодах  
  Serial.begin(9600);                  
}

void loop() {

// Считываем показатели
  temperatureSensorValue = analogRead(temperatureSensor);   

// Показатели преобразуем в градусы Цельсия
  temperatureSensorData = (125*temperatureSensorValue)>>8;  

// Выводим данные в порт
  Serial.print("Температура: ");
  Serial.print(temperatureSensorData);
  Serial.println(" C");
  delay(1000); // Ждать 1 секунду
}

Если подключили все правильно, LM35 должен снять показатели а Arduino преобразовать их в цельсии и вывести в порт монитора.
У меня получилось вот так:

Падение температуры на датчике было проверено кусочком льда на корпусе LM35, после чего значение температуры медленно, но верно поползло вниз.