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

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

Як видно зі схеми, якщо кнопка не натиснута, вхід GPIO5 буде підключений через резистор до шини 3.3 В. Вхідний порт RPi має високий вхідний опір, тому напруга на вхідній лінії буде близько до 3.3 В. Це означає, що при відпущеній кнопці RPi буде визначати стан входу як «лог. 1». Коли кнопка натиснута, напруга на вході дорівнюватиме 0, що є «лог. 0».

Для цієї простої схеми величина опору резистора R1 некритична і може перебувати в діапазоні від 1 кОм до 47 кОм, проте низьких значень слід уникати, оскільки в цьому випадку збільшується струм, який споживається при натисканні кнопки.

Вихідний код програми для читання стану кнопки доступний у розділі завантажень (файл з ім'ям Listing_4(Button).txt). Збережіть код у файлі з ім'ям button-test.pyта запустіть на виконання командою

sudo python button-test.py.

Результат виконання програми виводиться на екран у вигляді повідомлення про поточний стан кнопки та кількість натискань на неї. При виконанні цього прикладу ви помітите, що іноді значення лічильника стає більше реальної кількості натискань на кнопку, і це відбувається через «брязкіт» контактів. Приблизно те саме відбувається і при відпусканні кнопки. Рішення полягає у використанні механізму придушення «брязкоту» контактів (debouncing). Цей механізм може бути як апаратним, і програмним, причому останній поширений більше. У вихідному коді, наведеному у файлі Listing_5(Button_Debounce).txt, придушення брязкальця контактів кнопки реалізовано, і підрахунок кількості натискань кнопки буде більш точним. Єдина відмінність від попереднього коду полягає в тому, що тепер із затримкою 20 мс виконується друга перевірка стану входу - за цей час брязкіт контактів припиняється.

Ще один приклад: вольтметр

Як відомо, плати RPi мають лише цифрові порти вводу/виводу, але в реальному світі використовуються аналогові величини, які, можливо, необхідно вимірювати або контролювати. У наступному прикладі демонструється перетворення аналогової величини в цифровий сигналякий можна прочитати за допомогою входів RPi.

Прикладом може бути дуже простий, але точний вольтметр з діапазоном вимірів 0 … 1 (Малюнки 13, 14). Зверніть увагу, що замінити портативний мультиметр він не може, оскільки не має необхідних ланцюгів захисту, і може вийти з ладу сам або пошкодити плату RPi, якщо використовується для чогось, що виходить за рамки описаних тут прикладів.

У схемі використовується мікросхема AD654 (перетворювач напруга-частота), яка генерує прямокутні імпульси із частотою, яка залежить від вхідної напруги. Цифровий вихід Fout мікросхеми підключено до входу GPIO5 (висновок 29 гнізда GPIO). Максимальна частота прямокутних імпульсів при вказаних на схемі номіналах елементів дорівнює 10 кГц, тому визначення вхідної напруги нам знадобиться точна система відліку часу. Код для цього прикладу (файл Listing_6(Voltmeter).txt) написаний на Сі та використовує бібліотеку wiringpi, написану Гордоном Хендерсоном (Gordon Henderson). Насамперед, встановіть бібліотеку wiringpi, для чого виконайте такі команди:

mkdir development
cd development
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

Збережіть код у файлі з ім'ям voltmeter.c та скомпілюйте його командою

gcc -o voltmeter -lrt -lwiringPi voltmeter.c.

Щоб запустити програму, виконайте таку команду:

sudo./voltmeter.

Для підвищення точності вимірювань у програмі використовується усереднення даних. Тривалість вхідних прямокутних імпульсів швидко вимірюється 64 рази, потім отримані значення підсумовуються і діляться на 64. Після закінчення обчислень включається затримка на секунду для виконання інших процесів, і потім цикл виміру повторюється

Декілька елементів у схемі вольтметра також впливають на точність вимірювань. Конденсатор С1 та резистор R1 задають характеристики перетворення, тому бажано вибрати плівковий поліпропіленовий конденсатор та точний резистор з допуском 1%. Можна використовувати підстроювальний резистор. Напруга живлення схеми 5 В надходить з роз'єму GPIO, але його реальне значення може дещо відрізнятися від 5 В, тому краще використовувати окреме точніше джерело живлення.

Для швидкої перевіркисхеми можна використовувати дільник напруги, що складається із двох резисторів. Схема включення дільника показана у лівій частині схеми вольтметра (Малюнок 12). Якщо резистори прецизійні і напруга живлення точно дорівнює 5 В, розрахунок напруги на виході дільника дає 0.04950 В. Значення, отримане в результаті реального програмного вимірювання, склало 0.04991 В. Непогано для такого простого проекту!

Діоди Шоттки D1 ​​та D2 у схемі не є обов'язковими, але настійно рекомендуються, оскільки вони забезпечать деякий захист мікросхеми, якщо випадково на вхід буде подано напругу поза діапазоном 0…1 В.

Захищені входи

RPi можна захистити від випадкового потрапляння високої напруги, додавши до входів додаткову схему. У деяких випадках дуже гарною і недорогою альтернативою показаній нижче схемі (Малюнок 15) може служити оптрон, здатний захистити входи RPi від напруги до 60 В і впорається з переполюсуванням. Транзистор BC547B у схемі Рисунку 14 можна замінити на 2N3904 або BC549. Допустима потужність розсіювання резистора R1 може бути 0.25 Вт при вхідних напругах до 50 В, інакше краще використовувати 0.5 Вт.

Схема інвертує вхідний сигнал, перемикаючись у «лог. 0» при вхідній напрузі понад 2 ст.

Підключення до 5-вольтової логіки

Пряме підключення пристроїв із 5-вольтовими логічними виходами до входів RPi може вивести плату з ладу. І тут є безліч рішень.

Якщо стан 5-вольтового логічного виходу змінюється відносно повільно, можна розглянути можливість використання резистивного дільника на вході RPi, але до швидких схем такий спосіб не застосовується. Тоді набагато більше гарним рішеннямбуде використання буферної мікросхеми. Для середніх швидкостей (до 100 кГц) цілком підійде схема на N-канальному MOSFET ZVN2110A (Малюнок 16). Ця схема також інвертує вхідний сигнал.

Показаний на схемі транзистор можна замінити ZVNL120A або VN10LP.

При паянні польових транзисторів слід дотримуватись основних запобіжних заходів. Під час складання пристрою спочатку встановіть резистор R3 і лише після цього вийміть MOSFET із захисної упаковки та запаяйте у схему. Резистор R3 забезпечить певний захист.

Швидкість роботи та джиттер

Опитування стану кнопок та управління світлодіодами - події щодо повільні, що вимірюються десятками та сотнями мілісекунд. Іноді зустрічаються набагато більш швидкісні сигнали. Наприклад, пульт від телевізора випромінює інфрачервоні світлові імпульси зі швидкістю 40 тис. разів на секунду. Незважаючи на те, що основний процесор RPi працює на частоті 1 ГГц, робота підсистеми введення/виводу з такою швидкістю не підтримується з ряду причин, як апаратних, так і програмних. Ми розглянемо деякі програмні аспекти теми статті.

RPi працює під керуванням багатозадачною операційної системи(ОС) Linux. Система може превентивно забирати контроль за вашою програмою для виконання інших завдань. Все це відбувається досить швидко, так що здається, ніби мишка, як і раніше, працює під час виконання вашої програми, але насправді вашій програмі і коду драйвера миші ОС надає лише короткі проміжки часу.

Зазвичай це не має значення, але коли вам потрібна обробка коротких або високоточних подій, це може стати проблемою (наприклад, у вигляді джиттера).

Крім того, важливе значення має вибір мови програмування, оскільки деякі бібліотеки підходять краще за інші. Інтерпретовані та компільовані коди можуть виконуватися з різними швидкостями. Коротше кажучи, якщо потрібна дуже точна тимчасова прив'язка подій, можливо, доведеться написати драйвер Linux або використовувати зовнішнє обладнання (наприклад, інший мікроконтролер або логічні схеми та генератор).

Одним із добрих питань, важливих для більш повного використання можливостей RPi, є те, наскільки швидко можна змінювати логічні стани виходів GPIO за допомогою бібліотек Python, Сі та описаного вище командного скрипту.

Щоб дізнатися про це, був написаний код для періодичного перемикання логічного стану вихідного порту, до якого був підключений осцилограф. Результат подано у Таблиці 1.

Таблиця 1. Максимальна частота перемикання виходів при
використання різних мов програмування
Мова
програмування
Частота Тривалість
високого рівня
Тривалість
низького рівня
Python 71.2 кГц 3.9 мкс 10.1 мкс
Сі 5.8 МГц 85 нс 85 нс
Командний скрипт 3.9 кГц 115 мкс 139 мкс

Однак завжди важливо пам'ятати про джиттер, яким обов'язково супроводжується робота ОС Linux. Для випадку простого перемикання світлодіода це, звичайно ж, не проблема. Характер джиттера можна побачити на осцилографі як накладення кількох каналів при синхронізації загальним сигналом (Малюнок 17). Зауважте, що джиттер може приймати безліч значень, незважаючи на те, що сигнали дискретно рознесені на 4 нс (250 МГц), що пов'язано з апаратними особливостями RPi.

Висновок

Тепер ви побачили, що 40-контактний роз'єм GPIO на платах RPi може використовуватися для різних проектів – від керування світлодіодами до електронних схем для вимірювання аналогових величин. З невеликими додатковими схемами адаптації логічних рівнів RPi може взаємодіяти 5-вольтовими пристроями. За допомогою Python дуже легко керувати виходами, так само як не уявляє складності та читання стану входів, а бібліотека wiringpi значно спрощує управління програмістам, які використовують Сі.

З точки зору зовнішніх інтерфейсів Raspberry Pi, як і інші невеликі одноплатні комп'ютери, не дуже відрізняється від звичайного настільного ПК. На платі RPi передбачено USB портидля підключення клавіатури та миші, порт HDMIдля підключення дисплея. Однак, завдяки тому, що RPi значно компактніше і дешевше, ніж ПК, стає можливим використовувати їх у різних системахта додатках, де ПК або ноутбуки недоречні.

Нерідко виникає бажання підключити до ПК якісь нестандартні «речі». Можливо, наприклад, що ви захочете використовувати комп'ютер для вимірювання рівня яскравості та автоматичного керування освітленням, або для подачі звукового сигналу при виявленні порушника.

У більш широкому плані, мова йдепро бажання використовувати комп'ютер для управління електронними схемами (виходи) та отримання інформації від схем чи пристроїв (входи).

Саме тут проявляється очевидна перевага RPi та інших SBC, обумовлена ​​ключовою відмінністю між одноплатними комп'ютерами та ПК: одноплатні комп'ютери мають порти вводу/виводу загального призначення, - Те, чого немає у великих ПК (Малюнок 1).

Через ці висновки (штирьові роз'єми) RPi може взаємодіяти з електронним світом, що складається (крім іншого) датчиків, індикаторів і виконавчих механізмів.

У статті ми розглянемо приклади схем, які можна використовувати як є (або змінити і розширити), разом з прикладами коду кількома мовами програмування.

Роз'єм розширення Raspberry Pi

На малюнку 2 показано розташування та призначення висновків роз'єму розширення Raspberry Pi. Перші висновки подібних роз'ємів на друкованих платах, як правило, можуть бути ідентифіковані квадратним контактним майданчиком на нижньому шарі плати. На 40-контактний роз'єм розширення RPi виведено цифрові входи та виходи, сумісні з логічними рівнями 3.3 Ст.

Сумісність з логічними рівнями 3.3 означає, що RPi інтерпретуватиме вхідний рівень близький до 0 В як логічний «0», а рівень вище 2 В як логічну «1». Подача на вхід напруги вище 3.3 може вивести з ладу RPi. Відповідно, коли GPIO порт налаштований як вихід, RPi буде встановлювати на ньому напругу близьку до 0, або до 3.3.

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

Цифрові виходи RPi

Перші кроки: керування світлодіодом

Найпростіший приклад використання виходів - керування світлодіодом або лампочкою, або яким-небудь приводом або двигуном. Для перетворення вихідного сигналу RPi у щось, що керуватиме потрібним пристроєм, зазвичай потрібно електронна схема. Все, що необхідно для невеликого світлодіода – послідовний струмообмежувальний резистор, що захищає світлодіод та вихід RPi. Опір резистора вибирається з діапазону 100 Ом … 1 кОм, залежно від світлодіода, що використовується, і необхідної яскравості при установці на виході логічної «1».

Підключення світлодіода до контактів роз'єму GPIO за допомогою безпаєчної макетної плати показано на малюнку 3, а сама схема - на малюнку 4. З'єднання GND (0 В) було взято з виведення 6 роз'єму GPIO, для управління світлодіодом використовується порт GPIO22 (висновок 15). Можна використовувати будь-який порт GPIO, позначений рожевим кольором на мал. 2.

Після того, як виконані та перевірені всі з'єднання, можна приступати до написання коду або сценарію керування світлодіодом. Вибір мови залежить від вас. Один із прикладів на популярному мовою Pythonміститься в (Листинг 1).

Лістинг 1. Приклад програми на Python для простого миготіння світлодіодом.


import time
import RPi.GPIO як GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)
GPIO.output(22, True)
time.sleep(3)
GPIO.cleanup()

Збережіть код у файлі з ім'ям led-test.py , а потім запустіть його, виконавши команду:

sudo python led-test.py

Інша програма (Лістинг 2) демонструє приклад керування світлодіодом. Світлодіод блимає 10 разів. (Примітка: у Python, на відміну від інших мов програмування, важливим є використання відступів у коді).

Лістинг 2. Вихідний код програми на Python (світлодіод блимає 10 разів).

# Світлодіод підключено до GPIO22 (контакт 15)
import time
import RPi.GPIO як GPIO
GPIO.setmode(GPIO.BCM)
for x in range(0,10):
GPIO.setup(22, GPIO.OUT)
GPIO.output(22, True)
time.sleep(0.05)
GPIO.output(22, False)
time.sleep(0.45)

GPIO.cleanup()

Інший спосіб керування портами GPIO базується на використанні Shell-скрипту (сценарію оболонки). Цей метод здається трохи більш складним (якщо ви не любите писати скрипти), але він хороший просто для розширення кругозору, оскільки багато мов програмування часто дозволяють запускати командні скрипти, і в разі необхідності це може бути одним з швидких способівкерування портами GPIO з інших мов. Крім того, описаний в Лістингу 3 спосіб стандартний для різних платформ, тому ваш код може бути перенесений на інші плати.

Лістинг 3. Командний скрипт (Shell-скрипт) для керування світлодіодом, підключеним до GPIO22 Raspberry Pi.

#!/bin/sh
GPIO_PATH=/sys/class/gpio
LED_PIN=22 #GPIO 22 is pin 15
echo "$LED_PIN" > $GPIO_PATH/export
echo "out" > $GPIO_PATH/gpio$LED_PIN/direction
echo "1" > $GPIO_PATH/gpio$LED_PIN/value
sleep 1
echo "$LED_PIN" > $GPIO_PATH/unexport

Перший рядок скрипта виглядає як коментар, але він вказує оболонці Linux, що робити зі скриптом під час виконання, тому змінювати її не можна. Інші рядки скрипта використовуються для контролю відповідного порту GPIO, конфігурування його як виходу, установки на ньому високого рівня і виконання затримки на 1 с. В кінці порту звільняється, щоб дати можливість використовувати його в інших програмах.

Іншою поширеною мовою програмування, з якою ви можете зустрітися, є Сі або його старший брат Сі++. Приклади вихідного кодуна Сі або Сі++ будуть наведені далі, коли ми почнемо працювати з цифровими входами.

Генератор тональних сигналів

Більш цікавим прикладом може бути використання кількох портів GPIO для керування тональним генератором. RPi має роз'єм для підключення навушників, але часто для оповіщення про події (наприклад, для будильника) достатньо простого сигналу або серії сигналів різної тональності.

Принципова схема простого генератора звукових сигналів, виконаного на мікросхемі інтегрального таймера ICM7555, зображена на Малюнку 5. Вигляд конструкції, зібраної на макетній платі, показаний на Малюнку 6. Змінюючи номінали резистора та конденсатора, можна створювати різні тональні сигнали та звуки.

Управління генератором здійснюється за допомогою двох портів GPIO RPi. Один вихід (GPIO22) використовується для увімкнення або вимкнення звуку, а другий (GPIO27) - для перемикання між двома альтернативними частотами сигналу. За бажанням можна вибрати інші тони, змінивши номінали компонентів C1, R1 та R2.

Вихідний код програми на мові Python, що генерує кілька звукових ефектів, наведено в Лістингу 4. Збережіть код у файлі з ім'ям tone-test.py і потім запустіть виконання командою

sudo python tone-test.py.

Лістинг 4. Програма керування генератором звукових сигналів.

import time
import RPi.GPIO як GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT) # Увімкнути/Вимкнути генератор
GPIO.setup(27, GPIO.OUT) # Зміна тональності

GPIO.output(22, True)
for x in range(0,5):
GPIO.output(27, True)
time.sleep(0.1)
GPIO.output(27, False)
time.sleep(0.2)
GPIO.output(22, False)
time.sleep(0.5)

For x in range(0,5):
GPIO.output(22, True)
time.sleep(0.1)
GPIO.output(22, False)
time.sleep(0.2)
GPIO.output(27, True)
time.sleep(0.2)

For x in range(0,5):
GPIO.output(22, True)
time.sleep(0.05)
GPIO.output(22, False)
time.sleep(0.05)

For x in range(0,10):
GPIO.output(22, True)
time.sleep(0.1)
GPIO.output(22, False)
time.sleep(0.1)
time.sleep(1)

GPIO.cleanup()

Зверніть увагу, що схема живиться напругою 3.3 (виведення 1 роз'єму GPIO). Використовуйте це джерело тільки в тому випадку, якщо впевнені, що схема не споживає значний струм. Шину живлення 3.3 можна навантажувати струмом до 50 мА. За потреби можна скористатися окремим регулятором напруги 5 - 3.3. В і підключити його до джерела живлення 5, доступному на виведенні 2 роз'єму GPIO.

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

Підключення до 5-вольтових логічних пристроїв

Використання RPi для керування 5-вольтовими пристроями не потребуватиме жодних додаткових схем. Логічні входи пристрою з напругою живлення 5 В нормально функціонуватимуть з вихідними сигналами 3.3 портів RPi.

Малопотужні світлодіоди

Для малопотужних синіх та білих світлодіодів може знадобитися напруга вище 3.3 В. Найпростіше управляти одиничним світлодіодом за допомогою транзисторного ключа, що комутує струм шини 5 В (Малюнок 7). Опір резистора R1 розраховується виходячи з технічних характеристик конкретного світлодіода, транзистор - будь-який n-p-nтипу.

Потужні пристрої

Найпростішим і найпоширенішим способом управління потужними пристроями, що живляться від джерела змінного або постійного струму(але не від мережі) є використання реле з транзисторним ключем (Малюнок 8). Підійдуть практично будь-які n-p-n транзистори, зокрема, популярні BC547B, 2N3904 та BC549. При цьому, якщо зовнішній пристрій може працювати від 5 В, подати живлення на реле можна з виведення 2 гнізда GPIO. Але і в цьому випадку не слід забувати про струм споживання. В іншому випадку реле може бути підключено до зовнішнього джерела живлення з дотриманням запобіжних заходів, що виключають попадання зовнішньої напруги на RPi.

Пристрої з живленням від електромережі

Поводження з будь-якими схемами або пристроями, що безпосередньо управляють приладами, підключеними до мережі змінного струмувимагає особливої ​​обережності. Більшість із них просто не відповідає стандартам безпеки, незважаючи на те, що деякі виробники стверджують протилежне. Досить безпечний підхід у тому, щоб знайти готове рішення дистанційного керуванняавторитетного виробника, запропоноване авторитетним постачальником, в якому для керування пристроями, що живляться від мережі, використовуються інфрачервоні або бездротові технології. Наприклад, компанія Energenie пропонує мережні розетки з керуванням по радіоканалу в комплекті з невеликим модулем радіопередавача (Малюнок 9), що підключається безпосередньо до роз'єму GPIO плати RPi, а також приклади програм на Python.

Група реле, світлодіодів чи інших пристроїв

Для керування декількома світлодіодами, реле або іншими пристроями, які живляться від 12 В і споживають менше 200 мА, можна використовувати стародавню мікросхему ULN2803, що випускається більше 25 років. Мікросхема є набір з восьми ключів на основі транзистора Дарлінгтона. Один із варіантів підключення мікросхеми ULN2803 до RPi показаний на Рисунку 10.

Малопотужні двигуни постійного струму

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

Всім привіт! Сьогодні я розповім як мені вдалося заощадити порти своєї 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 означає «малиновий пиріг», Компанія-виробник таким чином наголосила на тому, що цей комп'ютер призначений в першу чергу для дітей.

Що являє собою цей винахід, і яке застосування Raspberry Pi сучасному світі, Про це ми і розповімо нижче.

Особливості комп'ютера Raspberry Pi

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

Як вважають розробники, пристрій Raspberry Pi має виконувати такі освітні цілі:

  • зацікавлювати школярів розвивати навички програмування;
  • сприяти у починаннях молодих програмістів;
  • допомагати досвідченим комп'ютерникам відкривати нові горизонти, та робити нові досягнення у галузі програмування.

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

  • самого міні-комп'ютера Raspberry Pi моделі;
  • мікро-CD (8 гігабайт);
  • клавіатури;
  • оптичної миші;
  • мікро-адаптера CD Card;
  • джерела живлення;
  • кабелів HDMI та мікро USB.

Перша партія Raspberry Pi вироблялася у Піднебесній, але з кінця 2012 року виробництво повністю перенесено до Великобританії, на завод у Пенкойді (Уельс). У середньому, завод виробляє близько 40 тисяч міні-комп'ютерів Raspberry Pi на тиждень.

Технічні характеристики Raspberry Pi

Отже, які ж технічні характеристики цього унікального комп'ютера без корпусу, давайте з'ясуємо:

Застосування комп'ютера Raspberry Pi для дому

Найбільш застосовувана модель міні-комп'ютера Raspberry Pi - це модель на 215 Мб оперативної пам'яті з підтримкою Ethernet. Також є ще одна модифікація приладу, в якій компоненти розміщені компактніше, також вона має чотири порту USB, кількість портів введення та виведення GPIO в ній істотно більша, крім того, відсутній композитний відеовихід.

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

  • монітор;
  • миша;
  • клавіатуру;
  • підключення будь-якого дистрибутива ОС Linux.

У домашніх умовах пристрій Raspberry Pi ви можете використовувати в таких цілях:

  • створення домашнього медіа-сервера;
  • як сервер зберігання даних;
  • як «мозковий центр» для автоматизованих верстатів або роботів;
  • як сервер домашньої автоматизації (або системи «розумний дім»).

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

Будь-яка система домашньої автоматизації або так званий розумний будинок є досить складною і багатоструктурною. Крім того, що вона покликана виконувати ті чи інші сценарії, які задаються користувачем, вона має властивість приймати свої власні рішення в певній позаштатній ситуації. Сміливо можна сказати, що така система має задатки штучного інтелекту.

Багато хто сьогодні застосовують поняття «розумний дім» до всього, наприклад:

  • сигналізації GSM;
  • датчику протікання води;
  • світлового управління датчиками руху і т.д.

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

Система домашньої автоматизації («розумний будинок») включає такі компоненти:

  • центральний сервер;
  • він пов'язаний за допомогою інтерфейсу RS485 з контролерами, які стоять у кожній кімнаті та приміщенні будинку;
  • до контролерів підключені ті чи інші управлінські пристрої для захисту, контролю та регулювання роботи системи.

Така мережева архітектура даної системи хороша тим, що у власника будинку немає необхідності простягати від кожного пристрою до сервера незручні дроти, а потрібно просто з'єднати контролери, до яких вони підключаються за допомогою одного кабелю UTP. Одна пара його дротів застосовується для інтерфейсу RS485, а інші живлять датчики та контролери. Варто зазначити, що структура роботи передбачена таким чином, що якщо вийде з ладу один із контролерів або кілька, або навіть буде порушена робота центрального сервера, на роботу системи загалом це не впливатиме.

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

До послідовного порту пристрою UART за допомогою узгоджувального пристрою через інтерфейс RS485 підключають контролера, які оснащені різним набором висновків або вводів. Також до цього ж інтерфейсу можна підключати GPS-модель і з його допомогою мати доступ до системи за допомогою мобільної або стаціонарної телефонного зв'язку, якщо користувач знаходиться в зоні, де немає доступу до Інтернету. Доступ також дозволяється через пароль, як і в попередньому випадку. Ще один пристрій у мережі – це радіомодуль, за допомогою якого можна прив'язати до загальної системивсі радіодатчики та пульти дистанційного керування.

Отже, існуюча на сьогоднішній день версія системи домашньої автоматизації на базі комп'ютера Raspberry Pi складається з центрального сервера та контролерів з інтерфейсом RS485, які потрібні для зв'язку із сервером. Їх опис виглядає так:

А зараз давайте дізнаємося, яким чином пристрій Raspberry Pi був використаний винахідниками для створення інноваційних виробів. Розглянемо деякі з них.

Конструктор Kano

Конструктор Kano для дітей - це не просто звичайний конструктор, це модульний комп'ютер, зібрати таку головоломку зможе навіть дитина. Набір конструктора включає наступне:

Таким чином, навіть дитина може сама зібрати комп'ютер, який потім підключається до монітора або телевізора за допомогою HDMI-порту.

Такий конструктор спочатку був створений для дітей, але став популярним серед дорослих. Кошти на розробку та реалізацію цього проекту були зібрані за допомогою платформи для збирання коштів на творчі винаходи. Завдяки зібраному комп'ютеруможна, можливо виконувати такі дії:

  • записувати музику;
  • дивитися відео у форматі HD;
  • писати програми;
  • створювати свої ігри.

Літаючий пристрій SkyJack

Інші винахідники на базі комп'ютера Raspberry Pi створили апарат-безпілотник SkyJack, який керується за допомогою Wi-Fi з'єднання. Такий апарат здатний брати вертолітну висоту, відстежувати шляхи військових вертольотів та керувати ними, також за його допомогою можна перехоплювати радіосигнали та створювати перешкоди. Однак, незважаючи на такі можливості, апарат дозволений для масового користування через невеликий радіус дії.

Poppy: робот-інопланетянин

Робот Poppy був створений за допомогою тривимірного друку французькою компанією INRIA Flowers. Робот керується за допомогою міні-комп'ютера Raspberry Pi. Конструкція робота повторює біологічну будову людини, має суглоби, хребет і сухожилля, його хода схожа на людську, він ходить, переступаючи з п'яти на ніс і рівномірно керувати центом своєї тяжкості.

Що таке No More Woof?

No More Woof - це прилад, який поки що знаходиться на стадії розробки, і створюється на базі Raspberry Pi. З його допомогою господар розумітиме, що хоче його пес. Так, прилад прикріплюватиметься до голови тварини та працюватиме за принципом електроенцефалографа, тобто зчитувати інформацію з голови собакита передавати її господарю за допомогою Raspberry Pi. Коли подібний прилад буде готовий і яким чином він точно використовуватиметься, поки невідомо, але подібні гарнітури, хай не настільки досконалі, вже застосовувалися професійними кінологами.

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

Raspberry PI - це пристрій, що має достатню продуктивність для того, щоб на його основі могли бути побудовані роботи здатні розпізнавати образи, виконувати роботу людей та інші подібні пристрої для автоматизації та виконання складних обчислювальних дій. Т.к. тактова частотапроцесора Raspberry PI 3 м.б. 1.2 ГГц а його розрядність 32 біта то Raspberry PI 3 значно перевершує звичайне Arduino у якого тактова частота як правило 16 МГц а розрядність мікроконтролера 8 біт, Arduino безумовно займає своє місце у виконанні операцій, що не вимагають великої продуктивності, але коли її вже не вистачає приходить на допомогу" і перекриває такий великий діапазон можливих застосувань, що можна бути абсолютно впевненим у доцільності придбання даного одноплатного комп'ютера Raspberry PI 3 (можна замовити за посиланням). Т.к. Raspberry PI - це комп'ютер для того щоб його використовувати потрібно на нього встановити операційну систему (хоча існують обхідні шляхи але все ж краще і простіше встановити операційну систему (далі)). Існує багато ос які можна встановити на Raspberry Pi але однією з найпопулярніших (для використання з Raspberry Pi), найбільш підходящим для початківців є ос Raspbian. Для того щоб встановити ос на Raspberry Pi знадобитися micro sd карта з розширювачем для того, щоб її можна було вставити в звичайний комп'ютері записати на неї ос. Sd карта повинна мати не менше 4Гб пам'яті при встановленні повної версії Raspbian і не менше 8Гб для встановлення мінімальних версій Raspbian. Мінімальні версії можуть не мати (і швидше за все не мають) графічного інтерфейсуі багато іншого що може вважатися зайвим і займає місце. Щоб уникнути проблем з відсутністю необхідних файлів, можна поставити повну версію. Можна використовувати SD карту 10го класу та з 32Гб пам'яті (перевірено працює (як див. відео нижче)). Після придбання карти пам'яті її треба вставити в комп'ютер у відповідний роз'єм, після цього подивитися з якою літерою з'явився диск у розділі "мій комп'ютер" і запам'ятати, потім треба завантажити ос з офіційного сайту https://www.raspberrypi.org/downloads/raspbian / натиснувши кнопку "Download ZIP" під "RASPBIAN JESSIE" для завантаження повної версії або під "RASPBIAN JESSIE LITE" для завантаження полегшеної але, для початківців, краще вибрати "RASPBIAN JESSIE" тобто. повну версію. Після скачування архіву "RASPBIAN JESSIE" його потрібно розархівувати, потім завантажити програму (або від сюди https://yadi.sk/d/SGGe1lMNs69YQ), встановити її, відкрити, далі потрібно в правому верхньому кутку вказати букву диска (запам'ятану раніше), знайти розархівований образ ос

І натиснути кнопку "write".

Після чого виведеться вікно із попередженням і в цьому вікні треба натиснути кнопку "Yes",

Після того як запис закінчиться і з'явиться вікно, що повідомляє про успішний запис (Write Successful), потрібно натиснути кнопку "Ok" у цьому вікні.

Потім закрити програму, витягнути карту SD безпечним способомта вставити в Raspberry Pi.

Далі можна підключити до Raspberry Pi usb клавіатуру(або ps2 через ), usb миша та монітор або телевізор через hdmi кабельабо можна підключити ethernet кабель (але це для досвідчених користувачів, тому далі розглянемо перший варіант). Після цього треба підключити живлення через micro usb, наприклад, від зарядного пристроювід смартфон. Після підключення живлення почнеться встановлення операційної системи. Як правило в нових (на момент написання цієї статті) версіях ос вже налаштована можливість зв'язку з Raspberry Pi по SSH і тому для того щоб налаштувати зв'язок з Raspberry Pi 3 по wifi достатньо налаштувати тільки wifi, Для цього в правому верхньому кутку екрана є значок на який потрібно натиснути та вибрати wifi,

Після чого вписати пароль від даного wifi в текстове поле, що з'явилося,

Після цих дій wifi на Raspberry Pi 3 буде налаштований і далі можна буде не використовуючи дроти програмувати Raspberry Pi 3 віддалено по wifi. Після налаштування Raspberry Pi 3 можна вимкнути вписавши в командному рядку(у програмі LXTerminal, яку можна відкрити подвійним клікомпо іконці програми) команду sudo halt або натиснувши відповідні кнопки вимкнення в графічному режимі, після остаточного вимикання можна вимкнути живлення та при наступній подачі живлення Raspberry Pi 3 увімкнутися з wifi. Тепер щоб програмувати Raspberry Pi 3 по wifi потрібно з'ясувати, яка у нього ip адреса. Для того щоб це зробити треба подати харчування на Raspberry Pi 3, дочекатися закінчення завантаження ос, зайти в веб-інтерфейс маршрутизатора (вписавши в рядку браузера 192.168.1.1 або те, що треба для входу в веб-інтерфейс, ввести логін і пароль), знайти вкладку DHCP Leases або щось подібне, знайти там рядок з raspberry та ip адресу Raspberry Pi 3.

Далі потрібно відкрити програму PuTTY (якщо її немає, то перед цим завантажити (або ) і встановити) поставити порт 22, з'єднання по SSH, вписати в поле "Host Name (or IP Adress)" ip адресу Raspberry Pi 3,

Після чого натиснути кнопку "Open" унизу вікна, далі з'явиться чорне вікно з пропозицією ввести логін. За умовчанням логін "pi" - його треба ввести та натиснути enter. Далі треба ввести пароль за замовчуванням "raspberry". При введенні пароля він не відображається – це нормально. Після того як пароль введений невидимими літерами потрібно натиснути enter і якщо все було зроблено правильно ми отримаємо доступ до Raspberry Pi 3 якщо ні то потрібно повторити дії. Після того як отриманий доступ до Raspberry Pi 3 можна його програмувати, спочатку потрібно увійти в папку "pi" для цього треба вписати команду

І натиснути enter (після cd обов'язково пробіл).
Тепер можна відкрити текстовий редактор nano. Nano - це спеціальний текстовий редактор, який є на більшості ос на кшталт Linux і в якому можна написати програму для Raspberry Pi. Для відкриття цього редактора та одночасно з цим створення файлу з назвою "first" та розширенням "py" потрібно вписати команду

І натиснути enter. Відкриється редактор nano і можна зауважити, що його інтерфейс трохи відрізняється але в основному - це те ж чорне поле в яке треба вписувати команди. Т.к. ми хочемо керувати портами введення загального виводу (GPIO) то перш ніж запустити програму з управління цими портами, потрібно підключити до них який-небудь пристрій щоб можна було бачити що управління вийшло. Треба також відзначити що піни налаштовані як виходи у Raspberry Pi можуть видавати дуже невеликий струм (припускаю, що до 25мА) і враховуючи, що Raspberry Pi це все-таки не саме дешевий пристрійто настійно рекомендується подбати від того, щоб навантаження на висновки не було занадто великим. Малопотужні індикаторні світлодіоди, як правило, можуть використовуватися з Raspberry Pi. їм для того, щоб світитися досить невеликого струму. Для першого разу можна зробити пристрій з роз'ємом, двома зустрічно паралельно включеними світлодіодами і резистором з опором 220Ом послідовно включеним зі світлодіодами. Т.к. опір резистора 220Ом, струм обов'язково проходить через цей резистор і немає паралельних шляхів його проходу, напруга на висновках 3.3В струм не буде більше ніж 3.3/220=0.015А=15мА. Підключити це можна до вільних GPIO наприклад до 5 і 13 як на схемі

(розпинання взято з https://en.wikipedia.org/wiki/Raspberry_Pi), виглядати це може приблизно так:

Після того як все акуратно і правильно підключено і є впевненість у тому, що нічого не згорить, можна скопіювати в редактор NANO першу простеньку програму мовою Python.

Import RPi.GPIO як GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(5, GPIO.OUT)
GPIO.output(13, True)
GPIO.output(5, False)
time.sleep(1)
GPIO.output(13, False)
GPIO.output(5, True)
time.sleep(1)
GPIO.output(13, True)
GPIO.output(5, False)
time.sleep(1)
GPIO.output(13, False)
GPIO.output(5, True)
time.sleep(1)
GPIO.output(13, True)
GPIO.output(5, False)
time.sleep(1)
GPIO.output(13, False)
GPIO.output(5, True)
time.sleep(1)
GPIO.cleanup()

Потім натиснути

Після виходу з редактора NANO можна ввести команду

Sudo python first.py

Після цього світлодіоди помигають кілька разів. Тобто. вдалося управляти портами введення виведення загального призначення по wifi! Тепер давайте розглянемо програму і з'ясуємо, як це вийшло.
Рядок:

Import RPi.GPIO як GPIO

Це підключення бібліотеки "GPIO" для керування висновками.
Рядок:

Це підключення бібліотеки "time" для затримок.
Далі йде встановлення режиму GPIO:

GPIO.setmode(GPIO.BCM)

Конфігурація висновків 5 та 13 як виходи:

GPIO.setup(13, GPIO.OUT)
GPIO.setup(5, GPIO.OUT)

Установка логічної одиниці на виведенні 13, встановлення логічного нуля на виведенні 5:

GPIO.output(13, True)
GPIO.output(5, False)

Затримка

Установка логічного нуля на виведенні 13, встановлення логічної одиниці на виведенні 5:

GPIO.output(13, False)
GPIO.output(5, True)

Перекладає всі висновки у вихідний стан та програма завершується. Т.о. можна керувати будь-якими вільними пінами по wifi і якщо зробити живлення 5В від акумулятора то вже можна зробити якогось автономного робота або пристрій не прив'язаний проводами до чогось або стаціонарного. Мова програмування Python (пітон) відрізняється від сі подібних мов, наприклад замість крапки з комою, для завершення команди, у пітоні використовується переклад рядка, замість фігурних дужок використовується відступ від лівого краю який робиться клавішею Tab. Загалом Python це дуже цікава мована якому виходить простий код, що легко читається. Після того, як робота (або гра) з Raspberry PI 3 закінчена можна його вимкнути командою

І після повного вимкнення прибрати харчування. При подачі живлення Raspberry PI 3 вмикається і з ним можна знову працювати (або грати). Замовити Raspberry pi 3 можна за посиланням http://ali.pub/91xb2. Про те, як робиться настройка Raspberry PI 3 і керування його пінами можна подивитися на відео:

Після успішного миготіння світлодіодами можна розпочати повномасштабне вивчення даного комп'ютерата створення проектів використовуючи можливості Raspberry PI 3 які обмежені лише вашою уявою!