?

Log in

No account? Create an account

Previous 10 | Next 10

May. 11th, 2019

Прототипирование PCB ч.2

Получены платы.

Работой в целом доволен, никаких нареканий нет.

Платы были изготовлены за двое суток и сразу отправлены.
Мой заказ состоял из 20 различных плат.
Думаю, управились бы за сутки, если бы заказ был поменьше.

Вот фото, как обычно, сделано на мыльницу.

Apr. 30th, 2019

Шеф, все пропало(с)

Найдено на просторах интернета, море впечатлений.

5.5v 4.0F Ионистор и с чем его едят( небольшой тест ) (С)
https://www.youtube.com/watch?v=hvs6Vi7xJh8&t=118s

Apr. 23rd, 2019

Прототипирование PCB

На просторах интернета куча постов о различных производителей PCB (меня интересует только Китай).
Я потратил кучу времени, чтобы найти что-либо не устаревшее и адекватное, поэтому решил написать сюда, может быть кому-то будет полезным.

И так, ранее я пользовался услугами IteadStudio https://www.itead.cc.
Меня это устраивало до тех пор, пока я не решил полностью отказаться от услуг Почки Роиссии.
Проблема была в том, что адрес доставки должен был заполнить Китаец, который знает только Китайский, а сайт у IteadStudio на русском и английском. Сам я не решался, боясь накосячить с адресом.

Логично да, задать вопрос в поддержку Itead? Я задал.
Получил отписку, в которой твердо между строк читалось 'иди ка ты в пешее эротическое путешествие, сайт у нас только на английском'.

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

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

Было посещено множество сайтов производителей PCB в том числе даже смотрел на TaoBao.
И, хочется немного рассказать об SeedStudio https://www.seeedstudio.com/, очень обрадовался обнаружив у них привлекательный ценник и возможность выбирать цвет платы без добавочной стоимости.

Я даже потратил время, чтобы разместить там заказ из 24 типов PCB.
А еще нашел силы разобраться в иероглифах, и вместо Китайца заполнить форму доставки (сайт у этих Китайцев многоязычный, но китайского в списке нет).

В итоге прилетело откуда не ждали.
У меня вышло где-то 13 тыс. рублей за все PCB, плюс какой-то налог, и еще 12 тыс. рублей за доставку по Китаю!
1) один тип PCB весит ~0.3кг, у других я виел ~0.1кг.
2) доставка только sf-express (не думаю, что это самый лучший вариант для доставки внутри Китая).
3) каждый тип PCB рассматривается как отдельная посылка и стоит что-то около 600руб(внутри Китая)

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

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

Но все же я натнулся на AllPCB https://www.allpcb.com/ и пока эти ребята мне нравятся.
Я заказал 9 разных PCB размером 100x100мм, 10 штук каждого типа, двух сторонки, отдав за каждую $5 (там какая-то скидка), даже без скидки $10 против $19.90(IteadStudio).
Доставка тоже sf-express но посчитано все вместе, итоговый ценник вышел в $51.65

Отдельно хочется высказать свои подозрения по поводу IteadStudio.
Мне кажется, что это ни хрена не благородные товарищи.
Я подозреваю, что они собирают заказы различных DIY инженеров, изучают их, и передают заказ другим компаниям, типа как AllPCB.
1) У Itead есть линейка устройств Sonoff, согласитесь, очень удобно черпать идеи для своей линейки из заказов на прототипирование PCB.
2) Заказывая одну и туже плату с минимальными изменениями я часто сталкиваюсь с вопросами, которые должны были всплыть еще в первых версиях платы, также бывали отказы на прорезь в PCB для гальванической развязки, хотя раньше резали а также тут-же режут в других платах. Т.е. наблюдается какой-то хаос в требованиях.
Иногда даже видно, что платы изготовлены по разному. Но главное - вопросы, не всегда сразу озвучиваются вопросы которые необходимо решить при изготовлении (вроде как на чертеже не все видно). Похоже подрядчики задают эти вопросы, но Itead'у бывает лень их адресовать мне - решают сами.

Так что смотрите в сторону AllPCB, по моему все у них хорошо.

Как придут платы - дополню пост.

Update: А да, еще по поводу AllPCB: Order Time:2019/4/22 13:24:27 Estimated Shipping Time:2019/04/24
Сколько у Itead? Неделя?

Nov. 30th, 2018

Основные функции сервера

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

Здесь описан функционал именно сервера, много другого функционала будет описано при рассмотрении остальных узлов системы.

1) Сбор статистики с возможностью выгрузки с агрегацией за час, день, неделю и детальной за любой период
2) Передача команд контроллеру, далее конечным устройствам, с гарантией доставки данных и таймаутом. Реализован механизм обратной связи клиента - вы всегда будете знать выполнена ваша команда или нет.
3) Лог истории действий над исполнительным устройством, а также API для его выгрузки.
4) Хранение проекта с поддержкой версионности (частичная реализация), здесь же механизмы оффлайн редактирования проекта с защитой от одновременного редактирования несколькими пользователями и полноценного информирования.
5) Обеспечение связи всех узлов, узлы могут быть в локальной сети(за натом). Никаких статических внешних IP и настроек NAT не требуется. Также гарантируется передача информации между узлами без задержек за исключением действительных проблем с сетью.
6) Кроме механизмов передачи команд контроллеру и показаний клиенту реализован механизм заявок как мгновенных (синхронных) так и без ожидания ответа (асинхронных), в том числе и односторонних.
7) Возможность изменения 'на лету' некоторых данных проекта, не существенных для контроллера, например название исполнительного устройства.
8) Механизмы взаимодействия клиента с сервером не зависят от состояния контроллера. К примеру, настройки проекта активируются даже если контроллер в данный момент недоступен.
9) Возможность привязки к проекту локаций другого проекта.
10) Поддержка неограниченного количества пользоваетелей  с одновременным использованием устройств и функционала.
11) Разграничение доступов как на уровне локаций так и на уровне конечных устройств.
12) Профили пользователей, полный функционал - смена паролей, подтверждение email, ФИО, контактные данные и т.п.
13) Поддержка сценариев как независимого функционала от проекта, пользователь может иметь доступ к сценариям не имея доступа к редактированию проекта, в том числе когда проект кем-то редактируется.
14) Поддержка сторонних сервисов, таких как Алиса, Telegram и SMS(частичная реализация)
15) На базе п.6, возможность организации моста между клиентом и контроллером(далее интерфейсом конечного устройства - к примеру моста TCP/IP c хоста клиента в интерфейс RS232 конечного устройства)
16) Широкие возможности информирования, в клиент, email, Telegram, SMS(частичная реализация)
17) Наблюдение за доступностью узлов - возможность информирования при потери связи с контроллером и т.п.
18) Много языковая поддержка(частичная реализация).
19) Вся служебная информация хранится в виде словарей, которая обновляется налету и не требует обновления контроллера или клиента. Т.е. обновлять эти узлы необходимо только в случае значительных изменений функционала узла, такие изменения, как ввод новых устройств в систему обновления не требуют.

При этом обращаю внимание, что проект постоянно дорабатывается, т.е. функционал постоянно растет по мере необходимости.

Просто картинка клиента v.0.26.0

Зачем использовать мое решение, а не Arduino?

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

Конечно изучаем рынок, и вполне вероятно что-то находим, что недорого выполняет все наши пожелания. Но конкретно здесь рассматривается конкретный пример между Arduino и моим проектом.

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

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

Однако, здесь есть ряд проблем, которые на первых шагах не заметны:
1) Нам нужно найти решение, которое будет хранить нашу статистику и позволять как-то с ней работать, а если захочется реализовать удаленный доступ к управлению?
2) Если Ардуин несколько, как они будут взаимодействовать? Особенно на расстояниях в несколько метров. Используем дополнительные платы расширения а с ними что, разрабатываем протокол? Все еще простая задача? Не забываем, что нужно учесть кучу проблем взаимодействия, что если данные не дошли к примеру?
3) А если все на одной Ардуино? Хорошо, а у вас получится обвязать несколько портов управления с одновременным опросом датчиков и других элементов системы? А организовать интерфейс во внешний мир и корректную выгрузку данных скажем в БД и тому подобное? Кстати этот-же вопрос актуален и для первого пункта.
Вот тут уже большие сомнения в простоте решения таких задач.
4) Ну хорошо, возьмем миникомпьютер, что-то типа RaspberryPi. Дружим его с Ардуино и все замечательно, решаем кучу проблем, пишем на чем угодно, пусть даже на Go или PHP, или вообще BASH скрипты используем. Достаточно простая задача для программиста. Стоп, нам нужны программисты... причем постоянно, в каждом изменении решения нам нужен будет программист, ну и схемотехник вероятно. В общем берем двоих в штат....

Разрешите откланяться...

Nov. 28th, 2018

О проекте (периодически обновляется)

Приветствую.

Похоже мне стоит кратко описать свой проект.

Проект представляет собой конструктор, под этим термином подразумеваются следующие особенности:
1) Широкая поддержка различных производителей и их устройств.
В проект заложены основы позволяющие его дополнять поддержкой сторонних устройств, в том числе сделанных своими руками.
2) Широкие возможности настройки подключения устройств.
Проект поддерживает большой набор различных интерфейсов подключения. Позволяет подключать конечные устройства через большое количество шлюзов, как простых так и с дополнительно настраиваемой логикой.
3) Контроллер (основной локальный узел управления конечными устройствами) может быть развернут на любом компьютере поддерживаемом Java 6 и выше (это может быть настольный компьютер, сервер, мини компьютер и даже в будущем Android устройство).
Проект позволяет выполнить поддержку всех интерфейсов подобных устройств при этом пользовательский интерфейс описания данных подключений достаточно понятный и не требует специфичных знаний.
4) Возможность как локального подключения клиента к контроллеру, так и облачного, что дает широкие преимущества, как например информирование, сбор статистики и удаленное управление.
5) Финансовая выгода - основные компоненты проекта бесплатны, платными будут дополнительные сервисы, как например разработка доп. функционала под заказ, использование дополнительных веб сервисов, аренда дискового пространства под статистику или разработка нового устройства.
6) Проект не потребует от вас специфичных знаний в электронике или знаний программирования, все достаточно просто и понятно. Однако подразумевается, что Вы имеете некоторое представление в области автоматизации.
7) В рамках проекта также разрабатываются недорогие устройства с существенными особенностями в сравнении с аналогами на рынке.


Основными компонентами проекта являются:
1) Удаленный сервер.
Предоставляет облачное решение (авторизация пользователей,  удаленное управление, мониторинг, сбор статистики и ее выгрузка, информирование, виртуальные контроллеры и тому подобное)
Сервер не распространяется, права на его использование есть только у меня и у компании 'Dipex group'.
На текущий момент заложены три площадки - официальная dipexlab, студентческая dipexlab и моя, для DIY инженеров.

2) Java контроллер.
Программное обеспечение которое можно развернуть практически на любом устройстве поддерживаемом Java 6 и выше.
Размещается на сайте вместе с устройствами автоматизации. Выполняет опрос устройств, управление (в том числе и по заложенным сценариям), передачу данных на сервер либо непосредственно в клиент.
Вся логика управления устройствами заложена в нем (хотя часть может находиться на конечных устройствах),
т. е. не требует наличия сервера(доступа к облаку).
В будущем будет доступен для Android устройств начиная с версии 4.0

3) Клиент.
Выполнен на JavaFX и может быть развернут на многих десктоп устройствах. Является главным инструментом интегратора, содержит детальную информацию о проекте, конструктор для создания проекта и дополнительный функционал, как например выгрузка статистики. Также можно использовать как приложение для мониторинга и управления устройствами.
На его базе будут выполнены решения для мобильных устройств и веб.
Также есть консольная утилита позволяющая получать данные для таких решений как MRTG

Кроме этого, есть сторонние решения для управления устройствами (точки входа). В проекте заложен механизм позволяющий получать информацию об устройствах и управлять ими на базе фраз. На текущий момент реализованы следующие точки входа:
1) Мессенджер Телеграм.
2) Голосовой помощник Алиса.
3) Электронная почта
В будущем будет поднят СМС шлюз, появится СМС точка входа.

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

Среда передачи данных
Я сторонник проводных решений, в основном RS485. Существует большое количество минусов в беспроводных решениях, а их плюсы вряд ли перевесят минусы. В Dipexlab, как и в моих проектах, используется RS485 но с разными протоколами. Однако мои предпочтения никак не сказываются на самом проекте, точно также можно легко создать решение на базе WiFi к примеру.



И главное, еще раз, это конструктор.
Он Вам не нужен, если Вы купили комплексное решение от, скажем, Xiaomi. Но если Вы интегратор, или просто увлекаетесь электроникой и решили обвесить свой дом различными недорогими устройствами управления и датчиками, то здесь он в самый раз.
Безусловно, если вы купили, скажем, с десяток RGB WiFi ламп и теперь желаете все это дело объединить, то этот проект Вам также будет очень полезен.
Хотя, Вы в любой момент можете купить ограниченный в функционале готовый контроллер известного производителя  для ограниченного количества и типа устройств заплатив за него значительно больше чем за недорогой мини копьютер.

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

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

У проекта есть юр. лицо http://dipex.ru, есть лаборатория в ДВФУ(C305 - центр проектной деятельности)

UPDATE, 12.08.2019 добавлена информация

Jul. 11th, 2018

Умный дом от RT

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




https://primorye.rt.ru/smart_house?abheader=1&undefined

Apr. 5th, 2018

Мои устройства. USB->RS485 шлюз.

photo_2018-04-05_00-48-53.jpg


На первый взгляд обычный китайский USB-RS485 свисток, но с микроконтроллером, зачем?
Затем, чтобы ПО могло его идентифицировать, потому как просто номер серийного порта говорит только о порядке подключенных устройств, особенно если микросхемы USB одинаковые.

К тому же у этого устройства выведены не только A и B шины RS485, но и земля в том числе, а это достаточно важно и часто снимает ряд проблем с шиной.

Ну и в том числе здесь можно реализовать дополнительную логику, которую проблематично сделать в не реалтайм ОС, к примеру мою фичу 'extra scanning', которая позволяет системе быстро реагировать на события устройств подключенных по обычному modbus.

Также в процессе удлиненный вариант устройства с DC-DC преобразователем на 12В для питания шины.
Очень полезно, когда необходимо настроить новое устройство или для полноценной работы небольшого количества устройств.
Но об этом через несколько месяцев, после заказа новых плат и их транспортировки с Китая во Владивосток через жопу мира - Маскву.


P.S. Оказывается, ЖЖ в метках ругается на знак '->'.

Mar. 14th, 2018

Заметка по программированию - Установка и настройка Geany + AVRA + AVRDude

Ставить будем под Ubuntu 16.04.4 LTS

Ставим пакеты:
sudo apt-get install geany avra avrdude
У меня они уже установлены:
Уже установлен пакет avra самой новой версии (1.3.0-2).
Уже установлен пакет avrdude самой новой версии (6.2-5).
Уже установлен пакет geany самой новой версии (1.27-1).

Скачиваем шаблон синтаксиса avr_asm для его скудной, но все же подсветки:
wget http://wiki.geany.org/_export/code/config/avr_asm -O ~/.config/geany/filedefs/filetypes.asm
*если получили ошибку "Нет такого файла или каталога" то вероятнее всего ранее Geany не запускался, и следовательно не создал свои рабочие каталоги, запускаем и повторяем процедуру.

Библиотеки микроконтроллеров для avra находятся в /usr/share/avra/, но там не все, недостающие
я обычно беру с установленной Atmell Studio под Windows, их можно взять у меня
wget http://p5277.ru/distr/other/avra.zip -O ~/avra.zip
Распаковываем (необходим пароль суперпользователя):
sudo unzip -o ~/avra.zip -d /usr/share/avra/
Удаляем скачанный архив:
rm ~/avra.zip

Теперь запускаем Geany и выполняем настройку для компиляции и прошивки мк:
Смотрим Меню->Сборка->Установить команды сборки


В первой строке прописываем Build и avra --includepath /usr/share/avra/ "%f"
Во второй с конца прописываем Flash и команду для прошивки микроконтроллера, здесь все зависит от типа прошивальщика и
от типа микроконтроллера.

Рассмотрим пример с USB AVR JTAGICE XPII для ATmega328P

avrdude -p m328p -c jtag2isp -U flash:w:%e.hex


С программатором USB AVR ISP mkII

avrdude -p m328p -c avrispmkII -U flash:w:%e.hex


Типы поддерживаемых программаторов можно посмотреть так:
avrdude -с ?
Типы поддерживаемых МК так:
avrdude -p ?

Вот что у меня получилось:

*в процессе написания был убран ключ -v (verbose) как не нужный.

Для проверки можно создать файл test.asm следующего содержания (просто выставляем высокий уровень на PD0):
.INCLUDE "m328pdef.inc"
   .CSEG
   .ORG 0x00

   CLI

   SBI DDRD,PD0
   SBI PORTD,PD0
LOOP:
   RJMP LOOP


Сохраняем, жмем Menu->Сборка->Build (или клавишу F8)
Получаем вывод avra:
avra --includepath /usr/share/avra/ "test.asm" (в каталоге: /home/kostas)
/usr/share/avra/m328pdef.inc(44) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(48) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(53) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(926) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(927) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(928) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(929) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(44) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(48) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(53) : PRAGMA directives currently ignored
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010. Check out README file for more info
   AVRA is an open source assembler for Atmel AVR microcontroller family
   It can be used as a replacement of 'AVRASM32.EXE' the original assembler
   shipped with AVR Studio. We do not guarantee full compatibility for avra.
   AVRA comes with NO WARRANTY, to the extent permitted by law.
   You may redistribute copies of avra under the terms
   of the GNU General Public License.
   For more information about these matters, see the files named COPYING.
Pass 1...
Pass 2...
done
Used memory blocks:
   Code      :  Start = 0x0000, End = 0x0003, Length = 0x0004
Assembly complete with no errors.
Segment usage:
   Code      :         4 words (8 bytes)
   Data      :         0 bytes
   EEPROM    :         0 bytes
/usr/share/avra/m328pdef.inc(926) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(927) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(928) : PRAGMA directives currently ignored
/usr/share/avra/m328pdef.inc(929) : PRAGMA directives currently ignored
Сборка прошла успешно.



Компиляция прошла успешно, пробуем прошить, для этого жмем Menu->Сборка->Выполнить (или клавишу F5, иногда дважды)
Получаем вывод:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "test.hex"
avrdude: input file test.hex auto detected as Intel Hex
avrdude: writing flash (8 bytes):

Writing | ################################################## | 100% 0.82s

avrdude: 8 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 8 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.85s

avrdude: verifying ...
avrdude: 8 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:99, L:CE)

avrdude done.  Thank you.



------------------
(program exited with code: 0)
Press return to continue



Немного, о правах.
Вы могли получить сообщение вида: avrdude: usb_open(): cannot read serial number "error sending control message: Operation not permitted"

В этом случае необходимо выполнить следующее:
1) Добавить пользователя в группу dialout, пример:
root@w5277c:~# adduser w5277c dialout
Adding user `w5277c' to group `dialout' ...
Adding user w5277c to group dialout
Done.
2) Добавить правила для udev:
cd /etc/udev/rules.d/
sudo nano 60-avrisp.rules

в файл добавить текст:
SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end"

# JTAGICE mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", GROUP="dialout", MODE="660"
# AVRISP mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", GROUP="dialout", MODE="660"
# Dragon
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2105", GROUP="dialout", MODE="660"

LABEL="avrisp_end"

После этого необходимо перелогиниться и переподключить программатор.



Для работы с фьюзами я воспользовался онлайн калькулятором http://www.engbedded.com/fusecalc/
Вродебы добротный, умеет генерировать сразу параметры для AVRDude

Насчет стандарта кодирования, я использую табуляцию с размером в 3 символа и отсутп для комментариев с 58 символа - это главное, также пишу весь текст в верхнем регистре,  кроме комментариев, максимальную длину строки делаю в 160 символов.

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

Previous 10 | Next 10