IoT Prime — Эксперимент 01: Знакомство с набором
Введение
Набор IoT PRIME Bundle состоит из трёх основных плат и ряда компонентов. В него входят Arduino MKR1010, MKR ENV Shield и MKR Relay Proto Shield. Каждая из этих плат выполняет свою функцию, которая поможет вам шаг за шагом построить полностью работающую — хотя и минимальную по функциональности — метеостанцию. В этом эксперименте вы подключите различные платы и будете считывать данные о температуре, которые будут отправляться обратно на компьютер через монитор последовательного порта.
Цели обучения
Цели этого упражнения:
Понимание того, как различные электронные компоненты могут подключаться друг к другу
Изучение установки программного обеспечения и библиотек, которые можно использовать для сбора данных
Сбор данных с датчика с использованием существующей библиотеки
Отправка данных с платы на компьютер через последовательную связь
Изучение датчиков температуры
Сложность упражнения
Для выполнения этого упражнения необходимы предварительные знания в:
Базовых конструкциях программирования
Структуре кода Arduino: setup + loop (подробнее об этом здесь)
Используемые компоненты
MKR1010
Arduino MKR1010 (читается «мэйкер тен тен») — это плата микроконтроллера с чипом, который позволяет устанавливать беспроводное соединение WiFi или Bluetooth с другими платами или компьютерами. Мы увидим некоторые из этих возможностей в действии в этой серии упражнений.
Начало работы с платой
Вы можете узнать, как подключить эту плату к компьютеру, ознакомившись с Руководством по началу работы. Вы можете использовать это руководство для установки офлайн-версии Arduino IDE, которая будет работать на вашем компьютере, и для того, чтобы научиться устранять возможные проблемы при написании первых программ. Вы также можете начать использовать онлайн-версию редактора кода Arduino, которую найдёте по адресу: https://create.arduino.cc. Обратите внимание, что для использования онлайн-редактора необходимо стать зарегистрированным пользователем Arduino.
MKR ENV Shield
Shield (плата расширения) — это плата, которую вы добавляете к плате микроконтроллера Arduino для расширения функциональности. ENV Shield оснащён следующими датчиками:
Температура
Влажность
Атмосферное давление
Освещённость (Lux)
УФ-излучение A и B
Различные датчики взаимодействуют с MKR1010 по протоколам SPI или I2C — стандартным механизмам связи внутри электронных плат.
ENV Shield оснащён слотом для карты microSD. Он может использоваться для локального хранения данных, собранных датчиками. Это может быть полезно при проектировании систем, которые могут быть не подключены к сети, или когда сбор данных происходит с такой скоростью, что невозможно передать все данные по сети из-за ограничений пропускной способности.
Библиотека ENV Shield
Эти новые возможности поставляются с соответствующим программным обеспечением, которое необходимо установить. Программное обеспечение, позволяющее использовать определённый shield, мы называем библиотекой. Следуйте этому пошаговому руководству по установке любой библиотеки, выберите нужную библиотеку ENV Shield, введя её название в поле поиска — это даст вам доступ к различным датчикам на плате расширения.
MKR Relay Proto Shield
MKR Relay Proto Shield — это плата, предоставляющая вашей плате MKR1010 два реле — электромеханических переключателя, которые можно использовать для управления любыми электрическими устройствами, активируемыми переключателем вкл/выкл: лампами, вентиляторами, водяными насосами, электродвигателями, обогревателями и т. д. Активация реле так же проста, как активация одного из управляющих пинов — это позволит электричеству протекать.
Плата имеет область прототипирования, которую можно использовать для пайки собственных компонентов и, таким образом, создания более окончательной установки. Это то, что мы не будем рассматривать в данном курсе, но вы должны знать о такой возможности.
Сборка плат
Мы рекомендуем собрать три платы вместе уже сейчас и оставить их в таком виде на протяжении всего курса. Конфигурация сборки проста в монтаже и обеспечивает надёжное крепление компонентов.
Рисунок 1: MKR1010 + ENV и Relay Shields
Собираемые данные
В этом упражнении мы будем работать с одним единственным датчиком. Мы сосредоточимся на работе с датчиком температуры на ENV Shield, так как на него легко воздействовать и наблюдать, как изменения температуры регистрируются и отображаются на компьютере.
Рисунок 2: ENV Shield с выделенным датчиком температуры
ENV Shield имеет датчик температуры и влажности HTS221. Это датчик, произведённый компанией ST microelectronics. Вы можете посмотреть его даташит здесь. Библиотека предоставляет доступ к датчику через метод readTemperature(). Вы можете вызывать этот метод через объект ENV, который создаётся и предоставляется при подключении библиотеки. Другими словами, все датчики на плате расширения доступны через вызов ENV.readSensor(), где readSensor должен соответствовать конкретному проверяемому датчику. В нашем случае это температура, поэтому метод называется readTemperature().
В конкретном случае вызова readTemperature() его можно вызывать с параметрами или без них. По умолчанию (без параметров) он будет возвращать температуру в градусах Цельсия. Его можно вызвать тремя способами:
ENV.readTemperature()— режим по умолчанию, возвращает температуру в градусах ЦельсияENV.readTemperature(CELSIUS)— с использованием константы CELSIUS, считывает температуру в градусах ЦельсияENV.readTemperature(FAHRENHEIT)— с использованием константы FAHRENHEIT, считывает температуру в градусах Фаренгейта
Диапазон и точность датчика делают его подходящим для множества интересных экспериментальных установок. Диапазон температур составляет от -40 до +120 (°C), а точность — ±0,5 °C в диапазоне от 15 до +40 °C.
Как потребляются данные
В этом эксперименте мы будем собирать данные о температуре с датчика и отправлять их через последовательный порт в редактор кода, который отобразит результат. Мы также увидим, как экспериментально изменить код для отображения температуры в различных шкалах.
Мы будем использовать терминал последовательного порта (сокращённо терминал) — диалоговое окно, которое отображает данные, передаваемые между вашей платой и компьютером через USB-кабель программирования. Терминал позволяет получать не только числовые значения, но и текст, который сделает показания более понятными. В офлайн-редакторе последовательный терминал активируется нажатием на значок лупы в крайней правой части панели инструментов.
Рисунок 3: Терминал последовательного порта для офлайн IDE
Онлайн-редактор имеет терминал, встроенный в интерфейс, как показано на следующем изображении.
Рисунок 4: Последовательный терминал для онлайн IDE
Схема
В этом проекте схема предельно проста — поскольку датчик, который мы собираемся использовать, является частью ENV Shield, нет необходимости использовать макетную плату.
Рисунок 5: Fritzing-модель схемы
Фотография конструкции
Рисунок 6: MKR1010 и shield соединены вместе
Пошаговое написание кода
Перед началом программирования, после подключения платы к компьютеру, убедитесь, что вы выбрали правильную плату и порт связи в меню Tools офлайн IDE (или в выпадающем списке онлайн-версии). Вам не нужно будет отключать плату в процессе, который следует далее.
Начальный код
Начните с создания новой программы и дайте ей хорошее имя. Например: 00_simple_temp_reader_v0001. Это имя отражает то, что это первая программа курса (00), её название (simple_temp_reader) и номер версии. Вы можете разработать собственную технику именования файлов, но пока давайте следовать показанной здесь.
/*
00 Simple Temp Reader v0001
Read information from the temperature sensor on the MKR ENV Shield
and send it back to the computer via the USB Cable
(c) 2019 D. Cuartielles for Arduino
This code is Free Software licensed under GPLv3
*/
#include <Arduino_MKRENV.h>
float temperature = 0;
void setup() {
Serial.begin(9600);
while (!Serial);
if (!ENV.begin()) {
Serial.println("Failed to initialize MKR ENV shield!");
while (1);
}
}
void loop() {
// read the sensor value
temperature = ENV.readTemperature();
// print each of the sensor values
Serial.print("Temperature = ");
Serial.print(temperature);
Serial.println(" °C");
// wait 1 second to print again
delay(1000);
}
Рисунок 7: листинг кода для примера
Этот первый пример демонстрирует использование библиотеки ENV Shield через вызов:
#include <Arduino_MKRENV.h>
Использование последовательного порта
Вы можете увидеть, как последовательный порт инициализируется на плате вызовом Serial.begin(9600), одновременно следующая строка while (!Serial) указывает программе не продолжать, пока терминал не будет открыт на компьютере.
Вызов ENV.begin() одновременно инициализирует датчики на плате и проверяет, что shield подключён к плате MKR1010 и датчики работают правильно. Вы можете проверить, что произойдёт, если вызвать программу без shield, чтобы протестировать реакцию на ошибку.
Получение данных датчика
Показания всех датчиков имеют тип float, поэтому переменная temperature объявлена этого типа: float temperature = 0.
При вызове temperature = ENV.readTemperature() программа запрашивает информацию о температуре в градусах Цельсия с платы расширения и сохраняет её в переменной temperature. Затем вы можете использовать значение из переменной в своей программе как угодно — мы просто выведем значение в терминал с помощью Serial.print(temperature). Обратите внимание, как мы печатаем текст до и после значения, чтобы обеспечить контекст при просмотре данных в терминале. Если вы работаете только с одним датчиком, это может быть не так актуально, но как только вы начнёте использовать все датчики на shield, добавление контекста приобретёт гораздо больший смысл.
Отображение данных
Если вы считываете температуру в помещении, не позволяя прямому солнечному свету воздействовать на датчик, значения, скорее всего, будут в диапазоне от 20 до 30 градусов. Это зависит от времени года, вашего местоположения и типа системы климат-контроля. В нашем случае вы можете увидеть показания температуры внутри нашей лаборатории в Швеции летом, где нам приходится использовать вентиляторы для поддержания температуры на приемлемом уровне.
Рисунок 8: Терминал отображает данные
Задание
Теперь, когда у вас есть информация о температуре, вы можете реализовать собственный дисплей для неё с использованием светодиодов. Поскольку у вас есть красный, жёлтый, зелёный и синий светодиоды, используйте их для реализации визуального отображения температуры, где они обозначают температуру по цветовому коду:
Красный: некомфортно жарко, выше 35 градусов
Жёлтый: тепло, между 25 и 35 градусами
Зелёный: комфортно, между 18 и 25 градусами
Синий: холодно, менее 18 градусов
Аппаратный вид этого проекта может выглядеть следующим образом:
Рисунок 9: Fritzing-иллюстрация этой схемы
Подведение итогов
В этом уроке вы познакомились с компонентами официального набора Arduino IoT Prime Bundle. Этот набор включает компоненты, которые можно использовать для создания подключённых устройств, таких как метеостанции или электронные системы управления, и для построения любого вида автоматизации в вашей работе или в качестве хобби-проекта.
Вы увидели, как установить программное обеспечение, необходимое для программирования вашей платы, какие три основные части набора существуют: MKR1010, MKR ENV Shield и MKR Relay Shield, и как сделать простой пример, в котором вы считали температуру и отобразили её через последовательный порт.
Мы дали вам задание по созданию визуальной индикации для вашей платы и предложили возможное решение. В следующей главе мы увидим, как считывать ещё больше информации с ENV Shield и как отображать и экспортировать её в файлы для дальнейшего использования в других программах.