Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Монстрикс — это динамичная стратегия, где ты собираешь, улучшаешь и сражаешься с могучими монстрами.

Монстрикс

Мидкорные, Стратегии, Мультиплеер

Играть

Топ прошлой недели

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
671
azzamen
8 лет назад
Arduino & Pi

Когда у тебя есть датчик радиации и время⁠⁠

Как обещал в комменте к предыдущему посту, расскажу про наблюдения за радиационным фоном в течение года.

В общем сразу после начала работы датчика, стал наблюдать редкие всплески радиационного фона в 1,5 - 5 раз выше обычных 10мкЗв/ч. Сначала списал на какие-нибудь космические лучи или солнечную радиацию (в чем совсем не смыслю, потому допускаю возможность :) ), но через пару-тройку месяцев заметил некоторые закономерности. Субъективно всплески были в основном в четверг и в районе 14 часов дня. Ну что ж, база данных со значениями за год есть, надо как-то выяснять в чем дело.

Для анализа выбрал значения показаний датчика от 17  мкЗв/ч (в 1,7 раза выше фона) и выше за год, получилось 100 значений. Выгрузил значения в Excel и сделал графики:

График суммарных значений всплесков по времени суток

Когда у тебя есть датчик радиации и время Raspberry pi, Arduino, Радиация, Длиннопост

Казалось бы, вроде, похоже на влияние Солнца - четко дневное время. Однако, не тут-то было.

График суммарных значений по дням недели

Когда у тебя есть датчик радиации и время Raspberry pi, Arduino, Радиация, Длиннопост

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

- радиоактивный пенсионер-сосед выходит в течение дня покурить на соседний балкон;

- передвижная рентген-установка катается по улице;

- э/м наводки на схему датчика;

- скачки напряжения в сети;

Но и тут не все гладко: с февраля всплесков больше не было :). Сомневаюсь, что кончились наводки или скачки напряжения.

И бонус: пузырьковая диаграмма. Размер круга - сила всплеска, по горизонтали время, по вертикали день недели.

Когда у тебя есть датчик радиации и время Raspberry pi, Arduino, Радиация, Длиннопост

Кто разгадает причину всплесков - тому плюсик!


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

Показать полностью 3
[моё] Raspberry pi Arduino Радиация Длиннопост
245
3894
Ground55
Ground55
8 лет назад

Как далеко мы ушли...⁠⁠

Как далеко мы ушли...
Elliott Raspberry pi Таблица Сравнение
369
269
azzamen
8 лет назад
Arduino & Pi

Мониторим радиацию⁠⁠

Все, наверное, помнят Фукусиму 2011-го. Как пишут о ней в Вики, "крупная радиационная авария максимального 7-го уровня по Международной шкале ядерных событий". Многие, возможно, помнят гифки с картами распространения радиоактивного облака типа таких

Мониторим радиацию Arduino, Радиация, Raspberry pi, Длиннопост, Гифка

Ну и я, собственно, об этом как-то не забыл и в итоге год-два назад купил Raspberry Pi 3, Arduino-к, всяких еще железок, почитал про программирование, создание сайтов и ОС Linux и замутил свою метеостанцию-тире-систему-оповещения с маджонгом и гейшами. О чем и речь. :)

Мониторим радиацию Arduino, Радиация, Raspberry pi, Длиннопост, Гифка

Кота нет, поэтому сервер (в старой стойке)

Часть первая, теоретическая

Позволю себе процитировать Вики еще раз.

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

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

А всем скептикам и уверенным в собственной безопасности - просьба выслать мне контакт того, с кем они договорились, что с ними уж точно такого не произойдет.:)

Часть вторая, железная

Для реализации нам понадобится 2 устройства: 1. датчик, установленный в месте, подверженном стихиям (т.н. "балкон"); 2. сервер в более миролюбивой обстановке -  дома, на шкафу, куда пока не могут добраться дети и не хочет добираться жена. Датчик должен быть установлен в месте, омываемом дождями и обдуваемом ветрами - чтобы собирать на себя все, что находится в атмосфере.

Датчик

Состоит из

- счетчика Гейгера на трубке M4011, как пишут о нем в сети:

Both beta and gamma radiation detetion.
Working Voltage: 380-450V
Working Current: 0,015-0,02 mA
Sensivity to Gamma Radiation: 0.1 MeV
Working Temperature Range: -50 +60 С
Length: 88mm
Diameter: 10mm

- Датчика температуры и влажности DHT-21

- Беспроводного модуля nRF24l01

- Китайской Arduino UNO

- Канализационной трубы

Мониторим радиацию Arduino, Радиация, Raspberry pi, Длиннопост, Гифка
Мониторим радиацию Arduino, Радиация, Raspberry pi, Длиннопост, Гифка

Фото вместо тысячи слов

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

Сервер

Состав сервера

- Raspberry Pi 3 с ОС Raspbian

- Беспроводной модуль nRF24l01

- Датчик давления BMP 280

Фотка сервера уже была.

Логическая схема такая

Мониторим радиацию Arduino, Радиация, Raspberry pi, Длиннопост, Гифка

Часть третья, софтовая

Софт:

- Скрипт, принимающий данные с беспроводного модуля

- Скрипты, формирующие картинки для сайта

- Сайт с историческими данными и текущими показаниями датчиков

- OpenHAB

- notifyMyAndroid (платная, на Андроид смартфоне)

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

Расскажу общую логику работы.

Счетчик Гейгера выдает импульсы при пробое в трубке. Чем больше высокоэнергетических частиц попадает в трубку, тем больше пробоев в трубке. Импульсы поступают в Adruino UNO. Adruino UNO считает импульсы в течении 5 минут. По прошествии 5 минут отсылает количество импульсов вместе с текущей температурой и влажностью через беспроводной модуль nRF24l01 (кстати, знаете почему я так уверенно каждый раз пишу этот набор букв и цифр? потому что я ЗАТРАХАЛСЯ с модулем, простите). Скрипт на сервере принимает количество импульсов трубки, температуру, влажность и пишет в MySQL.

Далее OpenHAB путем периодического запуска скрипта чтения из БД, мониторит базу данных и если последнее значение радиации больше 0,5 мкЗв/ч, то через сервер notifyMyAndroid отправляется сообщение на смартфон. Смартфон пищит, я боюсь. Это то, что касается системы предупреждения о БП.

И все-таки пару скриптов OpenHAB'a - с чем пришлось помучаться, т.к. вообще не понимал как это работает.

Итем:

Number weather_rad "Радиация: [%.2f мкЗв/ч]" <temperature> (weather, radiation) {exec="<[php@@/path/to/php/script/script.php:10000:JSONPATH($.rad)]"}

Правило:

rule "Radiation alarm"
when
Item weather_rad received update
then
if (weather_rad.state > 0.5)
{
notifyMyAndroid("xxxxxxxxxxxxxxxxxxx", "Квартира", "Повышенный уровень радиации")
}
end

Что касается вывода информации для просмотра всеми.

Специальный php-скрипт генерит картинки для сайта:

Мониторим радиацию Arduino, Радиация, Raspberry pi, Длиннопост, Гифка

И для (когда-то) автоматической публикации в Instagram (старая картинка):

Мониторим радиацию Arduino, Радиация, Raspberry pi, Длиннопост, Гифка

На сайте также есть возможность посмотреть исторические данные - уровень радиации, влажность, температуру, давление. Реализовано на Highstock.

Мониторим радиацию Arduino, Радиация, Raspberry pi, Длиннопост, Гифка

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

Всем спасибо, мирного неба, стабильного коннекта и мягких котиков.

Показать полностью 7
[моё] Arduino Радиация Raspberry pi Длиннопост Гифка
35
6
kst2002
8 лет назад

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота.⁠⁠

В предыдущем посте я писал про Raspberri PI как про перспективное средство домашней автоматизации и только вскользь упомянул про возможность создания связки softLogic+веб (под softLogic понимать программирование малины на языках MЭК). А теперь хочу раскрыть эту тему гораздо более развёрнуто и показать как построить небольшую системку управления роботом через веб и подавать ему команды вправо/влево/прямо/назад из браузера десктопа, планшета или мобильника.

Кто не читал предыдущий пост, тот может и не знать, что эту задачу можно порешать двумя путями - CodeSys-ом или Isagraf-ом. Так как на codesys халява действует только 2 часа, да и сам я являюсь адептом второго варианта, то на нём и заостряю свой мысленный взор.

Как начать и что скачать показано здесь, включая то, как потренироваться на демо-проекте. Да, загружать всё это надо конечно не в малину, а на комп разработки под windows,  а уже среда разработки сама загрузит исполняемый код на ПЛК (так далее будем называть raspberry pi3).

Итак, пошагово:

1. В среде разработки ISaGRAF Workbench создаём новый проект  (Файл->Новый):

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост
2. В проекте robot создаём программу, скажем, main на языке SFC (Файл->Новый):
Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

По умолчанию Isagraf предлагает создать программу на языке FBD и неспроста - большинство предпочитает именно FBD. FBD это схема, похожая на электрическую схему на микросхемах, видимо это и привлекает мириады радиолюбителей. Но даже если вы хорошо читаете такие схемы, реализовать робота на FBD не получится так красиво, как на SFC. Поэтому всё-таки SFC.

3. Теперь щёлкаем по main и открываем окно SFC-редактора:

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

Что такое, скажете вы. У вас в окне появился только один квадратик и больше ничего! А здесь много квадратиков крестиков. Всё верно, просто я выложил скрин уже готовой программы, благо она невелика.

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

Но где же здесь логика управления роботом? А логику надо вбить в шаги и переходы методом двойного клика по ним. При этом справа выскакивает текстовый редактор:

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

3.1 Вы видите текст

ACTION (P) :

do_left:=false;

do_right:=false;

do_up:=false;

do_down:=false;

END_ACTION;


который следует ввести в первый шаг (пока не надо, потом). Шаг это код на языке ST, похожем на Паскаль. Тут видно, что переменным do_* присваиваются логические нули (если не знакомы с двоичными/булевскими переменными, то лог.ноль это false (ложь), а лог. единица это true (истина)). А что такое ACTION() легко ищется в мануале изаграфа. Если коротко, действия шагов могут быть импульсными ( читай однократными, внутри ACTION (P) как у нас) или 'несохранёнными' (ACTION(N)). Я не знаю почему их назвали несохранёнными, но суть в том, что код внутри ACTION(N) будет молотить постоянно, пока шаг активен. Вернее даже не постоянно, а с частотой цикла исполнения программы. Т.е. если цикл нашей программы 10 мС, а шаг продержался активным 1 сек, то ACTION(N) успеет отработать 100 раз.

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

Теперь про переходы. Если переход пуст, т.е. в нём не прописано никаких условий, то он всегда открыт. В противном случае анализируется условие, прописанное в переходе и по нему уже выясняется - открыт или заперт.

3.2 Набейте скелет программы, чтобы он выглядел так, как на предпоследнем скрине. Просто введите пустые шаги и переходы. Если программу оставить в таком виде, то она тоже будет работать, в каждом цикле переходя на следующий шаг и так по кругу, ведь все переходы по умолчанию разрешены. Там, где переходы расходятся параллельно, программа пойдёт по первому (левому) пути, т.е. будут поочерёдно исполняться шаги 1 и 2. Попробуйте проверить программу, нажав на красную галочку "Проверка программы". Должен отработать генератор кода и выдать подобное сообщение:

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

3.3 Теперь наберите следующее содержимое шагов и переходов:

Шаг 1:

ACTION (P) :

do_left:=false;

do_right:=false;

do_up:=false;

do_down:=false;

END_ACTION;


Переход 1:

cmd=CMD_LEFT

Переход 2:

cmd=CMD_RIGHT

Переход 3:

cmd=CMD_UP

Переход 4:

cmd=CMD_DOWN


Шаг 2:

ACTION (P) :

do_left:=true;

END_ACTION;

Шаг 3:

ACTION (P) :

do_right:=true;

END_ACTION;

Шаг 4:

ACTION (P) :

do_up:=true;

END_ACTION;

Шаг 5:

ACTION (P) :

do_down:=true;

END_ACTION;


Переход 5:

cmd<>CMD_LEFT

Переход 6:

cmd<>CMD_RIGHT

Переход 7:

cmd<>CMD_UP

Переход 8:

cmd<>CMD_DOWN

3.4 Если теперь проверить программу, то генератор выплюнет кучу ошибок. Это от того, что переменные cmd, do_left, do_right и др. не были созданы заранее. Это в php и js переменные создаются автоматом, а тут их надо явно прописать в словаре. Переменные следующие:

- cmd - переменная, в которую через веб-сервис прилетает код команды от 1 до 4. Чтобы не оперировать не этими числами, а более читаемыми наименованиями, я завёл 4 макроопределения: CMD_LEFT, CMD_RIGHT, CMD_UP, CMD_DOWN и присвоил им значения от 1 до 4 (аналог #define в С);

- do_left ... do_down - булевские переменные, каждая из которых отвечает за свой дискретный выход, управляющий соответствующим моторчиком, рулём или чем-то там ещё);


Открываем словарь и вводим макроопределения:

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

Затем переменную-команду:

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

И, наконец, выходы (эти переменные надо создавать с атрибутом 'выход'):

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

Обратите внимание, что переменные do_* должны быть глобальными (т.е. видными из всех программ, если бы их было несколько), иначе Isagraf не позволит привязать их к выходам GPIO.

Если теперь сделать проверку программы, то хоть все переменные созданы, но Isagraf сообщит о том, что переменные do_* объявлены как выходы, но к физическому выходу не привязаны.

Есть в isagraf-е такое понятие - плата ввода-вывода. Щёлкнем по пиктограмме "Соединения ввода/вывода" в окне программ. У вас окошко будем пустым, а я уже забил туда 2 платы:

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост
Верхняя gpioconf это даже не плата как таковая, а средство для настройки GPIO, т.к. это ужасно универсальный разъём и входы-выходы можно компоновать как угодно. На последней картинке видно, что параметр mode0_7 (настройка для первых 8-ми ножек GPIO) содержит 4 символа 'O' в начале. Это означает, что первые четыре ноги GPIO сконфигурятся как дискретные выходы. Что означают другие символы, можно посмотреть двойным кликом по плате и затем нажав кнопку Замечание.

А вот плата gpio_do это самая что ни на есть настоящая плата:

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

На неё и приходят наши выходные сигналы.

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


4. Теперь откроем окно опций компилятора (окно "Программы"->Создать->"Опции компилятора") :

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

Вот так оно должно выглядеть.

А теперь опции выполнения (окно "Программы"->Создать->"Опции выполнения приложения"):

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

Здесь вводим время цикла программы в мС.

А теперь пробуем не проверить, а создать приложение (окно "Программы"->Создать->"Создать приложение").

Ошибок быть не должно.

5. Прежде чем грузить приложение в контроллер, его можно погонять на симуляторе (я нарочно поставил галочку напротив симулятора в опциях проекта п.4). Запустив симулятор и расположив окна наглядным образом можно погонять робота туда-сюда и буквально увидеть как работает программа:

Домашние вкусняшки на Raspberry PI. Халявная веб-морда робота. Raspberry pi, Программирование, Веб-разработка, Длиннопост

Гонять робота можно открыв словарь и записывая значение переменной cmd двойным кликом по ней. Другого способа пока нет, т.к. web-морду мы пока ещё не прикрутили. Но всё равно интересно!


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

Показать полностью 13
[моё] Raspberry pi Программирование Веб-разработка Длиннопост
0
252
azzamen
8 лет назад
Arduino & Pi

Домашний сервер⁠⁠

Наконец-то доделал свой домашний сервер, хочу поделиться!)

Сервер состоит из:

блока питания на 5А,

Raspberry Pi 3,

HDD 2,5" 300Гб,

Arduino UNO, как устройство вывода на 16x2 LCD,

nRF24l01 - для связи с "БДБ" (блок датчиков балконный :) - датчик радиации, температуры, влажности),

BMP280 - датчик давления.

Крутится софт: Apache с несколькими сайтами, miniDLNA, Transmission, OpenHAB, винт - как видеосервер для камер наблюдения и хранилище медиа.

Сначала сервер жил на ДСУ (доска серверная универсальная :) ), а на днях переехал в стойку. Теперь одна комната в квартире - официально переименована в серверную.)

И сам процесс эволюции из деревянного века в алюминиевый:

[моё] Raspberry pi Arduino Сервер Видео
152
18
kst2002
8 лет назад

Домашние вкусняшки на малине сорта raspberry pi. Дополненное.⁠⁠

Домашние вкусняшки на малине сорта raspberry pi. Дополненное. Raspberry pi, Программирование, Длиннопост
Этот маленький комп неспроста так быстро и широко разошёлся по всему белу свету. Маленький, достаточно шустрый, непрожорливый (потянет даже зарядка от мобильника) девайс за недорого. К тому же, слыхать, уже в наличии клоны за ещё более недорого. Я, старый автоматизатор, знаю цену таким вещам. Вот прям сейчас, далеко ходить не надо, на столе валяется процессор Beckhoff cx9020:
Домашние вкусняшки на малине сорта raspberry pi. Дополненное. Raspberry pi, Программирование, Длиннопост

Это тоже по сути своей комп примерно такого же размера как малина (если не считать конструктив), CPU ARM 600мГц, 512мБ RAM, в общем похож на старую версию R-PI. Он давно валяется и никто не помнит почём его брали. В инете у всех все цены по запросу, как сговорились. Вот [здесь](http://www.dom-intel.ru/magazin/oborudovanie/kontrollery/bec...) не постеснялись обозначить цену на похожий, но более слабый комп: без малого 110 косарей просят на момент написания поста!


Ладно, к чёрту Beckhoff, есть у меня где-то наш аналог - питерский [fastwel]l(http://www.fastwel.ru/products/fastwel-io/programmiruemye-ko...). Не поленился, нашел, вот он:

Домашние вкусняшки на малине сорта raspberry pi. Дополненное. Raspberry pi, Программирование, Длиннопост

Тут тоже arm на 600мГц, памяти сколько не помню, а эзернета вообще нет, не говоря про wifi. Но всё равно будем считать где-то рядом с малинкой. В районе 40 тыр, если мне гастрит не изменяет, стоили они год назад (уточнил - 41726 с ндс). Плюс срок поставки примерно месяц, т.к. в питере только магазин, а производят их сами понимаете где. Вот так то.


Можно поискать и найти у нашего, к примеру овена, ПЛК в разы дешевле, но я искал с соизмеримыми с малиной параметрами, поэтому прочее не в счёт.


К чему я это? Я, повторюсь, спец по автоматике, поэтому смотрю на малину как на ПЛК - программируемый логический контроллер. И поэтому искал похожее на рынке ПЛК. Если оценивать малину как медиаплейер, то, возможно, на рынке медиа-девайсов она будет не так выгодна, не знаю ибо не меломан.


Итак, ПЛК - это тот ракурс, в котором мне хотелось бы посмотреть на сей сабж в свете его технико-экономических достоинств.


Что можно сотворить из маленького шустрого ПЛК не сразу окинешь взглядом. Тут, как говорится, редкая птица до середины долетит. Можно очертить только сферически - хобби-конструирование (роботы, самолётики и тп) ну и всякая разная домашняя автоматизация. Промышленную не рассматриваю, т.к. могут полететь помидоры, зачем мне это (я хоть и сравнивал по ценам с бэкхоффом, но прекрасно понимаю, что малину как она есть в шкаф промобъекта никто не поставит, 'не положено' как в армии говорят).


А раз домашняя, то малина в двойном плюсе и вот почему. Первый плюс - малую цену - мы уже видели.


Второй плюс. Обладая высокой производительностью, мы получаем доступ к классу средств разработки для дорогих и 'настоящих' ПЛК. Я имею в виду языки программирования стандарта МЭК 61131-3 :

Домашние вкусняшки на малине сорта raspberry pi. Дополненное. Raspberry pi, Программирование, Длиннопост

На картинке выше среда разработки CODESYS, в которой можно кодить как раз на таких языках.


С++ или МЭК?


Чем языки МЭК лучше С++ или питона, спросят многие. Ну, если программа простая, просто ножками подёргать для курсовой, то ничем не лучше. Но сложная программа (читай - прикладная, т.к. любой практически ценный труд неизбежно обрастает сложностями) требует от разработчика продвинутых навыков и хороших средств отладки. Матёрый программер справится и на gcc, кто бы спорил. Но если человек хочет за неделю вкурить теорию и через две уже что-то получить на выходе, то подобные инструменты ему, как говорится, доктор прописал. Т.е. если есть некий порог вхождения, то для МЭК он заметно ниже.


Это можно почувствовать на таком примере. Допустим, вы приобрели малину и захотели создать простейшую C-программку, мигающую светодиодом:


#include <gpio.h>


int main(void) {

bool led;


gpio_init(/*здесь должны быть данные инициализации ножек GPIO*/);


while(1) {

gpio_write_do(1 ,led);


led = !led;

usleep(100);

}

return 0;

}


Этот код 10 раз в секунду изменяет состояние 1-го пина GPIO. Если вы никогда не программировали на С, то тут мало что понятно. А что писать в строке gpioInit вместо комментария непонятно вообще никому, кто не ознакомился со спецификой библиотеки поддержки GPIO.


Теперь вот как это может выглядеть на мэковской FBD-диаграмме:

Домашние вкусняшки на малине сорта raspberry pi. Дополненное. Raspberry pi, Программирование, Длиннопост

Ну вот, совсем другое дело. Тут три функциональных блока:

- gpio_init настраивает режимы входов-выходов GPIO;

- blink генерит мигающий (1/0) сигнал;

- gpio_do итак понятно что делает;


Всё-таки в визуальном программировании что-то есть, особенно если учесть то, что среда разработки сама позаботится о компиляции и загрузке программы в ПЛК, а хелп (подсказку) по используемым функциональным блокам (тот же gpio_init) можно получить двойным кликом тут же, не отходя от кассы. А в процессе работы это окно открывается под отладчиком и значения всех переменных видны. А кроме FBD (язык блочных диаграмм) в МЭК-овской среде можно использовать похожий на Паскаль ST (структуированный текст) и/или SFC (язык последовательных диаграмм, на котором можно делать ну очень сложные и ветвистые проги). И это ещё не все языки МЭК...

В общем, МЭК или не МЭК решайте сами.

МЭК для малины


МЭК 61131-3 он конечно один, но реализаций много. Некоторые производящие ПЛК фирмы даже разработали свои среды для программирования своих изделий. Как правило там всё ограничивается FBD. Но это к слову, т.к. для малины варианта всего 2 - либо используем CodeSys, либо что-то другое.


1. CodeSys (cds)


Фирма S3 разработала МЭК-совместимую среду программирования, по навороченности соизмеримую с MS Visual Studio. Но, в отличии от MS, раздаёт её БЕСПЛАТНО.  Хотя, это как сказать бесплатно, сам-то компилятор (интегрированная среда разработки - IDE) бесплатный, зато ПЛК платные. Производители ПЛК, если хотят сделать свой продукт программируемым в CodeSys, платят денежку S3. И, разумеется, закладывают эту денюжку с стоимость ПЛК. Но в случае с малиной схема другая. Тут уже сами S3 сделали таргет (target - среда исполнения программ на уровне ПЛК) для малины и раздают его за небесплатно (по-моему, 50 евро цена вопроса). Т.е. имея в руках малину запустить в ней CodeSys-ную прогу не получится, если перед этим не запустить на малине codesys-таргет.

На самом деле тут всё довольно просто делается, вот [здесь](http://www.asutp-volgograd.com/blog/raspberry-pi-codesys-int...) популярно об этом рассказано.

2. Что-то другое это ISaGRAF

Сразу признаюсь, статья заказная. Сам себе заказал с целью ознакомить малиноводов именно с этим вариантом. Был (и есть) такой продукт ISaGRAF. Эта среда программирования ПЛК во многом аналогична CodeSys-у, до недавнего времени этот продукт даже доминировал на рынке, но в последнее время чаша весов CodeSys, по-моему имху, перевесила. Суть в том, что разработчики ISaGRAF, строго говоря, не брали денег с производителей ПЛК за доступ к себе и вся тайная кухня для портирования таргета у них, в отличии от CDS, открыта (по крайней мере до версий 3.Х). Зато IDE (пользовательская среда разработки) платная.

В настоящее время ISaGRAFы доразвивались до 6 версии и, если не ошибаюсь, восприняли схожую с CDS стратегию на 'бесплатную' IDE.

Не одну собаку съемши на изаграфе, могу посоветовать поюзать всё-таки изаграф в его 3 версии, т.к. последующая гигантомания версий 5 и 6 (4 кривая и не в счёт) простому любителю малины вроде как ни к чему.

Схема работы по данному варианту следующая:

- [качаем](http://homeasutp.ru/viewtopic.php?id=9) таргет;

- пишем его SD-карточку и вставляем в малину (записать образ на SD можно [программой  Win32DiskManager](https://sourceforge.net/projects/win32diskimager) );

- покупаем изаграф 3.5 и работаем, либо [скачиваем](http://homeasutp.ru/viewtopic.php?id=9) оценочную версию и тоже вполне себе работаем;

- быстрый старт описан [здесь](http://homeasutp.ru/viewtopic.php?id=3);


Можно написать не только прогу для малины, но и сделать доступ через веб с кнопками, индикаторами и трендами. Т.е. малина работает как сервер apache (он там и есть), а вы можете обратиться к ней по ip (через wifi или провод) и увидеть что происходит в вашей суперсистеме в браузере компа, планшета или (если зрение позволит) мобильника. Графика векторная (svg)! И не только видеть, но и управлять:

Домашние вкусняшки на малине сорта raspberry pi. Дополненное. Raspberry pi, Программирование, Длиннопост
Правда для этого придётся задействовать javascript.


Плюс данного варианта ёщё в том, что этот  таргет не боится случайного отключения. Эта проблема решена за счёт выбора ОС, там и там линукс, но в первом случае (CodeSys) это Raspbian, а в случае ISaGRAF это TinyCore, который целиком сидит в RAM и обращений к SD не требует.

Подключение малины к 'чем-нибудь поуправлять'.

Вот тут может быть большая засада если нет достаточных познаний в схемотехнике.

Есть разъём GPIO, на который можно выдавать управляющие сигналы или снимать состояния сигналов входных. В штатном варианте это только дискретка, т.е. выдать/принять логический ноль (0 вольт) или единицу (3,5 вольт). Аналоговых сигналов как таковых на нём нет, разве что в качестве аналоговых выходов использовать 2 выходных канала ШИМ с RC-фильтром. Сигналы маломощные, выходят они прямо с ножек процессора без какой-либо защиты и гальваноразвязки. Так в серьёзных ПЛК не делают, по этому я и упоминал про то, что нельзя малину сразу в промшкаф.

Если малина встроена в робот, машинку или беспилотник, то вопросов нет. Но если подключить к GPIO другие устройства со своими цепями питания или даже провод длиной несколько метров, то разница потенциалов или наводки с проводов могут запросто выжечь проц. В таких случаях подключать сигналы к GPIO нужно используя развязку по подобной схеме:

Домашние вкусняшки на малине сорта raspberry pi. Дополненное. Raspberry pi, Программирование, Длиннопост

А что делать, если нужно опросить аналоговые сигнале, например сопротивления датчиков температуры? Или если требуемое количество сигналов превышает 27 дискретных входов/выходов разъёма GPIO? Тогда самое время освоить шину АСУТП всех времён и народов modbus, благо это всего два провода интерфейса RS485. Про modbus очень много есть в сети, применительно к малине могу только дать ссылку на такие вот свистушки:

Домашние вкусняшки на малине сорта raspberry pi. Дополненное. Raspberry pi, Программирование, Длиннопост

Этот порт 485-го интерфейса можно заказать на [aliexpress](https://ru.aliexpress.com/item/Free-Shipping-USB-to-RS485-48...) по цене ниже $1. Т.е. сама малина по rs485, а значит и по modbus работать не сможет, для подключения к modbus нужно вставить в USB указанный адаптер. Далее подключаем двумя проводами малину к modbus-совместимым устройствам ввода вывода. Таких устройств на одной линии может висеть много, главное чтобы все они поддерживали работу на одной и той же скорости передачи данных. Самые асутп-шные скорости это 9600 и 19200 бит в секунду. Но если к одной скорости прийти не удаётся (например одни девайсы понимают только 9600, а другие только 38400), то придётся организовывать 2 сегмента modbus и закупить 2 usb/rs485 порта.


Вот типичный представитель самой демократичной на данный момент [линейки](http://icpdas.ru/) устройств ввода-вывода для modbus:

Домашние вкусняшки на малине сорта raspberry pi. Дополненное. Raspberry pi, Программирование, Длиннопост

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

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

Ну и в качестве тоста на посошок. Использовать малину в качестве ПЛК нужно и можно, но осторожно, если использовать GPIO.

Тем более весь высокотехнологичный инструмент есть, нужно только помнить о его наличии).

Показать полностью 8
[моё] Raspberry pi Программирование Длиннопост
11
10
kst2002
8 лет назад

Домашние вкусняшки на малине сорта raspberry pi⁠⁠

Домашние вкусняшки на малине сорта raspberry pi Raspberry pi, Умный дом, Программирование, Робототехника, Длиннопост

Этот маленький комп неспроста так быстро и широко разошёлся по всему белу свету. Маленький, достаточно шустрый, непрожорливый (потянет даже зарядка от мобильника) девайс за недорого. К тому же, слыхать, уже в наличии клоны за ещё более недорого. Я, старый автоматизатор, знаю цену таким вещам. Вот прям сейчас, далеко ходить не надо, на столе валяется процессор Beckhoff cx9020:

Домашние вкусняшки на малине сорта raspberry pi Raspberry pi, Умный дом, Программирование, Робототехника, Длиннопост

Это тоже по сути своей комп примерно такого же размера как малина (если не считать конструктив), CPU ARM 600мГц, 512мБ RAM, в общем похож на старую версию R-PI. Он давно валяется и никто не помнит почём его брали. В инете у всех все цены по запросу, как сговорились. Вот [здесь](http://www.dom-intel.ru/magazin/oborudovanie/kontrollery/bec...) не постеснялись обозначить цену на похожий, но более слабый комп: без малого 110 косарей просят на момент написания поста!

Ладно, к чёрту Beckhoff, есть у меня где-то наш аналог - питерский fastwell. Не поленился, нашел, вот он:

Домашние вкусняшки на малине сорта raspberry pi Raspberry pi, Умный дом, Программирование, Робототехника, Длиннопост

Тут тоже arm на 600мГц, памяти сколько не помню, а эзернета вообще нет. Но всё равно будем считать где-то рядом с малинкой. В районе 40 тыр, если мне гастрит не изменяет, стоили они год назад (уточнил - 41726 с ндс). Плюс срок поставки примерно месяц, т.к. в питере только магазин, а производят их сами понимаете где. Вот так то.

Можно поискать и найти у нашего, к примеруБ овена ПЛК в разы дешевле, но я искал с соизмеримыми с малиной параметрами, поэтому прочее не в счёт.

К чему я это? Я, повторюсь, спец по автоматике, поэтому смотрю на малину как на ПЛК - программируемый логический контроллер. И поэтому искал похожее на рынке ПЛК. Если оценивать на малину как медиаплейер, то, возможно, на рынке медиа-девайсов она будет не так выгодна, не знаю ибо не меломан.

Итак, ПЛК - это тот ракурс, в котором мне хотелось бы посмотреть на сей сабж в свете его технико-экономических достоинств.

Что можно сотворить из маленького шустрого ПЛК не сразу окинешь взглядом. Тут, как говорится, редкая птица до середины долетит. Можно очертить только сферически - хобби-конструирование (роботы, самолётики и тп) ну и всякая разная домашняя автоматизация. Промышленную не рассматриваю, т.к. могут полететь помидоры, зачем мне это (я хоть и сравнивал по ценам с бэкхоффом, но прекрасно понимаю, что малину как она есть в шкаф промобъекта никто не поставит, 'не положено' как в армии говорят).

А раз домашняя, то малина в двойном плюсе и вот почему. Первый плюс - малую цену - мы уже видели.

Второй плюс. Обладая высокой производительностью, мы получаем доступ к классу средств разработки для дорогих и 'настоящих' ПЛК. Я имею в виду языки программирования стандарта МЭК 61131-3 :

Домашние вкусняшки на малине сорта raspberry pi Raspberry pi, Умный дом, Программирование, Робототехника, Длиннопост

На картинке выше среда разработки CODESYS, в которой можно кодить как раз на таких языках.


С++ или МЭК?


Чем языки МЭК лучше С++ или питона, спросят многие. Ну, если программа простая, просто ножками подёргать для курсовой, то ничем не лучше. Но сложная программа (читай - прикладная, т.к. любой практически ценный труд неизбежно обрастает сложностями) требует от разработчика продвинутых навыков и хороших средств отладки. Матёрый программер справится и на gcc, кто бы спорил. Но если человек хочет за неделю вкурить теорию и через две уже что-то получить на выходе, то подобные инструменты ему, как говорится, доктор прописал. Т.е. если есть некий порог вхождения, то для МЭК он заметно ниже.

Это можно почувствовать на таком примере. Допустим, вы приобрели малину и захотели создать простейшую C-программку, мигающую светодиодом:


#include <gpio.h>


int main(void) {

bool led;


gpioInit(/*здесь должны быть данные инициализации ножек GPIO*/);

while(1) {

gpio_write_do(1 ,led);

led = !led;

usleep(100);

}

return 0;

}


Этот код 10 раз в секунду изменяет состояние 1-го пина GPIO. Если вы никогда не программировали на С, то тут мало что понятно. А что писать в строке gpioInit вместо комментария непонятно вообще никому, кто не ознакомился со спецификой библиотеки поддержки GPIO.


Теперь вот как это будет выглядеть на мэковском языке FBD:

Я думаю, комментарии излишни.

Показать полностью 3
[моё] Raspberry pi Умный дом Программирование Робототехника Длиннопост
8
43
vivaos
vivaos
8 лет назад
Arduino & Pi

Пост взаимопомощи в суровом мире электронных устройств⁠⁠

Господа, очередной пост "ВиО" для взаимного решения ваших проблем в работе с Arduino или Raspberry Pi. Знающие - подсказываем, не знающие - спрашиваем! :)

Пост взаимопомощи в суровом мире электронных устройств Arduino, Raspberry pi, Помощь, Вопрос-ответ, Бойцовский клуб (фильм)
Показать полностью 1
Arduino Raspberry pi Помощь Вопрос-ответ Бойцовский клуб (фильм)
60
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии