ATtiny853ピンを備えたnRF24L01 +
コンポーネントと消耗品
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
これは、ArduinoUnoを使用した以前のプロジェクトProgrammingATtiny85の続きです。安価なATtiny85が設置された今、私はセンサーデータを送信するためのより安価な方法を探していました。それが私をnRF24L01 +に、安価で低電力のRFトランシーバーにもたらしました。これは私にとってより良い解決策のようでした。しかし、ATtiny85のピン数の制限という1つの問題がありました。 nRF24L01 +とその中のセンサーの両方を接続できません。それで私は解決策を探していて、「3つのATtiny85ピンを備えたnrf24l01 +コントロール」に出くわしました。ここでは、それをどのように実装したかについて説明します。
モジュール
ここには送信機と受信機の2つのモジュールがあります。送信機はATtiny85でデータを送信し、受信機はArduinoUnoでnRF25L01 +を介してデータを受信します。 RF24ライブラリ(http://tmrh20.github.io/RF24/)を利用しています。これを始める前に、そこに記載されている指示に従って、ArduinoIDEに追加してください。 RF24には非常に優れたドキュメントがあるため、ここではあまり説明しません。
送信機
送信機は毎秒増分番号を送信します。 ATtiny85は、3つのピンのみを使用してnRF24L01 +を介してデータを送信します。実装については、ラルフドンカスターの指示に従います。
必要なコンポーネントは次のとおりです
- ATtiny85
- nRF24L01 +
- セラミックコンデンサ-10nF
- カーボンフィルム抵抗器-22kΩ
- スイッチングダイオード-1n4148
以下のコードをATtiny85にアップロードします(方法を知りたい場合は、以前のプロジェクトであるArduino Unoを使用したATtiny85のプログラミングを参照してください)
sender.ino以下に示すようにコンポーネントを接続します
<図> <図> <図>電源が接続されると、送信機は1秒ごとに番号のシーケンスの送信を開始します。
レシーバー
受信機は送信機から送信されたデータを受信し、受信したデータはシリアルモニターで確認できます。
必要なコンポーネントは次のとおりです
- Arduino Uno
- nRF24L01 +
- nRF24L01 +ソケットアダプター(オプション)
以下のコードをUnoにアップロードします
Receiver.ino以下に示すようにコンポーネントを接続します
これが明確でない場合は、このプロジェクトに添付されているフリッツファイルを参照してください。 Vccは常に3v3である必要があることに注意してください。一部のArduinoUnoクローンでは、3v3電源に十分な電流がないため、nRF24L01 +が機能しない場合があります。これを解決するには、以下のいずれかの方法をお勧めします
- 別の3v3電源を使用する
- モジュール自体のVccとGndの間に10uFのコンデンサを追加します。
- nRF24L01 +ソケットアダプターを使用する
送信機と受信機の準備ができたら、テストします。送信機への電源がオンになっていることを確認してください。 Arduino UnoをPCに接続し、arduinoideでシリアルモニターを開きます。以下のように機能するはずです
永続的にする
はんだ付けに関する知識がほとんどないので、perfboardを使用して恒久的にはんだ付けしました。
<図> <図> <図>これは、nRF24L01 +と、ATtiny85の3つのピンのみを使用して接続し、残りのピンをセンサーデータの読み取りに使用できるようにする方法を示すためのより簡単なモジュールです。フィードバック/提案は大歓迎です。
コード
- 送信機
- 受信者
送信機 C / C ++
#define CE_PIN 3#define CSN_PIN 3 // 3ピン構成を使用しているため、CEとCSNの両方に同じピンを使用します#include "RF24.h" RF24 radio(CE_PIN、CSN_PIN); byte address [11] ="SimpleNode"; unsigned longpayload =0; void setup(){radio.begin(); //無線を起動しますradio.setAutoAck(1); // autoACKが有効になっていることを確認しますradio.setRetries(15,15); //再試行間の最大遅延と再試行回数radio.openWritingPipe(address); //デバイスアドレスに書き込みます 'SimpleNode'} void loop(void){payload ++; radio.write(&payload、sizeof(unsigned long)); //データを「Receiver」に1秒ごとに送信delay(1000);}
レシーバー C / C ++
#define CE_PIN 7#define CSN_PIN 8#include#include "RF24.h" RF24 radio(CE_PIN、CSN_PIN); byte address [11] ="SimpleNode"; unsigned longpayload =0; void setup(){Serial.begin(115200); radio.begin(); //無線を起動しますradio.setAutoAck(1); // autoACKが有効になっていることを確認しますradio.setRetries(15,15); //再試行間の最大遅延と再試行回数radio.openReadingPipe(1、address); //デバイスアドレスに書き込みます 'SimpleNode' radio.startListening();} void loop(void){radio.stopListening(); radio.startListening(); radio.read(&payload、sizeof(unsigned long)); if(payload!=0){Serial.print( "Got Payload"); Serial.println(ペイロード); } delay(1000);}
回路図
nRF24L01%2B(With%20Socket)%20Attiny85.fzz nRF24L01%2B%20Arduino%20Uno.fzz 製造プロセス