สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
เสบียง
-2 แผ่นขนมปัง
-ออด
-สายจัมเปอร์
-2 arduino/genuino พร้อมสายไฟ
-rf ตัวส่งและตัวรับ
- ปุ่มกด
ตัวต้านทาน -100 โอห์ม
ขั้นตอนที่ 1: ฟังก์ชัน
โปรเจ็กต์นี้เป็นกริ่งประตูที่ใช้งานได้ซึ่งหน้าที่หลักคือการใช้รหัสเพื่อตั้งโปรแกรม Arduino ในลักษณะที่ปุ่มกดกับตัวส่งจะส่งสัญญาณไปยังปลายรับด้วยออดและตัวรับสัญญาณซึ่งจะเริ่มเสียงออดของกริ่งประตูด้วยการเชื่อมต่อแบบไร้สาย.
ขั้นตอนที่ 2: ขั้นตอนที่ 1: บอร์ดส่งสัญญาณ
วิธีการทำงานของโปรเจ็กต์นี้คือการมีบอร์ดขนมปัง 2 แผ่นและ arduiono/genuinos 2 อันต่อสายเข้าด้วยกัน สำหรับบอร์ดเครื่องส่งสัญญาณเราเชื่อมต่อปุ่มกดกับตัวต้านทาน 100 โอห์มที่เชื่อมต่อกับกราวด์และสายไฟที่เชื่อมต่อกับพลังงานบนเขียงหั่นขนม จากนั้นเชื่อมต่อตัวส่งสัญญาณกับเขียงหั่นขนมและต่อสายปุ่มกับทั้งตัวส่งสัญญาณและ Arduino ตามที่แสดงในภาพ
ขั้นตอนที่ 3: ขั้นตอนที่ 2: บอร์ดตัวรับ
บนกระดานรับสัญญาณเป็นที่ที่ออดไป เชื่อมต่อสายหนึ่งเข้ากับกราวด์ผ่านเครื่องรับ และเชื่อมต่อสายเข้ากับพินที่คุณเลือก ซึ่งคุณสามารถปรับแต่งในโค้ดของคุณได้ในภายหลัง เชื่อมต่อเครื่องรับเข้ากับเขียงหั่นขนมและต่อสายเข้ากับ Arduino ตามที่แสดงในภาพ
ขั้นตอนที่ 4: ขั้นตอนที่ 3: รหัสเครื่องส่งสัญญาณ
// ask_transmitter.pde
// -*- โหมด: C++ -*-
// ตัวอย่างง่ายๆ ของการใช้ RadioHead เพื่อส่งข้อความ
// ด้วยเครื่องส่งสัญญาณ ASK แบบง่ายๆ ด้วยวิธีง่ายๆ
// ใช้เครื่องส่งสัญญาณแบบซิมเพล็กซ์ (ทางเดียว) ด้วยโมดูล TX-C1
#รวม
#include // ไม่ได้ใช้จริงแต่จำเป็นต้องคอมไพล์
ไดรเวอร์ RH_ASK;
// ไดรเวอร์ RH_ASK (2000, 2, 4, 5); // ESP8266 หรือ ESP32: ห้ามใช้พิน 11
การตั้งค่าเป็นโมฆะ ()
{
Serial.begin(9600); // แก้จุดบกพร่องเท่านั้น
โหมดพิน (5, อินพุต);
ถ้า (!driver.init())
Serial.println("init ล้มเหลว");
}
วงเป็นโมฆะ ()
}
if(digitalRead(5)==สูง){
const char *msg = "a";
driver.send((uint8_t *)msg, strlen(msg));
ไดรเวอร์. waitPacketSent();
ล่าช้า(200);
}
}
ขั้นตอนที่ 5: ขั้นตอนที่ 4: รหัสตัวรับ
#รวม
#include // ไม่ได้ใช้จริงแต่จำเป็นต้องคอมไพล์
#include "pitches.h" //เพิ่มความถี่เทียบเท่าโน้ตดนตรี
#include "themes.h" //เพิ่มค่าหมายเหตุและระยะเวลา
ไดรเวอร์ RH_ASK;
การตั้งค่าเป็นโมฆะ ()
{
Serial.begin(9600); // แก้จุดบกพร่องเท่านั้น
ถ้า (!driver.init())
Serial.println("init ล้มเหลว");
อื่น
Serial.println("เสร็จสิ้น");
ไดรเวอร์ RH_ASK;
การตั้งค่าเป็นโมฆะ ()
{
Serial.begin(9600); // แก้จุดบกพร่องเท่านั้น
ถ้า (!driver.init())
Serial.println("init ล้มเหลว");
อื่น
Serial.println("เสร็จสิ้น");
}
เป็นโมฆะ Play_Pirates()
{
สำหรับ (int thisNote = 0; thisNote < (sizeof (Pirates_note)/sizeof (int)); thisNote++) {
int noteDuration = 1000 / Pirates_duration[thisNote];// แปลงระยะเวลาเป็นการหน่วงเวลา
โทน (8, Pirates_note [หมายเหตุนี้], noteDuration);
int pauseBetweenNotes = หมายเหตุระยะเวลา * 1.05; //นี่คือจังหวะ 1.05 ให้เพิ่มเพื่อเล่นช้าลง
ล่าช้า (pauseBetweenNotes);
ไม่มีโทน(8); //หยุดเพลงที่พิน8
}
}
วงเป็นโมฆะ ()
{
uint8_t บัฟ[1];
uint8_t buflen = ขนาด (buf);
if (driver.recv(buf, &buflen)) // ไม่บล็อค
{
Serial.println("เลือกแล้ว -> 'เขาเป็นโจรสลัด' ");
Play_Pirates();
Serial.println("หยุด");
}
}