Общие сведения
В этом уроке мы создадим метео станцию с построением онлайн графиков при помощи бесплатного IoT сервиса ioControl.
Видео
Нам понадобится
- Piranha ULTRA
- Trema модуль - Датчик освещенности, люксметр, I2C-flash
- Trema модуль - Датчик температуры и влажности,I2C-flash
- Trema модуль - Барометр BMP280
- Ethernet Shield W5500
- Battery Shield
- Trema Shield
- I2C-hub
Создание и настройка панели на iocontrol.ru
- Создаём или входим в учётную запись на сайте iocontrol
- нажимаем "Создать панель". Придумываем название панели, например "myNewPanel" (название панели должно быть уникальным на сайте. Если панель с таким именем уже есть, сайт уведомит об этом). Нажимаем Создать.
- Создаём переменные myTem, myHum, myPres и указываем при создании тип с плавающей точкой. Создаём переменную целочисленного типа myLum.
- Для красоты можно настроить подписи переменных, для этого необходимо нажать на пиктограмму шестерёнки в карточке переменной и выбрать подпись из шаблонов или ввести её вручную.
Подключение
Устанавливаем модуль Ethernet Shield W5500 на Piranha ULTRA
Устанавливаем Battery Shield
Устанавливаем сверху Trema Shield
Подключаем модули к I2C-hub, а I2C-hub к Trema Shield'у.
Скетч проекта
Для скетча мы воспользуемся генератором скетча для IDE на сайте ioControl.
Выберем необходимые параметры. В нашем случае это:
Параметр | Значение |
---|---|
Контроллер | Arduino/Piranha ULTRA |
Shield | Ethernet Shield w5500 |
Вывод SS | D10 |
IP адрес | DHCP |
Mac адрес | 0xCC |
Панель | панель с нашей переменной |
Переменные на чтение | - |
Переменные на запись | myHum, myTem, myLum, myPres |
После генерации нам остаётся добавить в скетч код для наших модулей
Так же необходимо установить библиотеки iarduino_I2C_SHT, iarduino_I2C_DSL, iaruidno_Pressure_BMP и iocontrol. Если Вы не знаете как устанавливать библиотеки в Arduino IDE - Вы можете узнать по этой ссылке
#include <iocontrol.h> #include <SPI.h> #include <Ethernet.h> // Следующие семь строк мы добавили вручную #include <Wire.h> #include <iarduino_Pressure_BMP.h> #include <iarduino_I2C_SHT.h> #include <iarduino_I2C_DSL.h> iarduino_I2C_SHT sht; iarduino_I2C_DSL dsl; iarduino_Pressure_BMP bmp; // Название панели на сайте iocontrol.ru const char* myPanelName = "сюда_необходимо_вставить_название_Вашей_панели"; int status; // Название переменных как на сайте iocontrol.ru const char* VarName_myTem = "myTem"; const char* VarName_myHum = "myHum"; const char* VarName_myPres = "myPres"; const char* VarName_myLum = "myLum"; // Создаём объект клиента класса EthernetClient EthernetClient client; // Создаём объект iocontrol, передавая в конструктор название панели и клиента iocontrol mypanel(myPanelName, client); // MAC адреса Ethernet шилда. Должен быть уникальным в сети byte mac[] = { 0xDE, 0xED, 0xDE, 0xAD, 0xFA, 0xCC }; void setup() { Serial.begin(9600); Ethernet.init(10); // Инициируем Ethernet Shield с использованием DHCP Ethernet.begin(mac); // Строки инициализации датчиков, добавлены вручную bmp.begin(); dsl.begin(); sht.begin(); // Вызываем функцию первого запроса к сервису status = mypanel.begin(); Serial.println((String)"Status mypanel.begin = "+status); } void loop() { // ************************ ЧТЕНИЕ ************************ // Чтение значений переменных из сервиса status = mypanel.readUpdate(); // Если статус равен константе OK... if (status == OK) { // Выводим текст в последовательный порт Serial.println("------- Read OK -------"); // Записываем считанный из сервиса значения в переменные } // ************************ ЗАПИСЬ ************************ // Читаем показания датчиков, строки добавлены вручную bmp.read(); float ioPres = bmp.pressure; float ioHum = sht.getHum(); float ioTem = sht.getTem(); uint16_t ioLum = dsl.getLux(); // Записываем значение в переменную для отправки в сервис // переменные io* добавлены вручную mypanel.write(VarName_myLum, ioLum); mypanel.write(VarName_myTem, ioTem); mypanel.write(VarName_myHum, ioHum); mypanel.write(VarName_myPres, ioPres); // Отправляем переменные из контроллера в сервис status = mypanel.writeUpdate(); // Если статус равен константе OK... if (status == OK) { // Выводим текст в последовательный порт Serial.println("------- Write OK -------"); } }
Ссылки
- Wiki - Установка библиотек в Arduino IDE.
- Расширенные возможности библиотек iarduino для шины I2C.
- Ethernet Shield W5500
- Бесплатный сервис ioControl
- Создание учётной записи в сервисе ioControl
- Создание панели в ioControl
- Создание переменных в ioControl
- Подготовка Arduino к работе с ioControl
- Wiki - Датчик освещенности, люксметр, I2C (Trema-модуль)
- Wiki - Датчик температуры и влажности, I2C (Trema-модуль)
- Wiki - Датчик давления (Trema-модуль)
- Библиотека iaruidno_I2C_DSL
- Библиотека iaruidno_I2C_SHT
- Библиотека iaruidno_Pressure_BMP
- Библиотека iocontrol
Обсуждение