| Плата розширення GSM/GPRS і GPS для Raspberry Pi |
|
There are no translations available. Плата розширення для Raspberry Pi може ефективно контролювати модулі GSM GPRS SIM900 і SIM908 (з GPS) і, таким чином, значно розширити функціональність Raspberry Pi для мобільних додатків.
![]()
Такого типу розширення для Raspberry Pi призначені для штабелювання один на одному і тому в змозі керувати кількома завданнями одночасно: ви зможете включати різні «послуги» в одному інтегрованому рішенні. Це зручно у випадку створення системи домашньої автоматизації, оснащеної датчиками і виконавчими пристроями, які використовують РК-дисплей для активації і деактивації, коли необхідно додати віддалений інтерфейс через GSM або TCP/IP мережу.
Можна також додати послуги безпеки для літніх людей, які активуються як локально, так і віддалено, використовуючи можливості зв'язатися з заздалегідь визначеним номером за допомогою голосу або SMS. Ми навіть можемо розробити автоматизовані двері, що відкриваються, використовуючи функцію розпізнавання обличчя, або відстеження руху: всі ці програми зможуть відправити нам зображення в разі підозрілої діяльності. Єдиним обмеженням є ваша уява і здатність розробляти і програмувати додатки. Складність цих застосувань перевищує можливості мікроконтролерів, хоча останні можуть бути використані для управлінні датчиками і периферійними пристроями.
В розширенні GSM/GPRS і GPS використовуються виводи GPIO для підключення до послідовного порту і два додаткових виводи вводу/виводу для живлення (вкл/викл) та вивід для скидання модуля SIM9XX.
Схема підключення
![]()
Схема підключення розширення GSM забезпечує підтримку як модуля SIM900, так і SIM908, щоб забезпечити автономну подачу живлення для модуля GSM, експортувати мікрофонний вхід і аудіовихід на два виділені гнізда і правильно з'єднати контакти роз'єму GPIO до модулів GSM.
U1 - стабілізатор живлення, який-через стабілітрони D1 і D2 подає напругу живлення на відповідний вивід модуля SIM9XX.
Також можна подавати живлення з Raspberry Pi через роз’єм J5V, а до гнізда PWR можна підключити зовнішнє джерело живлення, яке забезпечує постійний струм напругою 7-12 В.
Вивід ON/OFF (вкл/викл) SIM9XX підключається до контакту 13 (GPIO27) GPIO Raspberry Pi для програмного включення і виключення модуля.
Вивід скидання RST модуля SIM підключається до контакту 15(GPIO22) Raspberry Pi, також щоб дозволити контролювати його програмно. Послідовні виходи приймання/передавання використовують виводи 8 (TXD) і 10 (RXD) Raspberry Pi. Контакт для живлення буфера годинника реального часу (VRTC) підключений до конденсатора CRTC. Нарешті, лінійний вхід мікрофона і аудіовихід підключені до відповідних роз'ємів MIC і SPK.
Умовне зображення елементів на платі:
![]()
Практичне використання розширення
![]()
Перш за все ми повинні змонтувати один з сумісних модулів GSM на розширенні, а потім зібрати плату на Raspberry Pi, переконавшись, що нижня частина плати не торкається до роз'ємів USB або Ethernet. В іншому разі, просто захистіть роз'єми ізоляційною стрічкою. Підключіть периферійні пристрої і живлення Raspberry Pi в звичайному порядку.
За допомогою GNU/Linux, ми можемо створити програми, які виконують безліч функцій, спільно використовуючи такі ресурси, як GSM-модуль. Наприклад, ми могли б написати додаток, який відстежує такі зовнішні події, як вхідний голосовий виклик або SMS повідомлення, а також в змозі реагувати на такі внутрішні події, як активації введення/виводу даних і, відповідно, виконувати голосові виклики, відправляти масові або персональні SMS, відправляти файли (наприклад, зображення), або електронні листи і т.д. ... У той же час, ви можете додати гео-довідковуінформацію завдяки доступності GPS на платі.
Для виконання всіх цих функцій вам необхідно розробити модульну архітектуру, яка зможе спільно використовувати ресурси, не створюючи конфліктів. Архітектура, що складається з сервера модулів, інтерфейсу та управління ресурсами та спеціалізованихі модулів, які забезпечують описані функціональні можливості і, які можуть викликатися і виконуватися за певних умов. Це потребує послуг зв'язку між запитувачами (програмами) і серверними модулями, які можуть задовольнити їх відповідно з логікою, що забезпечує пріоритети і уникнення конфліктів. Для цього вам потрібно вникати аж до деталей функціональних вимог додатка, і це причина, чому, перш ніж заглиблюючись в розроблення клієнт/серверних додатків, ми пропонуємо вам режим, який дозволяє отримати гнучкий досвід управління . Цей режим дозволяє використовувати програми, написані для Arduino, з невеликими змінами, так, щоб ознайомити з платою у більш безпосередній формі. Цей режим використовує бібліотеку arduPi розроблену Libelium Comunicaciones SL Distribuidas, доступною під відкритою ліцензією і розміщеною на CookingHacks.
Надсилаємо SMS в стилі Arduino
Бібліотека arduPi може бути встановлений шляхом простого скачування архіву і вилучення вмісту в /home. Після цього, просто перейменуйте папку в ArduPi і, для простоти, покладемо програми, які збираємося реалізувати, в ту ж папку.
Перж, ніж скомпілювати бібліотеку, відкрийте програму arduPi.cpp і, якщо відрізняється, замініть рядок 64 з посиланням на існуючий послідовний порт на рядок:
serialPort=”/dev/ttyAMA0″;
Тепер переходимо в папку ArduPi з командою:
cd /home/ArduPi
і компілюємо бібліотеку за допомогою команди:
g++ -c arduPi.cpp -o arduPi.o
А те, що стосується програм, то ми пропонуємо три модулі. Два з них дозволяють включати і вимикати модуль GSM і будуть дуже корисними в майбутньому. Третій дозволяє відправити текстове повідомлення на мобільний телефон. Для включення модуля ви повинні підняти рівень на виводі GPIO27 і тримати високим протягом двох секунд, а потім повернути його назад в низький рівень, ця ж процедура повинна бути використана, щоб відключити його, якщо вік включений. Для скидання просто підняти і тримати на виводі GPIO22 високий рівень півсекунди (потім повернути його назад в низький). Ці програми можна безкоштовно завантажити на сайті www.elettronicain.it.
Передусім, щоб мати можливість використовувати послідовний порт, ми повинні внести зміни в процес завантаження і відключити послідовну консоль, бо інакше вона буде тримати послідовний порт зайнятим.
Відключення послідовної консолі
Майже всі системи GNU/Linux, включають при завантаженні функцію консолі, тобто: можливість підключення терміналу з послідовною лінії - реальної чи віртуальної - для управління всією системою через цей інтерфейс зв'язку. Це нагадує про часи, коли ми звикли підключатися до комп'ютерів завдяки модемам з використанням телефонної лінії. Щоб відключити консоль ми використовуємо WinSCP, переходимо в папку boot за допомогою команди:
cd /boot
відкриваємо подвійним клацанням миші файл /boot/cmdline.txt і видаляємо, зберігаючи увагу, наступні параметри:
console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
та зберігаємо файл.
Приклади програм (включення модуля і відправка SMS)
![]()
Наведений нижче код має логіку для активації модуля. Процес активації модуля GSM включає наступні етапи:
Мета попередніх перевірок зв'язана з тим, що включення і виключення працює з одним і тим же процесом, тобто, якщо запустите програму без перевірки, то при вже включеному модулі GSM, він вимкнеться.
/*
* GSMIgnition */ //Під’єднуємо бібліотеку ArduPi #include "arduPi.h" int resetModulePin = 9; int onModulePin = 8; void switchModuleOn(){ digitalWrite(onModulePin,HIGH); delay(2000); digitalWrite(onModulePin,LOW); } void resetModule(){ digitalWrite(resetModulePin,HIGH); delay(500); digitalWrite(resetModulePin,LOW); delay(100); } int main (){ Serial.begin(115200); delay(2000); pinMode(resetModulePin, OUTPUT); pinMode(onModulePin, OUTPUT); Serial.flush(); printf ("zero\n"); Serial.print("AT"); delay(1000); if (Serial.available()==0) { printf ("uno\n"); resetModule(); delay(2000); } Serial.print("AT"); delay(1000); if (Serial.available()==0) { printf ("due\n"); switchModuleOn(); } return (0); }
Щоб скомпілювати програму використовуємо команду:
g++ -lrt -lpthread GSMIgnition .cpp arduPi.o -o GSMIgnition
Щоб запустити програму, переходимо в папку ArduPi (cd /home/ArduPi) і вводимо:
./GSMIgnition
Ми можемо відстежувати дії з вмикання модуля GSM, спостерігаючи за зеленим світлодіодом: при включенні він світиться приблизно дві секунди, а потім вимикається і починає мигати з інтервалом близько півсекунди, як знак того, що модуль шукає мережі GSM. Коли мережа додається, то індикатор починає блимати з набагато меншою швидкістю, близько одного спалаху в секунду.
Нижче код програми для вимикання модуля, в якому реалізована дуже схожа з попереднім логіка:
/*
* GSMOff */ //Під’єднуємо бібліотеку ArduPi #include "arduPi.h" int resetModulePin = 9; int onModulePin = 8; void switchModuleOff(){ digitalWrite(onModulePin,HIGH); delay(2000); digitalWrite(onModulePin,LOW); } void resetModule(){ digitalWrite(resetModulePin,HIGH); delay(500); digitalWrite(resetModulePin,LOW); delay(100); } int main (){ Serial.begin(115200); delay(2000); pinMode(resetModulePin, OUTPUT); pinMode(onModulePin, OUTPUT); Serial.flush(); printf ("zero\n"); Serial.print("AT"); delay(1000); if (Serial.available()==0) { printf ("uno\n"); resetModule(); delay(2000); } Serial.print("AT"); delay(1000); if (Serial.available()>0) { printf ("due\n"); switchModuleOff(); // } return (0); }
Для компіляції програми GSMOff використовуємо команду:
g++ -lrt -lpthread GSMOff.cpp arduPi.o -o GSMOff
Щоб запустити програму, завжди після переходу в папку ArduPi, скористаємося командою:
./ GSMOff
Нарешті, в коді нижче, ви можете побачити програму, яка дозволяє відправити SMS.
/*
* GSMSms */ //Include ArduPi library #include "arduPi.h" int timesToSend = 1; // the SMS number to be sent int count = 0; int ok = 0; int numCar = 0; char phone_number[]="3........9"; // SMS destination number void setup(){ Serial.begin(115200); // UART baud rate delay(2000); Serial.println("AT+CMGF=1"); // sets the SMS mode to text delay(100); } void loop(){ while (count < timesToSend){ delay(1500); Serial.print("AT+CMGS=\""); // send the SMS(s) Serial.print(phone_number); Serial.println("\""); while(Serial.read()!='>'); Serial.print("Se arriva funziona"); // the SMS body delay(500); Serial.write(0x1A); //sends ++ Serial.write(0x0D); Serial.write(0x0A); delay(5000); count++; } } int main (){ setup(); while(1){ loop(); if (count == timesToSend) { break; } } return (0); }
Щоб скомпілювати програму, вводимо команду:
g++ -lrt -lpthread GSMSms.cpp arduPi.o -o GSMSms
і запускаємо програму, як звичайно:
./GSMSms
Перш ніж запустити програму, вам треба запустити процедуру активації модуля GSM, щоб переконатися, що модуль під’єднаний і працює.
Коли ви підете далі в розробці програми управління, то вона повинна буде забезпечити управління правильною послідовністю дзвінків, перевіряти та управляти ненормальними умовами...
(За матеріалами EN: open-electronics.org) Останні статті за темою:
Попередні статті за темою:
|























Плата розширення



