Пару недель назад я
задавал вопрос по поводу оборудования nooLite, на базе которого я собирался с детьми написать небольшую программку. Оборудование приехало, программку мы написали, сейчас о ней расскажу.
Но сперва - ответы на вопросы, которые задавали в комментах к предыдущему посту.
1. Почему nooLite, а не например Arduino или XXXX?
Во-первых, Arduino и прочие - это уже next level. Моя задача была в том, чтобы научить детей программированию на реальном примере. Глубокая возня с железом в этот проект не входила, а например для включения/выключения 220В через Arduino надо городить силовую обвязку. А для связи с ПК (там находится редактор расписания) надо добавлять к нему радиосвязь, передачу данных, и так далее - решение будет не таким уж простым и не таким уж дешёвым.
Во-вторых, у меня нет контактов директора Arduino, а контакты директора nooLite
есть на их сайте, да и сами они находятся в братской Беларуси, и говорят по-русски. То есть договориться "пришлите мне бесплатно вот эти пару девайсов, а я сделаю на них небольшой проект" с nooLite гораздо проще :)
2. Почему Delhi, а не например C#, Java или XXXX?
Потому что моя задача была в том, чтобы научить детей программированию. А я знаете ли последний раз программы писал в далёком 2009 году (и с тех пор ни строчки кода, ужс). И писал именно на Delphi, лет 10 подряд - то есть я его знаю лучше, чем другие языки. А чтобы учить кого-то, надо знать предмет очень глубоко. Так что выбора особого не было.
Это был обучающий, тренировочный проект. Нужно было по шагам пройти постановку задачи, проектирование, интерфейс, код, отладку - чтобы дети уловили суть этой профессии. Ессно масса задач, платформ и языков у них впереди.
3. А что собственно за проект?
Программа, которая включает и выключает школьные звонки по расписанию :) Сейчас в школе у сына всё по старинке - назначается дежурный ученик, который по часам жмёт кнопку. А за стенкой есть кабинет секретаря, у неё есть компьютер с WinXP, который включен с утра до вечера. Отсюда решение: на компьютере программа, которая висит в трее и звонит согласно заданному расписанию. В ней есть редактор расписания, настройка звонков - и собственно всё.
4. И как решали?
Delphi 7 (я знаю, что есть версии свежее, но я с ними не знаком, а значит см.выше), библиотека JEDI (впрочем из неё был использован только компонент для вывода иконки в трей) и пара моих модулей из прошлой жизни для работы с XML. Настройки и расписание программы мы храним в XML-фале, вот таком:
В принципе из него уже понятно, как работает программа :) В ней всего три окна.
Исходный код и собственно готовую программу
можно скачать здесь. Код местами писал я, а местами дети, над которыми я нависал и давал ценные указания. Напомню, что это первый их проект, мне нужно было показать им "как правильно", чтобы не тяп-ляп и по всем правилам. В следующих задачах им будет отдаваться всё больше инициативы.
Например железо они собирали самостоятельно, вплоть до паяния проводов (Артём раньше ходил на радиокружок и очень гордится полученными там ожогами).
На фото - процесс сборки розетки. Школьного звонка у нас дома нет, вместо него была взята старая настольная лампа, которую включали в розетку, а розетка привинчена к
силовому блоку nooLite SL111-300, который управляется по радиоканалу - т.е. фактически это радиовыключатель. Сигналы ему посылает
адаптер для компьютера PC118.
Поставляются они вот в такой упаковке (кубики для масштаба):
Внутри, кроме самих девайсов, компакт-диск с драйверами и инструкция.
У радиовыключателя два белых провода (вход 220В), два чёрных (выход 220В) и серая антенна. У напоминающего флешку адаптера с одного конца USB-разъём, с другого такая же антенна. Дальность связи - до 50 метров, у нас по задаче всего 5 метров, но через стену.
Главный плюс оборудования от nooLite - простота использования. Радиоканал на 433Мгц позволяет разворачивать сеть в любом помещении без укладки километров кабелей, штробления стен, уничтожения дорогостоящего ремонта. Связывание устройств производится нажатием на корпус радиовыключателя - он работает как кнопка. После этого у вас есть 15 секунд, чтобы на компьютере указать "да, я хочу привязать этот свисток к этому выключателю". Кстати, к одному выключателю можно привязать до 37 управляющих устройств: например управление с ПК, вкл/выкл напрямую, дистанционное с другого конца склада, ну и т.д. В более сложных версиях выключателей (например
SN111-300) есть градация напряжения на выходе (регулировка яркости), память состояния, сценарии и т.п. Но для нашей задачи был нужен простой радиовыключатель on/off.
Но это я отвлёкся.
На сайте nooLite есть примеры, готовые решения и наборы для "умного дома", так что всем интересующимся темой - туда. Я могу только подтвердить, что оборудование качественное и очень простое в использовании.
5. А дальше что?
А дальше этап внедрения :) Принципиальное согласие директора школы мы получили, остаётся только разобрать кнопку звонка, внедрить туда радиовыключатель, установить программу на компьютер секретаря (инсталлятор мы не делали, в другой раз), настроить и забыть.
Потому что дальше детям хочется сделать мобильное приложение под Андроид - тоже для школы, но не для звонков.
Пока всё :)