Как Arduino подключить к компьютеру и вывести график температуры.

Для реализации своих задумок, мне нужно с компьютера управлять Arduino. Поэтому стал изучать программы, которые помогут реализовать обмен данных между ПК и Arduino. Сперва начал с самой распространённой программы для данных целей Processing. Сделал программу, которая позволяет управлять реле. Но когда я приступил к реализации более сложных проектов, столкнулся с проблемой возможности реализации на Processing задуманных функций. Поэтому я стал думать какой язык и IDE будем оптимальным для быстрого освоения и реализации связи Arduino с компьютером. После некоторого времени поисков и тестирования остановился на Visual Studio и языке программирования C#. Первый проект, который я реализовала это подключение Arduino к компьютеру и передача данных с датчика температуры DS18B20.

Visual Studio приложение Windows Forms для получения данных от Arduino.

Первое приложение Visual Studio буду делать Windows Forms C#. Для этого нужно создать новый проект и выбрать язык программирования C#. И соответственно Windows Forms.

Первое приложение Visual Studio буду делать Windows Forms C#.

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

Также вы можете скачать исходные материалы проекта и приложение в формате .exe внизу статьи в разделе «Файлы для скачивания».

Описание приложения построения графиков по данным с датчика температуры.

Описание приложения построения графиков по данным с датчика температуры.

Для получения данных с датчика температуры достаточно запустить приложения, для этого откроем файл «Monitor temperature.exe».

 файл «Monitor temperature.exe».

При загрузке мы сразу получаем список всех доступных com-портов.

список всех доступных com-портов.

За это отвечает вот этот кусок кода.

За это отвечает вот этот кусок кода.

Если вы подключили Arduino поле запуска программы и не видите нужный порт для подключения, список портов можно обновить с помощью кнопки «Обновить список портов».

обновить с помощью кнопки «Обновить список портов».

После выбора нужного порта нажимаем кнопку «Подключиться». При подключении увидим, как мигнут светодиоды на плате Arduino. Это означает, что подключение прошло успешно.

После выбора нужного порта нажимаем кнопку «Подключиться». При подключении увидим, как мигнут светодиоды на плате Arduino.

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

Например, код подключения будет следующим.

Для работы с монитором порта добавим невидимый компонент в проект и назовем его «mySerialPort».

Для работы с монитором порта добавим невидимый компонент в проект и назовем его «mySerialPort».

Для получения данных от Arduino добавим функцию «mySerialPort_DataReceived».

Для получения данных от Arduino добавим функцию «mySerialPort_DataReceived».

В данной функции реализуем считывание полученных данных из порта и выведем температуру в текстовое поле.

https://skr.sh/sAGPbuZcf8P

А также вывод значений полученных с датчика на график.

А также вывод значений полученных с датчика на график.

Чтобы график был читабельным при получении данных длительное время, сделаем ограничение выводимых значений на график. Для этого создадим еще один выводящий список «comboBox» и пропишем необходимые значения для выбора.

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

В коде ограничим диапазон в зависимости от выбора «Диапазона времени».

 В коде ограничим диапазон в зависимости от выбора «Диапазона времени».

Также сделал вывод текущего времени и даты.

Также сделал вывод текущего времени и даты.

Но это просто как дополнительный параметр, который можно и не выводить в данном проекте.

Кроме этого настроим приложение. Отключил кнопку развернуть на весь экран, и ограничим минимальный и максимальный размер окна.

Кроме этого настроим приложение. Отключил кнопку развернуть на весь экран, и ограничим минимальный и максимальный размер окна. Сейчас окно открывается одного размера, и изменить его нельзя.

Пример изменения диапазона времени на графике.

Давайте подробнее рассмотрим, что такое диапазон времени и как его менять в приложении.

Пример изменения диапазона времени на графике.

На график значение температуры выводиться по умолчанию 30 секунд. Данное значение мы можем изменить на 60, 90 120 сек. Данные диапазоны задаются в программе и их можно изменить и дополнить.

На график значение температуры выводиться по умолчанию 30 секунд. Данное значение мы можем изменить на 60, 90 120 сек.

Изменяя данное значение, например, на 120 сек. На графике будем видеть изменение температуры, уже не 30 сек, а минимум 120 сек. Почему минимум? Это связанно с тем, что сдвиг графика происходит при достижении числа кратного значению 10. И диапазон выводимых значений будет на 9 секунд больше до момента сдвига.

Скетч для Arduino отправки значений температуры в монитор порта.

Измерять температуру будем датчиком DS18B20 выполненного в виде модуля KY-001. По работе с данным модулем у меня есть отдельный урок. Скетч возьмем из урока и немного подправим для нашего проекта.

#include <OneWire.h>
#include <DallasTemperature.h>
// контакт 2 на Arduino:
#define ONE_WIRE_BUS 2
// создаем экземпляр класса OneWire, чтобы с его помощью
// общаться с однопроводным устройством
OneWire oneWire(ONE_WIRE_BUS);
// передаем объект oneWire объекту sensors:
DallasTemperature sensors(&oneWire);
void setup(void)
{
  Serial.begin(9600);
  // запускаем библиотеку:
  sensors.begin();
}
void loop(void) {
  // вызываем функцию sensors.requestTemperatures(),
  // которая приказывает всем устройствам, подключенным к шине
  sensors.requestTemperatures();
  static uint32_t tmr2;
  if (millis() - tmr2 > 1000) {
    tmr2 = millis();
    Serial.println(sensors.getTempCByIndex(0)); //  в Цельсиях:
  }
}

Схема подключения модуля KY-001 (DS18B20) к Arduino.

Схема подключения модуля KY-001 (DS18B20) к Arduino.

В связи с тем, что будим использовать модуль KY-001 (DS18B20) подключение к Arduino будет достаточно простым и понадобиться всего 3 соединительных провода.

Подведем итог.

Как видим сделать в Visual Studio приложение Windows Forms достаточно просто. А при сочетании с C# возможности взаимодействия Arduino с компьютером становятся достаточно большими. Можно реализовать не только получение данных с Arduino, но и реализовать управление, получая данные с ПК, Интернета и т.д.

Если вам интересны уроки по данной теме, пишите в комментарии. При заинтересованности сделаю блок уроков Visual Studio Arduino.

Понравился проект Пульт для презентаций своими руками на Arduino? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скачать приложение Monitor temperature Скачать приложение Monitor temperature.zip9 Kb 1078 Скачать
Скетч для Arduino отправки значений температуры в монитор порта Скетч для Arduino отправки значений температуры в монитор порта.ino1 Kb 1026 Скачать
Visual Studio приложение Windows Forms для получения данных от Arduino Visual Studio приложение Windows Forms для получения данных от Arduino.zip82 Kb 1136 Скачать

Комментарии

Ваше Имя*

Remz

Гость: Remz (10 марта, 2023 в 12:53)

Win 10 приложение запускается, но при при подключении к com порту вылетает, тайм оут по времени открытие порта, при этом монитор порта подключается и получает данные (естественно проги работают не одновременно, на том же самом порте)


Разработка проектов