Умный дом


Проект "Световой терменвокс". Добавляем фоторезистор

Добрый день. Продолжим работу с проектом "Умный дом" от БХВ. Мы уже включали пьезоизлучатель - буззер в проект "охранная система". Но на звукоизлучателе стоит задержаться. Ведь на нем можно построить ряд звуковых проектов. Электронное пианино, изучение нотной грамоты и т.д. А при объединении с виртуальными персонажами на экране, так вообще пространство проектов расширяется значительно)))

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

Выбираем пин подключения, звук и время звучания. Удобно, можно сразу составлять несложные мелодии.
Попробуйте обязательно. Я же посмотрю, можно ли в mBlock реализовать ту же программу, что рассмотрена в руководстве пользователя набора "Умный дом" (Урок 5) в текстовом программировании. 
Программа 1. Немного усложним программу к уроку 5, добавив управление-запуск кнопкой. Просто кнопка осталась от прошлого проекта, не хотелось убирать)))
Частоты, рассматриваемые в уроке 5 руководства, оставляю, как и названия переменных, которые вводятся в программу (SoundPin для указания пина управления звуком, DelaySound - время звучания).
Схема сборки:

Программа в mBlock (соединение по USB, так удобнее и проще настраивать, но если хочется сделать из нее автономную, вы знаете, как это делать)))

Программа 2 Теперь попробуем реализовать программу, рассмотренную в уроке 6 руководства: Световой терменвокс.
Создадим музыкальный инструмент, в котором звук будет меняться при перекрытии рукой светового потока, падающего на фоторезистор.
Фоторезистор, входящий в набор:

Схема подключения фоторезистора к плате:

Подробнее о фоторезисторе и принципах его работы.

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

Единственно - по сравнению с примером в руководстве, изменил пин подключения фоторезистора - на A0.
По переменным, которые вводим, опять же, руководствовался названиями из аналогичного проекта в Arduino IDE, который рассмотрен в книжке к набору.
przPin - указываем пин подключения фоторезистора.
przReading - переменная для хранения данных с фоторезистора.
soundPin - указываем пин подключения пьезоизлучателя.
soundFreq - переменная хранения частоты звука.
sound_freq_max - задаем максимальную частоту излучения.
prz_max - задаем максимальное значение фоторезистора.

Программа может быть такой:

Можно пробовать.
Получается примерно так - видео работающего устройства.

Вариант программы с уменьшением количества вводимых переменных.

Ну вот, и еще один проект позади. А впереди - множество вариантов использования звука в реально-виртуальных проектах. Танцы персонажей, виртуальное пианино и т.д. А можно использовать несколько буззеров... Можно рисовать ноты на экране и т.д. Фантазируем))))


.

Проект "Охранная система". Реально-виртуальное пространство проектов

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

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

А вот здесь - материал о физике работы датчика и опять же - схема подключения и т.д.

Перевернув датчик, видим три контакта подключения: VCC (+ питания), GND (Земля) и OUT - для подсоединения к входу Ардуино. Также есть возможность поднастроить датчик по чувствительности и времени срабатывания (сколько времени он будет выдавать цифровой сигнал 1 при обнаружении движения, прежде чем вновь перейти в состояние 0).


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

Задание 1. Подключение датчика и проверка его работоспособности.
1.1. Для этого задания совсем не обязательно собирать всю нашу прошлую схему и, если вы идете не следом за нами по линии проекта, можно просто соединить датчик тремя проводами типа "папа-мама" соответственно с контактами на Ардуино: +5В, GND и , например, пином 3 для снятия показаний.

1.2 Если же мы продолжаем проект и у нас есть неразобранная схема "Азбуки Морзе", то просто внесем пару дополнений - изменений.
Первое изменение: добавим датчик движения. Соединив уже по описанной выше (1.1) схеме, но на нашей плате проекта.
Соединяем плату с компьютером, включаем mBlock. Работать будем в режиме управления из среды mBlock (так проще отрабатывать и настраивать проекты, да и батарейки не нужны, удобно), так что проводим стандартные операции подсоединения устройства и (если раньше оно было автономным) обновления прошивки mBlock. Для тех, кто не читал первые посты - пункты 4 и 5. На самом деле эти операции подсоединения в режиме управления или заливки скетчей для автономной работы - к ним быстро привыкаешь и делаешь на автомате.
Итак, датчик на плате, плата подключена и может работать с mBlock.

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

Это первый вариант вывода информации с датчика. Мы объявили новую переменную "Тревога" и в рабочем окне можем наблюдать за изменением показаний (1 или 0) . Замерли...0. Пошевелились рядом с датчиком - 1. Работает - прекрасно, идем дальше. Не работает - проверяем контакты. 

Задание 2. Соединяем виртуальное и реальное пространство.
В принципе, мы это и раньше делали, выводя данные в рабочем поле программы. Но пока еще особо не привлекали внимание к тому, что можно ведь использовать весь арсенал Scratch 2.0, лежащего в основе mBlock, для виртуализации событий, команды к которым будут поступать с реального устройства! 
Т.е. в будущем вообще можно будет построить виртуальный умный дом, в котором будут открываться форточки, опускаться шторы, зажигаться свет, работать сигнализация и т.д. и при этом в качестве датчиков будет выступать реальная схема с Ардуино. Тут вообще раздолье для учебных проектов и сложных сценариев)))
Но для начала все проще. Пусть персонаж-спрайт mBlock стоит, охраняет, думая "Хмммм" пока все в порядке, и бегает туда-сюда, крича "Тревога!" в случае срабатывания датчика.
Пример программы:

Поверьте, очень забавно))) Можно добавить в проект звуки из библиотеки, или записать свой "Тревога!!!" чтобы не просто бегал, но и кричал по настоящему!

Задание 3. Делаем внешнюю сигнализацию, заодно экспериментируем с пьезоэлементом.
Теперь можно попробовать сделать свето-звуковую охранную систему уже в реальном мире. Немножко модернизируем схему "Азбуки Морзе", упорядочив провода питания (идущие к +5В) - просто, чтобы было удобнее ориентироваться. Как-то принято выводить их на специальную красную полосу монтажной платы. И второе изменение - уберем провод управления звучком-пьезоэлементом с 10-го пина (где он работал одновременно с светодиодом) на, например, 9-ыйчтобы можно было управлять им отдельно. Посмотрим, как он может издавать разные звуки.
Вариант схемы соединения:

Проверим работоспособность решения. Для подачи звукового тона пьезоэлементом воспользуемся специальным блоком в разделе Робот: Воспроизвести звук... на ноте... в течении...такта. Ноту можно выбирать из списка (или писать самому частоту излучения), что даст нам возможность в будущем создавать музыкальные композиции, но пока двухтональной сигнализации вполне хватит. В качестве пауз между световыми сигналами будут выступать сигналы звуковые и движение виртуального персонажа)) 
Например так:

Пробуем. Если персонаж при тревоге бегает с воплями "Тревога!", а система правильно срабатывает, реагируя на движение светом и противным звуком - все в порядке.

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

Задание 4. Делаем автономную сигнализацию, пока световую.
Что ж, если говорим о сигнальном устройстве, то неплохо бы проверить возможность его автономного существования.
Пробуем. Меняем шапку проекта на "Arduino Program", убираем блоки управления виртуальным персонажем. Я бы даже рекомендовал на время воздержаться от звука, уж очень раздражает во время настроек)))) Так что оставляем моргание светодиодом.
Получается как-то так:

Переходим в Arduino Mode и закачиваем программу на устройство. Подсоединяем батарею питания (можно и не подсоединять, питание идет по кабелю USB, но так меньше заметна автономность. Если батареи есть - хорошо показывать именно удаленный вариант без провода к компьютеру). Двигаемся - светодиод моргает, остановились - гаснет. В принципе - уже сигнализация. Но можно усложнить проект.

Задание 5. Делаем автономную сигнализацию, свет, звук, кнопка.
На нашей схеме, помимо датчика, есть светодиод, звучок и кнопка. Логично использовать все элементы. Поэтому техническое задание:
1 Система должна включаться в "боевой режим" нажатием на кнопку, о чем должен просигнализировать однократный сигнал светодиода.
2. После сигнала светодиода должен быть промежуток времени для "удирания" с места установки. В моем случае - 5 секунд, чтобы зайти за дверь.
3. Через 5 секунд (или заданное вами время) устройство переходит в режим ожидания движения.
4. При срабатывании датчика движения работает свето-звуковой сигнал сирены. 
5. Отключить систему можно, еще раз нажав на кнопку, после чего светодиод моргает два раза и устройство готово к новому запуску *при новом нажатии кнопки все начинается с пункта 1)
Вариантов реализации может быть много. По сути, можно даже сделать кодированный вариант отключения системы (это тема отдельного проекта, как научить систему распознавать нажатия, длину, паузы...)
Пока же вариант реализации вышеизложенного ТЗ: 

Ну и видео работающего устройства

Обсуждалки по окончанию: где еще можно использовать датчик присутствия? (включение/выключение дежурного освещения, шлагбаум и т.д.) Обсуждение будущих проектов (пьезоэлемент с изменяемой тональностью ... музыкальный инструмент?) и т.д.

Download
Набор программ из поста
5.zip
Compressed Archive in ZIP Format 187.1 KB

.

Проект "Азбука Морзе" (+пьезоизлучатель) и "Охранная система" (начало)

В прошлой статье проект "Азбука Морзе" обзавелся кнопкой. Это уже весело, но, как я уже писал, сразу возникает желание "попикать", причем желательно не на компьютере (то, что компьютерные динамики умеют звучать, никого не удивляет), а на самом внешнем устройстве. А это хороший повод для введения нового элемента - звучка. В комплект "Умный дом" (как и в большинство конструкторов на базе Arduino) входит плата с пьезоизлучателем. Вот такая:

Порядок подключения модуля: ножку "+" (VCC) подключаем к выводу 5В контроллера Ардуино, ножку "-" (GND) подключаем к "земле" (GND) на контроллере, контакт "I/O" к управляющему пину.

Вообще, пьезоэлемент - штука интересная и веселая, можно разные звуки воспроизводить, подавая тональность.... но об этом чуть позже. Пока у нас простая задача - пищать в такт с нажатием кнопки в проекте "Азбука Морзе". Поэтому, чтобы не разбирать предыдущую схему, просто добавим в нее пьезоэлемент. Он прекрасно устанавливается на макетную плату (смотрите, надо правильно поставить, параллельно длинной грани платы, так, чтобы три ножки не оказались замкнуты. Вроде и понятно, но проверить у ребят надо в первый раз). Для соединения можно использовать группу из трех проводов, распуская их по одиночке только с одной стороны, удобно.
Питание 5В - туда же, откуда брали питание для группы кнопки, управляющий провод - туда же, где командовали зажиганием светодиода. Можно и "землю" отправить на монтажную плату, туда, где уже подсоединяли землю, но нам оказалось удобнее подсоединиться к контакту "GND" на контроллере, благо их там несколько.
В результате схема сборки стала такой:

Теперь программа... Хотя... мы же намеренно использовали соединение таким образом, чтобы минимизировать изменения. Так что и программу можно использовать ту же, что и на прошлом занятии, для светодиода. Естественно, можно пробовать с вариантом управления из среды mBlock (так легче отлаживать программы), но если с прошлого занятия контроллер остался прошит программой создания "Световой" кнопки Азбуки Морзе, можно оставить ее без изменения. 
Напомню, она была такой (по шапке видно, что программа для автономного устройства):

Просто подсоединить питание и попробовать нажимать кнопку.
Если одновременно с горением светодиода слышен громкий звук (вы не забыли снять наклейку с пьезоэлемента???) - все в порядке. Звуко-свето передатчик готов.
Видео готового устройства в работе.

Кстати, можно еще поэкспериментировать с самой кнопкой, сделав "рычаг, как у радиста" из элементов того же конструктора Лего и резинок... Пробуйте).

А мы идем дальше. Звучит, светит. А набор у нас назывался "Умный дом". Как-то свечение и звучание быстро приводит к мысли об охранной сигнализации. Датчики присутствия мы обязательно разберем (такой вопрос почти сразу возникает, значит, есть куда двигаться дальше), а пока сделаем задачу попроще: попробуем сделать свето-звуковую сирену, не разбирая текущую схему.

Заодно решим полезную задачу - как одной кнопкой и включать и выключать сирену. 
Пока мы еще не знаем о задании тональности звучания пьезоэлемента, но кто ж мешает проверить, а что будет происходить со звуком, если на него подавать ШИМ сигнал, такой же, как в эксперименте с мерцающим светодиодом?
Здесь много будет проб и ошибок, поэтому рекомендую работать в интерактивном режиме, с управлением устройством из среды mBlock. Так проще отладить программу.

Техническое задание:
Первое нажатие кнопки должно включать сирену (световые и звуковые сигналы изменяемой интенсивности), при этом после нажатия кнопки должно идти 3 коротких сигнала, потом - заработать сирена. Второе нажатие на кнопку должно прекращать работу сирены и возвращать устройство в режим ожидания. Новое нажатие - сирена и т.д.
Варианты решения будут разные, так что будет о чем поговорить.
Одно из решений (на базе той программы, что когда-то управляла мерцанием светодиода):

Кстати, в предложенном решении мы отказались от использования переменной "кнопка", а используем сразу показания с пина 2, к которому она подключена. Просто для демонстрации, что и так можно. 

В итоге получается "ручная сирена" с кнопочным управлением. Видео готового устройства в работе. 

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

Download
Программы из проекта
sirena_1.zip
Compressed Archive in ZIP Format 37.7 KB

PS: Когда рисовал схему соединений во Fritzing, там не оказалось платы пьезоизлучателя в компонентах (только простой пьезоэлемент с двумя выводами), пришлось рисовать новый компонент. Опять же - новые знания. Помогла вот эта статья. А еще много готовых компонентов, не входящих в основную библиотеку fritzing можно найти здесь. Рекомендую, программа классная. 


.

Проект "Азбука Морзе" (кнопка)

Добрый день. Продолжим.
В прошлый раз рассмотрели проект "Азбука Морзе" с созданием автоматического устройства для отправки кодированного в световые сигналы сообщения.
Но как же можно уйти из такого проекта, не создав КНОПКУ для ручной подачи сигнала с автономного устройства? Правильно, никак)))
Поэтому следующая тема - использование кнопки в Arduino-проектах. 
Казалось бы - что может быть проще: ставим кнопку, подсоединяем ее к входу Arduino и источнику питания и руководим светодиодом. Кнопка в наборе есть (причем в любом образовательном наборе с компонентами Ардуино), так что наша задача - научиться размещать ее на макетной плате и правильно организовывать схему разводки. А вот тут не все просто.

Цитируя "Руководство пользователя" из набора "Умный дом": Вход Arduino должен иметь заранее известное состояние (1 или 0). В "подвешенном" состоянии он будет собирать внешние наводки (статические, электрические и электромагнитные излучения). Чтобы привести вход в заранее известное состояние, используют подтягивающие резисторы. Они бывают двух видов: подтяжки верхние и нижние.
Верхние (pull-up) - подключаются к плюсу питания, а нижние (pull-down) - к минусу. В примере, рассматриваемом в Руководстве (а мы будем исходить из этой схемы), используется подтягивающий резистор к минусу (схема на Рисунке 1). Таким образом, когда кнопка отключена, вход будет подключен к "земле" через резистор, сопротивление которого заведомо меньше внутреннего сопротивления входа. Поэтому наводка, попавшая на вход, уйдет в GND. Если же подключен полезный сигнал (+5В), то он будет стекать во вход (незначительная часть уйдет в GND через подтяжку). В итоге, при нажатой кнопке, у нас будет стабильный сигнал (+5В), а при отпущенной кнопке - стабильный ноль. Дополнительные материалы.

Рисунок 1.

В принципе, можно собрать схему полностью по рисунку 1, но в предыдущих заданиях у нас светодиод был подключен к выводу 10, если схему не разбирали, то можно просто дополнить ее нужными элементами:

Рисунок 2.


При этом обратите внимание: кнопка просто втыкается в отверстия монтажной платы, но так, чтобы разделить контакты (посередине разделительной линии).

Все, у нас готова схема для передачи сигналов Морзе при нажатии на кнопку.
Приступаем к программированию. Не забываем, если последний раз плата использовалась в автономном режиме - то либо сразу пишем программу для автономной работы и загружаем на устройство, либо, если планируем попробовать сначала в интерактивном режиме (например для проверки и настройки), то надо обновить прошивку на устройстве - пункты 4 и 5 из начальных занятий.
Программа в данном случае совсем простая: если с кнопки пришел сигнал 1, зажечь светодиод, 0 - погасить.
Что-то в таком виде:

Рисунок 3.

Да, в данной программе реализован сопровождающий компьютерный звук, что-нибудь из коротких звучков. Можно не делать, но так было интереснее.
Пробуем. Жмем кнопку - точка, жмем долго - тире. При необходимости отлаживаем программу. А теперь меняем шапку программы на Arduino Program, убираем компьютерный звук (у устройства же не будет связи с компьютером), загружаем скеч на устройство, подсоединяем питание и вот оно - ручное передающее устройство - у нас в руках.

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

Видео работающего устройства. На видео чуть другая схема (провод к "Земле" можно выводить в очень разные позиции и положение резистора в рассмотренной в статье схеме оптимизировано), но суть та же. Схема выше - так же проверена))))

Ну, а на вопрос, а как в автономном варианте реализовать звук.... отвечаем, что в этом случае к плате надо подключить внешний динамик. Есть над чем работать))))

Download
Файл программы
3.zip
Compressed Archive in ZIP Format 40.6 KB

.

Проект "Азбука Морзе" (управление светодиодом)

В прошлой статье были проведены первые опыты с набором "Умный дом" (БХВ) по управлению светодиодом, подключенным к плате Arduino UNO. Программирование шло в среде mBlock. Продолжим серию экспериментов, дополнив ее проектом "Азбука Морзе", который прекрасно вписывается в учебный курс и технологии и информатики.
Пример:
Предмет: Информатика.
Класс: 5.
Учебная тема(ы): Информационные процессы. Передача информации. Кодирование информации.
Опорный учебник(и): Информатика 5 класс, Л.Л. Босова, А.Ю. Босова, БИНОМ. Лаборатория знаний, 2013.
Знания и умения, необходимые для выполнения проекта: знать понятие информационного процесса, способы передачи информации, основные информационные революции; понимать процесс кодирования информации; уметь кодировать и декодировать информацию.
Предмет проекта: Процесс кодирования информации методом Морзе.
Цель проекта: Научиться кодировать информацию методом Морзе, передавать закодированную информацию с помощью звукового передатчика, пользоваться азбукой Морзе.
Задачи:
1. Изучить способ кодирования информации, предложенный Морзе.
2. Корректно закодировать сообщение и передать его, используя единую азбуку для источника и получателя.
3. Расшифровать полученное сообщение.

В следующий раз дадим продолжение проекта: 
4. Изучить способ передачи информации с помощью телеграфного ключа.
5. Собрать и запрограммировать звуковой кнопочный передатчик.

Информационный блок проекта позаимствовал (Тарапата Виктор Викторович. КОНСТРУИРУЕМ РОБОТОВ НА LEGOR. G. MINDSTORMSR. G. EDUCATION EV3. ТАЙНЫЙ КОД СЭМЮЭЛА МОРЗЕ)

Этап I. Изучаем способ кодирования, предложенный Морзе.
Код Мо́рзе, «Морзя́нка» (Азбукой Морзе код начал называться только с начала Первой мировой войны 1914-1917гг.) — способ знакового кодирования, предложенный американским изобретателем и художником Сэмюэлем Морзе в 1838 году.
«Морзянкой» выполняется представление букв алфавита, цифр, знаков препинания и других символов в виде последовательности сигналов: длинных («тире») и коротких («точек»).
Правила кодирования Морзе:
1) За единицу времени принимается длительность одной точки.
2) Длительность тире равна трём точкам.
3) Пауза между элементами одного знака — одна точка
4) Пауза между знаками в слове — 3 точки.
5) Пауза между словами — 7 точек.
Каждый символ кодируется определенной последовательностью «точек» и «тире».
Международная азбука Морзе выглядит следующим образом:

Кириллическая азбука Морзе выглядит следующим образом:

Этап II. Собираем передатчик светового кода
Воспользуемся схемой сборки с прошлого занятия (что экономит время, если ее не разбирали):

По сути, у нас все уже есть для передачи с помощью световых сигналов нужной информации.

Этап III. Пишем программу для передатчика.
В нашем случае у нас в распоряжении есть клавиатура компьютера, поэтому первый вариант может быть построен на использовании двух кнопок для передачи "Точки" и "Тире" соответственно. Поскольку со временем скорость восприятия передаваемого кода может измениться, то для задания исходного временного отрезка - длительности одной точки, можно ввести соответственную переменную. При этом удобно воспользоваться (или ввести данный инструмент, если ранее не вводили, самое время) созданием новых блоков - точка и тире, для удобства набора. Данные и блоки - Сделать блок. Заодно можно сразу создать блоки и для паузы между знаками в слове и между словами, для последующих заданий пригодятся.
В итоге может получиться примерно такая программа:

Здесь для подачи сигналов точки и тире используются нажатия кнопок на клавиатуре "а" и "s", но можно использовать любые удобные клавиши.
Теперь можно потренироваться в передаче и дешифровке сообщений, что удобно делать командами... но..это лучше будет сделать на следующем занятии, когда мы создадим простой кнопочный передатчик, да и азбука Морзе лучше уложится в голове))).

А сейчас самое время вспомнить, что мы находимся в XXI веке и у нас в распоряжении все же более серьезный инструментарий, что позволяет делать автоматические передающие устройства. Зачем? ну, например, для подачи звукового или, в нашем случае, светового сигнала SOS в случае необходимости.
Не меняя дополнительных блоков, просто создаем нужную последовательность сигналов в нашей программе.

Проверяем работоспособность. Работает? Тогда логично сделать так, чтобы наше устройство передавало сигнал автоматически, без привязки к компьютеру.
Меняем шапку проекта на Arduino Program, загружаем скетч на устройство, подключаем питание и наблюдаем за результатом.

Дополнительные задания
А вот здесь - свобода творчества.
Можно в блоках сделать весь алфавит азбуки Морзе и записывать сообщения в виде

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

Интересно разделиться на команды и посылать/принимать сообщения, кодируя и декодируя информацию.

Что дальше?
А вот дальше - много вопросов и широкое поле для следующих исследований. Автоматика - хорошо, но это дети, и им хочется передавать информацию, нажимая на кнопку, а значит, можно будут поговорить о том, как использовать кнопку в соединении с Ардуино. 
А как не светить, а издавать звук? Можно будет ввести блоки звука в нашей программе интерактивного управления, а потом - подключить к плате Ардуино источник звука.
"А кто увидит этот светодиод?...И тут самое время поговорить о возможности управления серьезными токами, например, включать мощные лампы и о том, какое оборудование-посредник нам потребуется...
Так что учиться, учиться и учиться))))

Download
Файл программы
morze.zip
Compressed Archive in ZIP Format 74.0 KB

PS Для тех, кому интересно -Запоминалки азбуки Морзе
По ссылке вы найдете «напевы», т.е. ритмические проговаривания тех или иных наборов точек и тире. При этом слоги, в состав которых входят гласные «а», «о», «ы» обозначают тире, а остальные слоги и слог «ай» – точку.И хотя сегодня в ходу радиосвязь и интернет, тем не менее многие радиолюбители во всем мире до сих пор используют азбуку Морзе.


.

"Умный дом" (БХВ), mBlock и первые проекты с Arduino UNO и светодиодом

В прошлой публикации я рассказывал о коробочке-защите платы Arduino UNO из набора "Умный дом" (БХВ.Петербург) или любого другого набора на базе Ардуино (например, Матрешка от Амперки). Такая коробочка может значительно удлинить жизнь набора в руках школьников))).

Сегодня продолжим работу с набором в среде mBlock.
Напомню, что в материалах, прилагаемых к набору, программирование идет в текстовом коде с использованием Arduino IDE, что существенно повышает возрастную планку применимости набора. Среда же mBlock, основанная на scratch 2.0, поддерживающая практически все платы Arduino и способная обеспечивать управление как в интерактивном режиме (по каналу связи), так и в автономном (загружая скетчи на устройство), оптимально подходит для снижения этой самой возрастной планки работы с набором.

Сегодня разберем задачи, связанные с управлением светодиодом.

Для начала напомню последовательность работы с mBlock.
1. Запустить программу mBlock.
2. Подсоединить кабелем USB плату Arduino к компьютеру. При необходимости согласиться на установку новых устройств. Если у вас уже установлена Arduino IDE, то все нужные драйвера уже есть, если же потребуются, то всегда можно воспользоваться меню в самом mBlock: Соединить - Install Arduino Driver (хотя честно признаюсь, сам такой вариант не пробовал, как-то всегда уже были в системе нужные драйвера).
3. В меню mBlock выбрать нужную плату (меню Boards).

4. Выбрать способ соединения (Меню Соединить - Serial port -... у меня это com3).

5. Обновить прошивку на плате для работы в интерактивном режиме (управления по каналу связи). Меню - Соединить - Обновить прошивку.

6. Для использования дополнительных блоков управления Arduino выберем соответствующее расширение. Меню Extensions - Arduino. 

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

I. Начнем с классического моргания светодиодом, расположенным непосредственно на плате Arduino UNO.
Данный светодиод управляется 13-ым выводом (пином), поэтому можно составить простую программу-скетч (команды управления сигналом пина выбираем из блока Робот):

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

II. Теперь проверим данный скетч, но в режиме автономной работы. Для этого заменим шапку проекта на "Arduino Program" из блока "Робот".

Программа готова для загрузки в Arduino UNO. Перейдем в режим Arduino Mode (Меню - Редактировать).

Откроются новые составляющие экрана - окно с кодом программы и клавишами управления. Нажмем кнопку Upload to Arduino и пронаблюдаем процесс загрузки скетча на устройство.

Все, устройство автономно. Правда, с проводом это не очень убедительно. Поэтому можем отцепить, но придется добавить элементы питания, иначе как...

Все, работает. Можно посмотреть видео.

Внимание! Поскольку мы загрузили автономный скетч, то теперь при подсоединении провода USB мы не сможем осуществлять непосредственное, интерактивное управление из среды mBlock. Чтобы вернуть эту возможность, надо вновь выбрать соединение и обновить прошивку на плате, см. пункты 4 и 5 вначале поста.

III. Моргаем внешним светодиодом (интерактивное управление).
Соберем схему с использованием одного внешнего красного светодиода на 10 выводе и сопротивления 220 Ом (если ранее не обсуждали, самое время обсудить - зачем нужно в данном случае добавочное сопротивление, а в случае знакомства с законом Ома - даже рассчитать его):

Программа:

Запустив на исполнение - пронаблюдаем, как теперь мигает и гаснет внешний светодиод.

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

V. Управляем яркостью светодиода. 
Что делать, если нам надо не просто включать-выключать светодиод, но и регулировать его яркость?
Вводим понятие ШИМ (Широтно-Импульсная Модуляция, англ. Pulse Width Modulation или PWM)Поясняем, что не любой порт Arduino поддерживает широтно-импульсную модуляцию. На контроллерах Arduino такие выводы (пины) помечены символом тильда «~». Для Arduino Uno это пины 3, 5, 6, 9, 10, 11.
В предыдущей схеме светодиод подключен к пину 10, убеждаемся, что рядом с ним есть знак ~, т.е. им можно управлять с использованием ШИМ, подавая специальным образом значение от 0 до 255 на данный вывод.
Для этого вместо подачи цифрового значения High или LOW мы используем специальный блок управления ШИМ:

Можно предложить сделать простые упражнения - переделать программу моргания светодиодом с использованием половинной яркости светодиода.
Но интереснее вариант задания, в котором надо обеспечить изменение яркости светодиода от 0 до 255 и обратно с заданным шагом, например 5.
Один из вариантов такой программы:

Обратите внимание, что в данной программе созданы две переменные - шаг яркости и яркость и введена пауза между изменением яркости. Это не обязательно, но интересно для учебных задач. Например, можно легко менять шаг яркости и следить за изменением показаний яркости в окне данных (слева на экране программы).
И здесь видно, что при изменении шага, например, на значение 12, все работает не так хорошо.... Это повод к созданию новых решений.
Например, таких:

В данном случае шаг изменения яркости может быть любым, но краевые значения 0 и 255 задаются искусственно. Возможно программу можно сократить и оптимизировать.....

Можно попробовать программы и в автономном режиме. Например - первый вариант из данного раздела - видео.

Несколько программ из разобранных - в архиве, хотя по скринам все видно.

Download
svet.zip
Compressed Archive in ZIP Format 184.3 KB

В следующий раз сделаем проект Азбука Морзе, который хорошо вписывается в темы по кодированию информации.


.

От "Умного дома" (БХВ) до "Конструкторского бюро" в школе

В свое время я уже писал о наборе "Умный дом" от издательства БХВ. Как и большинство хороших наборов для творчества на основе контроллеров Arduino, он привлек мое внимание, как один из возможных вариантов поддержки курса конструирования, робототехники и электроники в школе. А то, что такие курсы не за горами, уже видно. Даже у нас, в школе с углубленным изучением английского языка, 3-5 классы с этого года с удовольствием занимаются робототехникой и конструированием . Вообще, у меня мечта - увидеть переход от "гуманитарности" школ с языковым уклоном, к их "технологичности", когда английский язык станет лишь инструментом, а спектр его приложения станет значительно шире.Ведь для технического направления это - прекрасная возможность уже на ранней стадии обучения использовать огромное количество литературы и профильных сайтов на иностранных языках. 

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

Понятно, что использовали сначала привычное уже по работе с роботами ПО - mBlock. на текущий момент это, пожалуй, самый удобный инструмент для программирования Arduino контроллеров в стиле Scratch. О mBlock уже писал А.Григорьев, но в ближайшем будущем надо бы посвятить этому инструменту больше материалов, он того стоит.
И, опять же, понятно, что первыми программами стали "моргалки" светодиодом, знаменитый Blink. Сначала на самой плате Arduinio Uno, затем отдельным светодиодом.

Дальше - больше, но вот тут, наблюдая за платой контроллера, шаловливыми ручками, проводами и т.д. посетила мысль, что долго так набор не проживет. Т.е. дома нормально, там все же поменьше пользователей, да и, если что, новый купить можно. А вот в школьных условиях - выбил себе N наборов, береги, когда еще новые будут. В общем, замыслили мы сделать коробочку для набора. А на потом оставили еще разработку специальной системы ящичков, чтобы можно было по столам быстро раскладывать компоненты для сборки.
Примеров коробки для контроллера в сети много, но такого, как нам хотелось - не нашли, поэтому делали часть заново. 
Модель делали во FreeCad.

Заодно придумали клеймо для "отметки" своих изделий. Мелочь, а мелким нравится... Ну и нам душу греет)))
Дальше модель перекочевала в слайсер Cura.

Потом принтер MZ3D-360C напечатал коробочку. 

Потом, правда, пришлось еще много печатать, на всяческих мероприятиях народ себе забирает "образцы" (с разрешения, конечно, нам жалко, но пусть))) 
В общем, выглядит это примерно так:

Потом плату - просто укладываем в коробочку, монтажную плату - на ее же скотч (думали над вариантами вставок-зажимов, но так проще всего. И надежно).

Потом четыре винта - скрутить.

Ну и все, дальше - только пользоваться. Все разъемы видны, тексты читаются, светодиоды моргают и на плате и отдельно.

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

И вот смотрим мы на весь этот процесс, и зарождается мысль... А ведь, действительно, меняется техносфера школы. Те же 3D принтеры уже можно купить по вполне приемлемым ценам (вон, правильные китайцы уже перевезли наборы для сборки Пруссы через границу, лишив нас плясок с растаможкой, и теперь на Али можно заказать за 12-13000 р набор для сборки на стальной раме с большим подогреваемым столом. Скоро сможем заценить, что там в реальности, пока только по описанию). Понятно, что последний вариант - для личного пользования, но и произведенные в России агрегаты уже доступны, в пределах 50-60000 вполне дееспособные особи попадаются. Так что не за горами - массовое использование в школах. А ведь еще есть всяческие ЧПУ, лазеры, фрезеры, токарные и слесарные станки... А еще есть курс технологии, да и сама концепция Технологии в школе на глазах меняется. Кстати, рекомендую поучаствовать в обсуждениях и анкетированиях по этому поводу.

В общем, смотря на это будущее, я мечтаю о появлении в школах "Конструкторских бюро", в которые можно будет принести свой проект, заявку (учитель, ученик) и получить готовый продукт-решение. Скажем, учителю начальной школы потребовались объемные геометрические фигуры для демонстрации, а учителю английского - пластиковые фигурки на магнитах для сценки на магнитной доске.... А какой-то команде для представления проекта надо бы создать действующий прототип... И вот тут можно обратиться в Конструкторское бюро, в которое входят ребята и учителя, для которых все эти станки, принтеры, инженерная графика - самое их дело, и там задача будет проанализирована, назначены исполнители, определено, кто привлекается для проекта (иногда полезно и заказчика привлечь на какие-то этапы).... Ведь еще недавно учителя вовсю пользовались услугами тех ребят, которые осваивали раньше и лучше других те же презентации, работу с видео и аудио. А сейчас - новый виток. Нужны инженеры - мейкеры. 
Кажется - далекое будущее? А мне почему-то кажется, что это уже завтра). А надо было - вчера, чтобы не мы с Али наборы заказывали, а они в очередь стояли.

PS Листинги программ на mBlock по первым урокам с набором - опубликую в следующий раз. Возможно, будет интересно и тем родителям, которые купили данные наборы для ребенка, а там - серьезная книжка для взрослого (ну, хотя бы класса с 9-го) инженера и непонятное программирование в Arduino IDE. Вот тут-то как раз mBlock, который Scratch+Arduino и выручит.

Чуть не забыл файлы выложить для печати. Это для Arduino UNO и довольно стандартной для наборов макетки 8,5 на 5,5 см (400)

Download
UNO.zip
Compressed Archive in ZIP Format 198.6 KB

.

Arduino. Наборы. "Умный дом" от БХВ-Петербург

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

В свое время в наши руки попали наборы "Матрешка Z" от компании Амперка

По данным наборам много информации в сети, от себя могу сказать - отличный набор для освоения Arduino, красочная книжка с первичными проектами, отличная поддержка на сайте Амперки - wiki с интереснейшими материалами по электронным компонентам, описание проектов и т.д.
Для нас это была палочка-выручалочка в большинстве проектов по переделке/расширению возможностей робоплатформ на основе ScratchDuino. 

Но сегодня поговорим о другом наборе компонентов, сформированном по другому принципу, наборе "Умный дом" от издательства БХВ-Петербург. Вообще интересно, что издательство выпускает наборы с электронными компонентами, но потом понимаешь и логику процесса))). Дело в том, что основным компонентом наборов являются книги (чаще всего - лучшие, или одни из лучших в данной области), относящиеся к электронике и программированию. А дополнительный набор позволяет не просто читать книгу, но и проводить ряд экспериментов, создавать описываемые устройства, программировать. Согласитесь - довольно интересный подход. 
Итак, главное - книга!
В данном случае это книга Джереми Блюма «Изучаем Arduino: инструменты и методы технического волшебства». 

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

В дополнение к книге приложено руководство пользователя набора "Умный дом" с описанием ряда проектов, реализуемых на основе набора:
- универсальная сигнализация; 
- автоматизация освещения для растений домашнего сада; 
- управление освещением в квартире;
- включение устройств по «секретным хлопкам»;
- «умный дом» (устройство, охраняющее дом, управляющее освещением и напоминающее о необходимости проветривания комнаты в случае, если в ней становится душно). 

Понятно, что в соединении с многочисленными примерами, рассматриваемыми в самой книге Джереми Блюма - получается довольно значительная коллекция проектов.

Состав набора электронных компонентов:
x1 Arduino Uno 
x1 Макетная плата Breadboard 8,5 на 5,5 см 
x1 Датчик звука 
x1 Датчик движения HC-SR501 
x1 Датчик углекислого газа MQ-135 
x1 Модуль реле 4х 
x2 Светодиоды красные 
x2 Светодиоды зеленые 
x2 Светодиоды синие 
x2 Светодиоды желтые 
x1 Потенциометр 
x1 Фоторезистор 
x1 Пьезопищалка 
x2 Кнопки 
x8 Резисторы 220 Ом 
x1 Резисторы 10 кОм 
x15 Провода мама-папа 
x7 Провода папа-папа 
x1 кабель USB 

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

Книга и руководство предусматривают одну вариацию программирования - текстовый код в Arduino IDE. В принципе, это правильно, но все же мы хотим посмотреть и возможности создания аналогичных программ и в графических средах типа mBlock или Snap4Arduino. Об этих попытках, как и о наших замечаниях-пожеланиях по составу набора, я расскажу в последующих публикациях, когда мы на практике реализуем все описанные в книге проекты).