Содержание
Умная лампа с помощью Arduino и ESP8266
Мы познакомимся с удивительными способами создания домашней сети из разнообразных устройств, которые будут работать либо автономно, либо при помощи человека.
1. Что нам нужно
Первая статья ознакомительная, я хочу, чтобы вы поняли, что я буду работать с самыми распространенными платами и модулями, чтобы большинство людей могло попробовать себя в разработке IoT.
Итак, для начала нам потребуются два микроконтроллера, которые мы будем использовать: Arduino UNO и ESP8266.
Arduino UNO
Я думаю не надо знакомить вас с этой платой, она очень популярна среди начинающих и поклонников DIY. Скажу только то, что способности этой платы ограничены и UNO не может работать с протоколом https, не хватает вычислительной мощности микроконтроллера ATmega328P, поэтому, когда нам придется работать с микроконтроллером и протоколом https, то мы будем программировать ESP8266.
ESP8266
Я буду работать с Troyka-модулем ESP8266 от компании «Амперка», но можно спокойно использовать и обычный модуль ESP 8266, они практически не имеют отличий, главное при подключении посмотреть значение пинов и запомнить, что ESP работает по 3,3 вольтовой логике, поэтому нужно либо подключать через 5 вольт, но подключить в схему стабилизатор напряжения, либо просто использовать пин со подачей напряжения в 3,3 вольта.
Данный микроконтроллер не самый мощный в серии компании Espressif на общем рынке, но он один из самых дешевых и распространенных. Он будет основой наших IoT разработок.
Дополнительные детали
Также нам потребуется для создания всех опытов:
- Светодиоды
- Фоторезистор
- Термистор
- Ультразвуковой дальномер
- Реле
- Пьезодинамик
- Мини Сервопривод
- ИК — датчик
- ИК — пульт
Не нужно иметь все эти модули, чтобы работать с IoT, но для того, чтобы сделать все будущие проекты, нам со временем придется приобрести их все.
Программы и библиотеки
Первое — скачайте библиотеку, которая поможет вам намного проще работать в Arduino IDE, если вы используйте ESP8266 — http://wiki.amperka.ru/_media/iot-m:iot-m-libs.zip
Второе — для лучшего ознакомления с IoT нам потребуется веб-сайты, которые предоставят нам возможность отправлять на них данные.
- www.dweet.io
- maker.ifttt.com
- narodmon.ru
- и т.д.
Третье — также нам пригодятся различные приложения на андройд, чтобы с помощью телефона мы могли управлять умным домом.
- OpenHab
- Blink
- и т.д.
Подробно со всеми способами, программами и сайтами мы познакомимся уже в ближайших проектах.
2. Делаем «умную лампу»
Я уже заставил вас скучать? Сделаем самую простую умную лампу, которая будет включатся, если в комнате темно.
На самом деле для этого даже не нужна UNO, можно использовать цифровой настраиваемый фотодатчик, но в будущим мы изменим этот проект до неузнаваемости, поэтому придется с чего-то начать.
Если вы не уверены в том, что готовы работать с электричеством в 220 вольт, то используйте вместо фонаря обычный светодиод. В начале я взял свою старую лампу TLI – 204, такие есть практически в любом магазине (отключил заранее от сети).
У лампы два вида работы (светит/не светит), что хочу сделать я, я хочу увеличить ее функциональность, оставить возможность полностью включить и полностью выключить лампу.
Подключить как-то параллельно в цепь фоторезистор с реле без использования еще одного переключателе не получится, поэтому я решил поставить вместо двухпозиционного переключателю трехпозиционный тумблер.
Общая электрическая схема должны будет выглядеть так:
Если все сделать правильно, то на третьей позиции переключателя вы сможете, подавая с микроконтроллера ток на реле, включать лампу.
Подключим к ардуино фоторезистор. Схема выглядит так:
3. Код для «умной лампы»
Теперь напишем код, по которому будем передавать ток на реле, если в комнате будет темно.
Когда будете все подключать, не забудьте убрать фотодатчик от ламы, иначе вас будет ждать световое представление. Все должно заработать. В следующий раз мы попробуем усложнить код и добавить еще пару функций.
Arduino освещение в квартире
- 22.06.15 11:39 • • • • •
Дельта принтеры крайне требовательны к точности изготовления комплектующих (геометрия рамы, длины диагоналей, люфтам соединения диагоналей, эффектора и кареток) и всей геометрии принтера. Так же, если концевые выключатели (EndStop) расположены на разной высоте (или разный момент срабатывания в случае контактных концевиков), то высота по каждой из осей оказывается разная и мы получаем наклонную плоскость не совпадающая с плоскостью рабочего столика(стекла). Данные неточности могут быть исправлены либо механически (путем регулировки концевых выключателей по высоте), либо программно. Мы используем программный способ калибровки.
Далее будут рассмотрены основные настройки дельта принтера.
Для управления и настройки принтера мы используем программу Pronterface.
Калибровка принтера делится на три этапа:
1 Этап. Корректируем плоскость по трем точкам
Выставление в одну плоскость трех точек — A, B, C (расположенных рядом с тремя направляющими). По сути необходимо уточнить высоту от плоскости до концевых выключателей для каждой из осей.
Большинство (если не все) платы для управления трехмерным принтером (В нашем случае RAMPS 1.4) работают в декартовой системе координат, другими словами есть привод на оси: X, Y, Z.
В дельта принтере необходимо перейти от декартовых координат к полярным. Поэтому условимся, что подключенные к двигателям X, Y, Z соответствует осям A, B, C.(Против часовой стрелки начиная с любого двигателя, в нашем случае смотря на логотип слева — X-A, справа Y-B, дальний Z-C) Далее при слайсинге, печати и управлении принтером в ручном режиме, мы будем оперировать классической декартовой системой координат, электроника принтера сама будет пересчитывать данные в нужную ей систему. Это условность нам необходима для понятия принципа работы и непосредственной калибровки принтера.
Точки, по которым мы будем производить калибровку назовем аналогично (A, B, C) и позиция этих точек равна A= X-52 Y-30; B= X+52 Y-30; C= X0 Y60.
- Подключаемся к принтеру. (В случае “крагозяб” в командной строке, необходимо сменить скорость COM порта. В нашем случае с 115200 на 250000 и переподключится)
После чего мы увидим все настройки принтера. - Обнуляем высоты осей X, Y, Z командой M666 x0 y0 z0.
И сохраняем изменения командой M500. После каждого изменения настроек необходимо нажать home (или команда g28), для того что бы принтер знал откуда брать отсчет. - Калибровка принтера производится “на горячую”, то есть должен быть включен подогрев стола (если имеется) и нагрев печатающей головки (HotEnd’а) (Стол 60град., сопло 185 град.) Так же нам понадобится щуп, желательно металлический, известных размеров. Для этих задач вполне подойдет шестигранный ключ (самый большой, в нашем случае 8мм, он предоставляется в комплекте с принтерами Prizm Pro и Prizm Mini)
- Опускаем печатающую головку на высоту (условно) 9мм (от стола, так, что бы сопло еле касалось нашего щупа, т.к. высота пока что не точно выставлена.) Команда: G1 Z9.
- Теперь приступаем непосредственно к настройке наших трех точек.
Для удобства можно вместо g- команд создать в Pronterface четыре кнопки, для перемещения печатающей головки в точки A, B, C, 0-ноль.
2 Этап. Исправляем линзу
После того как мы выставили три точки в одну плоскость необходимо произвести коррекцию высоты центральной точки. Из за особенности механики дельты при перемещении печатающей головки между крайними точками в центре она может пройти либо ниже либо выше нашей плоскости, тем самым мы получаем не плоскость а линзу, либо вогнутую либо выпуклую.
Корректируется этот параметр т.н. дельта радиусом, который подбирается экспериментально.
- Отправляем головку на высоту щупа в любую из трех точек стола. Например G1 Z9 X-52 Y-30
- Сравниваем высоту центральной точки и высоту точек A,B,C. (Если высота точек A, B, C разная, необходимо вернутся к предыдущей калибровки.)
- Если высота центральной точки больше остальных, то линза выпуклая и необходимо увеличить значение дельта радиуса. Увеличивать или уменьшать желательно с шагом +-0,2мм, при необходимости уменьшить или увеличить шаг в зависимости от характера и величины искривления (подбирается экспериментально)
- Команды:
G666 R67,7
M500
G28 - Подгоняем дельта радиус пока наша плоскость не выровняется
3 Этап. Находим истинную высоту от сопла до столика
- Командой M114 выводим на экран значение фактической высоты нашего HotEnd’а
- Командой M666 L получаем полное значение высоты (Параметр H)
- После чего вычитаем из полной высоты фактическую высоту.
- Получившееся значение вычитаем из высоты щупа.
2 Способ:
Второй способ прост как валенок. С “потолка”, “на глаз” прибавляем значение высоты (после каждого изменение не забываем “уходить” в home), добиваясь необходимого значения высоты, но есть шанс переборщить со значениями и ваше сопло с хрустом шмякнется об стекло.
Как сделать авто калибровку для вашего принтера и что при этом авто калибрует принтер вы узнаете из следующих статей.
https://arduinoplus.ru/umnaya-lampa-arduino/
https://itnan.ru/post.php?c=2&p=290903