Bu bir örnek görev. Kitin 8 görevinden biri — nasıl anlattığımızı görmen için açık.

görev 1 · ~45 dk

İki kart selamlaşıyor

Havada ilk mesaj — biri konuşsun, öbürü duysun

hedef

Bir karttan diğerine bir sayı göndermek. Arada kablo olmayacak.

güç (VCC / 5V)GNDsinyal / veriikinci sinyal
Masanda bunu ara — uçları üstünde yazıyor
Breadboard — besleme hattı, uçları etiketli
Kablolarını böyle tak
Besleme hattı bağlantısı Karttaki 5V pini breadboardun arti hattina, GND pini eksi hattina baglanir. Her modulun VCC kablosu arti hattina, GND kablosu eksi hattina gider. Sinyal kablosu hatta ugramaz, dogrudan kartin pinine gider. Karttan hatta iki kablo — bir kez takılır kart5VGNDsinyal sensör / modülVCCGNDsinyal + − + − sinyal doğrudan karta — hatta değil + hattı − hattı

⚠Hattı kurmadan hiçbir modülü takma. Kartta tek 5V pini var; modülleri oraya sığdıramazsın. Breadboard'un o iki uzun sırası kendi içinde baştan sona bağlıdır — bir ucuna elektrik verirsen hattın tamamına gider.

Masanda bunu ara
Kablolarını böyle tak
NRF24L01 kablosuz modul baglantisi VCC arti hattina, GND eksi hattina, CE D9'a, CSN D10'a, SCK D13'e, MOSI D11'e, MISO D12'ye baglanir. Iki istasyonda da ayni. NRF24L01 VCC GND CE CSN SCK MOSI MISO nereye + hattı − hattı kart D9 kart D10 kart D13 kart D11 kart D12

⚠Modülün altındaki adaptör kartı beslemeyi kendi ayarlıyor, o yüzden 5V taşıyan + hattına bağlanabiliyor. Adaptörü çıkarma. Sinyal kablolarını kısa tut — SPI uzun kabloyu sevmiyor, uzun kabloda sistem "bazen çalışır" hale gelir ve bu teşhis edilebilecek en kötü arızadır.

Önce şunu bil

Şimdiye kadar bütün bilgiler kablodan geçti. Sensör bir uçtan sayıyı verdi, kart öbür uçtan aldı. Kablo varsa sinyal gider, yoksa gitmez.

Radyo öyle değil. Verici mesajı havaya bırakıyor. Kime gittiğini, gidip gitmediğini, hatta gerçekten çıkıp çıkmadığını bilmiyor.

Bu fark bütün kitin konusu. Şimdilik sadece şunu bil: kabloyla konuşmak bir insanın kulağına fısıldamak gibidir, radyoyla konuşmak kalabalık bir meydanda bağırmak gibi.

İki istasyon, iki breadboard

Bu kitte iki ayrı sistem kuracaksın. Karıştırmamak için baştan ayır:

İstasyon Kart Üstünde ne olacak
VERİCİ Bantladığın birinci kart Kablosuz modül + sarsıntı sensörü
MERKEZ Bantladığın ikinci kart Kablosuz modül + ekran + buzzer

Her birinin kendi breadboard'u var. İkisini masanın iki ucuna koy, birbirine karışmasınlar.

Besleme hattı — iki kez, her istasyonda bir

Her breadboard'da kendi besleme hattını kuracaksın. Kartın 5V pininden + hattına, GND pininden − hattına birer kablo. Ayrıntısı şemada.

Kablosuz modülün üstünde küçük bir adaptör kartı var. O kart modülün beslemesini kendi ayarlıyor, o yüzden + hattına (5V) bağlayabiliyorsun. Adaptörsüz çıplak modüller 5V görünce yanar — kutundakinde adaptör var, sorun yok.

Kur — iki istasyona da aynı

Kablosuz modülün bağlantısı iki tarafta da birebir aynı. Bir kez öğren, iki kez uygula:

Modül Nereye
VCC + hattı
GND − hattı
CE D9 — doğrudan karta
CSN D10 — doğrudan karta
SCK D13 — doğrudan karta
MOSI D11 — doğrudan karta
MISO D12 — doğrudan karta

Kabloları kısa tut. Bu beş sinyal kablosu SPI denilen hızlı bir hatta çalışıyor ve uzun kabloyu sevmiyor. Yarım metrelik jumper kullanırsan sistem "bazen çalışır" hale gelir — teşhis edebileceğin en kötü arıza budur.

Verici kodu

Bunu VERİCİ kartına yükle:

kod · .ino
#include <SPI.h>
#include <RF24.h>

RF24 radyo(9, 10);                    // CE, CSN
const byte ADRES[6] = "AFET1";

void setup() {
  Serial.begin(9600);
  radyo.begin();
  radyo.openWritingPipe(ADRES);       // bu adrese yaz
  radyo.setPALevel(RF24_PA_LOW);
  radyo.stopListening();              // ben konusacagim
  Serial.println("Verici hazir.");
}

void loop() {
  int sayi = 42;
  bool gitti = radyo.write(&sayi, sizeof(sayi));

  Serial.print("Yolladim: ");
  Serial.print(sayi);
  Serial.println(gitti ? "   (ulasti)" : "   (ULASMADI)");

  delay(1000);
}

Merkez kodu

Bunu MERKEZ kartına yükle. Portu değiştirmeyi unutma:

kod · .ino
#include <SPI.h>
#include <RF24.h>

RF24 radyo(9, 10);                    // CE, CSN
const byte ADRES[6] = "AFET1";

void setup() {
  Serial.begin(9600);
  radyo.begin();
  radyo.openReadingPipe(0, ADRES);    // bu adresi dinle
  radyo.setPALevel(RF24_PA_LOW);
  radyo.startListening();             // ben dinleyecegim
  Serial.println("Merkez dinliyor.");
}

void loop() {
  if (radyo.available()) {
    int sayi;
    radyo.read(&sayi, sizeof(sayi));

    Serial.print("Geldi: ");
    Serial.println(sayi);
  }
}

Dört satırı tanı — bu kitin tamamı bunların üstünde duruyor:

ADRES — iki tarafta da aynı olmalı. Farklı yazarsan hiçbir şey gelmez.

stopListening() / startListening() — modül aynı anda hem konuşup hem dinleyemiyor. Hangi işi yapacağını baştan söylüyorsun.

radyo.write(...) — mesajı havaya bırakıyor. Geriye true ya da false dönüyor: karşı taraf aldığını onayladı mı?

radyo.available() — "gelen bir şey var mı?" Serial'deki Serial.available() ile aynı fikir.

Çalıştı mı?

İki Serial Monitor birden açman gerekiyor. Arduino IDE'de bunu yapmak için ikinci bir IDE penceresi aç (Dosya → Yeni), orada diğer portu seç.

kod
VERİCİ:              MERKEZ:
Yolladim: 42 (ulasti)    Geldi: 42
Yolladim: 42 (ulasti)    Geldi: 42

Kabloları ayır ve tekrar bak. İki breadboard'un arasında hiçbir bağlantı yok. Sayı havadan gidiyor.

Olmadıysa

Bu görevde takılırsan neredeyse her zaman aynı üç sebepten biridir:

Ne görüyorsun Ne yap
Verici hep ULASMADI diyor Merkez kartı açık mı, kodu yüklü mü? Dinleyen yoksa onay gelmez
Merkez hiçbir şey yazmıyor İki koddaki ADRES birebir aynı mı? Harf farkı bile yeter
Bazen çalışıyor bazen çalışmıyor Sinyal kabloları uzun. Kısa jumper kullan, modülü karta yaklaştır
Hiçbiri çalışmıyor, ikisi de sessiz CE ve CSN karışmış olabilir — CE D9, CSN D10
Derleme hatası: RF24.h not found Görev 0'daki kütüphaneyi yüklemeyi atlamışsın
Serial'da anlamsız karakterler Serial Monitor hızı 9600 mü?

Kendini test et

Soru: Verici write() fonksiyonundan true aldı. Bu, mesajın merkeze ulaştığını kanıtlar mı?

Cevabı gör

Evet — ama sandığından daha az şey kanıtlar.

true demek, karşı modülün "aldım" onayını geri yolladığı anlamına geliyor. Yani mesaj havayı geçti ve karşı modüle ulaştı.

Ama karşı kartın onunla ne yaptığını bilmiyorsun. Kod çökmüş olabilir, ekran bozuk olabilir, mesajı yanlış yorumlamış olabilir. Radyo modülü "aldım" dedi, sistem "anladım" demedi.

Bu ayrım gerçek sistemlerde çok önemli: teslim edilmek ile anlaşılmak aynı şey değil. Bir mesajın gönderildiğini bilmek, işin yapıldığını bilmek değildir.

Kargo firmasının "teslim edildi" demesi, paketin doğru kişiye gittiğini garanti etmez. Aynı problem.


Buradan sonrası kutunun içinde. Kalan görevler parçalarla birlikte geliyor; kutudaki QR'ı okutunca sırayla açılıyor.

Kit sayfasına dön