- Objaśnienie robocze:
- Wymagane składniki:
- Schemat obwodu:
- Praca z bezprzewodowym modułem nadawczo-odbiorczym nRF24L01 +:
- Programowanie Arduino:
- Program przetwarzania:
- Testowanie:
Stworzenie sieci lokalnej w celu udostępniania personelu i poufnych danych stało się prawie niemożliwe dla zwykłego człowieka we współczesnym świecie. Dzieje się tak głównie dlatego, że wszystkie popularne metody czatu, takie jak Whatsapp, Facebook, Hangout i prawie wszystko wymagają połączenia internetowego.
Co by było, gdybyśmy mogli udostępniać dane bez medium jakim jest Internet ?
Jak fajnie byłoby, gdybyś mógł komunikować się z ludźmi w domu lub miejscu pracy bez pakietu sieciowego lub połączenia internetowego?
A co by było, gdybyśmy mogli dostosować nasz ekran czatu do własnych wyobrażeń?
Wszystko to jest możliwe dzięki mikrokontrolerowi i bezprzewodowemu medium transmisyjnemu. Ten czat Arduino wykorzystujący projekt nRF24L01 poprowadzi Cię przez konfigurację taniego pokoju rozmów w Twojej okolicy.
Wskoczmy więc do środka i zobaczmy, jak to działa.
Objaśnienie robocze:
Zasadniczo, aby to działało, potrzebujemy pary płyt Arduino i tanich modułów bezprzewodowych. Moduły bezprzewodowe, których będziemy tutaj używać, to nRF24L01. Powodem wyboru tych modułów jest to, że są to następcy Zigbee i są łatwe w obsłudze przy skonfigurowanym połączeniu. Również te moduły działają w paśmie 2,4 GHz (pasmo ISM) z rozproszonym widmem częstotliwości i opcjami impulsu uderzeniowego, co sprawia, że czujemy się zrelaksowani w przypadku problemów z zakłóceniami.
Nasze Arduino i NRF24L01 są ze sobą połączone, aby ustanowić komunikację szeregową, aby mogły ze sobą rozmawiać. NRF24L01 to półdupleksowe moduły nadawczo-odbiorcze, dzięki czemu mogą wysyłać i odbierać dane. Dane są zbierane od użytkownika i przesyłane. Dane te mogą być odbierane przez dowolny (lub jeden konkretny) moduł i wyświetlane na ich ekranie.
Ale!!!!! Czy będziemy rozmawiać przy użyciu ekranu debugowania Arduino? Oczywiście nie. Zamierzamy zbudować i dostosować nasz własny ekran czatu za pomocą „Przetwarzania”. Processing to oprogramowanie, które może komunikować się z Arduino za pomocą UART. Stworzymy plik.exe z językiem Processing, który będzie działał na każdym komputerze z Java Runtime. Aby porozmawiać, wystarczy podłączyć nasze Arduino i otworzyć ten plik.exe, a Booooom !! jesteśmy w naszym sprywatyzowanym, całkowicie darmowym pokoju rozmów.
Ten projekt ogranicza się do dodania dwóch członków do pokoju rozmów, ale nRF24L01 ma 6 potoków, więc w naszym pokoju rozmów może być maksymalnie 6 członków. W zależności od modułów nRF24L01, pomieszczenie to może pracować w promieniu 100 metrów.
Więc chodźmy na zakupy !!!!
Wymagane składniki:
- Arduino (dowolna wersja i model) - 2 szt
- nRF24L01 + bezprzewodowy moduł nadawczo-odbiorczy - 2 szt
- 3.3 Regulator napięcia - 2 szt. (Nieobowiązkowe)
- Przewody łączące
- Odsetki (Lolz)
Schemat obwodu:
Arduino Mega z nRF24L01:
Arduino Nano z nRF24L01:
Nasz projekt nie obejmuje skomplikowanych połączeń. Użyłem Arduino Mega i Arduino Nano, a ich połączenia z nRF24L01 pokazano powyżej. Możesz używać dowolnych modeli Arduino.
Praca z bezprzewodowym modułem nadawczo-odbiorczym nRF24L01 +:
Jednak aby nasz nRF24L01 działał bez zakłóceń, warto rozważyć następujące kwestie. Pracowałem nad tym nRF24L01 + przez długi czas i dowiedziałem się, że poniższe punkty mogą pomóc w uderzeniu w ścianę.
1. Większość modułów nRF24L01 + dostępnych na rynku to podróbki. Te tanie, które możemy znaleźć w serwisie eBay i Amazon, są najgorsze (nie martw się, dzięki kilku poprawkom możemy sprawić, że zadziałają)
2. Głównym problemem jest zasilacz, a nie twój kod. Większość kodów online będzie działać poprawnie, sam mam działający kod, który osobiście przetestowałem, daj mi znać, jeśli ich potrzebujesz.
3. Zwróć uwagę, ponieważ moduły wydrukowane jako NRF24L01 + to w rzeczywistości Si24Ri (tak, chiński produkt).
4. Klon i fałszywe moduły będą zużywać więcej energii, dlatego nie rozwijaj swojego obwodu zasilania w oparciu o arkusz danych nRF24L01 +, ponieważ Si24Ri będzie miał duży pobór prądu około 250mA.
5. Uważaj na tętnienia napięcia i skoki prądu, moduły te są bardzo czułe i mogą się łatwo spalić. (;-(do tej pory wysmażone 2 moduły)
6. Dodanie kilku kondensatorów (10 uF i 0,1 uF) między Vcc i Gnd modułu pomaga w utrzymaniu czystego zasilania i działa to w przypadku większości modułów.
Jeśli nadal masz problemy, zgłoś się do sekcji komentarzy lub przeczytaj to.
Programowanie Arduino:
Program dla Arduino Nano i Mega będzie podobny do zmiany pinów CE i CS. Wyjaśnię program, dzieląc go na małe segmenty.
Ponieważ Arduino i nRF24L01 komunikują się przez SPI, wezwaliśmy bibliotekę SPI. Dołączyliśmy również naszą bibliotekę Maniacbug RF24, aby nasze moduły RF działały. Pobierz plik stąd i dodaj go do swojego IDE.
#zawierać
Nasze moduły NRF są podłączone odpowiednio do pinów 8 i 10 do CE i CS.
RF24 myRadio (8, 10);
Tworzymy pakiet danych strukturalnych o nazwie pakiet . Zmienny tekst będzie używany do przesyłania danych drogą radiową.
struct pakiet {tekst znaku; // Tekst do przesłania na antenie}; typedef struct pakiet Package; Dane paczki;
W funkcji void setup () inicjalizujemy prędkość transmisji na 9600 i ustawiamy nasze moduły na 115 przy minimalnym zużyciu energii i prędkości 250KBPS. Możesz później bawić się tymi wartościami.
void setup () {Serial.begin (9600); opóźnienie (1000); //Serial.print("Setup Initialized "); myRadio.begin (); myRadio.setChannel (115); // 115 pasm powyżej sygnałów WIFI myRadio.setPALevel (RF24_PA_MIN); // Minimalna moc niskiej mocy myRadio.setDataRate (RF24_250KBPS); // Minimalna prędkość}
Moduł jest przystosowany do pracy w trybie nadawania, jeśli dane są odbierane przez bufor szeregowy, w przeciwnym razie będzie w trybie odbiornika poszukując danych na antenie. Dane od użytkownika są przechowywane w tablicy char Array i wysyłane do WriteData () w celu ich przesłania.
void loop () {while (Serial.available ()> 0) // Pobierz wartości od użytkownika {val = Serial.peek (); if (index <19) // O jeden mniej niż rozmiar tablicy {inChar = Serial.read (); // Przeczytaj znak inData = inChar; // Zapisz to index ++; // Przyrost, gdzie dalej pisać inData = '\ 0'; // Null przerywa ciąg} if (val == '#') {strcpy (data.text, inData); WriteData (); // Ustaw moduł w trybie transmisji while (index! = 0) {inData = ''; indeks--; }}} ReadData (); // Ustaw tryb odbioru modułu}
Funkcja void WriteData () zapisuje dane pod adresem 0xF0F0F0F0AA, adres ten jest używany jako potok do zapisu w innym module.
void WriteData () {myRadio.stopListening (); // Zatrzymaj odbieranie i rozpocznij transminitng myRadio.openWritingPipe (0xF0F0F0F066); // Wysyła dane na ten 40-bitowy adres myRadio.write (& data, sizeof (data)); opóźnienie (300); }
Funkcja void ReadData () zapisuje dane na 0xF0F0F0F066 pod tym adresem, ten adres jest używany jako potok odczytowy w innym module.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Który potok odczytać, 40-bitowy Adres myRadio.startListening (); // Zatrzymaj transmisję i rozpocznij sprawdzanie if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
To wszystko, nasza część programistyczna dobiegła końca. Jeśli nie możesz zrozumieć kilku rzeczy tutaj, sprawdź dwa programy dla obu Arduino, podane w sekcji Kod poniżej, dodałem linie komentarzy, aby wyjaśnić rzeczy znacznie lepiej.
Program przetwarzania:
„Przetwarzanie” to oprogramowanie typu open source, które jest wykorzystywane przez artystów do projektowania grafiki. To oprogramowanie służy do tworzenia oprogramowania i aplikacji na Androida. Jest dość łatwy w tworzeniu i bardzo podobny do IDE Android Development. Dlatego skróciłem wyjaśnienie.
Kod przetwarzania dla obu ekranów czatu jest podany tutaj:
- Kod przetwarzania ekranu 1 rozmowy
- Kod przetwarzania ekranu 2 rozmowy
Kliknij je prawym przyciskiem myszy i kliknij „Zapisz link jako…”, aby je pobrać i otworzyć na swoim komputerze po skonfigurowaniu Arduino. Aby otworzyć te pliki *.pde, musisz zainstalować oprogramowanie „Przetwarzające”, a następnie „Uruchom” je, aby otworzyć okna czatu. Sekcja komentarzy jest otwarta dla zapytań. Szkic przetwarzania dla nadajnika i modułu odbiornika jest identyczny.
W poniższej sekcji kodu "port = new Serial (this, Serial.list (), 9600); // Odczytuje 4 PORT z szybkością 9600 bodów" jest ważne, ponieważ decyduje z którego portu do danych.
void setup () {size (510,500); port = nowy Serial (this, Serial.list (), 9600); // Odczytuje czwarty PORT przy 9600 baudrate println (Serial.list ()); tło (0); }
Tutaj odczytałem dane z 4 portu z mojego Arduino.
Więc na przykład, jeśli masz COM COM COM COM COM
Wtedy powyższy kod odczyta dane z COM.
Testowanie:
Teraz, ponieważ nasz szkic dotyczący przetwarzania i Arduino jest gotowy, po prostu prześlij program do Arduino i pozostaw go podłączony do laptopa. Otwórz szkic przetwarzania i zacznij pisać i naciśnij "Enter". Twoja wiadomość zostanie przesłana do drugiego Arduino, które wyświetli otrzymany tekst na innej aplikacji przetwarzającej podłączonej do innego komputera. Sprawdź dalej wideo poniżej, aby uzyskać pełną demonstrację.
W ten sposób możesz rozmawiać ze znajomymi i rodziną w Twojej okolicy bez połączenia z Internetem, korzystając z tego niedrogiego pokoju czatu Arduino.