- Робоче пояснення:
- Необхідні компоненти:
- Кругова діаграма:
- Робота з модулем бездротового приймача nRF24L01 +:
- Програмування Arduinos:
- Програма обробки:
- Тестування:
Створення локальної мережі для обміну персоналом та конфіденційних даних стало майже неможливим для простої людини в нашому сучасному світі. Це головним чином тому, що всі поширені методи чату, такі як Whatsapp, Facebook, Hangout, і майже все передбачає підключення до Інтернету.
Що, якби ми могли обмінюватися даними без Інтернету ?
Як круто було б, якби ви могли спілкуватися з людьми у вашому домі чи на робочому місці без мережевого пакета чи Інтернет-з’єднання?
Що, якби ми могли налаштувати наш екран чату під власні уяви?
Все це можливо за допомогою мікроконтролера та бездротового середовища передачі. Цей чат Arduino за допомогою проекту nRF24L01 допоможе вам створити недорогий зал чату у вашому районі.
Тож давайте заскочимо і подивимось, як це працює.
Робоче пояснення:
В основному, щоб ця річ працювала, нам знадобиться пара плат Arduino та дешеві бездротові модулі. Бездротові модулі, які ми будемо використовувати тут, - nRF24L01. Причина вибору цих модулів полягає в тому, що вони є наступниками Zigbee і легко працювати з налаштованим з’єднанням. Крім того, ці модулі працюють на частоті 2,4 ГГц (діапазон ISM) із варіантами розширення спектра стрибків частоти та опціями ударного спалаху, що змушує нас почуватися розслаблено через проблеми з перешкодами.
Наші Arduino та NRF24L01 з'єднані між собою для встановлення послідовного зв'язку, щоб вони могли спілкуватися між собою. NRF24L01 є напівдуплексними модулями приймача, отже вони можуть надсилати та приймати дані. Дані збираються у користувача і передаються ці дані можуть бути отримані будь-якими (або одними конкретними) модулями та відображати їх на своєму екрані.
Але !!!!! Ми будемо спілкуватися за допомогою екрану налагодження Arduino? Звичайно, ні. Ми збираємось створити та налаштувати наш власний екран чату за допомогою "Обробки". Обробка - це програмне забезпечення, яке здатне взаємодіяти з Arduino за допомогою UART. Ми створимо файл.exe з мовою обробки, який може працювати на будь-якому комп'ютері з Java Runtime. Для того, щоб поспілкуватися, нам просто потрібно підключити наш Arduino і відкрити цей файл.exe та Booooom !! ми потрапили у нашу власну Приватизовану абсолютно безкоштовну кімнату чату.
Цей проект обмежений лише додаванням двох учасників до кімнати чату, але nRF24L01 має 6 конвеєрів, тому в нашій кімнаті чату може бути максимум 6 учасників. Цей приміщення для роботи може працювати в межах 100 метрів залежно від модулів nRF24L01.
Тож вирушаємо за покупками !!!!
Необхідні компоненти:
- Arduino (будь-яка версія або модель) - 2Ні
- nRF24L01 + Модуль бездротового приймача - 2Ні
- 3.3 Регулятор напруги - 2Ні. (Не обов’язково)
- Підключення проводів
- Відсотки (Lolz)
Кругова діаграма:
Arduino Mega з nRF24L01:
Arduino Nano з nRF24L01:
Наш проект не передбачає жодних складних зв’язків. Я використовував Arduino Mega та Arduino Nano, а їх зв’язки з nRF24L01 показані вище. Ви можете використовувати будь-які моделі Arduino.
Робота з модулем бездротового приймача nRF24L01 +:
Однак для того, щоб наш nRF24L01 працював без шуму, ми могли б розглянути наступні речі. Я працював над цим nRF24L01 + давно і дізнався, що наступні моменти можуть допомогти вам потрапити в стіну.
1. Більшість модулів nRF24L01 + на ринку є фальшивими. Найдешевші з них, які ми можемо знайти на Ebay та Amazon, є найгіршими (не хвилюйтеся, за декілька налаштувань ми можемо змусити їх працювати)
2. Основна проблема - це джерело живлення, а не ваш код. Більшість кодів в Інтернеті будуть працювати належним чином, я сам маю робочий код, який я особисто протестував. Повідомте мене, якщо вони вам потрібні.
3. Зверніть увагу, оскільки модулі, надруковані як NRF24L01 +, насправді є Si24Ri (так, китайський продукт).
4. Клонові та підроблені модулі споживають більше енергії, отже, не розробляйте свою схему живлення на основі таблиці даних nRF24L01 +, оскільки Si24Ri матиме високе споживання струму близько 250 мА.
5. Остерігайтеся пульсацій напруги та стрибків струму, ці модулі дуже чутливі і можуть легко згоріти. (;-(поки що підсмажили 2 модулі)
6. Додавання пари конденсатора (10 мкФ та 0,1 мкФ) через Vcc та Gnd модуля допомагає зробити ваш запас чистим, і це працює для більшості модулів.
Однак якщо у вас є проблеми, повідомте про розділ коментарів або прочитайте це.
Програмування Arduinos:
Програма як для Arduino Nano, так і для Mega буде схожа на зміну штифтів CE та CS. Поясню програму, розділивши її на невеликі сегменти.
Оскільки Arduino та nRF24L01 спілкуються через SPI, ми закликали створити бібліотеку SPI. Ми також включили нашу бібліотеку Maniacbug RF24 для роботи наших RF-модулів. Завантажте файл звідси та додайте їх до своєї IDE.
#включати
Наші модулі NRF підключені до контактів 8 і 10 до CE та CS відповідно.
RF24 myRadio (8, 10);
Ми створюємо структурований пакет даних, який називається пакет . Мінлива текст буде використовувати для даних переданих по повітрю.
struct package {текстовий символ; // Текст для передачі в ефірі}; typedef struct package Package; Дані пакету;
У функції void setup () ми ініціалізуємо швидкість передачі даних до 9600, а наші модулі - до 115 з мінімальним споживанням енергії та швидкістю 250 кбіт / с. Ви можете возитися з цими значеннями пізніше.
void setup () {Serial.begin (9600); затримка (1000); //Serial.print("Setup Initialized "); myRadio.begin (); myRadio.setChannel (115); // діапазон 115 над сигналами WIFI myRadio.setPALevel (RF24_PA_MIN); // МІН потужність низького рівня люті myRadio.setDataRate (RF24_250KBPS); // Мінімальна швидкість}
Модуль призначений для роботи в режимі передачі, якщо дані приймаються через послідовний буфер, інакше він буде знаходитися в режимі приймача, шукаючи дані в ефірі. Дані від користувача зберігаються у масиві char і надсилаються до WriteData () для їх передачі.
void loop () {while (Serial.available ()> 0) // Отримати значення від користувача {val = Serial.peek (); if (index <19) // На один менше розміру масиву {inChar = Serial.read (); // Зчитування символу inData = inChar; // Зберігаємо його index ++; // Збільшення, куди писати далі inData = '\ 0'; // Нуль завершує рядок} if (val == '#') {strcpy (data.text, inData); WriteData (); // Перевести модуль в режим передачі while (index! = 0) {inData = ''; індекс--; }}} ReadData (); // Покласти модуль Режим отримання}
Функція void WriteData () записує дані на адресу 0xF0F0F0F0AA, ця адреса використовується як труба запису на іншому модулі.
void WriteData () {myRadio.stopListening (); // Зупинити отримання та розпочати трансмісію myRadio.openWritingPipe (0xF0F0F0F066); // Надсилає дані за цією 40-бітною адресою myRadio.write (& data, sizeof (data)); затримка (300); }
void Функція ReadData () записує дані на 0xF0F0F0F066 за цією адресою, ця адреса використовується як канал зчитування на іншому модулі.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Який конвеєр прочитати, 40 біт Адреса myRadio.startListening (); // Зупинити передачу та розпочати перевірку, якщо (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
Ось і все, наша частина програмування закінчена. Якщо ви не можете тут щось зрозуміти, перевірте дві програми для обох Arduinos, наведені в розділі Кодексу нижче, і я додав рядки коментарів, щоб пояснити речі набагато краще.
Програма обробки:
'Processing' - це відкрите програмне забезпечення, яке художники використовують для графічного дизайну. Це програмне забезпечення використовується для розробки програмного забезпечення та програм для Android. Його досить легко розробити і дуже схожий на IDE для розробки Android. Тому я скоротив пояснення.
Код обробки для обох екранів чату наведено тут:
- Екран чату 1 Код обробки
- Екран чату 2 Обробка коду
Клацніть правою кнопкою миші та натисніть "Зберегти посилання як..", щоб завантажити їх та відкрити на своєму комп'ютері після налаштування Arduinos. Вам потрібно встановити програмне забезпечення «Обробка», щоб відкрити ці файли *.pde, а потім «Запустити», щоб відкрити вікна чату. Розділ коментарів відкритий для запитів. Ескіз обробки передавача та модуля приймача ідентичний.
У наведеному нижче розділі коду важливим є "port = new Serial (this, Serial.list (), 9600); // Читає 4-й ПОРТ зі швидкістю передачі даних 9600" , оскільки він вирішує, з якого порту отримувати дані.
void setup () {розмір (510 500); port = new Serial (this, Serial.list (), 9600); // Зчитує 4-й ПОРТ зі швидкістю передачі даних 9600 бод (Serial.list ()); фон (0); }
Тут я прочитав дані з 4-го порту з мого Arduino.
Так, наприклад, якщо у вас є COM COM COM COM COM
Тоді вищевказаний код буде зчитувати дані з COM.
Тестування:
Тепер, оскільки наш ескіз обробки та Arduino готовий, просто завантажте програму в Arduino і залиште підключеною до вашого ноутбука. Відкрийте свій ескіз обробки та почніть друкувати та натисніть "Enter", ваше повідомлення буде передано іншому Arduino, який відображатиме отриманий текст на іншій програмі обробки, підключеній до іншого комп'ютера. Далі перевірте відео нижче для повної демонстрації.
Отже, це те, як ви можете розмовляти з друзями та родиною у вашому районі, не маючи жодного підключення до Інтернету, використовуючи цю недорогу кімнату чату Arduino.