LINUX.ORG.RU

220 вольт, Luci, OpenWRT и сильно кастомная хардваря

 , , , ,


4

1

Собственно, приспичило сделать себе на даче сделать для небольшой нагрузки розетки, которые можно включать/выключать/ребутить с компа. Покопавшись в хламе откопал релешки, тайни2313, и старенький wl520gu, куда вполне себе можно залить OpenWRT. Все это я укомплектовал парой самодельных печаток, щедро покрытых полиуретаном, и запихнул в пластиковый короб, который на аллюминиевых уголках уходит под полку, и становится вообще невидим. От него до розеток все идет в коробах. Итого, в коробе присутствуют: Блок реле, винтовая колодка для разводки 220 вольт, плата с attiny2313, 9-вольтовый блок питания (кишки оного). Пятивольтового не оказалось под рукой. зато валялся самопальный ненужный dc-dc настраиваемый на LM2596, его я туда и воткнул. Так же там сидит роутер. USB гнездо я отпаял, и поставил туда хаб. С боку я влепил гнездо под плавкий предохранитель (рыжее, советское).

У чипа brcm47xx, который стоит в wl520gU есть неприятный баг в кремнии, из-за которого нельзя работать с 1.1 usb девайсами - все повисает после пары транзакций. Говорят, проблема из-за того, что какой-то там клок неправильный идет на 1.1. Потому я поставил 2.0 хаб (под рукой оказался только самопальный брейкаут хаба Fe1.1s, который собирал для тестов этой микросхемы, сильно привередливая, как оказалось, работоспособность очень здорово зависит от положения развязки по питанию). Хаб делает TT (transaction translation) и бага успешно обходится.

Собственно, внутрь 2313 зашивается vusb стек и три строчки кастомного кода, уложился в 1700 байт из 2кб, а на хосте начинается шаманство. Так как писать под каждый проект заново комманд-лайн утилиту на С задалбывает, я заюзал lualibusb, и написал вот такой костыль: https://github.com/nekromant/lunartool он берет на себя рутину типа матчинга по vid/pid, разруливания случаев нескольких устройств, парсинг комманд-лайн опций и прочую рутину. А сам же код добавляется в виде аплетов вот такого содержания: https://github.com/nekromant/lunartool/blob/master/applets/pw-ctl.lua и это превращается в простую утилиту командной строки. Так как в самом OpenWRT активно юзается lua для LuCi, оверхед был минимальным, и я уместился в 3300 кбайт из 4х мегабайт флеша. Заниматься любовью с extroot совершенно не хочется, ибо гемор при обновлениях. Достаточно залогиниться по ссх, и вуоля:

pw-ctl --on=1
pw-ctl --off=4
pw-ctl --reboot=1

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

В планах заменить хаб на более цивильный, выпилить dc-dc и блок 220-->9 вольт и заменить на один блок 220-->5.

Вот и все, осталось только смонтировать до конца.

>>> Просмотр (3000x1080, 495 Kb)

★★★★★

Проверено: DoctorSinus ()

Для «умного дома» прекрасное устройство. Ещё бы контролировать расход электроэнергии.

CYB3R ★★★★★ ()
Ответ на: комментарий от CYB3R

Сейчас как вкурю до конца julius и запилю компилятор грамматики для него, оно мне еще по голосовым командам щелкать будет =)

AiFiLTr0 ★★★★★ ()
Ответ на: комментарий от AiFiLTr0

Команду экстренного уничтожения харда не забудь :)

CYB3R ★★★★★ ()

А как у такого решения с пожаробезопасностью?

vasily_pupkin ★★★★★ ()
Ответ на: комментарий от vasily_pupkin

Ну там стоит плавкий предохранитель, пока на 1А, другого не было под рукой, на апстриме стоит автомат на 10А. Сами 220 треки я сделал толстыми, на них налил очень много припоя, так что вышло чуть ли не толще, чем сам провод который туда идет, и покрыл полиуретаном в три слоя. Ну и, ясен хрен, этот треш unattended работать не будет. Единственное что меня смущает, винтовые колодки, ибо х.з. на какую ток/напругу их китаезы рассчитывали.
Для финального варианта я уже буду заказывать печатные платы, выпилю импульсный БП и воткну советский трансформатор со своим DC-DC. Но это в следующий заход, пока только софт отладить. Ну и прятать это буду уже в люминиевый ящик. P.S. И да, скажу вам, воняет же этот полиуретан.

AiFiLTr0 ★★★★★ ()
Последнее исправление: AiFiLTr0 (всего исправлений: 2)

В следующий раз потребуются фотки дачной мастерской, просто интересно как место организовано

DR_SL ★★★★ ()

Здорово. Отправил ссылку на твой пост киповцу (КИПиА) на работу. Он типа тебя умелец. Творит чудеса.

nihil ★★★★★ ()

как будешь применять? отпугиватель воров или система полива-отопления?

bioreactor ★★★★★ ()

вам еще никто не говорил что вам пора делать бизнес по созданию умных домов?

ZuBB ★★★★★ ()
Ответ на: комментарий от bioreactor

Все прозаичнее. включить на фиксированное время лампу УФ для засветки, ребутнуть по расписанию борды. Еще принтеры через эти розетки подрублю, ибо задрали механикой дергать при подаче питания. Буду врубать только когда чего напечатать надо.
Ну и платы ребутить, ежели работаю, штатно перегрузить плату из скрипта, настрить убут, открыть миником.

AiFiLTr0 ★★★★★ ()

Мужик. Это вам не гвоздь вбить...

Axon ★★★★★ ()

... и не рабочий стол пилить. Если не секрет, чем в качестве основной работы занимешься ?

markontheboard ()

В браузере не очень, а в остальном — хорошо.

Eddy_Em ☆☆☆☆☆ ()

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

GreenBag ★★ ()

Это ппц, про хаб вообще офигел. А что за transaction translation? Инкапсуляция usb 1.1 кадров в usb 2.0?

Собственно, внутрь 2313 зашивается vusb стек

VUSB - это, мягко говоря, не ынтерпрайз. Может весьма глючить, я бы рекомендовал использовать usart-usb (на pl-2303, какой-нибудь кабель в связном старый купи. они их распродают по 50-150 руб, я себе сразу купил все, что оставались, очень удобно, стабильно и трахаться не надо). Кстати, ты каким образом VUSB с вызовом конечного кода совместил? Через HID и его конечные процедуры или через эмуляцию com-порта?

и я уместился в 3300 кбайт из 4х мегабайт флеша.

200 рублей на 8гб флешку религия не позволяет потратить? :) Было бы куда удобнее. Мало того, dd-wrt, вроде, может не просто как opt её юзать и пакеты туда ставить, а ещё полностью грузиться с неё, но это непроверенная инфа.

Про DC-DC вообще изврат, т.к. 220->5v это есть любой USB-зарядник или питальник для USB-хаба, ещё часть роутером использует 5v. Правда, т.к. тут релешки, я бы взял на 500мА, не меньше. Пусть лучше с запасом будет.

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от AiFiLTr0

Буду врубать только когда чего напечатать надо.

Отличный метод высушить головы.

включить на фиксированное время лампу УФ для засветки

Засветки чего?

ребутнуть по расписанию борды

Борды? Что это? Бредборды, что ли? :)))

Я рекомендовал бы поставить пожарные датчики (оптические на задымление), термодатчики по 1-wire, а также датчики протечек (два контакта с транзистором. можно использовать ключ 1-wire в режиме чтения или подвести напрямую).

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от ktulhu666

VUSB - это, мягко говоря, не ынтерпрайз. Может весьма глючить, я бы рекомендовал использовать usart-usb (на pl-2303, какой-нибудь кабель в связном старый купи. они их распродают по 50-150 руб, я себе сразу купил все, что оставались, очень удобно, стабильно и трахаться не надо). Кстати, ты каким образом VUSB с вызовом конечного кода совместил? Через HID и его конечные процедуры или через эмуляцию com-порта?

Я на нем овер 10 девайсов делал, ни разу проблем со стабильностью не было. И не надо трахаться с синхронизацией обмена, так как USB стек гарантирует доставку сообщения. С ним все тупо. вендор класс и пара контрол трансферов на 0 эндпойнт на вывставление состояния, чтение и сохранение в еепром дефолта.

и я уместился в 3300 кбайт из 4х мегабайт флеша.

200 рублей на 8гб флешку религия не позволяет потратить? :) Было бы куда удобнее. Мало того, dd-wrt, вроде, может не просто как opt её юзать и пакеты туда ставить, а ещё полностью грузиться с неё, но это непроверенная инфа.

Написал же русским по белому, не хочу с extroot'ом мучаться и лишнюю сущность. и так все умещается. А dd-wrt не пользую, предпочитаю опенврт, ибо удобнее.

Про DC-DC вообще изврат, т.к. 220->5v это есть любой USB-зарядник или питальник для USB-хаба, ещё часть роутером использует 5v. Правда, т.к. тут релешки, я бы взял на 500мА, не меньше. Пусть лучше с запасом будет.

Делал из того что было под рукой. Потом поменяю. Зато до 3А тянет. К тому же вход питания роутера, который теперь выход я буду юзать для подключения еще пятивольтовой нагрузки.

AiFiLTr0 ★★★★★ ()
Ответ на: комментарий от ktulhu666

Отличный метод высушить головы.

У лазерника?

Засветки чего?

Фоторезиста.

Борды? Что это? Бредборды, что ли? :)))

С которыми работаю. не ручками же перегружать и убут настраивать.

Я рекомендовал бы поставить пожарные датчики (оптические на задымление), термодатчики по 1-wire, а также датчики протечек (два контакта с транзистором. можно использовать ключ 1-wire в режиме чтения или подвести напрямую).

unattended оно работать не будет. Для подключния датчиков эта конструкция так же не предназначена, датчики вообще будут раскиданы по дому с самодельным мешем на nrf24l01. и это совсем другая история.

AiFiLTr0 ★★★★★ ()
Ответ на: комментарий от ktulhu666

Ах да, pl2303 в два раза удорожит BOM. Дешевле тогда уж STM32 самый дешевый взять.

AiFiLTr0 ★★★★★ ()

Очень годный скрин. Особенно на фоне прочего говна. Одобряю.

andreyu ★★★★★ ()

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

devl547 ★★★★★ ()
Ответ на: комментарий от devl547

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

AiFiLTr0 ★★★★★ ()
Ответ на: комментарий от AiFiLTr0

Я на нем овер 10 девайсов делал, ни разу проблем со стабильностью не было. И не надо трахаться с синхронизацией обмена, так как USB стек гарантирует доставку сообщения. С ним все тупо. вендор класс и пара контрол трансферов на 0 эндпойнт на вывставление состояния, чтение и сохранение в еепром дефолта.

У тебя USB watchdog программный в коде перезагружает девайс (или ты уже научил его корректно переинициализировать USB-стек без перезагрузки?) в случае таймаута на USB. Этот таймаут может быть вызван как наводками, так и тупящей ОС. В твоём случае это приведет к отключению всех устройств на реле, а теперь представь, что было бы, если бы такой девайс контролировал подачу электроэнергии к нескольким квартирам в доме? :)

Что касается PL-2303, то, как я уже сказал, готовый usart-usb кабель будет стоить 50-150руб. Тебе не кажется, что это крайне низкая цена отсутствие нескольких часов траха с V-USB на стороне МК и компа? :) Мало того, полная совместимость с любыми ОСями и даже девайсами, у которых вообще нет USB, а только COM-порт (тут нужна будет MAC232. но пофиг). Мало того, это значильно упрощает программу. Что касательно пропаданий пакетов, то на 30см кабеля это маловероятно. А в случае, если важно, то можно легко реализовать эхо со стороны МК. Либо эхо, затем подтверждение, затем action.

Написал же русским по белому, не хочу с extroot'ом мучаться и лишнюю сущность. и так все умещается. А dd-wrt не пользую, предпочитаю опенврт, ибо удобнее.

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

По поводу mesh-сети датчиков. У тебя уже есть прототип? Интересно было бы на это посмотреть. Особенно, если это реально самоорганизующаяся динамическая mesh.

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от ktulhu666

У тебя USB watchdog программный в коде перезагружает девайс (или ты уже научил его корректно переинициализировать USB-стек без перезагрузки?) в случае таймаута на USB.

Мне как-то ни разу не доводилось ловить таймаут/наводки, хотя с vusb я уже года три как работаю плотно. А этой переключалке у меня 4 блока питания лабораторных сделано и еще несколько приблудин. Даже на трех метровом кабеле во время отладки я ни разу не словил таймаута. Только если в девайсе крутится много кода, и оно не успевает достаточно часто делать usbPoll(), тогда да. возможны артефакты.
Единственное но, я на соседнюю линию добавил еще pulldown на 1к5, без него Fe1.1s не обнаруживал девайс если его не перетыкать.

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

Я для control_msg выставляю таймаут 6 секунд, брал от балды с большим запасом. Это раз. Два, траффик идет только когда щелкаем аутлетами/получаем статус аутлета. То есть если устройство не трогать, можно вообще после энумерации оставить подтяжку и забрать контроллер нафиг (проверял, как-то. девайс фантомный сутки в lsusb висел)

AiFiLTr0 ★★★★★ ()

Годнота то какая. И костыль ваш пригодится. Благодарствую.

DrF ()
Ответ на: комментарий от AiFiLTr0

Кстат и я иногда такой трюк делал. Шедулю запросом по усб долгую операцию, во время которой usbPoll() не вызывается, но зная наперед что она займет допустим не больше чем 10 секунд, через 10 секунд спокойно читаю ответ. То есть реально девайс отваливается на это время от усб, но «отряд не заметил, как боец отошел на пару минут в кусты».

AiFiLTr0 ★★★★★ ()
Последнее исправление: AiFiLTr0 (всего исправлений: 1)

Ого! Круть. Мне до таких скиллов ещё прокачиваться и прокачиваться. Пока только через arduino релюшками щёлкаю через bash скрипт.

Респект!

Belomir ()

Щикарно

$subj;

А я уже забыл, когда брал в руки паяльник...:( вот так и деградируют инженеры...

dhameoelin ★★★★★ ()
Ответ на: комментарий от AiFiLTr0

И да, скажу вам, воняет же этот полиуретан.

хорошую вещь множественным уретаном не назовут =)

val-amart ★★★★★ ()

Интересное устройство, много применений у него!

Сам недавно купил wifi маршрутизатор TP-Link чтоб поиграться с OpenWRT. Вчера прошил, нравится!

jekader ★★★★★ ()

у меня от твоего «тайни» глаза кровью облились. тини2313.

bernd ★★★★★ ()

да и нахрена там усб ваще. на роутерах обычно есть пара дырочек с UART, которые можно классно посношать. да и свободные GPIO можно поискать и порулить ими. хрень, а не решение.

bernd ★★★★★ ()
Ответ на: комментарий от bernd

тини2313

КЛБ! Быстро, решительно.

да и нахрена там усб ваще. на роутерах обычно есть пара дырочек с UART, которые можно классно посношать.

А консольку куда выводить? В атсрал? С усб проще в разы. И переносимее. К тому же там будут еще девайсы.

да и свободные GPIO можно поискать и порулить ими. хрень, а не решение.

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

AiFiLTr0 ★★★★★ ()
Ответ на: комментарий от AiFiLTr0

Ты, кстати, так и не ответил по поводу mesh-сетки датчиков.

И да - тебя не затруднит выложить исходники (включая разводку плат и проект в протеусе, если есть) по данному проекту (дергать реле по usb)? Мне, вдруг, захотелось ознакомиться с нативным V-USB (а не его псевдоустройствами), на готовом примере будет куда проще, думаю. Можно тупо выложить на какой-нибудь rghost или другой простой обменник, если лень морочиться с гитхабом, я не привередлив (хотя, бесспорно, гитхаб лучше, т.к. всякие аноны тоже смогут посмотреть, и файлы не умрут через несколько дней).

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от ktulhu666

mesh у меня в тяжелом WiP состоянии, нет пока времени допилить. Основа nrf24l01. Как допилю - будет у меня шитхабе в составе antares библиотекой.

Исходники клиента (луа) в шапке.
Фирмварю выложил сюда: https://github.com/nekromant/tinypowerswitch
Она юзает мою вундерсистему сборки, которая сейчас в состоянии преальфы. Для сборки нужны gperf, bison, flex и avr-toolchain.

Сборка: make (оно скачает antares)
make menuconfig
Дефолтный рабочий конфиг идет в комплекте, опционально в menuconfig'е настроить vid/pid и дескрипторы usb девайса, поднастроить пины. Идентичные устройства подцепленные к одному хосту различаются по сернуму.
Настройки vusb в libraries -> vusb stack
В деплое врубить аврдудку, и выставить программатор.
сборка - make build
прошивка - make deploy
Сам хекс складывает в images/

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

AiFiLTr0 ★★★★★ ()
Ответ на: комментарий от AiFiLTr0

Спасибо.

Как я понял, она не умеет симуляцию, тем более, проброс виртуального USB в систему и COM-порта. А если ты говорил только про разводку плат, то я юзаю eagle.

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

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от ktulhu666

Как я понял, она не умеет симуляцию, тем более, проброс виртуального USB в систему и COM-порта.

Эээ, ты про что? cdc профиль на авр не комильфо, ибо не по стандарту и с некоторым хостконтроллерами/хабами не работает. Там обычные control_msg

Трассировщик юзаю кикад, ибо оно скриптуется. Для авторазводки можно экспортировать из PCBnew через спектру в autoroute, ToPoR. Но я обычно сам развожу. Сейчас вот взял погонять ваком, понравилось. Буду на нем теперь все разводить.

AiFiLTr0 ★★★★★ ()
Ответ на: комментарий от AiFiLTr0

Под симуляцией я имею в виду симуляцию всей схемы, как она работала бы на самом деле. Протеус подерживает полную симуляцию, включая аналоговые усилители и подключение виртуального осциллографа. Симулирует (не симулируя внутренние схемы, только логику, естественно) множество МК, ARM, RAM, Flash. Мне кажется, ты не недооцениваешь его мощь, особенно это касается возможности сразу соединить проект со своей программой по USB или COM, а также понатыкать кучу осциллографов. Единственное, у протеуса есть багофитча: МК там не требует обвязки, а тактовая частота у него задается в настройках.

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от AiFiLTr0

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

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от ktulhu666

Ааа, ты про это. как по мне, такая симуляция имеет смысл только для аналоговых или радиочастотных проектов, но помоему с RF там все не шибко хорошо, для этого свой софт есть.
Либо для случаев когда надо тащить DDRII\DDRIII и считать разбежки линий, помехи и прочие радости высокочастотного интерфейса.
С авркой, у которой потолок 20 мегагерц на оверклоке это нахрен не надо. Ее на любом куске говна собери соплями - работать будет.
Дебужить 2 килобайта ПО на таким симуляторе - пустая трата времени. Его надо писать сразу для железки и в рабочем виде.

AiFiLTr0 ★★★★★ ()
Последнее исправление: AiFiLTr0 (всего исправлений: 1)
Ответ на: комментарий от ktulhu666

Просто комп разобран и стол отодвинут, ибо короба перепрокладываю. И делать времянку не хочется.

AiFiLTr0 ★★★★★ ()
Ответ на: комментарий от AiFiLTr0

Дебужить 2 килобайта ПО на таким симуляторе - пустая трата времени. Его надо писать сразу для железки и в рабочем виде.

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

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от ktulhu666

Ну да, для начинающих весьма полезная фича, но не более. Сейчас к сожалению проектов таких нет, к которым это бы пригодилось. Либо делаю 100% дубово работающее, как сабжевый проект. А если что-то сложное, то я более чем уверен, что у протеуса таких моделей нет и не будет в в обозримом будущем. (С ходу - у них там найдутся модели для Fe1.1s , RTL8196C, RTL8192CUS, STC12Fxx контроллеров ? ) Единственно чего мне не хватает в кикаде - это инструментов для подгона разбежек дорог, ибо без этого DDRII разводить проблемно.

AiFiLTr0 ★★★★★ ()
Последнее исправление: AiFiLTr0 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.