Будильник. Часть 1
Jan. 30th, 2016 12:30 pmПроект будильника пока еще не угас. За прошедшее время разработана схемотехника для адаптера SPI/LCD и управления LED лентой, виброзвонками, а так же RTC. Пришлось вспомнить как работать с Eagle CAD и развести плату. Размеры платы определены внешними габаритами Raspberry Pi и платы дисплея.
Для нормального 3D пришлось экспортировать плату в DipTrace и поискать 3D модели отдельных компонентов. Вообще, за время работы заинтересовался DipTrace, попробую ее изучить и сравнить удобство рисования схемы и разводки в ней с Eagle.
Хотя я довольно успешно делал односторонние платы методом ЛУТ, эта плата получилась двухсторонней и я буду заказывать ее на стороне. Как оказалось, сейчас в Китае празднование восточного Нового Года и до середины февраля соваться с заказами бесмысленно, поэтому есть время еще раз прошерстить схему и разводку на предмет ошибок и недочетов.
( +5 картинок )
Для нормального 3D пришлось экспортировать плату в DipTrace и поискать 3D модели отдельных компонентов. Вообще, за время работы заинтересовался DipTrace, попробую ее изучить и сравнить удобство рисования схемы и разводки в ней с Eagle.
Хотя я довольно успешно делал односторонние платы методом ЛУТ, эта плата получилась двухсторонней и я буду заказывать ее на стороне. Как оказалось, сейчас в Китае празднование восточного Нового Года и до середины февраля соваться с заказами бесмысленно, поэтому есть время еще раз прошерстить схему и разводку на предмет ошибок и недочетов.
( +5 картинок )
Будильник. Часть 0
Jan. 6th, 2016 11:23 pmНадеюсь, что написание постов по проекту поможет бороться с прокрастинацией и приведет к скорейшему успешному завершению проекта.

N-ое время назад появилась идея и необходимость создания специализированного будильника. Что меня не устраивало в обычных будильниках? Невозжность гибкого управления будильником, например, такого, как в Андроиде. То есть, возможность создания нескольких событий, возможность постановки события на паузу, управления по сигналу различными устройствами.
Что именно мне надо от будильника:
- создание нескольких событий, в том числе и повторяющихся по дням недели.
- постановка на паузу любого события
- защита от несанкционированного управления будильником
- управление несколькими независимыми исполнительным устройствами
- сохранение настроек в энергонезависимой памяти
- RTC
- подключения двух виброзвонков
- подключение RGB светодиодной ленты для симуляции рассвета
Приятные но не жизненно необходимые мелочи:
- подключение светового источника (типа лампы-вспышки)
- звуковой сигнал
Было решено максимально использовать устройства уже имеющиеся в наличии. Выбор пал на 3.2 LCD touchscreen на базе контроллера SSD1289 и Raspberry Pi B. Были мысли об использовании STM32, но отпугнула сложность создания качественного графического интерфейса. Этот вариант до конца не отвергнут, и, возможно, вторая версия будильника будет собираться именно на базе STM32. Пока же решил ограничится Raspberry Pi. В качестве языка программирования выбран Python - заодно и научусь на нем программировать.
Однако, прежде чем начать заниматься будильником, не плохо было бы выяснить, а сработается ли Малинка с данным экраном. Как показало гугление, да, этот экран (и многие ему подобные) вполне себе работают сообща с Raspberry Pi. Но если они где-то там и работают, то не факт что они заработают у меня. Для проверки пришлось собрать на коленке небольшую схему.
Данный экран работает с 16-битной параллельной шиной, touchscreen же общается с окружающим миром по протоколу SPI. Если сложить количество выводов необходимых для управления экраном и тачскрином, то полученное число превышает количество GPIO у моей версии Raspberry Pi, да и у Raspberry Pi 2. Можно было поступить хитрее - купить новый дисплей и подключить его через HDMI разъем. Но, как говорилось выше, хочется обойтись тем, что имеется в закромах.
Дальнейшее гугление привело к довольно старой схеме-адаптеру, которая преобразует сигналы протокола SPI в необходимые нам 16 бит. Нашлось несколько более-менее похожих схем. Однако электрическая схема - это далеко не единственное необходимое условия для успешной работы. Нужен драйвер как экрана, так и тачскрина. Это предполагало использование или кастомного ядра или сторонних драйверов. Я решил остановится на сторонних драйверах (FBTFT).
Для подключения собрал схему на 74HC4040/74HC4094. Но... она не заработала. Как оказалось, для использования с драйверами FBTFT нужно несколько видоизменить исходную схему, заменив одну из 74HC4094 на простой инвертор 74HC04. Причем 100% рабочей схемы не было приведено, скорее это были идеи на тему. Поэтому пришлось комбинировать несколько схем. После нескольких часов мучений с новой схемой, она заработала, что и видно на заглавной фотографии. Причем заработал как и экран, так и тачскрин. Одной из проблем оказалось наличие нескольких схем именования выводов Raspberry Pi. Их существует по крайней мере 3 штуки.
Итак, подтверждена работоспособность связки Raspberry Pi и экрана, следовательно можно начинать непосредственную разработку устройста и его ПО.

N-ое время назад появилась идея и необходимость создания специализированного будильника. Что меня не устраивало в обычных будильниках? Невозжность гибкого управления будильником, например, такого, как в Андроиде. То есть, возможность создания нескольких событий, возможность постановки события на паузу, управления по сигналу различными устройствами.
Что именно мне надо от будильника:
- создание нескольких событий, в том числе и повторяющихся по дням недели.
- постановка на паузу любого события
- защита от несанкционированного управления будильником
- управление несколькими независимыми исполнительным устройствами
- сохранение настроек в энергонезависимой памяти
- RTC
- подключения двух виброзвонков
- подключение RGB светодиодной ленты для симуляции рассвета
Приятные но не жизненно необходимые мелочи:
- подключение светового источника (типа лампы-вспышки)
- звуковой сигнал
Было решено максимально использовать устройства уже имеющиеся в наличии. Выбор пал на 3.2 LCD touchscreen на базе контроллера SSD1289 и Raspberry Pi B. Были мысли об использовании STM32, но отпугнула сложность создания качественного графического интерфейса. Этот вариант до конца не отвергнут, и, возможно, вторая версия будильника будет собираться именно на базе STM32. Пока же решил ограничится Raspberry Pi. В качестве языка программирования выбран Python - заодно и научусь на нем программировать.
Однако, прежде чем начать заниматься будильником, не плохо было бы выяснить, а сработается ли Малинка с данным экраном. Как показало гугление, да, этот экран (и многие ему подобные) вполне себе работают сообща с Raspberry Pi. Но если они где-то там и работают, то не факт что они заработают у меня. Для проверки пришлось собрать на коленке небольшую схему.
Данный экран работает с 16-битной параллельной шиной, touchscreen же общается с окружающим миром по протоколу SPI. Если сложить количество выводов необходимых для управления экраном и тачскрином, то полученное число превышает количество GPIO у моей версии Raspberry Pi, да и у Raspberry Pi 2. Можно было поступить хитрее - купить новый дисплей и подключить его через HDMI разъем. Но, как говорилось выше, хочется обойтись тем, что имеется в закромах.
Дальнейшее гугление привело к довольно старой схеме-адаптеру, которая преобразует сигналы протокола SPI в необходимые нам 16 бит. Нашлось несколько более-менее похожих схем. Однако электрическая схема - это далеко не единственное необходимое условия для успешной работы. Нужен драйвер как экрана, так и тачскрина. Это предполагало использование или кастомного ядра или сторонних драйверов. Я решил остановится на сторонних драйверах (FBTFT).
Для подключения собрал схему на 74HC4040/74HC4094. Но... она не заработала. Как оказалось, для использования с драйверами FBTFT нужно несколько видоизменить исходную схему, заменив одну из 74HC4094 на простой инвертор 74HC04. Причем 100% рабочей схемы не было приведено, скорее это были идеи на тему. Поэтому пришлось комбинировать несколько схем. После нескольких часов мучений с новой схемой, она заработала, что и видно на заглавной фотографии. Причем заработал как и экран, так и тачскрин. Одной из проблем оказалось наличие нескольких схем именования выводов Raspberry Pi. Их существует по крайней мере 3 штуки.
Итак, подтверждена работоспособность связки Raspberry Pi и экрана, следовательно можно начинать непосредственную разработку устройста и его ПО.
Помигаем светодиодом
Dec. 29th, 2015 10:38 pmНаверное первое, с чего начинают знакомство с современными железом, это мигание светодиодом. Не обошла сия участь и меня. Правда, это задание было выполнено в рамках курса обучения программированию на Python для Raspberry Pi. Отличие от классического мигания в том, что светодиод должен мигать при ненажатой кнопке и непрерывно гореть при нажатой кнопке. Код на Python не показываю по одной простой причине - стыдно :) Это обычный бесконечный цикл без использования прерываний и т.п.