sonyps4.ru

Raspberry pi 2 схема электрическая. Питание Raspberry Pi с использованием Arduino

5

Hi-Fi аудиоплеер на базе миникомпьютера «Raspberry Pi». Часть 1. Блок питания для Raspberry Pi (5V, 2A)

Цепочка C31, R15 обеспечивает нулевое состояние триггера при включении блока питания в сеть 220 V.

Задержка выключения нужна потому что после программного выключения, после того как все GPIO погашены, ещё 2-3 секунды идёт обращение к флеш-памяти миникомпьютера (там установлена операционная система). Это ещё одна небольшая проблема, которую необходимо предусмотреть в данном блоке питания.

Программное обеспечение

Код программы, выдающей сигнал «RPi_OFF»
#include "stdlib.h" #include "bcm2835.h" #define PIN_12 RPI_V2_GPIO_P1_12 #define PIN_07 RPI_V2_GPIO_P1_07 int init_system (void) { if (!bcm2835_init()) return 0; bcm2835_gpio_fsel(PIN_12, BCM2835_GPIO_FSEL_OUTP); //пин на выход bcm2835_gpio_fsel(PIN_07, BCM2835_GPIO_FSEL_INPT); //как вход } int main (int argc, char *argv, char *enpv) { if (!init_system()) return 1; bcm2835_gpio_write(PIN_12, HIGH); // (Машина загружена) //ожидания низкого уровня (кнопки выключения) while(bcm2835_gpio_lev(PIN_07)) delay(50); system("poweroff"); return 0; }
Этот код у меня включен в основном программном обеспечении, здесь он просто как рабочий пример для ознакомления или повторения. Далее надо добавить эту программу в автозагрузку. Для этого в файл /etc/rc.local в конце перед EXIT 0 добавим:
#! /bin/sh …… /programs/autorun.sh & EXIT 0

Папку проекта «programs.zip» можно скачать в секции «Файлы» внизу статьи. autorun.sh - это наш исполняемый скрипт, который запустит программу. В нем:
#! /bin/sh ./programs/project_pin_on/bin/pin12on exit 0

ШИМ-контроллер DP408P (1M0880) в импульсном БП

Здесь стоит уделить внимание замечательной микросхеме ШИМ-контроллеру DP408P (аналог 1M0880). DP408P работает на частоте 25 КГц, 1M0880 – 64 КГц. За время моих испытаний, попыток изготовить идеальных трансформаторов и т.п., сложилось впечатление, что убить чип невозможно. Без снабберных цепей я её включал, перегружал, все ей нипочём. Рекомендую чип для тех, кто впервые решил построить обратноходовой преобразователь. Я так ни одной микросхемы и не сжег. DP408P можно наковырять в старых СRT мониторах от SAMSUNG. Даташит, к сожалению, на нее не найти, но у меня в наличии так же имелась и 1M0880 и, в результате сравнения, выяснилось, что они практически одинаковые.

Микросхема включается, как только напряжение её питания превысит 15 V. Микросхема выключается, когда напряжение питания упадет до 8,5-9 V. То есть, после того, как микросхема включилась, напряжение не обязательно должно быть 15 V и выше, но желательно.

Если напряжение питания превысит 27 V (25V для 1М0880), срабатывает защита и микросхема выключается. Следующая попытка включения пройдёт только после снятия питания, если напряжение питания упадет ниже 8,5-9 V и опять превысит 15 V.

В процессе испытаний, например, свеженамотанного трансформатора, удобно сначала запитать ШИМ от отдельного лабораторного блока питания. Надо помнить про очередность подачи напряжений: сначала высокое 308 V, затем 15 V.

Для первичного запуска используется отдельный выпрямитель D5. За счёт R6 и С18 напряжение питания достигает уровня 15 V немного позже появления 308 V. ШИМ запускается, потребляя около 20 мА. И если не подключить обмотку самопитания, С18 разряжается и микросхема выключается. Затем опять зарядится конденсатор, и процесс запуска повторится снова.

В конце подключаем обмотку самопитания. Намотать обмотку надо так, чтобы напряжение 15-17 V было на минимальной нагрузке - нагрузке холостого хода (в моем случае ок. 0,25 Вт).

В данном блоке питания я не стал применять самодельные трансформаторы, Был применен трансформатор от убитого молнией AC/DC вот такого адаптера:


Рис 4. Доноры импульсных трансформаторов


Питал этот адаптер какой-то роутер или свитч, не помню уже, с заявленными параметрами 5V 2A MAX.

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

Вооруженным глазом

Посмотрим, что же получилось:


Рис 5 . Осциллограмма (pin-1 IC1), нагрузка 2.1А (Сток силового транзистора).



Рис 6 . Осциллограмма (pin-1 IC1), нагрузка 2,1 А. (Выброс срезанный снаббером)



Рис 7. Осциллограмма (pin-1 IC1), нагрузка 50 mА. (Сток силового транзистора).



Рис 8. Осциллограмма (pin-1 IC1), нагрузка 2,1 А. (38 nS на 300 V).

По температуре: снабберный резистор при нагрузке 2,1 А = 50°С, DP408 = 37°С, трансформатор = 40°С. Температуру измерял бесконтактным термометром для младенцев.

И ещё фото конструкции


Рис 9. Блок питания – вид слева.


Рис 10. Блок питания – вид снизу.


Рис 11. Плата A2.

На рисунке 11 плата A2. Три светодиода разного цвета и под ними кнопка. В корпусе кнопка имеет стеклышко (см. видео) поэтому крайние светодиоды загнул, чтобы светили к центру. Плата выполнена по аналогии родной платы видеомагнитофона (корпус применил от видеомагнитофона).

Видео

Система не оптимизирована поэтому «Малина» загружается долго, да и флешка с операционной системой медленная. Потом вставлю настоящую,

Самая мощная на сегодня модель Raspberry Pi 3 Model B имеет разъём HDMI для подключения монитора, 4 USB-порта для подключения USB устройств, Ethernet-порт для подключения к сети, встроенный Wi-Fi и Bluetooth, 4 ядерный 64-битный процессор ARM 1.2 ГГц, 1 ГБ оперативной памяти. В отличие от обычных компьютеров на маленькой плате Raspberry есть 40 контактов (пинов) GPIO, который могут использоваться как на вход, так и на выход с применением различных протоколов взаимодействия с внешними устройствами, что и позволяет подсоединять к плате различные датчики и исполнительные приборы.

1. Внешний вид, основные элементы, корпус.

Итак, в наших руках Raspberry Pi 3 Model B.

Верхняя сторона выглядит так:

Нижняя сторона:

На нижней стороне установлены слот для SD-карты и оперативная память. SD-карта служит постоянным запоминающим устройством и содержит файлы операционной системы, программ и файлы пользователя.

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

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

Вот теперь можно собрать корпус и пометить туда плату микрокомпьютера:




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

2. Подготовка к включению и первый запуск.

Для первого запуска Raspberry необходимо следующее:

  • микро SD-карта с установленной операционной системой (OC) Raspbian, рекомендуемой для этого устройства (оптимальная емкость карты - 8 Гб, класс скорости - 10);
  • монитор с HDMI входом;
  • сетевой блок питания с выходным напряжением 5 В и током не менее 2 А, с выходным разъемом micro-USB;
  • USB-мышь и USB-клавитура.

Образ операционной системы Raspbian, созданной на основе Linux Debian 8 Jessi, можно скачать в разделе Downloads сайта raspberrypi.org. Для начала можно воспользоваться образом RASPBIAN JESSIE LITE, как наиболее простым в изучении. Записать образ на SD-карту удобно из-под Windows с помощью программы Win32DiskImager. Способ установки и сама программа описаны на сайте Raspberry по адресу.

Вы также можете воспользоваться файлами, размещенными на нашем сайте в карточке Raspberry Pi 3 или напрямую скачать с Яндекс диска:

  • образ операционной системы;
  • программа Win32DiskImager.

Дальнейшее описание базируется именно на этом образе.

Мышь и клавиатура, подключенные к Raspberry без проблем распознаются системой. Можно также использовать беспроводную мышь и клавиатуру, например Bluetooth, но их надо настроить после запуска Raspberry, а для этого нужна хотя бы USB-мышь. У нас в хозяйстве не нашлось USB-клавиатуры, поэтому для первого запуска мы подключили USB-мышь, а также монитор и питание:

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

На начальном экране имеются легко распознаваемые иконки Меню, интернет-браузера, менеджера Bluetooth, регулятора громкости, настройки сети и некоторые другие. Из них, пожалуй, самая нужная при настройке и работе - это черный экранчик в правой верхнем углу: терминал. С помощью терминала вводятся команды операционной системы. Поскольку далеко не все программы для Linux имеют графический интерфейс, их можно запустить и работать в них только посредством командной строки. Именно эту возможность и предоставляет терминал. Также все системные операции Linux, например установка и удаление программ осуществляются преимущественно через терминал. В OC используется программа LXTerminal, которая и запускается при щелчке правой кнопкой мыши по иконке. Следует заметить, что многие команды требуют ввода в начале строки приставку sudo (gksudo при запуске программ с графическим интерфейсом), что позволяет выполнить команду от лица администратора компьютера, то есть с наивысшими правами (sudo - Super User Do). Только администратор может устанавливать и удалять программы, а также менять параметры OC и ее конфигурацию.

После первой загрузки системы имеет смысл сразу подключиться к интернету, чтобы обновить файлы ОС до актуальной версии. В правом верхнем углу рабочего стола есть иконка с узнаваемым изображением двух терминалов. При подключении кабеля к разъему Ethernet на плате Raspberry происходит автоматическое подключение к локальной сети. Если щелкнуть мышью по этой иконке, появляется список беспроводных сетей, из которых можно выбрать свою и подключиться к ней, введя соответствующий ключ. При этом вместо терминалов на иконке появится стандартное изображение подключение к беспроводной сети. Именно такая ситуация показана на рисунке выше.

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

Теперь можно подключить, например, беспроводные мышь и клавиатуру по Bluetooth:

Это делается щелчком на иконке с логотипом Голубого Зуба рядом с индикатором подключение к сети в правом верхнем углу экрана. Далее надо нажать Add Device и выбрать ваши устройства из списка найденных беспроводных устройств.

Следует отметить, что при всем удобстве использовании Bluetooth устройств ввода с Raspberry - они не занимают разъемов USB - эти устройства в нашем случае периодически теряли связь с платой. Поэтому для стабильной работы, все же следует использовать USB-мышь и клавиатуру, а так же, в качестве альтернативного варианта, занимающего только один USB-разъем, комплект мыши и клавиатуры с одним приемопередатчиком по радиоканалу.

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

3. Знакомство с GPIO, программированием на Python и запуск светофора

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

Вот схема 40-контактного разъема GPIO:

Как видно, кроме обычных цифровых пинов вход/выход, принимающих или выдающих значения логических 0 и 1, имеются контакты, работающие по распространенным интерфейсам I 2 C, SPI и UART. Также есть возможность генерации ШИМ и прерываний от изменения уровней на входах.

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

Для программирования этого алгоритма воспользуемся встроенной в образ ОС Raspbian интегрированной среды разработки (IDE) на языке Python (Пайтон). Язык Python имеет большое число достоинств, о которых можно почитать в сети, что делает его весьма хорошим инструментом как для начинающих программистов, так и для профессионалов. Это интепретирущий язык, его команды выполняются последовательно, одна за другой. В IDE Python команды можно выполнять, просто вводя их с клавиатуры и нажимая клавишу Enter в конце строки.

Среда разработки программ на языке Python запускается с рабочего стола последовательным выбором Menu - Programming - Python 3 . Далее, в открывшемся окне Python Shell следует нажать File - New File . В открывшемся окне редактора нужно набрать или скопировать следущий текст программы, обращая особое внимания на отступы в тексте, так как для программ на Python они имеют принципиальное значение:

#!/usr/bin/python

import RPi.GPIO as GPIO
from time import sleep

RED_PIN = 36

YELLOW_PIN = 32
GREEN_PIN = 29
BUTTON_PIN = 40

print ("RPi.GPIO init start")
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
print ("RPi.GPIO init end")

print ("GPIO setup")

GPIO.setup(RED_PIN, GPIO.OUT)

GPIO.setup(YELLOW_PIN, GPIO.OUT)
GPIO.setup(GREEN_PIN, GPIO.OUT)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

GPIO.output(RED_PIN, 0)
GPIO.output(YELLOW_PIN, 0)
GPIO.output(GREEN_PIN, 1)

while True:

if inp==0:
for x in range(0, 5):
GPIO.output(GREEN_PIN, 1)
sleep(0.5)
GPIO.output(GREEN_PIN, 0)
sleep(0.5)
GPIO.output(YELLOW_PIN, 1)
sleep(2)
GPIO.output(YELLOW_PIN, 0)
GPIO.output(RED_PIN, 1)
sleep(5)
GPIO.output(YELLOW_PIN, 1)
sleep(1)
GPIO.output(RED_PIN, 0)
GPIO.output(YELLOW_PIN, 0)
GPIO.output(GREEN_PIN, 1)

Первая строка указывает, где в ОС находится интерпретатор Python.

Функция, начинающаяся с print , просто выводит свой аргумент на экран.

Строки, начинающиеся с GPIO.setup , задают режим выхода (OUT ) или входа (IN ) соответствующих пинов, а аргумент pull_up_down=GPIO.PUD_UP включает подтягивающий резистор на входе 40, к которому подключена кнопка. Поскольку программа на Python не имеет стандартного «вечного цикла», как, например в Ардуино, где загруженная в микроконтроллер программа выполняется бесконечно, пока подано питание, оператор while True: осуществляет этот цикл. Нам ведь надо возвращать наш светофор в исходное состояние всякий раз по завершению цикла его работы.

Оператор присвоения inp = GPIO.input(BUTTON_PIN) записывает в переменную inp значение на входе 40. Если кнопка не нажата - это 0, если нажата - 1. Если inp равно 0, то начинается цикл работы светофора:

  • с помощью цикла for 5 раз мигает зеленый светодиод;
  • на 2 секунды зажигается желтый (пауза задается оператором sleep);
  • желтый гаснет, зажигается красный на 5 секунд и т д.

После окончания цикла работы светофора все начинается снова.

Теперь необходимо собрать электрическую схему с помощью проводов с разъемами без пайки:



Короткие ножки светодиодов (это минус) подключаем к земле - контакты 6, 14, 20; длинные (плюс) через резисторы 240 Ом - к контактам 29 (зеленый), 32 (желтый), 36 (красный).

Кнопку подключаем к контактам 39 и 40.

Теперь в редакторе с нашей программой выбираем Run - Run Modul или нажимаем F5, и программа начинает выполняться, ожидая нажатия кнопки.

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

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

Тут нам понадобится терминал, без него обойтись.

Сначала сохраним нашу программу в виде файла svetofor-rpi.py3 в корневом каталоге пользователя /home/pi .

Теперь запустим терминал и после приглашения pi@raspberrypi:~ $ наберем следующую строку: gksudo leafpad /etc/xdg/autostart/Svetofor.desktop .

Тем самым мы вызовем текстовый редактор leafpad и создадим файл Svetofor.desktop в папке автозапуска.

В текстовом редакторе набираем следующее:


Version=1.0
Encoding=UTF-8
Name=Svetofor
Comment=
Exec=sudo python /home/pi/svetofor-rpi.py3
Terminal=false
Type=Application

и сохраняем файл.

Основное в этом файле - строка, начинающаяся с Exec , которая запускает интерпретатор Python на выполнение программы svetofor-rpi.py3 .

Можно проверить, зайдя в папку /etc/xdg/autostart с помощью файлового менеджера, чья иконка в виде двух ящичков расположена в левом углу экрана, появился ли в этой папке файл Svetofor.

Теперь, если выключить питание, отключить монитор, мышь и клавиатуру, и снова включить питание, наш светофор начнет работать в автономном режиме!

Видео работы светофора:

Рисунок 1. Блочная диаграмма аппаратной части системы

Описание процесса монтажа аппаратной части системы занимает много времени, но является достаточно простым. В первую очередь следует соединить блок питания с стенной розеткой с помощью удлинителя, отрезав розетку это удлинителя. Зачистите провода и закрепите их с помощью винтов в терминалах блока питания. Далее соедините Raspberry Pi с блоком питания, отрезав разъем типа A от кабеля USB и соединив провода с соответствующими выводами блока питания, и вставьте разъем micro USB в разъем питания RPi. После этого следует зачистить оба конца двух жил гибкого кабеля и соединить их с соответствующими терминалами с обозначениями GND и JDVcc блока питания и блока реле. Наконец, следует удалить джампер, соединяющий вывод с обозначением JDVcc с выводом с обозначением Vcc. В том случае, если вы не удалите этот дампер, на предназначенные для напряжения 3.3 В выводы RPi будет подано напряжение в 5 В, которое с высокой вероятностью выведет компьютер из строя.

Теперь, когда питание подведено ко всем терминалам, следует соединить линии IN1-IN8 модуля реле с соответствующими выводами разъема GPIO с помощью гибкого кабеля таким образом, как показано на Рисунке 2. Представленный в данной статье код был разработан для случая, когда выводы IN1-IN7 соединены с выводами GPIO1-GPIO7. В том случае, если вы решите соединить данные выводы по-другому, вам придется модифицировать соответствующим образом ваш код.

Схема расположения выводов разъема GPIO Raspberry Pi приведена на Рисунке 2. На порты ввода-вывода Raspberry Pi подается напряжение 3.3 В, а модуль реле работает с напряжением 5 В. Однако, реле изолированы от выводов GPIO Raspberry Pi при помощи оптопар. На оптопары может подаваться напряжение 3.3 В с вывода Vcc. На вывод Vcc модуля реле может быть подано напряжение 3.3 В с разъема GPIO Raspberry Pi. Убедитесь в том, что вы убрали джампер, замыкающий выводы Vcc и JDVcc модуля реле. На вывод JDVcc должно подаваться напряжение 5 В для корректной работы реле. Рассматриваемый модуль реле размыкает контакты в активном состоянии. Из этого следует, что вы должны заземлить терминалы IN1-IN8 для включения реле.

Рисунок 2. Схема расположения выводов разъема GPIO Raspberry Pi

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

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

Рисунок 3. Монтаж аппаратной части системы

Программное окружение

Я начал создание своего программного окружения с установки образа операционной системы Raspbian. Перед началом установки образа операционной системы вам потребуется подготовить дисплей, поддерживающий передачу изображения по HDMI, клавиатуру и мышь с разъемами USB, а также сетевой кабель для соединения с системой по протоколу Ethernet. Также вы можете установить соединение с системой посредством адаптера Wi-Fi. Создайте загрузочную SD-карту для первой загрузки системы в соответствии с инструкциями, приведенными на ресурсе http://www.raspberrypi.org/documentation/installation/installing-image . В процессе первой загрузки системы установщик осуществит настройку операционной системы и разместит данные из ее образа на всем доступном пространстве карты памяти. После первой загрузки вы должны иметь возможность входа в систему с помощью стандартных данных учетной записи пользователя (имя пользователя "pi" и пароль "raspberry").

Обновление системы является разумным действием, которое должно выполняться сразу же после успешного входа в систему. Образ операционной системы Raspbian базируется на пакетах программного обеспечения дистрибутива Debian и использует приложение aptitude в качестве менеджера пакетов программного обеспечения. Кроме того, вам понадобятся пакеты программного обеспечения с именами python , pip и git . Я также мог бы порекомендовать установку Webmin для упрощения процесса администрирования системы. Инструкции по установке Webmin приведены на ресурсе http://www.webmin.com/deb.html (следуйте рекомендациям, приведенным в разделе "Using the Webmin APT repository"):

Sudo apt-get update && sudo apt-get dist-upgrade sudo apt-get install python python-pip git git-core

После этого вам придется настроить соединение с использованием адаптера Wi-Fi. Вы можете найти подробные инструкции на ресурсе http://www.raspberrypi.org/documentation/configuration/wireless . Я рекомендую использовать вариант wicd-curses . На данном этапе вы можете изменить параметры настройки Raspberry Pi с помощью команды sudo raspi-config . После ввода данной команды вы получите доступ к удобному графическому интерфейсу, который позволит вам установить значения таких параметров, как объем оперативной памяти, разделяемой с графическим процессором, параметры быстродействия центрального процессора, режим использования графического интерфейса в процессе загрузки и других.

Другим полезным инструментом является интегрированная среда разработки Cloud 9 IDE . Cloud 9 IDE позволит вам редактировать свой код на уровне Raspberry Pi посредством веб-браузера. Данная интегрированная среда разработки также предоставит вам доступ к интерфейсу командной строки в рамках веб-браузера. Вы можете разрабатывать и исполнять любой код, не покидая свой веб-браузер. Интегрированная среда разработки Colud 9 IDE требует наличия определенной версии фреймворка NodeJS. Использование неподдерживаемой версии фреймворка повлечет за собой постоянные аварийные завершения работы сервера Cloud 9, которые могут привести любого пользователя в уныние. Инструкции по установке фреймворка NodeJS на компьютер Raspberry Pi приведены на ресурсе http://weworkweplay.com/play/raspberry-pi-nodejs .

Программное обеспечение

Я решил создавать пользовательский интерфейс своей системы с использованием технологий HTML5, CSS3 и JavaScript. Комбинация трех упомянутых технологий является мощным инструментом для создания пользовательских интерфейсов. Язык программирования JavaScript позволяет использовать простой API для взаимодействия с серверами. Кроме того, существует множество библиотек для языка программирования JavaScript, таких, как JQuery, Bootstrap и других, из которых можно выбрать наиболее подходящую. HTML5 предоставляет API WebSocket, позволяющее веб-браузеру поддерживать соединение в рабочем состоянии и осуществлять обмен данными посредством этого соединения. Это обстоятельство делает API WebSocket особенно полезным для реализации динамических приложений и приложений для потоковой передачи данных, таких, как игры и чаты. Каскадные таблицы стилей CSS полезны для стилизации различных элементов страницы HTML. В случае корректного использования они позволяют создавать динамические пользовательские интерфейсы путем изменения стилей элементов страниц при наступлении тех или иных событий. Для данного проекта я выбрал фреймворк JQuery для обработки событий, Bootstrap CSS для размещения кнопок в форме сетки и язык программирования JavaScript для реализации механизмов обмена данными на основе API WebSocket.

Библиотеки

Серверное приложение, работающее на уровне Raspberry Pi, должно управлять состоянием выводов разъема GPIO платы Raspberry Pi. Оно также должно предоставлять интерфейс HTTP для передачи данных графического интерфейса и интерфейс WebSocket для передачи сообщений с командами и данными состояния. Готового к установке серверного приложения с такими специфическими функциями попросту не существует, поэтому я принял решение о создании своей собственной реализации сервера с использованием языка программирования Python. Для упрощения разработки описанного серверного приложения с использованием языка программирования Python доступны модули с реализациями методов для работы с интерфейсом GPIO Raspberry Pi, для создания сервера HTTP и для работы с интерфейсом WebSockets. Так как все перечисленные модули предназначены для выполнения поставленных задач, мне пришлось разработать минимальный объем кода.

Однако, упомянутые модули не включены в комплект поставки интерпретатора Python и должны устанавливаться отдельно. В первую очередь вам понадобится модуль для управления состоянием выводов разъема GPIO Raspberry Pi. Простейший способ изменения состояния выводов данного разъема заключается в использовании библиотеки RPi.GPIO, доступной по адресу https://pypi.python.org/pypi/RPi.GPIO . Вы можете установить соответствующий модуль с помощью следующей команды:

Sudo pip install RPi.GPIO

Работа с модулем RPi.GPIO не связана с какими-либо сложностями. Вы можете найти примеры использования данного модуля по адресу . На первом шаге работы с модулем необходимо осуществить импорт его кода в код проекта. После этого вам придется выбрать режим работы. В качестве идентификатора режима работы может использоваться либо константа GPIO.BOARD, либо константа GPIO.BCM. Выбор режима работы обуславливает использование чипа BCM или выводов разъема ввода-вывода при ссылках на номера выводов во всех последующих командах. Далее следует указать, используются ли выводы из рассматриваемого разъема для ввода или вывода. Теперь вы можете использовать выводы данного разъема по назначению. Наконец, вам придется осуществить вызов метода cleanup() для сброса состояния выводов разъема GPIO. В Листинге 1 показан простейший пример использования модуля RPi.GPIO.

Листинг 1. Использование модуля RPi.GPIO

Import RPi.GPIO as GPIO # импортирование кода модуля в код проекта GPIO.setmode(GPIO.BOARD) # указание на то, что нумерация используется для обозначения выводов разъема GPIO.setup(0, GPIO.IN) # указание на то, что канал 0 будет использоваться для ввода GPIO.setup(1, GPIO.OUT) # указание на то, что канал 1 будет использоваться для вывода var1=GPIO.input(0) # чтение состояния канала 0 GPIO.output(1, GPIO.HIGH) # установка логической единицы на канале 1 GPIO.cleanup() # сброс состояния выводов разъема GPIO.

Здравствуйте друзья

После того, как я испытал возможности системы управления умным домом Domoticz на своем настольном компьютере и убедился в том, что она отлично дополняет, а где и заменяет Mi Home - штатную систему Xiaomi - я решил приобрести для нее отдельный одноплатный компьютер - Raspberry Pi. И в этом обзоре я расскажу про свой опыт.

Вступление

Для тех кто не читал мой первый обзор про Domoticz - . Буквально после первых удачных экспериментов, я загорелся идеей отдельной аппаратной базы для нее, в качестве рабочей платформы настольный ПК не подходит. Выбор свой я остановил, после штудирования пабликов - на Raspberry Pi Model 3 B - компактный но мощный одноплатный компьютер на базе Soc процессора BCM2837 с 4 ядрами Cortex-A53, работающим на частоте 1.2GHz, 1GB ОЗУ и беспроводными модулями Wi-Fi и Bluetoth 4.1.

Комплект

В свой заказ я включил 4 позиции -

Что интересно в магазине имеется две модификации - китайская и английская. На момент покупки китайская стоила на 7 долларов дешевле, ее я и взял. Чего там китайского - честно говоря для меня загадка.

Медные радиаторы для Raspberry Pi - страница товара

Еще для полного комплекта вам понадобится microSD карта - не менее 4 GB и HDMI кабель. У меня в загашнике был и кабель и карта на 32 ГБ, потому покупать не стал.

Что в посылке

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


Рассмотрим подробнее. Блок питания с вилкой Тип С и разъемом micro-USB.


Заявленный максимальный ток - 2А при напряжении 5 В.


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


Комплект из трех медных радиаторов в пакетике, для пассивного охлаждения.


Все радиаторы имеют квадтарную форму, два радиатора с штырями и длиной стороны около 12 мм и один плоский со стороной около 15 мм.


Корпус из темного пластика с выдавленным изображением ягоды малины на крышке


Размеры корпуса - примерно 90 на 65 мм



Корпус разбирается на 5 частей - держится все защелках, никаких винтов.


С аксессуарами покончено - пора переходить к самому главному

RASPBERRY PI 3 MODEL B

Raspberry Pi 3 Model B является прямым наследником Raspberry Pi 2 Model B. Плата полностью совместима с предшественником, но наделена большей производительностью и новыми средствами коммуникации:
64-х битным четырёхядерным процессором ARM Cortex-A53 с тактовой частотой 1,2 ГГц на однокристальном чипе Broadcom BCM2837; встроенными Wi-Fi 802.11n и Bluetooth 4.1.
Кроме того, процессор имеет архитектуру ARMv53, а значит вы сможете использовать любимую операционную систему: Debian Wheezy, Ubuntu Mate, Fedora Remix и даже MS Windows 10.


Технические характеристики подробнее

CPU - Broadcom BCM2837, ARM Cortex-A53 Quad Core, 1.2 GHz
Количество ядер процессора - 4
GPU - VideoCore IV 3D
RAM - 1 GB
Хранилище - microSD
Сетевые возможности
Ethernet 10/100
WiFi 2.4G 150 mb/s
Видео вывод - HDMI
USB порты - 4
Беспроводные возможности - Bluetooth
Аудио вывод - 3,5 Jack
85,6 х 53,98 х 17мм, 45 грамм


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


На одной из длинных сторон компьютера размещены порты micro USB для питания, полноразмерный порт HDMI, CSI-2 Camera port - для подключения камеры по интерфейсу MIPI, 3,5 мм аудиоразъем. Так же на верхней стороне находится модуль процессора и Ethernet/USB Hub lan9514-jzx


На торцевой стороне скомпонованы 4 USB порта и порт Ethernet


На другой стороне материнской платы находится 40 контактов ввода/вывода общего назначения (GPIO)


На второй торцевой стороны - находится DSI Display Port для подключения штатного дисплея


На нижней стороне платы находится модуль памяти LPDDR2 SDRAM - EDB8132B4PB-8D-F


И micro-SD разъем для карты памяти


Медные радиаторы ставятся на USB/Ethernet Hub и процессор с одной стороны


И на чип памяти с другой. Этот радиатор плоский - не мешает установке платы компьютера в корпус


В корпус все устанавливается отлично, винтовых соединений нет - садится на пластиковые выступы.


Все вырезы на корпусе в точности совпадает с разъемами компьютера



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


Установка операционной системы

Для установки операционной системы, первым делом необходимо загрузить архив с дистрибутивами - отсюда . Пока скачивается почти полутора гигабайтный архив, загружаем утилиту для форматирования SD карты - SD Card Formatter - отсюда . Этот дистрибутив гораздо компактнее - всего 6 МБ, поэтому не теряя времени, устанвливаем программу


и, после установки, вставляем карту памяти в картридер (у вас же есть картридер не правда ли) и запускаем SD Card Formatter. В меню Options необходимо установить “FORMAT SIZE ADJUSTMENT” в “ON”


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

Следующий шаг - первый запуск Raspberry Pi (флешку с записанным дистрибутивом, конечно устанавливаем в него). Извините за качество нескольких следующих фото - с экрана телевизора:(

При первом запуске стартует меню выбора операционной системы - что ставить, причем в списке имеется даже версия WIndows 10 для Raspberry Pi. На этом этапе можно выбрать язык (внизу экрана) - русский есть и подключится к Wi-Fi сети - кнопка Wi-Fi networks


Нужная мне опарационка - Raspbian базирующаяся на Linux Debian - представлена в двух вариантах, lite И полном, с графическим интерфейсом. Я выбрал полную версию


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


Периодически измеряя температуру во время установки, максимально что я видел - 38 градусов.

После завершения установки и перезагрузки компьютера, загружается рабочий стол Raspbian


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


Для управления Raspberry с настольного ПК, нам понадобится любая программа терминал, я использую старый добрый Putty


Имя пользователя и пароль по умолчанию - pi и raspberry . Для смены пароля воспользуйтесь командой passwd .


eth0 - это Ethernet

lo - это локальный интерфейс 127.0.0.1

wlan0 - это wi-fi интерфейс


а для того что бы отредактировать файл с настройками - вводим команду

sudo nano /etc/dhcpcd.conf

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

Например мы хотим использовать адрес 192.168.0.222, маска 255.255.255.0, адрес шлюза и DNS - 192.168.0.1

Для Ethernet вставляем

static ip_address=192.168.0.222/24
static routers=192.168.0.1

interface wlan0
static ip_address=192.168.0.222/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1


Для выходя из редактора нажимаем ctrl+x
Для сохранения изменений - нажимаем “Y” и затем enter

Установка Domoticz

Большая часть работы по настройке уже закончена, теперь нам нужно установить систему Domoticz. Делается это одной командой -

sudo curl -L install.domoticz.com | sudo bash

Которая инициализирует процесс загурзки и установки системы


В процессе установки, инсталлятор задаст вопросы по поводу места установки и т.п. - все эти моменты я оставил по умолчанию.


После успешной установки, инсталлятор напишет адреса и порты веб интерфейса системы Domoticz


Но, для работы с шлюзом Xiaomi - нам нужна beta версия системы. Обновление до крайней версии беты производится командами

cd ~/domoticz
sudo ./updatebeta


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


На данный момент я уже перенес все свои рабочие сценарии с Windows версии на Raspberry - кстати стоит добавить что обе системы мирно сосуществуют одновременно. Для обеспечения бесперебойного питания миникомпьютера достаточно использовать PowerBank, который позволяет одновременно питать устройство и получать питание от внешнего источника.

Видеоверсия обзора:

Все мои обзоры устройств Xiaomi в хронологическом порядке - Список

Надеюсь обзор был полезен и интересен, спасибо за внимание.

Сегодня четвертый урок, на котором мы поработаем с портами GPIO, в частности помигаем светодиодом в разных режимах.

Урок ориентирован на начинающих пользователей и представлен в текстовом и видео-форматах.

Видео четвертого урока:

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

  • плата Raspberry Pi;
  • кабель питания;
  • USB-клавиатура;
  • USB-мышь;
  • монитор или телевизор с HDMI/RCA/DVI интерфейсом;
  • кабель, один конец которого RCA или HDMI, а другой соответствует вашему монитору;
  • SD-карта с уже установленной ОС Raspbian ();
  • светодиод;
  • кнопка;
  • резистор на 220 Ом
  • 3 провода «мама-папа»
  • 2 провода «папа-папа».

Программирование Raspberry Pi GPIO на языке Python

Для сегодняшнего урока мы выбрали язык программирования Python.

Python — современный объектно-ориентированный язык. Он наиболее часто используется для программирования GPIO на Raspberry Pi. Python входит в состав операционной системы Raspbian.

Сборка модели

Для работы нам потребуется собрать следующую схему:

Схема подключения светодиода и кнопки к Raspberry Pi

Обратите внимание, что порты GPIO на Raspberry Pi не подписаны, полезно иметь распечатанную распиновку.

Распиновка Raspberry Pi. Схема с ledgerlabs.us

Собранная модель со светодиодом и кнопкой

Управление светодиодом на Raspberry Pi из консоли

Заходим в LXTerminal и набираем:

После этого вместо имени пользователя в начале строки должно отобразиться >>> .

Вводим следующие строки:

Import RPi.GPIO as GPIO #импорт библиотеки
GPIO.setmode(GPIO.BOARD) #"включение" GPIO
GPIO.setup(7, GPIO.OUT) #объявление 7-го пина как выход

Затем для включения светодиода можно использовать команду
GPIO.output(7, 1)

А для выключения
GPIO(output(7, 0)

После работы с GPIO желательно выполнить команду
GPIO.cleanup()

Программа для мигания светодиодом на Raspberry Pi

Для автономной работы светодиода нам потребуется написать и запустить программу. Для этого откроем предустановленную программу IDLE 3 и в меню File нажмем New. В открывшемся окне мы можем писать программу.

Напишем:
import RPi.GPIO as GPIO #импорт библиотеки для работы с GPIO
import time #импорт библиотеки для ожидания
GPIO.setmode(GPIO.BOARD) #"запуск" GPIO


____GPIO.output(7, 1) #включение светодиода

____GPIO.output(7, 0) #выключение светодиода
____time.sleep(1) #ожидание 1 секунды

Сохраним программу в папке /home/pi.

Теперь мы можем запустить программу из LXTerminal с помощью команды
sudo python programname.py

Управление светодиодом с помощью кнопки

Поуправляем светодиодом с помощью внешней кнопки: когда кнопка зажата — светодиод горит, когда отжата — не горит.

Для этого подключим кнопку к порту 5.

Для управления нам потребуется следующая программа:

Import RPi.GPIO as GPIO #импорт библиотеки GPIO
GPIO.setmode(GPIO.BOARD) #"включение GPIO"
GPIO.setup(7, GPIO.OUT) #объявление порта 7 как выход
GPIO.setup(3, GPIO.IN) #объявление порта 3 как вход
while True: #бесконечный цикл
____if GPIO.input(3) == False: #если кнопка зажата
________GPIO.output(7, 1) #включаем светодиод
____else: #иначе
________GPIO.output(7, 0) #выключаем

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

Сделаем еще одну программу. Она будет менять состояние светодиода при получении пустой строки и заканчиваться при получении другой строки.

Import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
while True:
____str = input("Enter - включение, другое - выход ");
____if str != "":
________break
____else:
________GPIO.output(7, 1)
____str = input("Enter - выключение, другое - выход ");
____if str != "":
________break
____else:
________GPIO.output(7, 0)
GPIO.cleanup()

На этом четвертый урок по Raspberry Pi для начинающих закончен, продолжение следует!



Загрузка...