Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Сигнализация

Умная елка с защитой от котиков и другие новогодние идеи

Программируемая елочка на Arduino

Центр новогоднего интерьера — елка! Оформить ее необычно может каждый, но сделать ее «умной» — работа и развлечение для программиста. Посмотрите, какую елочку собрал в этом году преподаватель GeekBrains Иван Овчинников.

Елочка умеет:

  • включаться и менять режим работы по касанию ключа от домофона,
  • рисовать пиктограммы на диодном экранчике 8х8,
  • всячески мигать,
  • играть любую заданную мелодию (в нашем примере — Jingle Bells).

Чтобы сделать такую или похожую елку, читайте рецепт и смотрите код ниже!

Вам понадобятся:

  • Arduino Nano,
  • NFC-метка RC522,
  • круг из 24 диодов (24 LED circle),
  • матричный LED-экран 8x8,
  • пассивный зуммер (passive buzzer),
  • гирлянда (DIY LED),
  • несколько проводов, резисторов и делителей напряжения.

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

Рецепт и пояснения от Ивана:

Берем плату Arduino Nano и подключаем к ней светодиод. Он будет гореть, когда елка включена, то есть послужит индикатором питания. Если это ваш первый опыт, найдите примеры на YouTube. Суть в том, что вы подаете напряжение на контакт (пин) платы, к которому присоединен LED, который и загорается.

Да и вообще это всегда первый шаг, как hello, world. Сначала учитесь подавать и выключать напряжение на контактах (пинах), потом делаете это по времени, дальше используете ШИМ, чтобы варьировать напряжение. То есть надо постепенно усложнять задачи.

Для тренировки можно, например, написать программу, которая будет сигналить SOS или плавно, по синусоиде, регулировать яркость диода.

Подключаем к Arduino «пищалку» (passive buzzer), которая будет играть мелодию. Ноты можно подобрать на слух или скачать в интернете. Как превратить нотную запись любой композиции в Arduino-код, пригодный для воспроизведения зуммером или колонкой, — читайте здесь.

Управляем пищалкой, как и диодом: подаем определенное напряжение на один из контактов.

Подключаем к Arduino круг из 24 диодов. Здесь управление чуть сложнее — надо задать не только адрес диода на ленте, но и его цвет. Для адресов используем цифры от 1 до 24, для цвета — палитру RGB. Что может быть удобнее? Отправляем значения напряжения на соответствующие контакты.

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

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

Возвращаемся к елке. Для работы с NFC берем плату расширения к Arduino MFRC522. Выясняем идентификационный код (UID) ключа. Это просто: в комплекте расширения есть считыватель, который фиксирует, кто и с какими данными к нему прикоснулся. Информация с чипа отправляется на последовательный порт Arduino по протоколу SPI. Ее можно вывести на экран:

Serial.println(uidDec);

Теперь задать реакцию елки на прикосновение к пульту — дело одного if().

Настраиваем экранчик 8х8 — тут больше всего программной мороки, но не волнуйтесь. Чтобы управлять диодами, надо указывать их адреса: строку и положение — в двоичной системе счисления. Например, если я передаю «1, b’10000001», в первой строке загораются первый и последний диоды. Еще я реализовал функцию отрисовки пиктограмм: диод загорается за диодом с интервалом 100 мс. Для этого я быстро написал программку на Java — ее код вы найдете в репозитории.

Готовим гирлянду. Придется много работать руками: параллельная пайка диодов — дело простое, но довольно занудное. Зачистил провод — припаял к ножке диода, зачистил провод — припаял с другой стороны, надел термоусадочную изоляцию, провел зажигалкой… И так по два раза на диод: для «питания» и «земли» (анода и катода соответственно). В моей гирлянде диодов 12, на большее не хватило вечера воскресенья. :)

Код: на GitHub.

Дополнительная идея

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

Защита елки от котиков (и котиков — от елки)

Вы ведь не хотите, чтобы ваше творение рассыпалось в прах при атаке фурри-мафии? Вызовет ли елка гастрономический интерес питомцев или вдохновит их «достать звезду» с верхушки — пострадать могут все, включая ваше хорошее настроение.

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

В интернете есть Arduino-рецепты отпугивателей для кошек и собак, но действуют они не на всех. Да и не надо! Лучше не отпугивать питомца, а отвлечь. Эту идею подал сетевой администратор, владелец котика и Arduino-энтузиаст Александр, а развить помог Иван Овчинников.

Котейка подходит к елке — включается отвлекающий сигнал в другой части комнаты. Кот отходит на безопасное расстояние — сигнал выключается.

Простейшая реализация: берем две Arduino Nano и обе расширяем модулями Bluetooth. К плате на стороне елки цепляем датчик-дальномер.

Вторую «Дуню» размещаем в противоположном от елки углу и ставим на нее простой зуммер. Будем имитировать интересный котику шуршащий звук — будто скребется мышь. Для этого можно подавать очень короткие низкочастотные сигналы: по 50–100 мс.

Если вместо «пищалки» будете использовать mp3-модуль, лучше не включайте записи голосов других котов, чтобы ваш не заподозрил конкуренцию и не начал метить территорию. :)

При старте создаем пару «передатчик-приемник». Елка включается — проверяет датчик и, если кто-то совсем близко, отправляет сигнал на удаленную плату, а та шуршит.

Можно сделать два режима: для людей и для котиков. Если кто-нибудь подходит к елке на метр-полтора, гирлянда приветственно мигает. А если объект уже в полуметре или ближе — включаем отвлекающий элемент.

Шары с багами и кодом

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

{
Mate.beHealthy();
Mate.beWealthy();
Mate.beWise();
}
while (Mate.age < 125);

Если конструкция шара позволяет открывать и закрывать его, за картинками можете спрятать сюрпризы для семьи и друзей: конфеты, миниатюрные фигурки или ювелирные украшения.

LED-гирлянда за 5 минут

Совсем нет времени, но хочется сделать что-нибудь новогоднее на Arduino? Возьмите рецепт «ленивой гирлянды» с Project Hub! На днях автор проекта как раз оптимизировал код и добавил новые режимы мигания.

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

Просто спаяйте три проводка, загрузите программу на плату — и анимированная гирлянда готова! А если разыграется фантазия и захотите поупражняться, всегда можно добавить собственные режимы мигания.

Чтобы выбрать для своей гирлянды только самые красивые анимации, загляните в файл xtmas_neopixel_lite.ino из git-репозитория проекта. Как всегда в таких случаях, лучше не удалять лишнее из списка. Просто закомментируйте начало строк с объявлением ненужных анимаций — так вы сможете быстро вернуть все на место, если передумаете.

Пример:

symmRun symRun;
//metSingle mtrSgl;

После этого надо будет исправить ссылки на классы в массиве анимаций — добавить и/или убрать необходимое.

animation* anims[] = { ... };

Простенький, но приятный новогодний штрих к интерьеру!

Главное, чтобы ко всем внешним атрибутам праздника прилагались добрые человеческие отношения и стремления. Новый год должен быть счастливее уходящего — постараемся сделать его таким. Хороших вам праздников!

Пройти обучение

24 дек 18, 19:38
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Сам себе инженер: домашняя автоматика и роботы на JavaScript

Собирайте умные вещи и радиоуправляемые игрушки с подключением к домашней сети Wi-Fi, исследуйте мир летающими и подводными зондами, дайте развернуться вашей инженерной мысли!

На базе Arduino, Espruino и их аналогов можно создавать технику без инженерного образования и навыков низкоуровневого программирования. Для работы с Espruino и Tessel даже С/С++ знать не обязательно — весь код вы пишете на JavaScript. Сегодня мы расскажем об Arduino-подобных платах с поддержкой JS и о том, что можно делать с их помощью.

Что такое Arduino, Espruino и аналоги?

Это платформы для создания умных вещей и роботов в домашних условиях. У платформ есть:  

Аппаратная часть  — плата с микропроцессором, к которой можно подключать внешние модули: датчики, дисплеи, электродвигатели, адаптеры Bluetooth, WiFi и Ethernet и др.

Программная часть:

  • прошивка — движок платформы, который позволяет запускать JS на микропроцессоре;

  • среда разработки (IDE), где мы пишем код и откуда загружаем его на плату;

  • стандартная библиотека, которая обеспечивает базовый функционал: работу с интерфейсами, светодиодами, таймерами, форматами данных (типа JSON) и т.д.

Среда разработки может быть веб-приложением, мобильным или десктопным оффлайн-приложением. Бывают ещё программы-эмуляторы, которые позволяют тестировать код на компьютере, когда платы нет под рукой.

А ещё у производителей наготове наборы-конструкторы: плата + функциональные модули и заготовки кода под конкретные задачи.

Принципиальная особенность uino-платформ в том, что вы не только делаете что-то по рецепту, но и создаёте новые устройства для своих задач.

15 идей для проектов на базе Arduino, Espruino и Iskra JS

Если вы раньше не инженерили, первая мысль: «Что с этим делать?» Это может на мгновение ввести в ступор. Но стоит посмотреть на чужие проекты, обзоры плат и модулей  — тут же возникает громадьё идей и планов.

Вот подборка проектов, которые могут разжечь ваше воображение  — со ссылками на примеры или описание реализации:

  1. Вентилятор или светильник, который автоматически реагирует на изменение температуры в комнате или на открытие двери.

  2. Перчатка-манипулятор — пульт дистанционного управления для техники и игр.

  3. Игрушки, управляемые по Bluetooth с планшета или мобильного устройства, в том числе голосом.

  4. Металлоискатель или дозиметр.

  5. Сигнализация (в том числе для холодильника) или кодовый замок.

  6. Динамическая задняя подсветка для ЖК-телевизора или монитора.

  7. Система управления умным домом: открытие/закрытие жалюзи, управляемая с телефона дверная задвижка и др.

  8. Робот-сортировщик предметов по цвету.

  9. Автополив для дачных грядок.

  10. Мусорное ведро с фотоэлементом.

  11. Светильник с тачскрином для управления оттенком освещения.

  12. Погодный информатор с детализацией по городам мира.

  13. Портативные устройства на солнечной батарее, например, метеостанция с Wi-Fi.

  14. Система сбора данных о чём угодно: о погоде, статистике вашего сайта, группы в соцсети или youtube-канала.

  15. Интерактивный кофейный столик с реакцией на прикосновения или с тетрисом.

Arduino и JS — это совместимо?

Если у вас есть плата Arduino, но вы хотите писать код на JS, выход есть. Фреймворки типа Johnny-Five позволяют исполнять JavaScript на Arduino и других платформах:  Raspberry Pi, Tessel 2, pcDuino, Linio One, BeagleBone, BlendMicro, Particle Photon, Intel Galileo и других.

«Костыль!» — скажет кто-то. Отчасти да. Но для маленьких проектов и прототипирования это может быть удобно.

Почему JavaScript

Опытные программисты микроконтроллеров скажут, что C/С++ быстрее и ближе к «железу». Да, это мощные, но сложные и не самые лаконичные языки. Если вы их уже знаете — отлично. Но не всем они нужны, особенно в начале. Пусть выполнение JS-кода займёт на 10-15 миллисекунд дольше — для любительского проекта это не критично. Новичку важнее получать быстрые результаты и читать интуитивно понятный код.

Основные преимущества JS:

  1. Этот язык востребован: за последние 5 лет он —  самый популярный ЯП на StackOverflow. В рейтинге TIOBE за апрель 2018 JavaScript   — восьмой по популярности.

  2. Это один из самых простых в изучении языков, в отличие от С/C++.

  3. JS ускоряет разработку: с ним код бывает в 4 раза короче, чем на Arduino (Си)  — можно быстро реализовывать и тестировать новые задумки. Краткий и понятный синтаксис упрощает знакомство с чужими наработками и их переделку под ваши задачи.

  4. JS универсален: полезен и веб-разработчику, и игроделу, и тому, кто занимается интернетом вещей. Если вам интересно хотя бы одно из этих направлений, программирование автоматики на JS даст дополнительную практику.

  5. У JavaScript есть ясные перспективы развития, в том числе благодаря фреймворкам Node.js и Vue.js. Противостояние адептов AngularJS и React — один из увлекательных эпизодов истории языка, и сколько еще таких эпизодов нас ждёт! Пока web-разработка на подъёме, знание JS будет приносить доход.

Если вы недавно увлеклись робототехникой и ещё толком не умеете программировать, JavaScript — добрый помощник.

Бонусы JS-платформ

Большинство плат Arduino по умолчанию работают с урезанной версией C++, которую мало где применишь. Платформы Espruino и Iskra JS работают со стандартным JS, так что синтаксис и изученные приёмы можно использовать в других направлениях разработки.

Ещё один плюс Espruino и JS — автоматическое подключение библиотек. Сторонние С-библиотеки нужно компилировать и подключать вручную, что отнимает время. На платформе Espruino и Iskra JS библиотеки подхватываются по команде require в коде. Указываете имя библиотеки, и при запуске программы начинается её поиск: сначала на локальном устройстве, затем в интернет-репозиториях, в т.ч. на GitHub.

Консоль в  Espruino IDE позволяет отлаживать код в интерактивном режиме: вы видите результат выполнения программы и можете тут же вводить команды и экспериментировать.

Hello, LED! Простейший код для Espruino

Вместо "Hello, World" для Arduino-совместимых устройств первым пишут программу мигания светодиодом. Примерно такую:

// Светодиод мигает с интервалом полсекунды (500 мс)

const LED = 2; //номер ввода (пина) для обращения к компоненту платы

var on = false;

setInterval(function() { // Задаём интервал мигания

   on = !on;

   digitalWrite(LED, on);

}, 500);

Выбор платформы и платы

Платы различаются по форм-фактору, числу пинов (интерфейсов для встроенных и периферийных устройств), входному напряжению и, в итоге,  — по функционалу.

Espruino

Это полностью открытая (open source) платформа: на её базе можно создавать новые платы, прошивки, средства разработки. По назначению она схожа с Arduino, но не совместима с последней технически. Нельзя комбинировать модули двух платформ или писать код для Espruino в Arduino IDE. Программы на JS вы пишете в среде Espruino IDE, которая доступна как:

В  Espruino IDE встроена консоль, где можно отлаживать код в интерактивном режиме. Вы видите результат выполнения программы, можете тут же вводить команды и экспериментировать.

Espruino поддерживает фреймворки Node.js и Electron. Первый позволяет использовать JavaScript на стороне сервера, второй  — создавать нативные приложения на JS.
Варианты плат:

  • Оригинальная Espruino — универсальна по функционалу плата размером меньше кредитки (54 мм x 41 мм). Изначально работает как проводное устройство, но вы можете добавить модули Wi-Fi и Bluetooth. По умолчанию на плате есть разъём MicroUSB, слот для SD-карт и 44 пина.

 

  • Espruino Pico — мини-плата (33 мм x 15 мм), похожая на USB-флешку. Её можно воткнуть в компьютер напрямую, удобно носить с собой, встраивать в корпуса разной формы. На её основе удобно делать измерительные приборы. Примеры проектов  — здесь.

 

  • Espruino WiFi — плата с быстрым доступом в интернет и беспроводную сеть. Позволяет быстро запустить свой веб-сервис, собрать и обработать данные из интернета и/или наоборот  — отправлять данные исследований на сервер.

 

  • Puck.js  — плата-таблетка в пластиковом корпусе, которая позволяет создавать миниатюрные беспроводные устройства с низким энергопотреблением. Например, можно сделать в автосалоне кнопку для перехода к следующей записи в плейлисте телефона. Вы пролистываете музыку, не отрывая взгляда от дороги.

 

  • Iskra JS от российской компании «Амперка»  — логическое развитие оригинальной Espruino c дополнительными плюшками, о которых стоит рассказать подробнее.

Iskra JS

Плата на ядре Espruino и в форм-факторе Arduino. Вы можете использовать комплектующие Arduino и управлять полученной системой с помощью JavaScript!  Средой разработки служит уже знакомая Espruino WEB IDE. Плюс Iskra JS имеет собственные модули и платы расширения. Энтузиаст, которому понравилась одна платформа, рано или поздно захочет попробовать другую, и возможность комбинировать модули будет очень кстати.

Когда платы нет под рукой, вы можете тестировать код в онлайн-эмуляторе Iskra JS.

Подключить больше модулей поможет плата расширения, такая как Troyka Shield. Она позволяет перестановкой джампера выбирать напряжение на одной из линий питания, причем напряжение управляющей платы не важно.Вы можете  комбинировать пятивольтовые модули с трёхвольтовыми платами Arduino (Due, M0).

Tessel 2  

Плата работает с JavaScript, поддерживает фреймворк Node.js и менеджер пакетов NPM, из коробки обеспечивает работу с HTTP и web-сервером, отправку сообщений в Twitter, цветное освещение. Имеет два USB-порта для подключения внешних модулей, таких как:

  • камера,

  • средства воспроизведения звука,

  • модуль сотовой связи (GSM),

  • модуль Bluetooth LE,

  • слот MicroSD.

Ещё целый арсенал модулей можно цеплять к свободным пинам на плате.

Arduino

Все варианты плат Arduino рассматривать сейчас не будем  — всё же они заточены под C++. Скажем только о нескольких интересных и компактных решениях, которые дружат с Python, а через Johnny-Five ладят и с JS.

Arduino Yún  — плата для тех, кто увлечён интернетом вещей. Может получать доступ к Google-почте, Twitter, Facebook, Dropbox и ещё сотне популярных веб-сервисов через библиотеку Temboo. Управляемый через Yún умный дом может связаться с вами, где бы вы ни находились.

Arduino Tian — плата на базе Arduino Yun, но более производительная, с Wi-Fi, Bluetooth, Ethernet-модулями и ОС Linux на борту. Поддерживает Node.js, чтобы вы могли писать на JS и front-end и back-end. Позволяет быстро развернуть сервер для видеотрансляций или оригинальный веб-сервис для дома.

Мозги  — решают!

Какую бы платформу вы ни выбрали, поведение устройства будет зависеть от кода, который вы напишете. И здесь для программиста начинается самое увлекательное творчество. Ведь один и один и тот же механизм будет лучше или хуже справляться с задачами  — в зависимости от качества вашего кода. Попробуйте! Дайте машине мозги и почувствуйте себя Великим Гудвином! :)


25 май 18, 19:48
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Показаны все темы: 2

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru