Raspberry Pi для домашньої автоматизації. Структурна схема. Застосування Raspberry Pi у побуті та нестандартні застосування

Через п'ять років після випуску перших пристроїв Raspberry Pi, проект продовжує набирати все більшої і більшої популярності і пошириться далеко за межами його початкового призначення. Засновник проекту Ебен Аптон спочатку сподівався продати не більше 10 000 плат, але на даний момент вже більше 10 000 000 пристроїв знаходяться в руках студентів, викладачів та інших людей іт-спеціальностей.

Крім третього покоління Raspberry Pi, зараз ви можете знайти полегшену модель Raspberry Pi Zero, а також інші компоненти, такі як відеокамера, сенсорний екранта різні датчики.

З такою величезною кількістю можливостей може бути складно зрозуміти, з чого почати Raspberry Pi 3 застосування. У статті буде розглянуто початок роботи Raspberry Pi. Я припускаю, що ви вже знаєте як підключити екран, мишу, клавіатуру, живлення та поставити операційну систему. Сьогодні ми розглянемо, що робити далі.

У багатьох людей є Raspberry Pi, але вони навіть не знають, яка у них версія пристрою. Можна визначити версію пристрою за кількістю пам'яті, цей параметр найбільше відрізняється. Або, наприклад, у пізніших платах були додані додаткові слоти GPIO. Але є й деякі незначні відмінності, про які вам варто знати під час створення свого проекту.

Ви можете з'ясувати версію плати за допомогою візуального огляду, але найкраще зробити це за допомогою терміналу. Для цього увімкніть пристрій та виконайте команду:

cat /proc/cpuinfo |grep "Revision"

Висновок міститиме рядок із чотирьох або шести символів, за яким можна зрозуміти який пристрій ви використовуєте:

Якщо ви бачите дуже великий номер, який починається з 1000 далі йде номер ревізії та знову 1000, то це ознака перенапруги живлення.

Ось деякі порівняльні характеристики різних версійпристроїв:

Якщо ви хочете дізнатися більше інформації про вашу плату з командного рядка, можете скористатися такими командами:

Апаратне забезпечення:

cat /proc/cpuinfo

cat /proc/version

Оперативна пам'ять:

cat /proc/memory

Підключення Raspberry Pi

Можливо, ви звикли, що для включення будь-якого електричного пристроюДостатньо підключити його до розетки, натиснути кнопку і воно працює. Raspberry Pi не ставитись до таких пристроїв. Для цього мікрокомп'ютера важливо правильно підібрати пристрій живлення, який забезпечить стабільне живлення для отримання максимальної продуктивності. Жодної кнопки для включення та вимкнення немає, але якщо хочете, ви можете її зробити.

Якщо ви вважаєте, що вашому пристрою не вистачає живлення, можна перевірити напругу за допомогою мультиметра. На старих платах є отвори на верхній частині плати, підписані TP1 і TP2.

Спочатку підключіть усі периферійні пристрої, які ви збираєтесь використовувати. Встановіть мультиметр на вимір напруги до 20 вольт. Підключіть червоний провід до TP1 або PP3, а чорний до TP2 або PP7. Мультиметр має видати значення близько 5 Вольт. відхилення 0,25 Вольт - це погано і чим ближче до п'яти, тим краще. Якщо ви виявили зниження напруги, це могло статися з двох причин:

  • Ваш USB-шнур. Можливо, він підходить для заряджання телефону, але він працює надто повільно. Для телефону цього достатньо, але Raspberry Pi не вистачає потужності.
  • Периферичні устрою. Для всіх USB пристроївпотрібно харчування, щоб вирішити проблему можна використовувати USB хаб.

Загалом підключення Raspberry Pi не викликає багато проблем.

Додавання кнопки скидання

Тепер, коли ви знаєте основи та вибрали джерело живлення можна додати кнопку вимкнення для вашого пристрою. У більшості електроніки є кнопка вимикання, але її немає і якщо ви захочете перезавантажити Raspberry Pi, вам доведеться вийняти шнур живлення і вставити назад. Але можна додати кнопку, щоб цього не робити.

На платі є два отвори поруч один з одним, один круглий, другий - квадратний. На моделі B вони відзначені як P6 і знаходяться поряд з портом HDMI. На пізніших платах вони розміщуються ближче до портів GPIO та позначені RUN.

Ви можете придбати будь-яку кнопку та припаяти її контакти до цих портів. Все, що потрібно для скидання процесора - це замкнути ці виходи.

Використання GPIO та датчиків

Крім своєї низької ціни, Raspberry Pi дуже привабливий для користувачів через можливість використовувати GPIO.

GPIO або general purpose input/output це порти загального призначеннявведення та виведення. Майже всі проекти Raspberry Pi побудовані використання цих портів. Їхня сила в гнучкості.

Перші плати Raspberry Pi мали 26 GPIO портів, Raspberry Pi 2 та Pi 3 мають 40. З технічної точки зору лише 17 із 26 та 28 із 40 відповідно. Інші - це електричні контакти та заземлення. Всі порти позначені номерами, але щоб правильно їх використовувати вам знадобиться роздруківка з описом значень. Наприклад, для 40:

Або для 28:

Її можна роздрукувати та прикласти до плати, щоб не заплутатися під час роботи:

Щоб змусити GPIO робити те, що вам знадобиться трохи програмування. Як правило, все можна зробити на Python. Якщо ви не знали, то частина імені Pi походить від інструменту для навчання програмування на Python. Ви можете знайти багато інструкцій з використання Python для Raspbery і GPIO в інтернеті.

Знайдіть проект

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

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

Після цього можна перейти до пошуку інших проектів. Що вам більше подобається гри? Домашня автоматизація? Світлина? Можливо, хтось вже виклав в інтернеті інструкції, як зробити те, що ви хочете. Використовуйте їх чи зробіть щось своє. Ось деякі цікаві проекти, які ви можете реалізувати:

  • Cupcade – найпростіший спосіб створити власну невелику ігрову систему. Але тут потрібно купувати пристрій комплектом, щоб одержати всі необхідні деталі;
  • MagicMirror - один із найпопулярніших проектів на Raspberry Pi, суть у тому, щоб виводити текстову інформаціюна дзеркало за допомогою екрана та цього мікрокомп'ютера;
  • Minecraft - ви можете створити свій сервер Minecraftна основі Raspberry Pi;

Це далеко не всі цікаві проекти, за допомогою яких можна знайти застосування Raspberry Pi 3. Ще кілька ви можете знайти в статті.

Висновки

У цій статті ми розглянули початок роботи raspberry pi. Цей дуже цікавий пристрій може бути корисним при правильному використанні. А ви вже придбали Raspberry Pi? Чи збираєтеся купувати? Чи вже зібрали свій проект та знайшли застосування raspberry pi? Напишіть у коментарях!

На завершення відео від 16 біт тому про Raspberry Pi:

Багато хто напевно знає, що подати харчування на Arduino від Raspberry Pi не важко, для цього просто потрібен USB шнур. Зворотне завдання виглядає складніше, тому що більшість контролерів Arduino не мають USB виходу (Due - виняток). Тим не менш, це можливо зробити за допомогою пінів GPIO, і я хочу розповісти про конкретний приклад для Arduino Nano V3.0 та Raspberry Pi B rev.2. Крім самої подачі харчування, також розповім як можна контролювати це харчування, використовуючи кнопку і MOSFET транзистор.

Теоретична можливість
Більшість Arduino-сумісних контролерів використовують 5V піни. Виняток становить хіба що Arduino Due та 3.3V вихід з Arduino, але зараз не про це. Також відомо, що один із способів подати харчування на Raspberry Pi - це використання 5V та GND пінів на 26-ти контактному роз'ємі P1:

Здавалося б, що рішення очевидне - треба приєднати Raspberry Pi до будь-якого з пінів Arduino, і все почне працювати. Моя спроба зробити це призвела до того, що Raspberry Pi засвітив світлодіод PWR, але світлодіод ACT так і не запалився. Причина – дуже маленька сила струму від пінів Arduino (близько 40-50 мА). Але Arduino має окремий пін 5V, який (згідно з посиланням) може видавати близько 400-500 мА. Тепер необхідно перевірити, чи вистачить такого струму для живлення Raspberry.

Для нормального харчування Raspberry Pi з двома підключеними USBпристроями потрібно близько 700 мА. Кожний USB-пристрій може споживати до 140 мА (). Малина може споживати ще більше струму, якщо вона розігнана (моя – ні). Таким чином, якщо використовувати нерозігнану RPi без USB-пристроїв, то сили струму від Arduino 5V піна має цілком вистачити.

Для того щоб контролювати подачу живлення, необхідно ще кілька інгредієнтів: кнопка живлення і щось здатне керувати великими струмами. Я для цього використовував MOSFET транзистор. Перейдемо безпосередньо до використаних частин.

Необхідне апаратне та програмне забезпечення
Я використовував такі «залізні» частини:
  • Raspberry Pi B rev. 2;
  • Arduino Nano V3.0;
  • кнопка для контролю живлення (я використовував кнопку з фіксацією та сигнальним проводом);
  • MOSFET транзистор (у мене виявився IRF530N);
  • Breadboard та кілька дротів.
Для прошивки Arduino знадобиться IDE, я використав версію 1.5.8 BETA, але стабільна 1.0.6 теж підійде. Також знадобиться моя маленька бібліотека для PowerButton (посилання наприкінці статті у розділі про утиліти).
Схеми
Схема підключення виглядає так:

Принципова схема так:

Пояснення до схем:

  1. D2 приєднаний до піна SIG у кнопки.
  2. D4 приєднаний до піну VCC у кнопки.
  3. D5 приєднано до затвора MOSFET.

З'єднання з D2 піном не випадково: бібліотека для кнопки використовує переривання, а у Arduino Nano тільки піни D2/D3 призначені для цих цілей (перевірити які піни на Arduino підтримують переривання можна).

Вихідний кодпрограми для Arduino
#include

#define POWER_PIN_SIG 2
#define POWER_PIN_VCC 4
#define POWER_FET_GATE 5
#define POWER_PIN_INT 0

PowerButtonSwitch pbs;

void onPowerOn() (
Serial.println ("Power On");
digitalWrite(POWER_FET_GATE, 1); // Відкриваємо затвор (gate)
}

void onPowerOff() (
Serial.println ("Power Off");
// Закриваємо затвор (gate)
}

void setup() (
Serial.begin (9600);

// Виведення сигналу від Arduino до затвора MOSFET (gate)
pinMode(POWER_FET_GATE, OUTPUT);
digitalWrite(POWER_FET_GATE, 0);

// Початкове налаштуваннякнопки живлення
pbs.setupPowerButton (POWER_PIN_SIG, POWER_PIN_VCC, POWER_PIN_INT) ;

// Зчитуємо поточне значення
// Якщо є сигнал від кнопки,
// включаємо Raspberry Pi
int st = pbs.getSwitchStatus();
if (st == POWER_ON) (
onPowerOn() ;
}

// Додаємо обробники подій
pbs.onPowerOn (onPowerOn) ;
pbs.onPowerOff (onPowerOff) ;
}

void loop() (
// Порожній цикл
delay (1000);
Serial.println ("No actions");
}

Більшість дій бере на себе бібліотека, так що код дуже простий.

Тестування рішення
Коротке відео з тестуванням:

Як бачимо, візуально все працює. Але все-таки треба перевірити напругу між пінами TP1/TP2 (методика). У мене вийшло значення ~4.6V, рекомендоване значення більше 4.75V.
Висновок
Незважаючи на те, що все працює, все-таки є підозра, що при підключенні периферії струму від 5V піна Arduino буде недостатньо. MOSFET і кнопка працюють відмінно в парі, така зв'язка може стати в нагоді для подальших проектів.

Утиліти та бібліотеки, використані для написання:

  • Fritzing: використовувалася для малювання схем, доступна .
  • власне бібліотека для PowerButton: можна взяти з GitHub

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

Сьогодні четвертий урок, на якому ми попрацюємо з портами 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 як 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 для початківців закінчено, продовження слідує!

Всім привіт! Сьогодні я розповім як мені вдалося заощадити порти своєї Raspberry Pi. Давно хотів підключити малий дисплей до цього одноплатного комп'ютера, і навіть спробував це зробити використовуючи бібліотеку wiringpi, але дуже багато висновків займає таке підключення. Перше, що спало на думку, було використання зсувних регістрів, але все ж таки я вирішив подивитися в бік шини I2C або SPI. Почитавши топіки в інтернеті знайшов класне рішення - RGB LCD SHIELD KIT W/ 16X2 CHARACTER DISPLAY - ONLY 2 PINS USED! . На платі використовується всього два піна для керування SDL і SCK по шині I2C плюс ще місця вистачило для п'яти тактових кнопок. У даному пристроїшвидкість не така важлива, тому шина I2C мені цілком підійшла. "Серцем" плати є мікросхема компанії Microchip, розширювач портів MCP23017.

Всім привіт!

Іноді в практиці виникали ситуації, коли я мрійливо замислювався про те, що непогано було б запиляти веб-сервер як бекенд для якихось своїх нескладних проектів. Ну, щоб був hostname, як належить, і щоб зовні можна було віддати йому якісь дані та отримати якісь дані, можливо прикрутити API-шечку, а може й взагалі – хостити там свій затишний бложик.

В уяві відразу вимальовувалися якісь стійки з blade-ами, оренда віртуалки на Digital Ocean, або, щонайменше, цілодобово гуде комп'ютер під столом.

Адже хочеться чогось тихого, витонченого, безшумного, і бажано безкоштовного…

Стоп! Але все вже винайдено до нас!

Сьогодні я хочу розповісти про те, як можна за копійки, маючи мінімальну кількість знань, запиляти машину, яка забезпечить 90% ваших (ну, моїх – точно) потреб у бекенді.
Розповідь буде нести характер записів для себе - щоб не забути що робити, повторюючи це наступного разу, наприклад)

Кому цікаво - го під кат (до речі, зверніть увагу, як бутербродом напаяні чіпи на платі).

Продовжуємо розглядати застосування комп'ютера Raspberry Pi для домашньої автоматизації. Як ви пам'ятаєте, у попередніх випусках ми отримали загальні відомостіпро Raspberry Pi , навчилися, як встановити та налаштувати операційну систему Raspbian, познайомилися з фреймворком WebIOPiта його можливостями по роботі з портами GPIO, зокрема, як керувати дискретними входами/виходами та роботу послідовного порту UART.

Сьогодні я постараюся познайомити вас із загальною структурною схемою планованої системи домашньої автоматизації, яка створюватиметься із застосуванням Raspberry Pi. (Рис.1).

Мал. 1

Система домашньої автоматизації складається з центрального сервера, пов'язаного за інтерфейсом RS 485із встановленими у кожному приміщенні контролерамиа до контролерів у свою чергу підключаються всі периферійні пристрої (різні пристрої управління, контролю, регулювання, захисту). Перевага такої мережевої архітектури полягає в тому, що немає необхідності тягнути дроти від кожного пристрою до сервера, а достатньо з'єднати контролери, до яких вони підключені, двома парами проводів - по одній парі живлення подається, а друга використовується для інтерфейсу RS 485. Крім того, Логіка роботи замислюється так, що вихід з ладу будь-якого контролера або навіть центрального сервера не повинен вплинути на працездатність іншої системи. Іншими словами, архітектура системи домашньої автоматизації має бути розподіленоюі децентралізованою. Подібна архітектура нагадує шину, що широко використовується в комерційних проектах «розумного дому». Smart Bus.

Як центральний сервер системи домашньої автоматизації застосовується Raspberry Pi . На ньому встановленоWeb сервер, за допомогою якого користувач з будь-якого комунікаційного пристрою (смартфону, ноутбука, планшета) через браузер може отримувати інформацію про всі процеси, що відбуваються в будинку і, відповідно, керувати ними. Доступ до Web серверу з введення логіну та пароля можна отримати як з домашньої локальної мережі, так і з мережі інтернет черезWi -Fi роутер.

До послідовного портуUART Raspberry Pi через узгоджувальний пристрій за інтерфейсом RS 485 підключаються контролери, що мають необхідний набір вводів/виводів. Крім цього, до RS 485 підключається GSM модемдля доступу до системи черезстільниковуабо стаціонарну телефонну мережуна випадок, якщо в точці, де є користувач, немає можливості отримати вихід в інтернет. Доступ у цьому випадку також здійснюється через введення пароля.

Як уже говорилося раніше, Raspberry Pi має власні порти. GPIO, які можна використовувати під різні функції. UART GPIO ми використовуємо для організації інтерфейсу RS 485, а інші порти поки що вільні. Тому, цілком логічно, що крім підключення датчиків і виконавчих пристроїв до контролерів, деякі елементи системи домашньої автоматизації можна підключити безпосередньо до портів GPIO Raspberry Pi через буферний пристрійза умови, що таких елементів не потрібно прокладати довгі комунікації. Наприклад, це може бути датчик атмосферного тиску або датчик контролю температури з керуванням охолодження Raspberry Pi. На структурній схемі безпосереднє підключення до портів Raspberry Pi показано через буферний модуль GPIO.

Оскільки на першому етапі практичної реалізації нашої системи ми організовуватимемо підключення порту UART Raspberry Pi до контролера за інтерфейсом RS 485, а також підключати виконавчі пристрої безпосередньо до портів вводу/виводу GPIO , пропоную для початку завершити налаштування та конфігурування Raspberry Pi до виконання цих завдань.

Отже, якщо ви прочитали попередні три частини огляду, виконали встановлення фреймворку WebIOPi, Спробували керувати портами, перевірили роботу UART в режимі двостороннього обміну через термінальну програму, то для завершення налаштувань залишилося зробити зовсім небагато.

Заходимо у файл конфігурування командою:

sudo nano /etc/webiopi /config

та встановлюємо наступні налаштування [ GPIO ](Рис.2)

4 = OUT 0

7 = OUT 0

8 = OUT 0

25 = OUT 0

24 = OUT 0

Мал. 2

В розділі [ HTTPServerConfiguration ]необхідно прописати рядок:

doc-root = /home/pi/myproject/html

Це буде шлях до папки, яку ми потім створимо для зберігання сторінки Web-інтерфейсу index.html. Зрозуміло, можна було створити цю папку і в іншому місці, прописавши до неї відповідний шлях, але щоб уникнути плутанини і проблем надалі, давайте будемо дотримуватися одноманітності (рис.3)

gpio-export = 4, 7, 8, 25, 24

gpio-post-value = true

gpio-post-function = true

device-mapping = true


Мал. 4

У конфігураційному файлі налаштування завершено. Зберігаємо їх натисканням клавіш.Ctrlі Oпотім натискаємо Enterта виходимо командоюCtrlі Х.

Створюємо на диску Raspberry Pi папки для зберігання нашого проекту. Для цього та й взагалі для роботи з файлами на диску Raspberry Pi можна скористатися файловим менеджеромпро яке згадувалося. вкладеність створюваних папокповинна мати такий вигляд:

/home/pi/myproject/html(Рис.5)


Мал. 5

Для контролю правильності виконаних операцій розпакуйте архів тестового файлу в папку html. Там має з'явитися файл index.html. Введіть мережну адресу Raspberry Pi , логін та пароль ( webiopi / raspberry). Виконайте перезавантаження WebIOPi командою:

sudo /etc/init.d/webiopi restart

Після цього ви повинні побачити тестовий веб-інтерфейс (рис.6). За допомогою цього інтерфейсу можна керувати виходами GPIO 4 , 7 , 8 , 24 , 25 клацаючи мишкою по відповідній кнопці. Високий рівень на виході є помаранчевим кольором, низький - чорним. Після кожного натискання кнопки стан виходу змінюється на протилежне. Для візуального контролю команд до цих виходів можна підключити світлодіоди через струмообмежувальні резистори 300 - 470 Ом.

Мал. 6

Якщо у вас все вийшло, значить налаштування виконані правильно. У наступному випуску нашого огляду перейдемо до практичної реалізації в залізі першого етапу системи домашньої автоматизації.