(nRF24l01をるかってLEDを光らせる)
今回は、nRf24l01を使って無線通信をしLEDを光らせてみようと思います。
◎nRF24L01
・通信には2,4GHz帯を使っており小型のトランシーバーモジュールです。
・ボーレートは250kbps~2Mbpsとなっており、アンテナはパターンアンテナと
なっています。
・ーレートが低い場合、100mほど電波が届きます。
・モジュールのサイズは約30mm×14mm
・8本のピンがついています。
nRF24L01とarduinoのピンの接続は、このようになります。
左上に何か書かれていますがこれは、無視して鉛筆の線で囲んだところだけ
見てください
では、実際にスケッチを書いていきたいと思います。
送信側←スイッチの入力は、内部プルアップしている
- #include <SPI.h> // ライブラリのインクルード
- #include <nRF24L01.h>
- #include <RF24.h>
- RF24 radio(9, 10); // CE,CSNピンの指定
- const byte address[6] = "00001"; // データを送信するアドレス
- int SW_PIN = 3;
- boolean SW_state = 1;
- void setup() {
- pinMode(SW_PIN, INPUT_PULLUP); // スイッチをプルアップで使用
- radio.begin(); // 無線オブジェクトの初期化
- radio.openWritingPipe(address); // データ送信先のアドレスを指定
- radio.setPALevel(RF24_PA_MIN); // 出力を最小に
- radio.stopListening(); // 送信側として設定
- }
- void loop(){
- SW_state = digitalRead(SW_PIN); // スイッチの状態を読み取る
- radio.write(&SW_state, sizeof(SW_state)); // スイッチの状態を送信する
- delay(10);
- }
受信側
- #include <SPI.h> // ライブラリのインクルード
- #include <nRF24L01.h>
- #include <RF24.h>
- RF24 radio(9, 10); // CE,CSNピンの指定
- const byte address[6] = "00001"; // データを受信するアドレス
- int LED_PIN = 3;
- boolean SW_state = 0;
- void setup() {
- pinMode(3, OUTPUT);
- radio.begin(); // 無線オブジェクトの初期化
- radio.openReadingPipe(0, address); // データ受信アドレスを指定
- radio.setPALevel(RF24_PA_MIN); // 出力を最小に
- radio.startListening(); // 受信側として設定
- }
- void loop(){
- if (radio.available()){
- radio.read(&SW_state, sizeof(SW_state)); // スイッチの状態を受信する
- if(SW_state == HIGH){
- digitalWrite(3, LOW);
- } else {
- digitalWrite(3, HIGH);
- }
- }
- delay(10);
- }
押しているとき
押していないとき
追記
撮影boxを作りました。
最近電子部品なんかの写真を撮るときに机の上だといらないプリントなど
が写ったりして不便なので3dプリンターを買ったときについてきた緩衝材で
撮影boxを作りましたですがだいたいの電子部品は、白のほうが映えると思うので
その撮影boxにA4用紙を貼って白くして撮影しました。
完成してから思ったことは、4面ではなく3面でよかったと思いました。
撮影した写真
部品ではないですが手元にあったのでこれを撮影しました。