Оглавление:

Создайте модуль яркости с помощью AtHome: 7 шагов
Создайте модуль яркости с помощью AtHome: 7 шагов

Видео: Создайте модуль яркости с помощью AtHome: 7 шагов

Видео: Создайте модуль яркости с помощью AtHome: 7 шагов
Видео: Cities Skylines 2 #12 Интересные находки, Огромный медицинский комплекс. 2024, Ноябрь
Anonim
Создайте модуль яркости с помощью AtHome
Создайте модуль яркости с помощью AtHome

AtHome - это студенческий проект с полностью открытым исходным кодом и открытым аппаратным обеспечением, созданный группой AtHome из Eitudch, целью которого является разработка подключенного решения из нескольких отдельных сенсорных модулей, взаимодействующих с автономной базой данных, предоставляющей API, используемый для загрузки приложения для смартфона и веб-приложения. Модули контролируют внутреннюю среду дома и могут дать пользователю визуальную обратную связь, переходя от зеленого (хороший) к красному (плохой), а передаваемые данные видны пользователю через последовательную связь модуля или на наши приложения, если вы их используете.

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

Эти модули в основном построены на Arduino-совместимой плате (частичного ядра Arduino должно быть достаточно, если у него есть поток, провод и поддержка потока UART), светодиод (красный или RGB) становится красным в случае проблемы, датчик, блок питания (настенный блок питания или аккумулятор) и корпус, вырезанный лазером.

Да, это определенно не новость, существует множество проектов по датчикам, но мы надеемся, что вам помогут другие функции, такие как обнаружение проблем со здоровьем, передача и хранение информации на собственном сервере и приложении визуализации. Или если вы просто хотите следить за своим домом, несложными проектами или не менее интересными:)

Шаг 1: Сбор компонентов

Сбор компонентов
Сбор компонентов

Для этого проекта вам понадобится несколько компонентов для создания модуля AtHome:

  • 1x Arduino-совместимая плата: здесь я буду использовать Arduino UNO (но она также работает с другими платами, такими как TI Launchpads и ESP8266)
  • 1x датчик: я буду использовать датчик освещенности TSL2561 (список поддерживаемых датчиков доступен в документации нашей библиотеки)
  • 1x светодиод: здесь я буду использовать светодиод Grove Chainable RGB (но это также может быть простой красный светодиод или NeoPixel)
  • Dupont Wires

Список совместимых компонентов доступен в документации нашего проекта.

Шаг 2: Установка нашей библиотеки

Установка нашей библиотеки
Установка нашей библиотеки
Установка нашей библиотеки
Установка нашей библиотеки

Чтобы установить нашу библиотеку, вам необходимо загрузить ее из нашего репозитория (мы опубликуем ее позже в списке IDE Arduino и PlatformIO) по этой ссылке:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy

Затем войдите в среду разработки Arduino и выберите «Скетч> Включить библиотеку> Добавить библиотеку. ZIP…». Затем выберите zip-файл с именем «artifacts.zip» и нажмите «ОК».

Шаг 3. Установка необходимых библиотек

Установка необходимых библиотек
Установка необходимых библиотек
Установка необходимых библиотек
Установка необходимых библиотек
Установка необходимых библиотек
Установка необходимых библиотек

Для работы нашей библиотеке необходимо, чтобы на вашем компьютере было установлено несколько других библиотек:

  • Архипенко библиотека TaskScheduler
  • Библиотека цифровых датчиков освещенности SEEED Studio Grove
  • Библиотека светодиодных RGB-подсветок SEEED Studio Grove с возможностью последовательного подключения
  • Библиотека Adafruit NeoPixel

Вы можете установить их через диспетчер библиотек в Arduino IDE, выбрав «Скетч»> «Включить библиотеку»> «Управление библиотеками…».

В новом открывшемся окне напишите в белой строке поиска имя библиотеки, которую хотите установить, затем щелкните ее блок. Появится кнопка «Установить», вам просто нужно нажать на нее, и IDE загрузит и установит ее для вас.

Шаг 4: Сборка модуля

Сборка модуля
Сборка модуля

Начнем с сенсора. Подключите через провод вывод VCC TSL2561 к выводу 5V Arduino, вывод GND датчика к одному из выводов GND Arduino, а выводы SDA и SCL датчика к выводам SDA и SCL Arduino.. Готово!

Теперь подключите вывод VCC светодиода Grove Chainable RGB к выводу 5V на Arduino, а вывод GND светодиода - ко второму GND на Arduino. Если вы используете Arduino только с одним выводом 5 В, вы можете использовать макетную плату для подключения 5 В Arduino к + ряду макета и соединения всех ваших компонентов с выводами 5 В на нем, или спаять их вместе на куске картона или используйте разъемы WAGO или все, что вам больше нравится. Теперь подключите вывод CI вашего светодиода к выводу 7 вашего Arduino, а вывод DI вашего светодиода - к выводу 8 вашего Arduino. Если у вас нет такого светодиода, не волнуйтесь, можно использовать встроенный светодиод на вашей плате Arduino или классический с небольшим изменением кода.

Шаг 5: Написание эскиза модуля яркости

Написание скетча модуля Luminosity
Написание скетча модуля Luminosity

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

Если вас не интересует объяснение скетча, вы можете просто скопировать и вставить его в свою Arduino IDE:

#включают

используя LightModule = AtHomeModule; Stream * streams = {& Последовательный, nullptr}; GroveChainableLED:: Pins grovePins = {7, 8}; Светодиод GroveChainableLED (& grovePins); LightModule * module = LightModule:: getInstance (); void setup () {// поместите сюда ваш установочный код для однократного запуска: Serial.begin (9600); модуль-> setStreams (потоки); GroveDigitalLightSensor * lightSensor = новый GroveDigitalLightSensor (); модуль-> setSensor (световой датчик); модуль-> setDisplay (& led); модуль-> настройка (); } void loop () {// поместите сюда ваш основной код для повторного запуска: module-> run (); }

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

Для начала нам нужно включить нашу библиотеку в наш скетч, написав эту строку в верхней части скетча:

#включают

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

Скажем, например, я хочу, чтобы это поле называлось «LightModule», поскольку оно будет использоваться для реализации модуля мониторинга яркости, и я хочу сохранять только одно значение за раз. Светимость представлена в люксах в виде интегрального типа нашим датчиком TSL2561, который компьютеры представляют как uint16_t. Наш псевдоним будет выглядеть так:

используя LightModule = AtHomeModule;

ключевое слово using означает, что мы создаем псевдоним, и имя, которое мы даем ему сразу после, соответствует последовательности после символа «=».

«AtHomeModule» - настоящее имя этого блока, которому мы даем новое имя, а параметры, определяющие представление значения и количество значений, хранящихся в памяти, перечислены между «».

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

Если вы хотите, чтобы ваш блок мог хранить в памяти 5 значений вместо 1, вам просто нужно заменить «1» на «5», и Arduino сгенерирует для вас другой тип блока, способный делать то, что вы хотите. Однако обратите внимание, что если модуль запрограммирован на отправку своих значений до того, как у него будет время для эффективного измерения 5 значений датчика, вы никогда не увидите отправку 5 из них, поскольку он отправляет только новые значения с момента последней загрузки.

Затем нам нужно создать массив указателей, содержащий указатели на потоки Arduino, используемые модулем для связи, всегда заканчивающиеся keyworkd "nullptr". Здесь я использую только «последовательный» поток Arduino, который обменивается данными с компьютером через порт USB, поэтому массив выглядит так:

Stream * streams = {& Последовательный, nullptr};

Символ «*» означает, что тип является указателем (расположение элемента, а не сам элемент), а скобки «» в Arduino означают, что это массив, поэтому мы можем поместить несколько значений.

Далее нам нужно создать наш светодиод. Для этого нам нужно написать следующие две строчки;

GroveChainableLED:: Pins grovePins = {7, 8};

Светодиод GroveChainableLED (& grovePins);

Если у вас нет светодиода Grove RGB, но вы все равно хотите получить визуальную обратную связь, вы можете сделать это, просто изменив эскиз. Замените две предыдущие строки этой строкой:

Монохромный светодиодный светодиод (LED_BUILTIN);

В этой конфигурации встроенный зеленый светодиод будет гореть, пока контролируемое значение соответствует работоспособности, и выключится, когда связь разорвана. Если вы предпочитаете, чтобы он включался, когда он разорван (потому что вы используете, например, красный светодиод вместо зеленого на контакте 13), вы можете вместо этого использовать эту строку:

Светодиод MonochromaticLED (LED_BUILTIN, true);

Следующим шагом будет создание самого модуля. Это делается в первый раз, когда мы получаем его местоположение в памяти, вызывая метод getInstance, например:

LightModule * module = LightModule:: getInstance ();

Затем нам нужно установить параметры в функции «setup ()» Arduino, начиная с инициализации «последовательного» порта, как обычно в скетчах Arduino:

Serial.begin (9600);

Создадим датчик освещенности, написав эту строку:

GroveDigitalLightSensor * lightSensor = новый GroveDigitalLightSensor ();

Затем мы говорим нашему модулю использовать наш массив указателей в потоке Arduino для связи через них:

модуль-> setStreams (потоки);

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

модуль-> setSensor (световой датчик);

Мы говорим нашему модулю использовать наш светодиод, чтобы дать нам визуальную обратную связь:

модуль-> setDisplay (& led);

Наконец, мы сообщаем нашему модулю, что он готов выполнить любую необходимую внутреннюю конфигурацию, вызывая его собственную функцию «setup»:

модуль-> настройка ();

Нашим последним шагом будет вызов функции «run ()» нашего модуля, которая предназначена для вызова на каждой итерации функции «цикла» в Arduino путем записи этой строки внутри функции «цикла»:

модуль-> запустить ();

Теперь наш скетч, наконец, готов для загрузки в Arduino и тестирования нашего модуля!

Шаг 6: Тестирование нашего модуля AtHome

Тестирование нашего модуля AtHome
Тестирование нашего модуля AtHome
Тестирование нашего модуля AtHome
Тестирование нашего модуля AtHome

Чтобы загрузить скетч в Arduino, выберите свою плату Arduino UNO, перейдя в «Инструменты»> «Порт»> «[COMx или / dev / x] (Arduino / Genuino UNO)».

И последнее: просто нажмите кнопку «Загрузить» (кнопка с кружком со стрелкой вправо, второй значок на панели инструментов), чтобы загрузить эскиз на свою доску.

Это сделано! Теперь ваш модуль должен работать и отправлять значения на ваш компьютер, видимые в последовательном мониторе Arduino. Вы можете проверить это, открыв «Serial Monitor» Arduino в меню «Tools», и вы должны получить результат, похожий на второе изображение заголовка этого шага:)

Шаг 7: Обоснование модуля

Обоснование модуля
Обоснование модуля

Вы можете собрать простой короб для своего модуля, вырезав его из фанерной доски толщиной 3 мм.

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

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

Теперь просто добавьте аккумулятор для питания вашего Arduino, закройте корпус, и ваш модуль готов и должен хорошо выглядеть:)

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