직원과 기밀 데이터를 공유하는 로컬 네트워크를 만드는 것은 현대 사회의 일반인에게 거의 불가능 해졌습니다. 주로 Whatsapp, Facebook, Hangout과 같은 모든 일반적인 채팅 방법과 거의 모든 것이 인터넷 연결이 필요하기 때문입니다.
인터넷 매체없이 데이터 를 공유 할 수 있다면 어떨까요?
넷팩 이나 인터넷 연결 없이 집이나 직장에있는 사람들과 대화 할 수 있다면 얼마나 멋질 까요?
우리 자신의 상상력으로 채팅 화면 을 사용자 정의 할 수 있다면 어떨까요?
이 모든 것은 마이크로 컨트롤러와 무선 전송 매체로 가능합니다. nRF24L01 프로젝트 를 사용하는 이 Arduino 대화방 은 해당 지역에 저렴한 대화방을 설정하는 방법을 안내합니다.
이제 시작해서 어떻게 작동하는지 살펴 보겠습니다.
작동 설명:
기본적으로이 작업을 수행하려면 한 쌍의 Arduino 보드 와 저렴한 무선 모듈 이 필요 합니다. 여기서 사용할 무선 모듈은 nRF24L01 입니다. 이 모듈을 선택하는 이유는 이것이 Zigbee의 후속 제품이고 설정 연결로 작업하기 쉽기 때문입니다. 또한 이러한 모듈은 2.4GHz (ISM 대역)에서 주파수 호핑 확산 스펙트럼 및 충격 버스트 옵션으로 작동하여 간섭 문제를 완화합니다.
Arduino와 NRF24L01은 서로 연결되어 서로 통신 할 수 있도록 직렬 통신을 설정합니다. NRF24L01은 반이중 송수신기 모듈이므로 데이터를 송수신 할 수 있습니다. 데이터는 사용자로부터 수집되고 전송 된이 데이터는 임의 (또는 하나의 특정) 모듈에서 수신하여 화면에 표시 할 수 있습니다.
그러나!!!!! 아두 이노의 디버그 화면을 사용하여 채팅을 할 건가요? 당연히 아니지. 우리는 '처리'의 도움으로 우리 자신의 채팅 화면을 구축하고 사용자 지정할 것입니다. Processing은 UART를 사용하여 Arduino와 통신 할 수있는 소프트웨어입니다. Java Runtime이 설치된 모든 컴퓨터에서 실행할 수있는 Processing 언어로.exe 파일을 생성합니다. 채팅을하려면 Arduino를 연결하고이.exe 파일을 열면됩니다. 그리고 Booooom !! 우리는 우리 자신의 사유화 된 완전 무료 채팅방에 있습니다.
이 프로젝트는 채팅방에 두 명의 구성원 만 추가하는 것으로 제한되어 있지만 nRF24L01에는 6 개의 파이프 라인이 있으므로 채팅방에는 최대 6 명의 구성원이있을 수 있습니다. 이 숯 실은 nRF24L01 모듈에 따라 100 미터 범위 내에서 작동 할 수 있습니다.
그러니 쇼핑하러 가자 !!!!
필요한 구성 요소:
- Arduino (모든 버전 또는 모델)-2Nos
- nRF24L01 + 무선 트랜시버 모듈-2Nos
- 3.3 전압 조정기-2Nos. (필수는 아니다)
- 전선 연결
- 이자 (Lolz)
회로도:
nRF24L01이있는 Arduino Mega:
nRF24L01이있는 Arduino Nano:
우리 프로젝트는 복잡한 연결을 포함하지 않습니다. 나는 사용한 아두 이노 메가를하고 아두 이노 나노 와 해 nRF24L01와의 연결은 위에 표시됩니다. 모든 Arduino 모델을 사용할 수 있습니다.
nRF24L01 + 무선 트랜시버 모듈 사용:
그러나 nRF24L01이 잡음없이 작동하도록하기 위해 다음 사항을 고려할 수 있습니다. 저는이 nRF24L01 +를 오랫동안 작업 해 왔으며 다음 사항 이 벽에 부딪히는 것을 방지하는 데 도움이 될 수 있음을 배웠습니다.
1. 시중에 나와있는 대부분의 nRF24L01 + 모듈은 가짜입니다. 우리가 Ebay와 Amazon에서 찾을 수있는 값싼 것들은 최악입니다 (걱정하지 마십시오. 약간의 조정만으로 작동시킬 수 있습니다)
2. 주된 문제는 코드가 아닌 전원 공급 장치입니다. 대부분의 온라인 코드는 제대로 작동합니다. 직접 테스트 한 작업 코드가 있습니다. 필요한 경우 알려주세요.
3. NRF24L01 +로 인쇄 된 모듈은 실제로 Si24Ri (예 중국 제품)이므로주의하십시오.
4. 복제 및 가짜 모듈은 더 많은 전력을 소비하므로 Si24Ri는 약 250mA의 높은 전류 소비를 가지므로 nRF24L01 + 데이터 시트를 기반으로 전력 회로를 개발하지 마십시오.
5. 전압 리플 및 전류 서지에주의하십시오. 이러한 모듈은 매우 민감하며 쉽게 타 버릴 수 있습니다. (;-(지금까지 2 개의 모듈을 튀겼습니다)
6. 모듈의 Vcc 및 Gnd에 커플 커패시터 (10uF 및 0.1uF)를 추가하면 전원을 순수하게 만드는 데 도움이되며 이는 대부분의 모듈에서 작동합니다.
그래도 문제가 있으면 댓글 섹션에 신고하거나이 글을 읽어보세요.
Arduino 프로그래밍:
Arduino Nano 및 Mega 용 프로그램은 CE 및 CS 핀의 변경과 유사합니다. 프로그램을 작은 부분으로 나누어 설명하겠습니다.
Arduino와 nRF24L01은 SPI를 통해 통신하므로 SPI 라이브러리를 호출했습니다. RF 모듈이 작동하도록 Maniacbug RF24 lib도 포함되어 있습니다. 여기에서 파일을 다운로드하고 IDE에 추가하십시오.
#포함
우리의 NRF 모듈은 핀 8과 10에 각각 CE와 CS에 연결됩니다.
RF24 myRadio (8, 10);
(이)라는 구조화 된 데이터 패키지 생성 패키지를 . 가변 텍스트 는 공중에서 데이터를 전송하는 데 사용됩니다.
구조체 패키지 {문자 텍스트; // 방송 중 전송할 텍스트}; typedef 구조체 패키지 패키지; 패키지 데이터;
에서 무효 설정 () 함수, 우리는 상기 보드 레이트 및 9600 설치 MIN 전력 소비 및 250kbps의 속도로 115 개의 모듈을 초기화한다. 나중에 이러한 값을 조작 할 수 있습니다.
void setup () {Serial.begin (9600); 지연 (1000); //Serial.print ("설치 초기화 됨"); myRadio.begin (); myRadio.setChannel (115); // WIFI 신호보다 높은 115 대역 myRadio.setPALevel (RF24_PA_MIN); // 최소 전력 낮은 분노 myRadio.setDataRate (RF24_250KBPS); // 최소 속도}
직렬 버퍼를 통해 데이터를 수신하면 모듈이 전송 모드로 작동하고, 그렇지 않으면 수신 모드에서 데이터를 찾고 있습니다. 사용자의 데이터는 char Array에 저장되고 WriteData () 로 전송되어 전송됩니다.
void loop () {while (Serial.available ()> 0) // 사용자로부터 값 가져 오기 {val = Serial.peek (); if (index <19) // 배열 크기보다 하나 작음 {inChar = Serial.read (); // 문자 읽기 inData = inChar; // 저장 index ++; // 다음에 쓸 위치 증가 inData = '\ 0'; // Null 문자열 종료} 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 (); // 전송 중지 및 Reveicing 시작 if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
이제 프로그래밍 부분이 끝났습니다. 여기서 몇 가지를 이해할 수 없다면 아래 코드 섹션에 제공된 두 Arduinos에 대한 두 프로그램을 확인하십시오. 훨씬 더 잘 설명하기 위해 주석 줄을 추가했습니다.
처리 프로그램:
'Processing' 은 아티스트가 그래픽 디자인을 위해 사용하는 오픈 소스 소프트웨어입니다. 이 소프트웨어는 소프트웨어 및 Android 애플리케이션을 개발하는 데 사용됩니다. 개발이 매우 쉽고 Android Development IDE와 매우 유사합니다. 따라서 설명을 짧게했습니다.
두 채팅 화면에 대한 처리 코드 는 다음과 같습니다.
- 채팅 화면 1 처리 코드
- 채팅 화면 2 처리 코드
그것들을 마우스 오른쪽 버튼으로 클릭하고 '다른 이름으로 링크 저장..'을 클릭하여 다운로드하고 Arduinos를 설정 한 후 컴퓨터에서 엽니 다. 이러한 *.pde 파일을 열려면 '처리'소프트웨어를 설치 한 다음 '실행'하여 채팅 상자를 열어야합니다. 쿼리를위한 댓글 섹션이 열려 있습니다. 송신기와 수신기 모듈의 처리 스케치는 동일합니다.
아래 코드 섹션에서 "port = new Serial (this, Serial.list (), 9600); // 4 번째 PORT를 9600 baudrate로 읽음" 은 데이터를 가져올 포트를 결정하므로 중요합니다.
무효 설정 () {크기 (510,500); port = new Serial (this, Serial.list (), 9600); // 9600 전송 속도로 네 번째 PORT를 읽습니다. println (Serial.list ()); 배경 (0); }
여기에서 Arduino의 네 번째 포트에서 데이터를 읽었습니다.
따라서 예를 들어 COM COM COM COM COM이있는 경우
그런 다음 위의 코드는 COM에서 데이터를 읽습니다.
테스트:
이제 Processing 및 Arduino 스케치가 준비되었으므로 프로그램을 Arduino에 업로드하고 노트북에 연결된 상태로 두십시오. Processing 스케치를 열고 입력을 시작하고 "Enter"를 누르면 메시지가 다른 Arduino로 전송되어 다른 컴퓨터에 연결된 다른 Processing 응용 프로그램에 수신 된 텍스트가 표시됩니다. 자세한 데모는 아래 비디오를 확인하십시오.
따라서이 저렴한 Arduino 채팅방을 사용하여 인터넷에 연결하지 않고도 지역의 친구 및 가족과 대화 할 수 있습니다.