Raspberry pi 3 блок питания какой
Это вводная часть посвящённая общим сведеньям о микрокомпьютере Raspberry Pi 3 B+. Эти сведенья Вы можете найти везде где угодно в сети, но при продолжении темы я буду ссылаться именно на свои публикации, на моем канале.
Обновлено: 16.12.2021
Для чего может быть использован Raspberry Pi 3B
После краткого обзора можно рассказать, как применяется этот “малиновый” одноплатник. Так же как и у обычного компьютера, RPi3b больше нужно смотреть не только на характеристики “железа”, а на возможности, которые дают все устройства, помещенные как на плату, так и подключенных к ней.
А количество подключаемых устройств зависят от софта, установленного в операционную систему. У одноплатника ОС довольно много. Основная, естественно, Raspbian. Поэтому большинству пользователей рекомендуют начинать юзать “малину” именно с нее.
У новой малины кроме, операционки, не менее важным было и энергопитание всего этого хозяйства.
Для питания для raspberry pi 3 model b производителем предусмотрен разъём micro-USB. Такие разъемы широко применяются в современных смартфонах. Но теперь необходимо предусмотреть запас энергии для питания мини-компьютера. Как ни крути “Малина” в корне отличается от смартфона и задачи у них разные.
Да взять, например, несколько вариантов применения Pi 3B.
Если установить SD-карту с образом операционки Raspbian, подключить кабельные — клавиатуру и мышь через имеющиеся на борту USB-разъемы, а монитор присоединить по каналу HDMI и перед нами уже полноценный, готовый к работе, компьютер!
У пользователя не возникнет неудобств с переходом на новую систему, потому что:
- привычный рабочий стол;
- браузер Chromium;
- офисный пакет от LibreOffice;
- приложения для почтовых служб;
- нужный всем интернет, который подключается по каналу Wi-Fi (хотя есть возможность и кабельного Ethernet-соединения).
Кто-то может и заметить, что современный смартфон делает тоже самое. И глубоко ошибется. Мы не зря уделяем так много внимания питанию этого устройства.
Кроме выше изложенных возможностей Raspberry Pi 3 model B, на нем можно пройти курс первичного обучения программированию на различных языках:
- Scratch.
- Python.
- Perl.
- C/С++.
- JavaScript.
С помощью приложения Wolfram Mathematica можно выполнять сложные математические расчеты, а в Sonic Pi писать любую электронную музыку.
И для всего этого хозяйства нужно только одно — правильный блок питания для raspberry pi 3. И зарядка от телефона со стандартными характеристиками тут не подойдет.
Способы взаимодействия с интерфейсом GPIO
Интерфейсная гребенка позволяет работать с собой несколькими путями:
- встроенными инструментами Linux (через интерпретатор bash и средства файловой системы);
- посредством языков программирования.
Правильное питание Raspberry Pi 3
У первых образцов “малины” потребление едва дотягивало до 80 мА. На с каждым новым поколением этих устройств энергопотребление только возрастало и становилось более мощным. При этом надо учитывать возросшее число портов USB, к которым тоже подключают другие устройства потребляющие энергию.
Изначально имеющийся разъём microUSB был спроектирован под 1.8 А. Исходя из этого, пользователи подключались 1 амперными блоками питания для зарядки телефонов или покупали в интернете аналогичные адаптеры для подключения “малинок”. Но они совсем не учитывают тот факт, что Raspberry Pi 3 это всё-таки компьютер, который уже нуждается в качественном и, что главнее, в стабилизированном электропитании с 5 вольтами на входе и с 2.5 амперами силы тока.
Если это условие нарушается, система, в лучшем случае, зависнет, в худшем — выйдет из строя! При этом повреждаются сектора на SD-карте и теряются все данные. Понятно, что в спокойном состоянии системы этого не произойдёт, но если ее нагрузить, риски аварии возрастают в разы.
Если у raspberry pi питание снижается, об этом говорит и сама система. Она работает медленнее, а в углу выводится пиктограмма в виде молнии — “питания недостаточно”!
Теперь становится понятным, насколько важен вопрос — подходящий трансформатор. Не каждый USB-зарядник для этого подходит.
Но и это еще не всё!
Не менее важный момент — качество самого питающего кабеля. Вероятность приобрести плохой кабель очень велика. Рекомендуется применять кабель 20AWG или аналогичный. Как вариант, можно просто купить оригинальный блок питания 2.5 A/ 5 V.
Длина кабеля тоже имеет значение.
У стандартных проводов при длительной эксплуатации нередко случаются заломы. Это приводит к потере контакта для питания raspberry pi 3. Оно просто пропадает.
Как мы уже говорили, выход — замена кабеля. Но есть и еще одно условие — длина провода. Замечено многими пользователями — при стандартных требованиях к блоку питания 2.5 A 5 V, значок молния все равно появляется в углу экрана. Причина кроется в длине кабеля. Как правило, он метровый. Опытные пользователи советуют ограничить длину кабеля 30-ю сантиметрами. Для “Малины” это оптимальный вариант.
Внимание! Для особо пытливых умов не лишним будет напомнить — питание устройства Raspberry Pi 3 допускается или от блока питания 5 Вольт/2.5 Ампер, или от входа USB. Оба сразу не применять!
Особенности RPi3b
Для тех, кто “переболел” предыдущей версией “малины” будет интересно узнать насколько далеко ушел RPi3b. Теперь он оснащен:
- 4-х ядерным процем, с частотой 1.2 Ггерц;
- Оперативкой в один Гб;
- Целых четыре юсбишных порта;
- 40-пиновое подключение к устройствам ввода/вывода.
Кроме того, есть ещё интересные изменения, которые могут понравиться любителям малогабаритной электроники.
Во-первых, на его борту процессор нового поколения Cortex-A53. Теперь он поддерживает и 64-битные инструкции, которые были недоступны, в предыдущей модели Cortex-A7.
Во-вторых — дополнен модулем WiFi стандарта 802.11n.
В-третьих, эта модель обзавелась модулем Bluetooth. В RPi3b Bluetooth версии v4.1.
Теперь такая “Малина” стала более интересной в плане производительности и расширения функционала.
Нумерация
Выше рассматривались номера пинов. Но важно понимать, что заложенная в центральный процессор логическая нумерация отличается от приведенной на схеме физической. Ее особенности:
- не исполняющие функций ввода-вывода «штырьки» номеров не имеют;
- контакт 3 является портом, но имеет логический номер BCM2.
Этот принцип следует учитывать при создании кода, поскольку ПО ориентируется именно на логические номера. Их схема:
У новичков это может вызвать недоумение и путаницу. Для помощи в решении проблемы существует программная библиотека Wiring Pi с собственной альтернативной нумерацией. Так, логический GPIO2 в ней определен как WIringPI 8. Это может показаться непонятным, но после освоения библиотеки ее принцип нумерования становится привычным и удобным.
Проблемы питания
Когда идет активная работа, на экране монитора в углу появляется предупреждение — значок “молния”. Не хватает питания! И это не проблема платы Pi 3B, а типичная ошибка начинающих пользователей таких устройств.
У больших компьютеров на этот счет построена целая система правильного снабжения электричеством всем блоков и элементов платы.
А между тем и для Pi 3B также важно правильная подача электроэнергии. От этого, естественно, зависит насколько долго и надёжно проработает этот девайс.
Из приведенной схемы распиновки хорошо видно, что помимо элементов GPIO Raspberry Pi 3, есть выводы для напряжения 3.3 V, 5 V, а также выводы GND. И это требование очень важно — их нарушать нельзя! Если отдельные GPIO могут выполнять альтернативные функции (на схеме это синие блоки) то нагрузочные пределы превышать крайне не рекомендуется. Весь блок Raspberry Pi может выйти из строя.
Рекомендуем более тщательно узнать, как устроена распиновка Raspberry Pi 3, прежде чем приступать к выполнению проектов.
Зарядные устройства
В качестве источников питания для Raspberry Pi и для других подобных штуковин часто используются зарядные устройства для телефонов. Существует много видов зарядных устройств. Я выбрал четыре штуки — просто потому что они оказались под рукой, и проверил, как их выходное напряжение зависит от тока, потребляемого подключёнными к ним устройствами. Речь идёт о следующих зарядных устройствах: Baseus FC67E (отличный зарядник), зарядное устройство, которое шло в комплекте с каким-то планшетом Lenovo, пара no-name-зарядников, которые прилагались к ещё каким-то устройствам. Насколько я знаю, где-то у меня были зарядные устройства на 1,5 А и на 2 А, но я не смог их найти.
Достаточно интересно то, что я обнаружил, что все эти зарядные устройства ведут себя довольно стабильно во всём поддерживаемом ими диапазоне силы тока (я, честно говоря, не ожидал, что они так хорошо себя проявят).
Зарядные устройства
Управление через Python
Питон — один из самых популярных языков разработки под Raspberry, и в нем создан богатый инструментарий. В последних дистрибутивах ОС Raspbian уже присутствует и сама среда Python, и необходимая для работы библиотека RPi.GPIO. Если же таковой нет, ее можно загрузить из репозитория:
sudo apt-get install python-rpi.gpio
Далее необходимо подгрузить этот модуль в программу:
import RPi.GPIO as GPIO
Далее следует определиться с порядком нумерации — брать ли «физический» по номерам портов на микрокомпьютере, или использовать принцип обращения по номерам процессорных каналов (BCM):
GPIO.setmode (GPIO.BOARD)
GPIO.setmode (GPIO.BCM)
Преимущество первого пути — универсальность: он будет работать с любой ревизией контроллера. BCM обращается непосредственно к каналам процессора на более низком уровне.
На следующем шаге выбирается режим работы портов input или output.
GPIO.setup(channel, GPIO.IN)
GPIO.setup(channel, GPIO.OUT)
Сразу же можно определить начальное состояние выходов RPi3:
GPIO.setup(channel, GPIO.OUT, GPIO.LOW)
GPIO.setup(channel, GPIO.OUT, GPIO.HIGH)
Команда на чтение информации со входа:
Запись значения на выход GPIO:
Особенности GPIO «малинки»
При работе необходимо учитывать несколько важных моментов:
- на обоих выводах 3.3 В суммарный ток равен 50 мА. Поэтому напрямую к ним можно подключать устройства с общим потреблением до 50 миллиампер;
- 5-вольтовые выводы поддерживают в сумме до 500 мА, что позволяет подсоединять к ним более мощную периферию, включая устройства ввода (мышки, клавиатуры и так далее);
- GPIO допускает подачу напряжения только до 3.3 В. Если превысить это значение, велик шанс сжечь вход или весь контроллер;
- 14-15 пины по умолчанию работают как RXD и TXD UART-интерфейса и сразу после включения выдают напряжение в 3.3 В;
- также по умолчанию почти все конфигурируемые выводы «малинки» являются входами с высоким сопротивлением. Исключение — GPIO0 и GPIO1 (SDA и SCL соответственно);
- работая в режиме INPUT, пин автоматически переводит подаваемую на него информацию в цифровой вид. При этом отметим, что RPi3 исходно работает только с цифровым сигналом, а для обработки аналоговых используется специальный преобразователь ЦАП/АЦП.
Важно помнить: все «ножки» колодки соединены с процессором напрямую, некорректные операции и неверное подключение способно привести к полной неработоспособности платы.
Поэтому при правильном проектировании приспособлений с большим количеством используемых выводов GPIO схема должна предусматривать дополнительные меры безопасности. Желательно делать защитные развязки электронными ключами, через трансформаторы напряжений и различные буферы.
Как правило, RPi3 работает под управлением ОС семейства Linux (Raspbian или другой). Сразу после загрузки системы напряжение на пинах низкое и остается таковым до изменения запустившимся скриптом или программой. Но в промежуток от подачи электропитания до инициализации системных драйверов пины в произвольном порядке способны выдавать высокое напряжение. Это следует учитывать и изолировать по питанию входы-выходы в процессе запуска системы.
Характеристики
- Процессор: 64-битный четырёхъядерный ARM Cortex-A53 с тактовой частотой 1,4 ГГц на однокристальном чипе Broadcom BCM2837
- оперативная память: 1ГБ LPDDR2 SDRAM
Разъемы и выходы
- цифровой видеовыход: HDMI
- разъем дисплея: Display Serial Interface (DSI)
- композитный выход: 3,5 мм (4 pin)
- USB порты: 4× USB 2.0
- карта памяти: MicroSD
- разъем видеокамеры: MIPI Camera Serial Interface (CSI-2)
- порты ввода-вывода: 40
- Ethernet: 10/100/1000 Мб RJ45
- беспроводная сеть: WiFi 2,4/5 ГГц, 802.11n
- Bluetooth: Bluetooth 4.2, Bluetooth Low Energy
Более подробно
Чип Broadcom BCM2837 это 64-битный четырёхъядерный ARM Cortex-A53 процессор, частота 1,4 ГГц и графический двухъядерный 32-разрядный VideoCore IV с частотой 400 МГц.
О сети, заявлен 1 Гбит/с Lan, но он не работает должным образом так как подключен через «виртуальную» сетевую карту поверх USB 2.0 и конкурирует с ним. Wi-Fi лишен этого узкого места так как подключается к чипу BCM4343 через SDIO.
Пример работы
Рассмотрим пример взаимодействия RPi3 и простой схемы со светодиодом через написанную на Python программу.
Для начала понадобится «малинка» с установленным ПО и средой разработки, макетная плата, диод, кнопка и резисторы. Схема подключения приведена ниже:
Здесь R1 имеет сопротивление 10 кОм, R2 — 1 кОм, а резистор R3 — 220 кОм.
Что обеспечивает подобная модель:
- без нажатия кнопки на входе пина возникает напряжение 3.3 В;
- при нажатии кнопки через нее и резистор R1 начнет подаваться ток 0.33 мА, а на входе схема обеспечит 0 В;
- при неверном подключении пинов по схеме потечет ток безопасных значений, предохраняя систему от повреждения.
Написанный на Python скрипт включения-выключения лампочки:
Import RPi.GPIO as GPIO
GPIO.setmode (GPIO.BCM)
GPIO.setup (4, GPIO.OUT)
GPIO.output (4, 1)
GPIO.cleanup ()
Для «моргания» диодом:
Включение лампочки с кнопки:
Пример управления выходами с клавиатуры:
Готовую программу следует сохранить в удобную папку и запустить командой Питона:
sudo python путь_к_исполняемому_файлу/имя_программы.py
Python предоставляет широкое поле возможностей для программирования «Распберри» и позволяет реализовывать гораздо более сложные схемы. Кроме того, с платой можно взаимодействовать на практически любом распространенном языке — одном из семейства C, Perl, Erlang и другое. Существуют даже реализации проектов на Java и HTML5.
Методика тестирования
Я использовал электронную нагрузку TENMA 72-13200, подключённую напрямую к USB-коннектору (male) кабеля, соединённого с источником питания. Некоторое падение напряжения происходит на выводах электронной нагрузки, и лучше было бы подключить мультиметр прямо к контрольной точке, но, так как измерительные выводы довольно массивны, я решил в этот раз на данный факт внимания не обращать (я, на самом деле, забыл об этом, проверяя первые два зарядника, а потом мне просто не захотелось ещё раз проводить те же самые измерения). И, кроме того, это падение напряжения не играет особой роли, так как тут я стремлюсь лишь увидеть общую картину.
Одна из основных функций одноплатных компьютеров семейства Raspberry Pi — обеспечивать взаимодействие с разнообразной периферией. Это могут быть датчики, реле и двигатели, лампочки и прочие исполнительные модули и блоки. За такое «общение» отвечает встроенный в платы Raspberry Pi GPIO — интерфейс ввода-вывода. Рассмотрим его подробнее на примере RPi 3 B.
Устройство GPIO
Число пинов на колодке GPIO Raspberry Pi 3 равняется 40. Они пронумерованы и делятся на три группы:
- питающие (power на схемах);
- заземляющие (GND, Ground);
- порты (часто обозначаются как BCM).
Первые необходимы для подачи электричества разных напряжений — 3.3 и 5 В. Разница между ними была рассмотрена выше. Вторые обеспечивают безопасность работы платы, отводя электричество. А третьи выступают в качестве интерфейсов, принимая и отдавая данные. Именно к ним пользователь подключает свои модули и приборы.
Схема пинов Raspberry Pi 3 Model B:
На данной схеме pinout выводы пронумерованы по следующему принципу:
- 1 — левый в первом верхнем ряду;
- 2 — второй в верхнем ряду, и так далее.
Выходы 1 и 17 обеспечивают питание 3.3 В, 2 и 4 — для 5 В. «Земля» расположена на 9, 25 и 39, и на 6, 14, 20, 30, 34. Прочие контакты — интерфейсные порты.
Аналоговые входы, выходы
Нужно помнить о том, что Raspberry Pi 3 не имеет аналоговых входов/выходов. Для реализации подобного функционала нужно использовать внешние АЦП/ЦАП, например, АЦП ADS1115 (I2C) или АЦП MCP3008.
Подключение «Малины» к USB-порту
Да системные требования позволяют использовать “малину” в качестве медиацентра. И многие пользователи понимают это слишком буквально, подавая напряжение напрямую с USB-выхода телевизора. Кажется, это быстрый вариант и не надо занимать лишнее гнездо у розетки. Но это поспешное решение.
Да USB-порт телевизора реально выдает требуемые 5 Вольт. Именно это напряжение и необходимо для работы “Малины”. Но вот беда — сила тока не та! Она меньше чем требуется для стабильной работы одноплатника.
У телевизора USB-порт выдает каких-то “жалких” 0.4–0.5 Ампер. А сколько надо? Правильно — 2.5 Ампер!
Поэтому в этих условиях (питание от USB-порта телевизора) Raspberry Pi, или вообще не будет работать, или запустится, но с большими тормозами.
Так как силы тока не хватает, а плата продолжает работать, рано или поздно настанет тот “радостный” момент, которого так ждал мучитель — плата издаст последний писк и затейливо задымится!
Всего-то и нужно было — немного потратится и купить обычный сетевой фильтр с необходимым количеством розеток.
На заметку! Если подать питание 2.5 A/ 5 V на разъём microUSB Raspberry, то общая 40-пиновая шина сама станет источником питания. К ней можно будет подключать устройства, которые питаются +5 В и +3.3 В.
Дополнительным удобством для тех, кто любит наглядность, существуют наклейки на плату распиновки со всеми обозначениями выводов.
Характеристики
- Процессор: 64-битный четырёхъядерный ARM Cortex-A53 с тактовой частотой 1,4 ГГц на однокристальном чипе Broadcom BCM2837
- оперативная память: 1ГБ LPDDR2 SDRAM
Разъемы и выходы
- цифровой видеовыход: HDMI
- разъем дисплея: Display Serial Interface (DSI)
- композитный выход: 3,5 мм (4 pin)
- USB порты: 4× USB 2.0
- карта памяти: MicroSD
- разъем видеокамеры: MIPI Camera Serial Interface (CSI-2)
- порты ввода-вывода: 40
- Ethernet: 10/100/1000 Мб RJ45
- беспроводная сеть: WiFi 2,4/5 ГГц, 802.11n
- Bluetooth: Bluetooth 4.2, Bluetooth Low Energy
Более подробно
Чип Broadcom BCM2837 это 64-битный четырёхъядерный ARM Cortex-A53 процессор, частота 1,4 ГГц и графический двухъядерный 32-разрядный VideoCore IV с частотой 400 МГц.
О сети, заявлен 1 Гбит/с Lan, но он не работает должным образом так как подключен через «виртуальную» сетевую карту поверх USB 2.0 и конкурирует с ним. Wi-Fi лишен этого узкого места так как подключается к чипу BCM4343 через SDIO.
О операционной системе
Конечно Вы скажите: "А о чем тут говорить? Конечно там Linux!". Да это так, но не совсем. Есть еще одна операционная система, она если можно сказать главная и низкоуровневая - это ThreadX
ThreadX это это операционная система реального времени (RTOS) и все было бы хорошо, но это ОС с закрытым исходными кодами. Разработана Express Logic, куплена Microsoft в 2019 году
Интересно выглядит процесс загрузки Raspberry Pi. Первым стартует GPU, да именно - графический процессор. Он запускает CPU, а затем ThreadX OS. Монтируется SD-карта, ThreadX читает "config.txt" и применяет параметры написанные там. И только затем CPU загрузит ядро Linux.
И все было бы хорошо если бы в этот момент ThreadX уходила со сцены отработав вот таким низкоуровневым загрузчиком, но нет она продолжает жить своей жизнью.
ThreadX отслеживает снижение напряжение и перегрев чипа, снижает частоту процессора, чтобы предотвратить сбой процессора и зависание. Поэтому когда это происходит Linux об этом знать не знает, все сделано до нее и за нее. Повлиять на это мы не можем.
Raspberry Pi — невероятно популярное устройство, известное своей доступностью, универсальностью, возможностями и активным сообществом. Легко найти фанатские сайты и статьи, но большинство людей не знают о его слабых местах, пока сами не пострадают от них и не поищут информацию на форумах.
Постараюсь рассказать о некоторых вопросах, с которыми я столкнулся лично, а также о некоторых типичных проблемах, которые чаще всего появятся у людей, ничего не подозревающих об этом. И, наконец, почему я не рекомендую Pi для некоторых приложений, в частности, NAS-услуг, таких как NextCloudPi и Open Media Vault. Надеюсь, это сэкономит мне время, чтобы не повторять всё это на форумах.
У меня было много Raspberry Pi, и я использую их в течение многих лет. Когда в 2012 году появилась первая модель, это стало важной вехой на рынке одноплатников. Хотя уже существовало несколько хороших плат, таких как Beagleboard и Odroid, они были довольно дорогими, и только хардкорные любители могли их купить и проверить в деле.
Pi не такая мощная по сравнению с ними, но из-за потрясающей дешевизны буквально взорвала рынок. Блоги, платы расширения, множество личных проектов, тонны библиотек… Raspberry Pi первой достигла всего этого, и по сей день процветающее сообщество — самое большое преимущество Pi над другими платами.
Но сейчас 2019 год и пора осмотреться ещё раз. На мой взгляд, есть более открытые альтернативы лучшего качества по той же цене. Постараюсь объяснить.
Raspberry Pi снизила цену, срезав углы. В результате плата недостаточно производительна для некоторых задач, по сравнению с конкурентами. В частности, она плохо подходит для сетевых задач и по USB-функциональности.
Здесь стоит микросхема SMSC LAN9514, которая соединяется с SoC одним USB-каналом, действуя в качестве USB-to-Ethernet адаптера и USB-хаба одновременно. Таким образом, Ethernet и USB сидят на одном канале и конкурируют друг с другом, что противоречит типичному использованию NAS, когда что-то загружается по сети и сохраняется на USB-накопитель, не говоря уже о добавлении сюда RAID.
По этой же причине, даже когда в прошлом году они, наконец, выпустили модель с поддержкой Gigabit Ethernet, реальная сетевая производительность никогда даже близко не приближалась к гигабитной, а составляет максимум 40 МБ/с по чистой скорости и максимум 20 МБ/с, если идёт передача на USB-устройство. В то время уже были дешёвые платы с настоящим Gigabit Ethernet и USB3.
На самом деле Wi-Fi не идёт через SMSC, а подключается к чипу BCM4343 через SDIO, так что этого узкого места можно как-то избежать с помощью Wi-Fi. Впрочем, микросхема Wi-Fi не всесильна, ей придётся бороться с окружающими помехами, так что это не идеальная альтернатива.
По указанным причинам я бы не рекомендовал использовать Pi как NAS, будь то Open Media Vault или Nextcloud.
Если вы участвовали в спорах о свободе ПО, то главная проблема в наших системах Linux — двоичные блобы с закрытым исходным кодом. Не буду вдаваться в подробности, но проблема в том, что эти части системы невозможно проверить, а они имеют доступ ко всему, что происходит в устройстве. Это породило большие open source проекты, такие как Android Replicant, призванные освободить наши системы от любых двоичных блобов: болезненный, утомительный и медленный процесс.
Аналогичная проблема у Raspberry Pi, где CPU и GPU встроены в тот же чип BCM2837B0. Центральный процессор представляет собой 64-разрядный четырёхъядерный ARM A53 на 1400 МГц (в Pi 3B), а графический — двухъядерный 32-разрядный VideoCore IV с частотой 400 МГц. Интеграция CPU и GPU популярна в мобильном мире, потому что снижает цену и энергопотребление. Конкуренты NXP iMX и Allwinner используют аналогичный подход.
Таким образом, в последнем Pi шесть ядер, но только четыре из них ARM. На процессоре работает Linux, но вас может удивить, что Linux на данном устройстве — гражданин второго класса. Ядра GPU работают под управлением операционной системы реального времени ThreadX. Эта ОС с закрытыми исходниками управляет системой без ведома ядра Linux.
В начале загрузки Raspberry Pi процессор полностью отключен (технически в состоянии reset) и именно GPU запускает систему. Можете взглянуть на папку /boot — и найдёте бинарные блобы, с помощью которых GPU запускает процессор и собственную ThreadX OS (bootcode.bin и start.elf). Подробнее о процессе загрузки см. здесь.
Именно GPU монтирует SD-карту, загружает эти блобы и читает конфигурацию из текстового файла config.txt, который мы редактируем, чтобы настроить параметры видео или разогнать GPU. Linux тут не участвует.
Когда GPU позволит CPU загрузить ядро Linux, он не просто уходит со сцены, работая лишь как графический процессор. Нет, GPU по-прежнему главный. Вы когда-нибудь думали, кто выводит эти логотипы, когда Pi подключается к HDMI? Или эти символы молнии или температуры в предупреждающих значках? Вот именно, это делает система ThreadX на GPU, а Linux вообще не знает, что происходит.
Мы не можем знать всей функциональности GPU, но знаем кое-что, за что он отвечает. Для данной статьи важно то, что ThreadX отслеживает снижение напряжение — широко распространённая проблема, как мы увидим дальше, и снижает частоту процессора, чтобы предотвратить сбой процессора и зависание. Поэтому у людей устройства работают на частоте 600 МГц вместо 1400 МГц, в лучшем случае. Такое дросселирование начинается на 4,65 В и его также может инициировать температура. В то же время Linux по-прежнему думает, что система нормально работает на полной частоте.
Это только то, что мы видим. Поскольку основная ОС проприетарна, у нас нет способа узнать, что ещё она делает или способна делать, поэтому всегда остаётся проблема с приватностью.
Существует по крайней мере один патент, включенный в блоб с закрытым исходным кодом, который запрещает открытие кода по крайней мере до 2025 года, но мы не знаем, будет ли это сделано даже тогда. Были попытки реверс-инжиниринга VideoCore IV и создания open source прошивки для него. К сожалению, проект умер прежде, чем выдал что-то полезное. Как и с блобами Android, это невероятно трудная работа.
Это не техническая ошибка Raspberry Pi, а скорее типичная ошибка пользователя.
Первая модель едва использовала 80 мА, но каждое новое поколение становилось всё более мощным, и по этой причине более энергозатратным. Кроме того, многие пользователи подключают USB-устройства, которые также потребляют энергию, если не поставляются с собственными источниками питания.
Разъём microUSB первоначально был рассчитан только на 1,8 A, и хотя это старый стандарт, и вы можете найти зарядные устройства, которые выдают больше, поэтому многие люди пытаются использовать старые зарядные устройства телефона на 1 A или купить в интернете дешёвые адаптеры для питания своих «малинок». Но Pi — это компьютер, и он требует качественного, стабилизированного электропитания, которое обеспечивает стабильные 5 В на входе с силой тока до 2,5 A. Нужен не только пристойный трансформатор, но и качественное соединение (или произойдёт падение напряжения), но более важно, что нужен хороший кабель, иначе сильно упадёт напряжение по нему. Плохие кабели встречаются ещё чаще, чем нестабильные источники напряжения, поэтому обязательно используйте хороший кабель: возможно, 20AWG или аналогичный, или просто купите официальный источник питания. Вывод в том, что не любое зарядное устройство USB будет работать должным образом, даже если это 2.5A 5V.
Добавьте это к тому, что мы обсуждали в прошлом разделе, и начнёте понимать общую картину. Большинство пользователей работают на своих устройствах с пониженной частотой, и GPU скрывает это от них, поэтому они фактически работают с пониженной частотой 600 МГц: почти так же, как ARMv6 на самом первом Pi.
Во многих случаях усилий GPU недостаточно, и система случайным образом выходит из строя или просто зависает, возможно, повреждая данные или повреждая SD-карту. Это обычно случается под нагрузкой, то есть когда транзисторам требуется максимальное питание. Затем пользователь приходит на форумы и жалуется: мой блок питания в порядке, я запускал это и то, и ничего не сбойнуло. Конечно, это неправда, но часто они в это не верят.
На мой взгляд, здесь то, что японцы могут назвать Poka Yoke, то есть мы должны проектировать такие системы, которые по своему дизайну не дадут пользователю выстрелить себе в ногу. Опять же, официальный источник питания очень хорошего качества для своей цены, и я очень его рекомендую.
Мне не нравится, что скрытая проприетарная система понижает частоту вне нашего контроля. Лучше бы система зависала: тогда сразу видно, что происходит, и человек может заменить блок питания. По-моему, это лучше, чем обманывать пользователей и заставлять их жаловаться по всему интернету. Трудно представить себе причину, по которой разработчики Pi сделали бы это, если бы не скрывали проблему Poka Yoke.
то у вас происходит понижение напряжения. Хорошо, что сейчас Linux фиксирует хотя бы такую информацию, но если мы хотим узнать больше, нужен прямой доступ к GPU.
Команда vcgencmd может получить от прошивки ThreadX информацию о системе.
Можно использовать команды vcgencmd measure_clock arm и vcgencmd measure_volts для проверки реальной частоты и напряжения. Вот пример выходных данных скрипта мониторинга от tkaiser.
Я действительно думаю, что Raspberry Pi стал очень важным событием в истории одноплатных компьютеров, но сегодня он отстаёт с точки зрения качества, производительности и открытости. Есть доступные альтернативы, где разработчики уделили больше внимания этим вопросам.
Несмотря на это, я всё равно использую Raspberry Pi, помогая пользователям установить собственный облачный хостинг. Учитывая популярность этой платы, для меня есть смысл поддерживать её до тех пор, пока она полезна людям.
На ресурсах, посвящённых Raspberry Pi, часто всплывает вопрос о том, почему в углу экрана появляется маленький значок молнии, причём — даже тогда, когда используемого блока питания более чем достаточно для обеспечения того, что нужно плате. Этот значок указывает на понижение напряжения и выводится даже в тех случаях, когда напряжение, выдаваемое источником питания, падает ниже 4,63±0,07В на очень короткий промежуток времени.
Пользователи разной интересной электроники (пару лет назад и я был таким) обычно не особенно задумываются о Micro-USB-кабелях, используемых для питания их систем. Я решил произвести некоторые измерения, направленные на выяснение того, как применение различных кабелей влияет на параметры питания. И надо сказать, что хотя всё больше и больше устройств оснащаются разъёмами USB Type-C, кабели для которых обычно более качественны, чем Micro-USB-кабели, Micro-USB-разъёмы всё ещё используются в подавляющем большинстве устройств.
Это касается не только Raspberry Pi, но и других подобных устройств, получающих питание по Micro-USB-кабелям (например — это мобильные телефоны, заряжаемые по Micro-USB).
Сразу поделюсь моим основным выводом, который заключается в том, что для подачи питания на различные электронные устройства и для зарядки телефонов лучше пользоваться USB-кабелями с проводниками, толщина которых, как минимум, соответствует AWG20.
Теория
Теория, на которой основано моё исследование, достаточно проста, но это нечто такое, о чём начинающие пользователи Raspberry Pi и «обычные» люди, как правило, не задумываются. Дело в том, что каждый проводник электричества характеризуется определённым сопротивлением (то есть — его можно представить себе в виде резистора). В соответствии с законом Ома напряжение зависит от сопротивления проводника и от силы тока. В результате для сигнальных кабелей, на которых не бывает (значительного) тока, сопротивление проводов особой роли не играет. А вот если говорить о силовых кабелях и о силе тока в несколько сотен миллиампер (или в несколько ампер), сопротивление проводников начинает играть заметную роль. Даже если оно невелико, при прохождении по проводнику тока большой силы произойдёт заметное падение напряжения. А падение напряжения на питающих кабелях — это попросту потери напряжения, которое не дойдёт до того места, где оно нужно. Если источник питания, например, выдаёт 5,0В, а из-за кабеля напряжение падает на 0,3В, то устройство получит лишь 4,7В.
Сопротивление проводников зависит от материала, из которого они сделаны, от площади их сечения (толщины) и от их длины. Сопротивление возрастает при увеличении длины проводника и уменьшается при увеличении его толщины. Для того чтобы уменьшить «просадку» напряжения — нужно уменьшить сопротивление кабеля, для чего надо либо использовать более толстый кабель, чем раньше, либо более короткий кабель, либо кабель, в котором сочетается и то, и другое. В описаниях к большинству Micro-USB-кабелей нет сведений о толщине используемых в них проводов. Обычно в них применяются, для всех линий, достаточно тонкие проводники. Но если речь идёт о более качественных кабелях, то в их описаниях обычно есть сведения об этом (и для линий питания в этих кабелях обычно используются провода, соответствующие AWG20).
Что такое колодка GPIO
GPIO — сокращение, означающая General-Purpose Input-Output, или общий интерфейс ввода/вывода. Он содержит цифровые входы и выходы для подключения датчиков, разнообразных контроллеров, дисплеев, реле и прочей электронной периферии. Внешне GPIO похож на «гребенку» из штырьков-пинов. В Raspberry Pi 3 его внешний вид таков (в верхней части платы):
Колодка GPIO Raspberry чем-то напоминает интерфейс подключения жестких дисков IDE.
Для правильной работы через GPIO необходимо знать конфигурацию пинов. В Raspberry Pi распиновка такова:
Разъемов питания 4. Прочие пины способны выступать в роли входа или выхода. Кроме того, некоторые из них многофункциональны и могут работать как интерфейс UART, I2C, SPI или ШИМ.
Рассмотрим более подробно устройство «гребенки».
Управление на bash
Если использовать Raspbian, «баш» доступен по умолчанию. Пример отправки логического «1» на пин номер 25:
sudo su -
echo 25 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio25/direction
echo 1 > /sys/class/gpio/gpio25/value
echo 0 > /sys/class/gpio/gpio25/value
Чтение данных со входа номер 24:
echo 24 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio24/direction
cat > /sys/class/gpio/gpio24/value
Заключение
GPIO — удобное и универсальное решение, позволяющий подключать к RPi 3 разнообразную периферию и программировать ее поведение на одном из привычных языков. Логика взаимодействия довольно проста, а GPIO, как и сама «малинка», хорошо документирован, что обеспечивает легкий вход в программирование с использованием этого интерфейса даже новичкам в мире IT.
Начинающим можно порекомендовать язык Python, как несложный в освоении и логичный. В нем присутствуют все необходимые библиотеки работы с GPIO, ускоряющие и упрощающие процесс разработки.
Одна из самых популярных версий одноплатных компьютеров — это Raspberry Pi 3 модель B. Несмотря на то что с момента его выпуска прошло уже четыре года, сообщество электронщиков с интересом следит за его развитием. Сегодня одна из актуальных тем — питание raspberry pi 3.
Заключение
Raspberry Pi 3 Model B — перспективная модель в плане потребления электроэнергии миникопьютера. Для больших собратьев питание 5 Вольт/2.5 Ампер— недосягаемый горизонт. В этом плане для пользователя “Малины” есть только один повод для беспокойства — не превышать допустимого энергопотребления. Хотя и тут есть выход из положения — установка дополнительных систем охлаждения, таких как кулер или радиатор на процессор.
Питание Raspberry Pi 3 от аккумулятора
У raspberry pi 3 блок питания от сети 220 вольт, можно заменить электроснабжением от аккумулятора. Но тут важно обратить внимание на то, чтобы он выдавал напряжение не менее пяти вольт. Большинство выносных аккумуляторов именно 5 Вольт и выдают. Главное чтобы они смогли выдавать ток не менее 2.5 Ампер.
Для RPi 3 b, который будет использоваться в переносном варианте, собственно говоря, не нужно работать на полную мощность. Поэтому тут хватит и силы тока на выходе в 1.8 Ампер.
Опять же не забываем, что питание происходит через разъем micro-USB в стандартном исполнении, который применен на большинстве современных смартфонах.
И если модель Pi 3B, будет использоваться как обычный настольный компьютер, для его питания все-таки нужен ток не менее 2 А, а лучше 2.5 А.
И только при этом условии “Малина” сможет стабильно работать. При недостатке электроснабжения возможны подтормаживания системы.
Хотя справедливости ради, нужно сказать, что тормозить система может и по другим причинам.
- Карта microSD не отвечает требуемому классу скорости — ниже 10.
- Слишком длинный кабель питания.
- Слабый контакт в самом кабеле — провод просто изношен.
- Зарядка выдает ток менее 2.5 А.
Так что, в любом случае, к выбору источника питания для “Малины” нужно подходить крайне осторожно. Для автономной работы один источник питания, для стационарных систем совсем другой.
Порты ввода/вывода общего назначения (GPIO)
Одно из неоценимых преимуществ Малинок является гребенка портов ввода вывода называется она GPIO (General Purpose Input Output — интерфейс ввода/вывода общего назначения) всего там 40 штырьков или пинов (PIN). Конечно не все 40-пинов это GPIO, так как 12 из них представляют из себя пины питания 3.3 В, 5 В и общие пины GND (земля). Через PINы 27 (BCM 0) и 28 (BCM 1) конфигурируется EEPROM для работы с HAT-устройствами (Hardware Attached on Top — устройства поверхностного монтажа, а по сути это обычные платы расширения). Использование этих пинов не рекомендуется, но тем не менее они являются полноценными GPIO-пинами.
Физическая нумерация
40 PIN - GPIO
Raspberry Pi имеет на борту интерфейс, называемый GPIO . Это аббревиатура от General Purpose Input Output .
Нумерации PINов не много, а очень много
- Physical Pin - физическая нумерация, она отвечает за физическое расположение контакта на гребенке.
- GPIO - нумерация контактов процессора Broadcom. Может пригодиться при работе с пакетом Rpi.GPIO.
- WiringPi Pin - нумерация контактов для пакета Wiring Pi. Это Arduino-подобная библиотека для работы с GPIO-контактами.
- ШИМ - плата имеет два канала ШИМ по два потока в каждом.
PWM012, 18;
PWM113, 19. - I²C - SDA12, SCL13. Для общения с периферией по синхронному протоколу, через два провода.
- SPI - К SPI0 можно подключить два ведомых устройства, а к SPI1 — три. Выбор осуществляется сигналом на пине CEx.
SPI0: MOSI0 10, MISO0 9, SCLK0 11, CE0 8, CE1 7;
SPI1: MOSI1 20, MISO1 19, SCLK1 21, CE0 18, CE1 17, CE2 16. - UART - 14, 15. Асинхронный протокол последовательной передачи данных по двум проводам RX и TX, который позволяет обойтись без тактового сигнала.
Где купить
Особые порты
Внешние модули можно подсоединять к любым портам «гребенки» GPIO. Но есть два особенных, которые плата резервирует для специфических задач. На обычной схеме их номера — 27 и 28. Они предназначены для плат расширения, и желательно не использовать их без необходимости.
Читайте также: