Оглавление:

Регистратор данных Arduino: 8 шагов (с изображениями)
Регистратор данных Arduino: 8 шагов (с изображениями)

Видео: Регистратор данных Arduino: 8 шагов (с изображениями)

Видео: Регистратор данных Arduino: 8 шагов (с изображениями)
Видео: как передать температуру на сервер по WIFI и сохранить температуру в базе данных. 2024, Ноябрь
Anonim
Регистратор данных Arduino
Регистратор данных Arduino
Регистратор данных Arduino
Регистратор данных Arduino

В этом руководстве мы собираемся создать простой регистратор данных с использованием Arduino. Дело в том, чтобы изучить самые основы использования Arduino для сбора информации и вывода на терминал. Мы можем использовать эту базовую настройку для выполнения ряда задач.

Для начала:

Вам понадобится учетная запись Tinkercad (www.tinkercad.com). Зайдите и зарегистрируйтесь с помощью своей электронной почты или учетной записи в социальной сети.

После входа вы попадете на панель инструментов Tinkercad. Щелкните «Схемы» слева и выберите «Создать новую схему». Давайте начнем!

Вы можете найти полный файл на TInkercad Circuits - Спасибо, что посмотрели его!

Шаг 1. Добавьте компоненты

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

Вам понадобятся некоторые базовые компоненты. Это включает:

  • Плата Arduino
  • Макетная плата

Добавьте их, выполнив поиск и перетащив их в среднюю область.

Поместите макетную плату над Arduino. Это упрощает просмотр подключений позже.

Шаг 2. Примечание о макетных платах

Замечание о макетных платах
Замечание о макетных платах

Макетная плата - очень полезное устройство для быстрого прототипирования. Мы используем его для соединения компонентов. Несколько замечаний.

  1. Точки соединены вертикально, но линия в середине отделяет это соединение от верхнего и нижнего столбцов.
  2. Столбцы не соединяются слева направо, как в строке. Это означает, что все компоненты должны быть соединены поперек колонн, а не вертикально вниз по ним.
  3. Если вам нужно использовать кнопки или переключатели, соедините их через разрыв посередине. Мы вернемся к этому в следующем уроке.

Шаг 3: добавьте два датчика

Добавить два датчика
Добавить два датчика

Мы используем два датчика: светочувствительный датчик и датчик температуры.

Эти датчики оценивают свет и температуру. Мы используем Arduino для чтения значения и отображения его на последовательном мониторе Arduino.

Найдите и добавьте два датчика. Убедитесь, что они расположены поперек столбцов на макетной плате. Оставьте между ними достаточно места, чтобы их было легче увидеть.

Шаг 4: светочувствительный датчик

Фоточувствительный датчик
Фоточувствительный датчик
Фоточувствительный датчик
Фоточувствительный датчик
Фоточувствительный датчик
Фоточувствительный датчик
Фоточувствительный датчик
Фоточувствительный датчик
  1. Для светочувствительного датчика добавьте провод от вывода 5V на Arduino к тому же столбцу, что и правая ножка на макете. Измените цвет провода на красный.
  2. Подключите левую ногу через контакт в том же столбце к контакту A0 (A-ноль) на Arduino. Это аналоговый вывод, который мы будем использовать для считывания значения с датчика. Раскрасьте этот провод в желтый или другой цвет, кроме красного или черного.
  3. Поместите резистор (найдите и перетащите) на плату. Это замыкает цепь и защищает датчик и штифт.

    • Поверните его так, чтобы он пересекал колонны.
    • Подключите одну ногу к правой стойке на макете.
    • Поместите провод от другого конца резистора к земле.

      Измените цвет провода на черный

  4. Дважды проверьте все соединения. Если что-то не в нужном месте, это не будет работать правильно.

Шаг 5: запустите код

Запустить код
Запустить код
Запустить код
Запустить код
Запустить код
Запустить код

Посмотрим на код этого компонента.

Сначала посмотрите на третье изображение на этом этапе. Он содержит код с двумя функциями:

установка void ()

пустой цикл ()

В C ++ все функции предоставляют свой возвращаемый тип, затем имя, а затем две круглые скобки, которые можно использовать для передачи аргументов, обычно в виде переменных. В этом случае тип возвращаемого значения недействителен или ничего. Имя настроено, и функция не принимает аргументов.

Функция настройки запускается один раз при загрузке Arduino (когда вы подключаете его или подключаете батареи).

Функция цикла запускается в постоянном цикле с миллисекунды завершения функции настройки.

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

Задача

Откройте панель «Код» с помощью кнопки в Tinkercad. Измените раскрывающийся список блоков на текст. Согласитесь с появившимся предупреждением. Теперь удалите все, что вы видите, кроме текста на третьем изображении на этом шаге.

Переменные

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

Переменные похожи на корзины, которые могут содержать только один объект (C ++ - это то, что мы называем объектно-ориентированным). Да, у нас есть массивы, но это особые переменные, о которых мы поговорим позже. Когда мы назначаем переменную, нам нужно указать ей, какого она типа, а затем присвоить ей значение. Это выглядит так:

int someVar = A0;

Итак, мы присвоили переменной тип int. Int - это целое или целое число.

«Но вы же не использовали целое число!», - слышите вы. Это правда.

Arduino делает что-то особенное для нас, поэтому мы можем использовать A0 как целое число, потому что в другом файле он определяет A0 как целое число, поэтому мы можем использовать константу A0 для ссылки на это целое число, не зная, что это такое. Если бы мы просто набрали 0, мы бы обратились к цифровому выводу в позиции 0, что не сработало бы.

Итак, для нашего кода мы напишем переменную для подключенного датчика. Хотя я рекомендую дать ему простое имя, решать вам.

Ваш код должен выглядеть так:

int lightSensor = A0;

void setup () {} void loop () {}

Теперь давайте расскажем Arduino, как обращаться с датчиком на этом контакте. Мы запустим функцию внутри настройки, чтобы установить режим вывода и сообщить Arduino, где его искать.

int lightSensor = A0;

void setup () {pinMode (датчик света, ВХОД); } void loop () {}

функция pinMode сообщает Arduino, что вывод (A0) будет использоваться как вывод INPUT. Обратите внимание на camelCaseUsed (каждая первая буква - заглавная, так как в ней есть неровности, отсюда… верблюд…!) Для имен переменных и функций. Это условность, к которой нужно привыкнуть.

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

int lightSensor = A0;

void setup () {pinMode (датчик света, ВХОД); } void loop () {int чтение = analogRead (lightSensor); }

Вы увидите, что мы сохранили показания в переменной. Это важно, так как нам нужно его распечатать. Давайте воспользуемся последовательной библиотекой (библиотека - это код, который мы можем добавить в наш код, чтобы ускорить запись, просто вызвав ее по определению), чтобы распечатать ее на последовательном мониторе.

int lightSensor = A0;

void setup () {// Устанавливаем режимы вывода pinMode (lightSensor, INPUT); // Добавляем последовательную библиотеку Serial.begin (9600); } void loop () {// Считываем показания датчика int read = analogRead (lightSensor); // Выводим значение на монитор Serial.print ("Light:"); Serial.println (чтение); // задерживаем следующий цикл на 3 секунды delay (3000); }

Несколько новинок! Сначала вы увидите это:

// Это комментарий

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

Теперь мы также добавили последовательную библиотеку со строкой

Серийный.начало (9600)

Это пример функции, которая принимает аргумент. Вы вызвали библиотеку Serial, затем запустили функцию (мы знаем, что это функция из-за круглых скобок) и передали целое число в качестве аргумента, установив для функции Serial работу со скоростью 9600 бод. Не беспокойтесь почему - просто знайте, что это работает, пока.

Следующее, что мы сделали, - это распечатали на серийном мониторе. Мы использовали две функции:

// Этот выводится на серийный номер без разрыва строки (ввод в конце)

Serial.print ("Свет:"); // Он вставляет разрыв строки, поэтому каждый раз, когда мы читаем и записываем, он переходит на новую строку Serial.println (чтение);

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

Наконец, мы использовали функцию задержки, чтобы замедлить наш цикл и заставить его считываться только раз в три секунды. Это записывается за тысячи секунд. Измените его на чтение только раз в 5 секунд.

Большой! Мы идем!

Шаг 6: Моделирование

Моделирование
Моделирование
Моделирование
Моделирование
Моделирование
Моделирование

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

Запустите симуляцию и проверьте серийный монитор. Измените значение светового датчика, щелкнув по нему и изменив значение с помощью ползунка. Вы также должны увидеть изменение значения на последовательном мониторе. Если это не так или если при нажатии кнопки «Начать моделирование» возникают ошибки, внимательно вернитесь и проверьте весь свой код.

  • Сосредоточьтесь на строках, указанных в красном окне отладки, которое будет вам представлено.
  • Если ваш код правильный, а симуляция все еще не работает, проверьте проводку.
  • Перезагрузите страницу - у вас может быть несвязанная ошибка системы / сервера.
  • Покачайте кулаком компьютеру и снова проверьте. Все программисты так делают. Все. Файл. Время.

Шаг 7: Подключите датчик температуры

Подключите датчик температуры
Подключите датчик температуры

Я предполагаю, что вы сейчас на правильном пути. Подключите датчик температуры, как показано на рисунке. Обратите внимание на размещение проводов 5V и GND в том же месте, что и провода для света. Хорошо. Это похоже на параллельную схему и не вызовет проблем в симуляторе. В реальной схеме вы должны использовать коммутационную плату или экран, чтобы обеспечить лучшее управление питанием и соединениями.

Теперь давайте обновим код.

Код датчика температуры

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

int lightSensor = A0;

int tempSensor = A1; void setup () {// Устанавливаем режимы вывода pinMode (lightSensor, INPUT); // Добавляем последовательную библиотеку Serial.begin (9600); } void loop () {// Датчик температуры // Создание двух переменных в одной строке - о эффективность! // Переменная с плавающей запятой для хранения десятичного значения напряжения с плавающей запятой в градусах Цельсия; // Считываем значение вывода и преобразуем его в значение от 0 до 5 // Фактически напряжение = (5/1023 = 0,004882814); напряжение = (analogRead (tempSensor) * 0,004882814); // Преобразовать в градусы C градусов C = (напряжение - 0,5) * 100; // Печать на серийный монитор Serial.print ("Temp:"); Серийный отпечаток (градусы С); Serial.println («oC»); // Считываем показания датчика int read = analogRead (lightSensor); // Выводим значение на монитор Serial.print ("Light:"); Serial.println (чтение); // задерживаем следующий цикл на 3 секунды delay (3000); }

Я внес некоторые изменения в код. Давайте рассмотрим их индивидуально.

Сначала я добавил строку

int tempSensor = A1;

Как и в случае с lightSensor, мне нужно сохранить значение в переменной, чтобы потом было проще. Если бы мне пришлось изменить расположение этого датчика (например, перемонтировать плату), мне нужно было бы изменить только одну строку кода, а не искать по всей кодовой базе, чтобы изменить A0 или A1 и т. Д.

Затем мы добавили строку для хранения показаний и температуры в поплавке. Обратите внимание на две переменные в одной строке.

напряжение поплавка, градусы С;

Это действительно полезно, потому что сокращает количество строк, которые мне нужно написать, и ускоряет код. Однако найти ошибки может быть сложнее.

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

напряжение = (analogRead (tempSensor) * 0,004882814);

градусы С = (напряжение - 0,5) * 100;

Эти две строки выглядят сложными, но в первой мы берем показание и умножаем его на 0,004 … потому что оно преобразует 1023 (аналоговое показание возвращает это значение) в показание из 5.

Во второй строке это значение умножается на 100, чтобы переместить десятичную точку. Это дает нам температуру. Аккуратный!

Шаг 8: Тестирование и проверка

Тестирование и проверка
Тестирование и проверка

Все, что нужно спланировать, у вас должна быть рабочая схема. Протестируйте, запустив симуляцию и используя последовательный монитор. Если есть ошибки, проверьте, проверьте еще раз и потрясите кулаком.

Ты сделал это? Поделись и расскажи нам свою историю!

Это последняя схема, встроенная для вас, чтобы вы могли воспроизвести / протестировать окончательное творение. Спасибо за прохождение учебника!

Рекомендуемые: