Проект GSM/GPRS сигнализации на Arduino

Предлагаю вашему вниманию проект охранно-пожарной GSM/GPRS сигнализации на ардуино с резервным питанием от батареи. Мною ставилась цель создать простую в изготовлении сигнализацию для дома, состоящую из недорогих ардуиновских модулей и датчиков, управляемую с телефона. При этом затраты на обслуживание должны быть минимальными. А лучше чтобы их вообще не было! И мне удалось этого добиться.

Для вожделенной халявы пришлось отказаться от традиционных смс оповещений, и освоить отправку писем на электронную почту. При правильно подобранном тарифе, сигнализация не тратит денег с баланса. При этом мы получаем по e-mail всю информацию о работе сигнализации, сработавших датчиках, действиях пользователей. Такой роскоши не добиться с помощью платных смс. Управление сигнализацией реализовано на основе DTMF команд. Если у вас один оператор связи на основном телефоне и на сигнализации, с бесплатными звонками внутри сети, или имеется пакет бесплатных минут, то управление сигнализацией тоже будет бесплатным. В противном случае всегда можно отправить команду в течении первых 3-х секунд. И так же не платить. Заинтриговал? Тогда прошу под кат.

Первым делом составим техническое задание:

1) Оповещение звонком Админа при срабатывании датчика.

2) Отправка e-mail с подробностями.

3) Отправка e-mail о действиях пользователей.

3) Наличие резервного питания на случай отключения основного.

4) Управление сигнализацией при помощи DTMF команд и смс.


Для этого нам понадобится плата ардуино и недорогой, но функциональный GSM-модем SIM800L. Любой литиевый аккумулятор с модулем заряда. Датчики по вкусу.

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

В данном реализации были применены следующие сенсоры и модули:

1. Геркон NC типа, как датчик открытия двери.

2. Пироэлектрический инфракрасный датчик движения HC-SR501.

3. Датчик газа и дыма MQ-2.

4. Микроволновый датчик движения RCWL-0516. Видит сквозь препятствия и стены. Хорош для охраны дачи или частного дома. В квартире будут частые ложные срабатывания на соседей за стенкой или бегающих собачек и котиков.

5. Датчик пламени.

6. Датчик температуры и влажности DHT11.

7. Для подачи звуковых сигналов при выполнении команд использована пищалка (зуммер). В готовом изделии не обязателен.

8. Плата контроля заряда-разряда лития на основе микросхемы TP4056 с защитой от перезаряда и разряда.

9. Ардуино Nano V3. Можно заменить 5 вольтовой Ардуино pro mini.

10. В качестве GPRS GSM модема выбран недорогой, но хороший модуль SIM800L. Он имеет небольшие размеры. Умеет работать с DTMF командами, звонить, отправлять смс и e-mail. Смс дороги, а вот электронные письма можно слать практически бесплатно. Чем мы в дальнейшем и воспользуемся!


Датчиком открытия двери (окна) у нас служит нормально закрытый (NC тип) геркон. В случае отсутствия электричества наша ардуина будет отправлена в сон, и разбудить её смогут три вещи: сработавший геркон, появление внешнего питания (сеть), или сигнал RING с модема в случае звонка. Но это мы уже забежали вперёд.


Схема соединения.

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост
Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост
Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Допустим мы всё собрали как надо. Чтобы сигнализация заработала, первым делом надо заполнить файл настроек, находящийся по следующему пути libraries/main_type/settings.h


В строке

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

за место 115200 необходимо указать скорость, на которой работает ваш модем. Как определить скорость работы модема, можно найти в интернете. Не буду на этом заострять внимание.


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

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Можно оставить всё как есть. Не подключенные датчики на работу не повлияют.

Далее перечисляются пины, на которых висят наши модули. Первым у нас будет пин RING модема. Он соответствует пину 2 ардуино. Т.к. это обычное перечисление, номер следующего пина будет на один больше предыдущего, т. е. 2, 3, 4 и т. д. Если вы закомментировали какие-то модули выше, то их пины не будут учитываться в перечислении.

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

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

Далее нам надо настроить отправку e-mail.

Первым делом задаём SMTP сервер почты, к которой будет подключаться наш модуль SIM800L. Он прекрасно работает с яндекс почтой, с другими не тестировал. Советую завести там почтовый ящик, и слать через него. В этом случае настройки изменять не нужно.

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

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Далее за место слов login и password впишите логин и пароль от вашей почты

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Затем укажите полное название вашей почты и имя отправителя. В данном случае у нас указан отправитель SIM800L. Можете написать что-то своё.

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

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

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Если вы хотите отправлять письма сразу на два или три ящика , раскомментируйте вот эти дефайны, и впишите имя почты

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Поздравляю! На этом настройки закончены. Можно прошивать ардуину.


Как работает сигнализация.

Внимание! Сигнализация управляется только с номеров, записанных в телефонную книгу симкарты.

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

Администратор — единственный пользователь, который может отправлять DTMF и смс команды.

Для удалённого добавления пользователя в телефонную книгу Администратор должен отправить смс вида

AT+CPBW=,"+xxxxxxxxxxx",145,"USER"
где +xxxxxxxxxxx - номер телефона
USER - имя абонента

Модем настроен на поднятие трубки при звонке с номера Админа. Это сделано для возможности использовать DTMF команды. Звонки с других номеров будут сбрасываться.

Администратор может отправлять DTMF команды из списка ниже. Если команда принята, сигнализация сбросит звонок. Отчёт о выполнении команды придёт на почту. Любая команда представляет собой цифру и знак #, который означает завершение ввода. После этого модем завершит звонок и выполнит полученную команду.

Проект GSM/GPRS сигнализации на Arduino Сигнализация, Arduino, Sim800l, Gsm, Gprs, Длиннопост

Команды, не вошедшие в список, считаются USSD запросами. Например, мы хотим узнать баланс телефона. USSD запрос баланса нашего оператора *xxx#

где xxx — цифры.

Отправляем DTMF команду xxx#. Она будет подставлена в USSD запрос. Ответ оператора будет переслан на почту.


Порядок включения.

Подать питание на сигнализацию.

Дождаться прихода e-mail. Сигнализация загрузилась.

По умолчанию режим охраны выключен. При звонке любого зарегистрированного номера (кроме админа) сигнализация будет ставить/снимать с охраны и отправлять отчёт на почту. Звонок будет сброшен. При звонке с номера Администратора модем поднимает трубку и ждёт DTMF команду. Админ может поставить/снять с охраны сигнализацию командой 1# и 2# соответственно. После ввода команды звонок завершится сам.


Режимы работы:

Тревога.

При срабатывании одного из датчиков включится режим тревоги. На телефон Админа поступит звонок. Его надо сбросить. На почту будут отправлены показания сработавшего датчика. Продолжительность режима тревоги задана в файле настроек дефайном ALARM_MAX_TIME. По умолчанию 60 секунд. В течение этого времени идёт сбор статистики о сработавших датчиках. Когда время истечёт, информация будет отправлена на почту, а счётчики срабатываний обнулятся. Если датчики снова сработают, всё повторится.


Выключение сетевого питания. Режим низкого энергопотребления.

При пропадании электричества на 3 пине ардуины появится низкий уровень. Сигнализация переключится на питание от батареи. На почту придёт сообщение, что свет пропал Svet OFF. После этого, для экономии энергии батареи, ардуина уйдёт в сон, модем будет переведён в режим низкого энергопотребления.

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

При появлении электричества ардуина проснётся, переведёт модем в обычный режим работы, и отправит сообщение на почту Svet ON.


Поддерживаемые операторы.

Прошивка поддерживает основных российских операторов:

МТС, Билайн, Мегафон, Теле2. Если у вас другой оператор, и не отправляется e-mail, пишите в комментариях. Будем добавлять.


На этом всё. Скачать прошивку можно здесь https://github.com/wisenheimer/Arduino

Вопросы пишите в комментариях :)

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
3
Автор поста оценил этот комментарий

Возьмите STM32, они дешёвые и для ваших нужд не сложные. А по возможностям и стабильности на порядки превосходят. Ардуино это уже совсем для детей, для серьёзных поделок не годится. Из основного нужно ещё: сторожевой таймер(watch dog) что бы не подвисли, проверка gsm модуля на то что он не сдох, проверка что если долго нет сети нужно ресетить всё по питанию.

раскрыть ветку (78)
3
Автор поста оценил этот комментарий

У меня есть проект сигнализации на STM32 c FreeRTOS + ESP8266. Но я его временного забросил. Потом продолжу. Цель как раз была именно в том, чтобы это смог повторить даже ребёнок. Потому что одно название STM32  отпугнёт 80% аудитории. На счёт надёжности ардуины, 1,5 года работает мой первый проект сигнализации, пока без отказов. WTD позже добавлю. Проверка GSM модуля имеется.

раскрыть ветку (6)
1
Автор поста оценил этот комментарий

Конечно отпугнет. Лучше тогда сразу Raspbery Pi 3 ставить. На борту своя ОС и можно удаленно настраивать всё. И с 3G модемом не будет проблем, на уровне драйверов подхватит.

раскрыть ветку (5)
3
Автор поста оценил этот комментарий

ИМХО, компьютер для простой сигналки слишком избыточно. Моему другу нужно 3 сигнализации. Моя его полностью устраивает, кроме цены. За 1000 рублей уже жаба душит. Для таких как он чем проще и дешевле, тем лучше. Удобство на последнем месте.

раскрыть ветку (3)
Автор поста оценил этот комментарий

А для разработчика? Программист не будет за 1000 рублей вникать в чужую среду разработки. А слепить под Линкусом сможет и обычный админ, на скриптах.

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Тут я программист и разработчик в одном лице. Друг увидел, говорит хочу, но даже стоимость комплектухи для него "дорого". Как ещё удешевить, я не знаю. Высокоуровневое программирование все любят. У нашего отдела другая фирма забрала все заказы, где Линух, оставили где просто железо. Им не интересно.

Сигналка это так, игрушка. Цель умный дом делать, или коммерческий проект не стояла.

Автор поста оценил этот комментарий

Ну да, стандартный принцип ярого ардуинщика - из говна и палок.

Автор поста оценил этот комментарий

А чего сразу не десктоп впихнуть и на php всё наваять, да?

С 3g модемом и на stm32 проблем нет. Он по уарт подключается. Дальше обычный набор AT команд для данного модуля. На кой ляд драйвера то? Что они делать будут?  Драйверить? :)

4
Автор поста оценил этот комментарий

AtMega 328 промышленный контроллер, не придумывайте ерунду. Отличие только в вычислительной мощности, она тут не нужна.

Ардуина как отладочная плата тоже нормально спроектирована.

раскрыть ветку (70)
Автор поста оценил этот комментарий

В оригинале, да, промышленный. И в оригинале он сложен для освоения не специалистом. Но тут то его пользуют как Ардуино. А это несколько другое. Для детских поделок отлично. Как начальная база для освоения МК. По крайней мере за такие деньги. Но если делать что то большее чем игрушка, надо уже брать полноценный МК и тут STM32 самый ходовой и простой. За Ардуино обычно радеют только застрявшие на нём и ленящиеся перескочить на следующий уровень. А автор уже пытается делать сигналку для дома, что выходит за уровень детской поделки. По сути один раз попробовав полноценный МК, назад на Ардуино уже не потянет.

раскрыть ветку (69)
2
Автор поста оценил этот комментарий

а можно в деталях, что не так с ардуиной? как она может превратить микроконтроллер в детскую игрушку?

может быть пример какой? а то чую что вы начитались в интернетах что ардуино говно и сформировали такое вот мнение, спутав "игрушку" и то что у ардуино порог вхождения низкий, из за чего многие говнокодят

раскрыть ветку (26)
2
Автор поста оценил этот комментарий

Это сообщество "антиардуинщиков", фанаты которых бесполезно убеждать. Оно будут поливать говном Ардуину - слишком слабая, и Raspbery Pi 3 - слишком сильная. А у них типа круто. Только очень сложно и их код ни кто не понимает.

Психологически набор из нескольких когнитивных искажений

https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE...

только не знаю каких точно, надо над эти подумать. Тут материал для статьи отдельной.

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

раскрыть ветку (18)
1
Автор поста оценил этот комментарий

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

Причём тут Малина не совсем понятно. Это взрослый SoC с полноценным линухом. Вполне неплохая шалабушка, из минусов отсутствие загрузки с флэша. Ну и как промышленный не подходит, по климатике и механике.

раскрыть ветку (17)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (16)
2
Автор поста оценил этот комментарий

и при этом он на ардуине не смог прерывание включить. странный тип.

раскрыть ветку (3)
Автор поста оценил этот комментарий

Вы читаете что пишут или дискутируете у себя в голове? Там не полноценных прерываний, там имитация.

раскрыть ветку (2)
Автор поста оценил этот комментарий

это серьезная заявка. предлагаю эксперимент.

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

Автор поста оценил этот комментарий

а можн узнать, что за имитация? как на по вашему работает?

Автор поста оценил этот комментарий

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

раскрыть ветку (11)
1
Автор поста оценил этот комментарий

вы передёргиваете, уходя от истины.
Я противник Ардуино В ОБУЧЕНИИ (вот такой я, да).
Но там работают прерывания, да, там не реалтайм и не за гарантированные 500us, да там библиотеки - хер понять, там помигать светодиодиком - 2 кБ...
но вы не правы, стараясь подмять под себя только потому что вы так считаете.
Это факт. всё.

раскрыть ветку (8)
1
Автор поста оценил этот комментарий

В Ардуине помигать светодиодом нет проблем и без килобайта кода, хоть на ассемблере чистом.

https://medium.com/@smith_rich/%D0%BA%D0%B0%D0%BA-%D0%BF%D0%...

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

Ну да писать на С под stm32 вам сложно, а вот на асме корябать это да, это самое то. Лллогика! Вы либо трусы наденьте, либо крестик снимете.

Автор поста оценил этот комментарий

А на фига мне МК если там нет реалтайма? Диодиком поморгать?

раскрыть ветку (3)
Автор поста оценил этот комментарий

так и вижу реалтайм в холодильнике, стиралке, торговом автомате, системе навигации, коммутаторе сигналов, клавиатуре,... ;)

раскрыть ветку (2)
Автор поста оценил этот комментарий

ATmega328 не для детей создавалась. Остальное вы напридумали.

раскрыть ветку (1)
Автор поста оценил этот комментарий

А вы на чистой атмеге на С пишите или через охерительную прослойку в виде фреймворка за которым ничего не видно? А так то и .Net есть для МК. Можно на шарпе писать.

Автор поста оценил этот комментарий

Ардуино это довольно толстая прослойка, фреймворк поверх МК. Основная цель примитивизация для того что бы даже дети могли пользоваться в поделках. Но это же не бесплатно. Результат крайне медленная работа, сложно работать с нормальной периферией из за этого, нет полноценных прерываний. Про много поточность можно забыть сразу. Попробуйте на нём поуправлять например шаговыми двигателями у станка (CNC). Даже Мега с трудом справляется с примитивными 3d принтерами.


И мне читать не надо в инете, я что называется "20 лет за рулём". Я на жизнь зарабатываю этим.

раскрыть ветку (6)
1
Автор поста оценил этот комментарий

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

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


Ардуино это довольно толстая прослойка, фреймворк поверх МК.

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


может вы начитались про медленный диджиталВрайт и аналогРиад? а кто запрещает использовать прямой доступ к регистрам в нужных местах? кто запречает ацп запустить на прерывании, в режиме непрерывной работы? я же говорю, дайте конкретные примеры, а то я в упор не понимаю о чем вы...


нет полноценных прерываний

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


Попробуйте на нём поуправлять например шаговыми двигателями у станка (CNC). Даже Мега с трудом справляется с примитивными 3d принтерами.

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

раскрыть ветку (5)
1
Автор поста оценил этот комментарий

UPD: многопоточность у стм тоже подойдет. она там есть?

раскрыть ветку (2)
Автор поста оценил этот комментарий

FreeRTOS.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

Автор поста оценил этот комментарий

Ну т.е. вариант "превозмогая". Ок. На 8 битном древнем МК, поверх толстого фреймворка. За цену сильно большую чем у stm32. Да отличный вариант. Если я правильно понял....

раскрыть ветку (1)
Автор поста оценил этот комментарий

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


за, в мегах нет дма и 32 бит, но они и не нужны всем.

и цена ардуины - 150рэ, впрочем как и некоторых стм(вроде).

1
Автор поста оценил этот комментарий

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

раскрыть ветку (30)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (5)
1
Автор поста оценил этот комментарий

что за чушь, как ардуино урезает возможности? назовите мне любую перефирию мк, и я вам покажу как ее использовать на ардуине.

раскрыть ветку (4)
1
Автор поста оценил этот комментарий

spi флэш на полной скорости c DMA, на Nano.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

у меги нет дма. хоть с ардуиной, хоть без. смысл предлагать заведомо невозможные варианты?

раскрыть ветку (2)
Автор поста оценил этот комментарий

Упс :) Т.е. на работе с периферией есть шанс просто сдохнуть под нагрузкой? Интересно почему ? А, точно МК то старый как говно мамонта. Похоже - "назовите мне любую перефирию мк, и я вам покажу как ее использовать на ардуине." не получится....

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
"назовите мне любую перефирию мк, и я вам покажу как ее использовать на ардуине."

я не сказал "назовите любую технологию", я сказал назовите любую переферию мк.


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


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

1
Автор поста оценил этот комментарий

У меня лазерный гравер и 3D принтер на arduno собраны уже прямо с завода. 3D принтер переработан в материнскую плату большую, а гравер простая Arduino Nano в кроватке в материнской плате.

Так что и производители используют Ардуины. В основном из-за опенсоурсного кода, отлаженного сообществом.

раскрыть ветку (23)
1
Автор поста оценил этот комментарий

Особенно я угораю с шилдов типа Arduino Yun, который на AR9331+openwrt

Но Ардуино же

раскрыть ветку (4)
1
Автор поста оценил этот комментарий

Вроде  это не шилд, а сама Ардуина. Аналогично как Arduino Due, которая мало с чем совместима.

раскрыть ветку (3)
Автор поста оценил этот комментарий

Это Cortex-M3, соответственно, где-то рядом с STM32. Для которого ТОЖЕ написали ардуиновские библиотеки. Но на таком зоопарке железа теряется уже сам смысл ардуины: если, например, на кортексах возможно полноценное управление движками (есть плавучка, аппаратное умножение-деление, векторные инструкции, DMA, куча ШИМа в таймерах), то тоже самое, сэмулированное на атмеге будет лишь жалким подобием. Ну и USB в атмегах  совсем никакой - надо сказать, он и в STM32 не блещет, но хоть что-то.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Управление движками специфическая тема. Скалярные частотные приводы делают на ATmega, там 3 таймера, вполне нормально можно уложиться. Синус по табличке рассчитывается.

Так же можно сказать что Full HD картинка на Raspbery Pi 3 полноценная, а STM32 любой даже без графического ускорителя - "будет лишь жалким подобием"

раскрыть ветку (1)
Автор поста оценил этот комментарий

Ну так вот и есть ардуина, там самая due
Кортекс - он кортекс и есть, хоть STM32, хоть ATSAM3X, набор периферии у них за счёт более быстрого ядра обычно шире, т.к. есть вычислительные возможности для управления ею и тактовые частоты выше.
Но! В случае конкуренции мелкой дурины (которая на 328й атмеге, не разбираюсь в названиях моделей) и maple mini (она же blue pill, на stm32f103c8), последняя при всём этом фарше ещё и дешевле

1
Автор поста оценил этот комментарий

Естественно на дешёвые модели лепять опенсорсные поделки. Так дешевле, сильно дешевле. Не надо разрабатывать своё. Стоимость ПО это обычно довольно большая часть общей себестоимости. Тут только вопрос денег. Но это не делает Ардуино нормальным.

раскрыть ветку (17)
Автор поста оценил этот комментарий

Ардуино нормальным делает промышленный качественный микроконтроллер, проверенный в работе около 30 лет, вопросов нет, ни по надежности, ни по удобству, ни по цене.

раскрыть ветку (15)
1
Автор поста оценил этот комментарий

Что в лоб, что полбу. Ну ок, тогда подлючите мне на неё внешнюю флэш по spi и 4 шаговых двигателя + пару уартов на хотя бы 115200. На Nano осилите?

раскрыть ветку (14)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Естественно. О том и речь. Ардуино для обучения и фана. Что я и говорил изначально. Нужно что то серьёзное - идём в нормальные МК.

раскрыть ветку (2)
Автор поста оценил этот комментарий

нет понятия Красивая женщина - у всех красота разная,
нет понятия нормальная машина - для гамна крузак не оптимален, а на дискач на КРАЗЕ - понтово, но нахер.
ну, вы поняли )

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

А вы осилите на своем микроконтроллере Full HD видео? )) А на малинке с пол пинка заводится.


У меня 3D принтер на ATmega128, есть карта памяти сменная, USB, 3 шаговых двигателя, экран графический. Всё устраивает.

раскрыть ветку (9)
1
Автор поста оценил этот комментарий

Вы в состоянии уложить в голове что для разных задач разное железо и разный подход? И для FHD малина не лучший выбор. Для этого больше подходит например HiSi3518 или Grain. Если вы про съёмку видео в h264, а не обработку. Т.к. обработку в реалтайме и малина не особо осилит. Вы сунулись на то поле где мало что понимаете судя по всему. Как я и говорил вы дальше ардуино не ушли. Вы знакомы по верхам. А я писал и пишу и для МК и для SoC и для серверных платформ. Что только не освоишь за 20 лет практики то.

раскрыть ветку (4)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (3)
Автор поста оценил этот комментарий

"У меня 3D принтер на ATmega128, есть карта памяти сменная, USB, 3 шаговых двигателя, экран графический. Всё устраивает." - ну для дешёвого самосборного принтера сойдёт. Я тоже такой собирал лет 5 назад. Для фана. Но производительности не хватает даже для домашнего принтера, можно запросто получить пропуск шага на движке, не говоря о например CNC где такое может стоить фрезы. Хотя всё тоже самое  на дешёвом stm32 будет отлично работать. Вы хоть исходники то Marlin смотрели? Это мрак и ужас.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

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

По форумам пишут проблемы при больших скоростях, 100 мм/с и выше, у меня в разы меньше скорость.

Фрезер вообще медленно ходит, 5-25 мм/с, можно без всякого напряга обрабатывать такой G-код.

Проблема есть с доступной памятью, ATmega128 впритык подходит. А вот ATmega2560 или какая там следующая стоит существенно дороже.

раскрыть ветку (2)
Автор поста оценил этот комментарий

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

1
Автор поста оценил этот комментарий

>>> STM32 самый ходовой и простой

Вот не надо. Там есть DMA и любой таймер сложнее чем AtMega любая. STM32 для узко специализированных специалистов. Или компьютерных "задротов", что начинают делать проект и годами пишут код и не доводят дело до конца.


За Ардуину радеет сообщество, оно растет. Там десятки миллионов человек. Библиотеки для любого датчика или экрана.

Если нужна производительность, то нужно сразу переходить на Raspbery Pi, Orange Pi минуя STM32 как болото, что затянет в никуда. Нормальная OC и пиши хоть на Питоне.

раскрыть ветку (10)
1
Автор поста оценил этот комментарий

Не пользуйте DMA, кто вас заставляет? Он не нужен для большинства случаев. Таймеры там простые, если вы про хардовые. Ни кто не мешает свои использовать. Производительности с избытком.  Шаблоны проектов в инете валяются горами. Вы просто ленивы и застряли на своей Ардуине. И не желаете развиваться. Основной ваш посыл - миллион леммингов не может ошибаться.

Ага сразу на малину и апельсин, угу. Учитывая что цена сильно выше платы на stm32. Да и с переферией работать на линухе часто сложнее чем на stm32. Я уже не говорю о том что линух не разу не реалтайм, со всеми вытекающими для работы с железом последствиями.


У вас судя по всему просто не получилось с stm32 и C/C++, теперь вы тут себя пяткой в грудь бъёте.

1
Автор поста оценил этот комментарий

плюсую sim31:
я с электроникой уже больше 10 лет (если честно, то почти 30). Писал своё для PIC, AVR и i51 (для точности - китайский клон, писал в Кейле). Писал на асме и прочих для IBM 8086-80386. Что такое DMA знаю и использовал в ПК.
но я не могу стартануть в STM32 (точнее, двинуться дальше uart и регистров), так как нет нормальной среды и языка где всё "включено", и не надо самому разбираться со слоями... там такой шлак, что мама не горюй. А я привык сам писать, чтобы понимать работу МК в любой момент работы моего алгоритма. А там слои, куча библиотек, часто глючных от любителей. Не, пока отложил. Это как с АВР было: вроде и камешек приятный, и flash в нём. А среды нормальной и не было... Это потом появилась горка компиляторов, отладчиков и дешевых программаторов...

раскрыть ветку (8)
1
Автор поста оценил этот комментарий

Среды нормальной наверное и не будет. Микроконтроллеры становятся всё мощнее и качественный код не нужен им.

Вот вышел STM32F7 и будут более мощные. Они мощнее первых пентиумов и нет смысла оптимизировать код. Будет тенденция как и в "обычном" программировании, быстрее ляпать код, а процессор пусть разбирается с этим. Для бизнеса это удобнее.

Атмеловская линейка тоже развивается. Вроде как из доступных ATtiny48 новая сравнительно, ATtiny441.

раскрыть ветку (4)
1
Автор поста оценил этот комментарий

согласен :(
видел, по лету куплю для интереса...

Автор поста оценил этот комментарий

а кейл, что, не нормальная среда?

раскрыть ветку (2)
Автор поста оценил этот комментарий

Там библиотеки универсальные что маскируют особенности архитектуры микроконтроллеров, достаточно "тяжелые".

раскрыть ветку (1)
Автор поста оценил этот комментарий

Странные у вас представления о кейле.

Там для каждого (производителя) проца свои библиотеки и никто не мешает писать на чистом Си/асме. Хоть так GPIOA->ODR|=GPIO_Pin_4; (не особо-то от АВР отличается)

1
Автор поста оценил этот комментарий

Какую среду вам надо? Есть IAR, Keil, для любителей опенсорса есть Эклипс.

Ваша проблема в том что вы застряли на самом низу железа. Хотите всё совсем ручками делать. Но в этом не смысла в современных МК. Там есть прослойка решающая большинство проблем. У вас по сути проблема с чтением и освоением программной части. Вы просто хотите так как вы привыкли.  Ни кто не мешает это делать и на STM32 просто гемороя огребёте. Но плох ли из за этого он ? Нет. Просто вы его не верно готовите.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Вы правы: хочу ручками, хочу как раньше...

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Ну тогда современные МК не для вас. Руками целиком там укопаться можно, если проект достаточно сложный. А выигрыша по производительности, памяти или ещё чему не получите.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку