- Работно обяснение:
- Необходими компоненти:
- Електрическа схема:
- Работа с модул за безжичен приемопредавател nRF24L01 +:
- Програмиране на Arduinos:
- Програма за обработка:
- Тестване:
Създаването на локална мрежа за споделяне на персонал и поверителни данни стана почти невъзможно за обикновен човек в съвременния ни свят. Това е главно защото всички често срещани методи за чат като Whatsapp, Facebook, Hangout и почти всичко включват интернет връзка.
Ами ако можем да споделяме данни без носителя на Интернет ?
Колко страхотно би било, ако можете да общувате с хора в дома или на работното си място без мрежов пакет или интернет връзка?
Ами ако можем да персонализираме нашия екран за чат със собствените си въображения?
Всичко това е възможно с микроконтролер и безжичен носител за предаване. Тази стая за чат Arduino, използваща проект nRF24L01, ще ви насочи към създаването на евтина чат стая във вашия район.
Така че нека да скочим и да видим как работи.
Работно обяснение:
По принцип, за да работи това нещо, ще ни трябват чифт дъски Arduino и евтини безжични модули. Безжичните модули, които ще използваме тук, са nRF24L01. Причината за избора на тези модули е, че това са наследниците на Zigbee и е лесно да се работи с настроена връзка. Също така тези модули работят на 2.4 GHz (ISM лента) с опции за разпръскване на честота и опции за ударно избухване, което ни кара да се чувстваме спокойни от проблемите с смущения.
Нашите Arduino и NRF24L01 са свързани заедно, за да установят последователна комуникация, така че да могат да говорят помежду си. NRF24L01 са полудуплексни приемо-предавателни модули, поради което могат да изпращат и получават данни. Данните се събират от потребителя и предадените данни могат да бъдат получени от всеки (или един конкретен) модул и да ги покажат на своя екран.
Но!!!!! Ще разговаряме ли с помощта на екрана за отстраняване на грешки на Arduino? Разбира се, че не. Ще изградим и персонализираме собствения си екран за чат с помощта на „Обработка“. Обработката е софтуер, който може да комуникира с Arduino с помощта на UART. Ще създадем.exe файл с език за обработка, който може да работи на всеки компютър с Java Runtime. За да разговаряме, просто трябва да включим нашия Arduino и да отворим този.exe файл и Booooom !! ние сме в нашата собствена Приватизирана напълно безплатна чат-стая.
Този проект се ограничава до просто добавяне на двама членове в чат стаята, но nRF24L01 има 6 тръбопровода, така че в нашата чат стая може да има максимум 6 членове. Тази стая за въглища може да работи в диапазона от 100 метра в зависимост от модулите nRF24L01.
Та хайде да пазаруваме !!!!
Необходими компоненти:
- Arduino (всяка версия или модел) - 2Nos
- nRF24L01 + Безжичен приемо-предавателен модул - 2Nos
- 3.3 Регулатор на напрежение - 2Nos. (Не е задължително)
- Свързващи проводници
- Лихва (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 mA.
5. Пазете се от пулсации на напрежението и токови пренапрежения, тези модули са много чувствителни и могат лесно да изгорят. (;-(изпържи 2 модула до момента)
6. Добавянето на двойни кондензатори (10uF и 0,1uF) към Vcc и Gnd на модула помага да направите захранването чисто и това работи за повечето модули.
И все пак, ако имате проблеми, докладвайте в раздела за коментари или прочетете това.
Програмиране на Arduinos:
Програмата както за Arduino Nano, така и за Mega ще бъде подобна за промяната в CE и CS щифтовете. Ще обясня програмата, като я разделя на малки сегменти.
Тъй като Arduino и nRF24L01 комуникират чрез SPI, ние поискахме библиотека SPI. Ние също така включихме нашата Maniacbug RF24 lib, за да работят нашите RF модули. Изтеглете файла от тук и ги добавете към вашата IDE.
#include
Нашите NRF модули са свързани към щифтове 8 и 10 съответно към CE и CS.
RF24 myRadio (8, 10);
Създаваме пакет със структурирани данни, наречен пакет . Променливият текст ще се използва за предаване на данни в ефир.
struct пакет {char текст; // Текст за предаване в ефир}; typedef struct пакет Package; Данни за пакета;
Във функцията void setup () ние инициализираме скоростта на предаване на 9600 и настройваме нашите модули на 115 с MIN консумация на енергия и скорост 250KBPS. По-късно можете да се занимавате с тези стойности.
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; // Съхраняваме го индекс ++; // Увеличаване къде да напишем следващия inData = '\ 0'; // Нула прекратява низа} if (val == '#') {strcpy (data.text, inData); WriteData (); // Поставете модула в режим на предаване while (index! = 0) {inData = ''; индекс--; }}} ReadData (); // Поставяне на модул Режим на получаване}
Функцията void WriteData () записва данните на адрес 0xF0F0F0F0AA, този адрес се използва като тръба за запис на друг модул.
void WriteData () {myRadio.stopListening (); // Спрете да получавате и стартирайте transminitng myRadio.openWritingPipe (0xF0F0F0F066); // Изпраща данни на този 40-битов адрес myRadio.write (& data, sizeof (data)); забавяне (300); }
void ReadData () записва данните на 0xF0F0F0F066 този адрес, този адрес се използва като тръба за четене на друг модул.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Коя тръба да чета, 40 битов Адрес myRadio.startListening (); // Спрете да предавате и започнете Reveicing ако (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
Това е всичко, нашата част за програмиране приключи. Ако не можете да разберете малко неща тук, проверете двете програми за двете Arduinos, дадени в раздела Код по-долу, добавих редове за коментар, за да обясня нещата много по-добре.
Програма за обработка:
„Обработка“ е софтуер с отворен код, който се използва от художници за графично проектиране. Този софтуер се използва за разработване на софтуер и приложения за Android. Лесно е да се разработи и много прилича на IDE за разработка на Android. Затова съм съкратил обяснението.
Кодът за обработка на двата екрана за чат е даден тук:
- Екран за чат 1 Код за обработка
- Екран за чат 2 Код за обработка
Щракнете с десния бутон върху тях и кликнете върху „Запазване на връзката като..“, за да ги изтеглите и отворите в компютъра си след настройването на Arduinos. Трябва да инсталирате софтуера „Обработка“, за да отворите тези *.pde файлове и след това да ги „стартирате“, за да отворите кутиите за чат. Разделът за коментари е отворен за заявки. Скицата за обработка за предавател и приемник модул са идентични.
В долната част на кода е важно "port = new Serial (this, Serial.list (), 9600); // Чете 4-ия ПОРТ при 9600 скорости на предаване", тъй като решава от кой порт да се подават данни.
void setup () {размер (510 500); порт = нов сериен (този, Serial.list (), 9600); // чете 4-ия ПОРТ при 9600 баудрат println (Serial.list ()); фон (0); }
Тук прочетох данни от 4-ия порт от моя Arduino.
Така например, ако имате COM COM COM COM COM
Тогава горният код ще чете данни от COM.
Тестване:
Сега, тъй като нашата скица за обработка и Arduino е готова, просто качете програмата в Arduino и я оставете включена във вашия лаптоп. Отворете вашата скица за обработка и започнете да пишете и натиснете "Enter", вашето съобщение ще бъде предадено на другия Arduino, който ще покаже получения текст на друго приложение за обработка, свързано с друг компютър. Допълнително проверете видеото по-долу за пълна демонстрация.
Ето как можете да говорите с приятелите и семейството си в района, без да имате връзка с интернет, като използвате тази евтина стая за чат Arduino.