четверг, 29 января 2015 г.

Осваиваем "умный дом". Часть 2: железо

Идея аккуратно разложена на бумаге, "вдохновившие" компоненты разложены рядышком...


Термометр


Начать я решил с термометра. "Мозгом" будет ATmega8 - немного жирновато, но зато с аппаратным I2C и довольно маленькая по размеру. В качестве термодатчика используем LM75AD - на момент покупки был одним из самых дешёвых температурных датчиков в Терре.

Интерфейсной микросхемой UART-RS485 будет AD1485, тоже одна из самых дешёвых.

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

Всё это добро совершенно бесхитростным образом разбрасываем по плате, разве что термодатчик расположим подальше от остальных микросхемок, которые вполне могут подогреваться. Разводим по одной стороне платы, остаётся три проводка, ну да и ладно. Проверяем игловским DRC на тему, где дорожки могут слипнуться, машем рукой на неизбежно необходимое.
Печатаем, травим, сверлим, лудим.


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

На плате два разъёма для RS-485, они равнозначны и таким образом линию можно продолжать по топологии "шины", последовательно соединяя устройства.

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



Такой термометр сложновато спрятать куда-то в интерьере дома, но это только начало. Скорее всего, в дело пойдёт комбинированный датчик, который по сути будет адаптером Modbus - 1-Wire, к которому подключится гирлянда из DS18S20 или чего-то в этом духе. Для "пробы пера" и начальных игр с сенсорной системой такой датчик, на мой взгляд, подходит довольно неплохо. Тем более, что он сделан из того, что нашлось в загашниках, а это особенно ценно, не пришлось откладывать в долгий ящик.

Адаптер для Cubietruck


Теперь самое время заняться адаптером для Cubietruck. Вот так это выглядит в конечном итоге.
 

На миниатюрной плате, держащейся на одном винте, разместилась микросхема-адаптер AD1485, резисторы подтяжки и терминальный резистор RS-485 (подключаются и отключаются двумя джамперами на ближнем плане), разъём питания линии 5В, интерфейсный разъём от Cubietruck и селектор питания (от интерфейсного или отдельного разъёма). Поскольку Allwinner A20 работает на 3.3В и его выводы к 5В не толерантны по документации (хотя по факту продержались сутки с 5В на входе без проблем), на выход AD1485 лепим схему для понижения напряжения. Так как при выключенном приёмнике выход "повисает в воздухе", простого делителя напряжения не хватит. Пришлось городить неинвертирующую схему с одним PNP (sic!) транзистором.


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

К слову, на самом Cubietruck использован интерфейс UART3 (он выведен на одну из колодок), в качестве сигнала переключения приёмопередатчика традиционно для RS-485 использована ножка RTS.

Когда железо готово, здорово бы поскорее взяться за софт. Но об этом в следующей статье.

Комментариев нет:

Отправить комментарий