Как вкатиться в Rasberry Pi?  Публичный пост

Довольно давно заинтересовался темой микроконтроллерами и хочется что-то попробовать, но не имею абсолютного представление c чего начать

Понравилось Rasberry Pi, Arduino пробовал, но просто лампочки включать такое се

38 комментариев 👇

Покупаешь Raspberry и вкатываешься)
Только имей ввиду, что в Pi стоит полцноценный ARM процессор (как в телефоне, ага) и вся плата - полноценный компьютер, и это не то же самое, что микроконтроллер в той же дуине (своеобразный процессор, периферию выбираешь и подключаешь к нему сам по вкусу, а ардуино - готовые наборы железяк + библиотеки для упрощения разработки).

Вопрос в большей степени твоих целей. Для обучения в целом - и raspberry и arduino хорошо подходят. Для каких-то конечных изделий они чаще всего дикий оверхед и оправдывает их выбор обычно низкая цена железки и поддержка (популярность и коммунити + возможность купить новую железку, либо купить сразу побольше под замену).
Захочешь на уровень пониже опуститься - вполне себе это сделаешь. Например, в базе arduino стоит микроконтроллер Atmel MegaXXX, который можно прогать руками и код писать на его родном ассемблере или компилить из совместимого диалекта языка Си. Библиотеки ардуино так и написаны, к слову.
Также и на Pi ты можешь из скрипта на питоне дёргать GPIO и в соседнем потоке крутить СУБД и веб-сервер в докере. Тут тебе и полноценная ОС к твоим услугам и много всего из коробки работает. А можешь пуститься во все прелести системного программирования на Linux или чего ещё близкого к ядру ОС и железу в целом.

По дуине и фан-проектам на ней с подбробными инструкциями на русском можно посмотреть тут.
Raspberry чаще в IoT используют или в каких-то не очень ёмких штуках в пределах твоей домашней сети. Например, шлюз для дома-дурачка с веб-мордой.

Т.е., да, можно сделать из него и NAS, и сервер с веб-хостингом, но я бы для этих целей использовал что-то более подходящее. Потому что жёсткие диски можно подключать только через USB, а резервное копирование - может стать проблемой. Также как и отсутствие драйверов для принтера для Linux под ARM.
Тем не менее, в универе это мне не помешало собрать на нём кластер на 64 узла, чтобы студентам было на чём играть с многопоточным/параллельным программированием с полным контролем над аппаратной платформой)

  Развернуть 1 комментарий

@mkryuchkov, спасибо за развернутый ответ

Я хотел попробовать создать свой сервер для резервного копирование
Или создать на нем систему IoT
Или хостить своих хостингов
А можно все в кучу?🤔

А вообще я ищу себе новое занятие и всегда было интересно как устроены железки(Ардуино в топку, мне чет не зашло прописывать эти порты и тд) и создавать свои ОС на этих железках

  Развернуть 1 комментарий

@mkryuchkov,

Для каких-то конечных изделий они чаще всего дикий оверхед

Что ты под этим имел ввиду

  Развернуть 1 комментарий

@Programistich, пожалуйста :)

Можно всё.
И даже в кучу. Скорее всего столкнёшься с тем, что придётся менеджерить ресурсы и понимать, что лежит на уровень ниже. Для экспериментов платформа прекрасна. В том числе своими ограничениями.
Например, в кластере, основным ограничением стала сеть - порт в 100 Мбит/c - не манна небесная в уже на момент 2016, а использовать wifi при плотности 50 устройств на квадратный метр - ненадёжно и небезопасно, плюс дополнительный теплопакет от машинок и тормоза для проца. При работе с дисками меня не всегда SATA III устраивает, что уж говорить про USB, который не обязательно 3.0 и имеет свои ограничения. Тем не менее, при построении можно использовать все prod-ready инструменты, полученный опыт легко перенести куда-либо дальше. SD, хоть и быстрая, но одна. И у неё есть ресурс по надёжности. При частой записи она довольно быстро приезжает, но даёт хорошую скорость чтения.
Много вещей, которые надо учитывать, когда что-то строишь.

Про надёжность и отказоустойчивость крайне рекомендую "Сохранение данных. Теория и практика" Алексея Бережного. Все основы простым и понятным языком описаны без привязки к конкретным решениям. Для админа/девопса must-read, для разраба - полезно быть в курсе.

Бэкапы. Автоматизировать какую-то рутину по копированию данных с ноута на доп. носитель - да, легко и круто, можно сделать 1000 и 1 разным способом от простого rsync в crontab до какого-нибудь owncloud или сервера совместимого с Time Machine.
Даже при этом следует подумать про доступность, про электричество, сеть, обсуживание, риски. Что будет, если сломается X или как больно будет потерять Y. RAID, резервная линии питания, интернета, сигналы и поведение на случай любого disaster. В ЦОДе там специальные дядьки этим занимаются и что-то тебе гарантируют, когда арендуешь там сервер (но и это не обязательно). Здесь предоставлен сам себе) Скачок электричества, пьяный сосед в щитке подъезда или дождик у провайдера и супер-пупер решение не работает.

  Развернуть 1 комментарий

@Programistich, Про голые железки ардуина больше даст. Посылать в "Архитектуру ЭВМ" Таненбаума не буду, чтиво на любителя.

  Развернуть 1 комментарий

@Programistich, про оверхед.
Pi - это, мать его, полноценный комп на плате с кредитку, толщиной в палец и то из-за ethernet-порта. Производительностью с современный смартфон или маленький VPS. На нём вполне себе можно эмулинровать все старые игровые консоли и даже не ставить радиатор.
Часто проект на Pi - это моргать диодиком или выключать розетку по сообщению из телеги. Да, на нём это сделать очень просто, но с этой задачей справится и микроконтроллер на порядок более простой, чем стоит в ардуино. Вот ещё пример того, как можно использовать кремний))

  Развернуть 1 комментарий

@mkryuchkov, "Посылать в "Архитектуру ЭВМ" Таненбаума не буду".
Правильно, посылайте в Харрис-Харриса и Хеннеси-Паттерсона.

  Развернуть 1 комментарий

@mkryuchkov, то есть не советуешь покупать или что?

  Развернуть 1 комментарий

@Programistich, Советую купить и попробовать всё (что законно), а потом сделать выводы из полученного опыта. Иначе как учиться собираешься?

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

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

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

сервер для резервного копирование
Или создать на нем систему IoT
Или хостить своих хостингов

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

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

  Развернуть 1 комментарий

@mkryuchkov, вроде все сложно, но вроде все понятно
Но с чего начать....

  Развернуть 1 комментарий

@Programistich, с чего-то одного и вполне конкретного :)
Выбери, что хочешь получить, и пили в эту сторону. По пути будешь догребать знаний и навыков. С теми же домашними файлопомойками и системами бэкапов - полно готовых решений. Можно почитать про них, можно попробовать (даже ничего не покупая, просто на виртуалке настроить и посмотреть, что это работает). Очень хорошо доводить до уровня "понимаю, что конкретно происходит на каждом шаге и почему".
Хочешь на отдельной железяке - бери и вперёд.

На вопрос "Я не знаю, как начать" только один ответ - начни.

  Развернуть 1 комментарий

@mkryuchkov, ну так получается это ОС и все, просто в компактном устройстве, чем он отличается от моего ноутбука
Вон @XcNih4ZNxLNhGduD писал про GPIO, вроде прикольно, но опять же, зная меня, то малина будет пылится на полочке без дела

  Развернуть 1 комментарий

@mkryuchkov, к тому же за Линукс никогда не работал(((

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

@Programistich, да, это очень дешёвый комп с нормальной ОС с всякими штуками типа wifi/bluetooth/gpio из коробки, который по размеру и потребностям, как телефон, ещё и не шумит ночью). В остальном - ты прав. Поставь себе Debian на ноут и получишь такую же среду, просто с другим железом под ним.

С линуксом чем раньше, тем лучше. Я при разработке на .net не ещё ни разу не пожалел, что неплохо его знаю.
В целом, полезно знать, что там на уровень ниже, будь то ОС или железо. Чем меньше магии, тем проще с этим работать. Есть и обратная точка зрения (она мне не близка) - "вот я на питоне пишу, а как комп работает - мне пофигу". Чувак не понимает, откуда ноги растут у ошибок типа "положил в переменную строку, а пытаюсь достать число и почему-то прога падает", но уверен, что это кто-то другой накосячил, а не он сам.

С ардуино, как и с чем угодно другим не бывает всего и сразу. Идёшь всегда последовательно, поступательно. Разобрался с чем-то одним, пошёл дальше. Докупил что-то нужное. Или сам собрал. Или забил и продал всё кому-то. Ничего страшного

  Развернуть 1 комментарий

@mkryuchkov,

В целом, полезно знать, что там на уровень ниже, будь то ОС или железо

Вот это я тоже хочу познать, ибо всегда интересно почему программа А как то работает

  Развернуть 1 комментарий

@mkryuchkov, проблему с умирающей sd и его медленной работой решается заменой на внешний ssd. Благо инструкций под модели rpi в сети достаточно, в том числе и для rpi4 (перевести на полную работу из под ssd - да изи)

  Развернуть 1 комментарий

@feanche, здорово)
на большом количестве без бюджета выкручивались сетевой загрузкой ОС, заодно решали проблему обновлений и раскатки конфигураций таким образом. Плюс хелс-чеки с мониторингом.

Сейчас уже кажется, что с паями реализовали уже всё, что может в голову придти, надо только погуглить)

  Развернуть 1 комментарий

@feanche, насчёт скорости не скажу, но проблему умирания sd можно решить загрузкой с usb-флешки, в версии 3b+, например, это из коробки поддерживается.

Ещё встречал инструкции по сокращению ивентов записи на sd-карту, но для активно работающих устройств это не подойдёт.

  Развернуть 1 комментарий
Pavel Galeev, SW Embedded Designer 17 сентября 2020

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

  Развернуть 1 комментарий

@gapel, что-то того, никак не интересно писать код который включает лампочки(ну камон, многому не научишься)

  Развернуть 1 комментарий

Покупаете малинку W Zero, бредбоард и тонну проводков, ставите на нее линух, подключаетесь по SSH, пишете программульки для GPIO на путоне, смотрите на мигающие лампочки. Потом придумываете себе проект (у меня это сначала был деплой серверов по нажатию большой красной кнопки — а сегодня это "сырный сундук" из старого куллера), закупаетесь всем необходимым (датчиками и активными элементами типа термоэлектрики и моторчиков) — и фигачите :)

  Развернуть 1 комментарий

@XcNih4ZNxLNhGduD, а чего взял версию 'лайт'?

  Развернуть 1 комментарий

@Programistich, самый дешевый вариант на тот момент был :) чет в роде $10 — и сразу с модулем для вафли

  Развернуть 1 комментарий

@XcNih4ZNxLNhGduD, так а 4 просто не рекомендушь из-за размера? или просто цена была привлекательна?

  Развернуть 1 комментарий

@Programistich, чисто из-за цены, на самом деле :) есть высокий шанс, что малинка у автора треда будет просто пылиться на полке в итоге — так пусть уж лучше пылится $10, а не $35 :) Надо будет больше мощности позже — можно будет купить и за $35 :)

Но это чисто мое мнение, ни в коем случае не подразумеваю, что оно единственно правильное.

  Развернуть 1 комментарий

@XcNih4ZNxLNhGduD, ну я как автор треда боюсь, что она будет стоять на месте)

  Развернуть 1 комментарий

@Programistich, тогда точно не парьтесь и берите мини-вариант за $10 :) главное купите еще паяльник и GPIO коннектор в плату. Присоединяя коннектор, вы научитесь паять идеально :D

  Развернуть 1 комментарий

@XcNih4ZNxLNhGduD, у меня есть старый СССР паялник, пойдет?) А что дает мне GPIO?

  Развернуть 1 комментарий

@Programistich, я бы все-таки взял какой-нибудь новый с разными жалами за $20 :) GPIO — это general purpose input output. Вкратце, 20+ металических пинов, к которым можно подключать что угодно. Это возможности от простого замыкания внешней цепи и управления гейтами (реле) до сложного управления всякими вентиляторами и сбора данных с аналоговых и цифровых датчиков.

Короче, если хочется чтобы что-то в физическом мире двигалось и дергалось по команде софта, то GPIO для этого и нужен :)

  Развернуть 1 комментарий

@XcNih4ZNxLNhGduD, спасибо за обьяснение!

  Развернуть 1 комментарий
  Развернуть 1 комментарий

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


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

  Развернуть 1 комментарий

Если хочется во что-то въехать, сначала надо поставить конечную достижимую цель. В противном случае ковыряние быстро превратится в фрустрацию.

Например: хочу резать рекламу на всех устройствах в домашней сети. Покупаем Rapberry Pi, ставим Pi-hole, profit.

Или вот ещё: хочу из обычного IKEA торшера сделать умный (управлять питанием). Покупаем ESP8266 совместимую борду, реле и врезаем это всё в цепь управления торшером.

Следующий этап: как-то некрасиво всё что я нагенерил, надо сделать для этого красивую упаковку. О! Есть же 3D принтеры! и завертелось

  Развернуть 1 комментарий

@yuhenobi, спасибо

Но цели таковой нет, хочется понять что это такое и что можно сдедать с ним

  Развернуть 1 комментарий

@Programistich, в таком случае гуглить и ютюбить ;)

  Развернуть 1 комментарий

@Programistich, недавно я как раз вопрос про Arduino задавал, https://vas3k.club/question/3506/

Ну и следующая стадия это умный дом https://vas3k.club/question/2793/

  Развернуть 1 комментарий

@yuhenobi, та нужно просто понять что Я ХОЧУ, а так просто появилось желпние сделать штуку для резервного копирования и в будещем базу для Iot(не просто какие-то датчики по типу 'ооо у вас тут свет не выключен, передаю инфу в телеграм, и выключаю сам свет'

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб