- Рабочее объяснение:
- Необходимые компоненты:
- Принципиальная электрическая схема:
- Работа с модулем беспроводного приемопередатчика nRF24L01 +:
- Программирование Arduinos:
- Программа обработки:
- Тестирование:
Создание локальной сети для обмена персоналом и конфиденциальными данными стало практически невозможным для обычного человека в нашем современном мире. Это главным образом потому, что все распространенные методы чата, такие как Whatsapp, Facebook, Hangout и почти все, требуют подключения к Интернету.
Что, если бы мы могли обмениваться данными без Интернета ?
Насколько было бы здорово, если бы вы могли общаться с людьми дома или на работе без сетевого пакета или подключения к Интернету?
Что, если бы мы могли настроить наш экран чата с нашим собственным воображением?
Все это возможно с помощью микроконтроллера и беспроводной среды передачи. Эта чат-комната Arduino с использованием проекта nRF24L01 поможет вам создать недорогую чат-комнату в вашем районе.
Итак, давайте посмотрим, как это работает.
Рабочее объяснение:
В основном, чтобы эта штука работала, нам понадобится пара плат Arduino и дешевые беспроводные модули. Здесь мы будем использовать беспроводные модули nRF24L01. Причина выбора этих модулей заключается в том, что они являются преемниками Zigbee и с ними легко работать с настроенным подключением. Также эти модули работают на частоте 2,4 ГГц (диапазон ISM) с расширенным спектром со скачкообразной перестройкой частоты и опциями ударных импульсов, что позволяет нам не беспокоиться о проблемах с помехами.
Наши Arduino и NRF24L01 соединены вместе, чтобы установить последовательную связь, чтобы они могли общаться друг с другом. NRF24L01 - это полудуплексные приемопередающие модули, поэтому они могут отправлять и получать данные. Данные собираются от пользователя и передаются. Эти данные могут быть получены любым (или одним конкретным) модулем и отображены на своем экране.
Но!!!!! Собираемся ли мы общаться в чате, используя экран отладки Arduino? Конечно, нет. Мы собираемся создать и настроить наш собственный экран чата с помощью «Обработки». Обработка - это программное обеспечение, способное связываться с Arduino через UART. Мы создадим файл.exe с языком обработки, который может работать на любом компьютере со средой выполнения Java. Чтобы общаться в чате, нам просто нужно подключить наш Arduino и открыть этот EXE-файл, и Booooom !! мы находимся в нашей приватизированной, полностью бесплатной чат-комнате.
Этот проект ограничен простым добавлением двух участников в чат-комнату, но nRF24L01 имеет 6 конвейеров, поэтому в нашем чате может быть максимум 6 участников. Эта комната может работать в диапазоне 100 метров в зависимости от модулей nRF24L01.
Так что по магазинам !!!!
Необходимые компоненты:
- Arduino (любая версия или модель) - 2Nos
- Модуль беспроводного приемопередатчика nRF24L01 + - 2 шт.
- 3.3 Регулятор напряжения - 2 шт. (Не обязательно)
- Соединительные провода
- Интерес (Лолз)
Принципиальная электрическая схема:
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 для работы наших радиочастотных модулей. Загрузите файл отсюда и добавьте их в свою среду IDE.
#включают
Наши модули NRF подключаются к контактам 8 и 10 к CE и CS соответственно.
RF24 myRadio (8, 10);
Мы создаем пакет структурированных данных под названием 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); // МИН. Мощность low rage myRadio.setDataRate (RF24_250KBPS); // Минимальная скорость}
Модуль предназначен для работы в режиме передачи, если данные принимаются через последовательный буфер, иначе он будет в режиме приемника, ища данные в эфире. Данные от пользователя хранятся в массиве символов и отправляются в 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 бит Address myRadio.startListening (); // Прекращаем передачу и запускаем Reveicing if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
Вот и все, наша программная часть окончена. Если вы не можете понять здесь кое-что, проверьте две программы для обеих Arduinos, приведенные в разделе «Код» ниже. Я добавил строки комментариев, чтобы лучше объяснить ситуацию.
Программа обработки:
«Обработка» - это программное обеспечение с открытым исходным кодом, которое используется художниками для создания графики. Это программное обеспечение используется для разработки программного обеспечения и приложений для Android. Его довольно легко разработать, и он очень похож на среду разработки для Android. Поэтому я сократил объяснение.
Код обработки для обоих экранов чата приведен здесь:
- Код обработки экрана чата 1
- Код обработки экрана чата 2
Щелкните их правой кнопкой мыши и выберите «Сохранить ссылку как…», чтобы загрузить их и открыть на своем компьютере после настройки Arduinos. Вам необходимо установить программное обеспечение «Обработка», чтобы открыть эти файлы *.pde, а затем «Запустить» их, чтобы открыть окна чата. Раздел комментариев открыт для запросов. Эскизы обработки для модуля передатчика и приемника идентичны.
В приведенном ниже разделе кода важно "port = new Serial (this, Serial.list (), 9600); // Читает 4-й ПОРТ со скоростью 9600 бод", поскольку он решает, с какого порта передавать данные.
пустая настройка () {размер (510 500); порт = новый последовательный (это, Serial.list (), 9600); // Считывает 4-й ПОРТ со скоростью 9600 бод println (Serial.list ()); фон (0); }
Здесь я прочитал данные с 4-го порта моего Arduino.
Так, например, если у вас есть COM COM COM COM COM
Затем приведенный выше код будет читать данные из COM.
Тестирование:
Теперь, когда наш скетч Processing и Arduino готов, просто загрузите программу в Arduino и оставьте ее подключенной к ноутбуку. Откройте скетч Processing, начните вводить и нажмите «Enter». Ваше сообщение будет передано на другой Arduino, который отобразит полученный текст в другом приложении обработки, подключенном к другому компьютеру. Далее просмотрите видео ниже для полной демонстрации.
Таким образом, вы можете разговаривать со своими друзьями и семьей в вашем районе без подключения к Интернету, используя эту недорогую комнату чата Arduino.