ในบทสอนนี้ เราจะมาดูวิธีการสร้างวงจรเพื่อเชื่อมต่อกับวิทยุสื่อสาร (Handy) ของเรา ในที่นี้คือ Baofeng UV-5R (แม้ว่าจะใช้กับยี่ห้อและรุ่นอื่นๆ ได้เหมือนกัน) เพื่อควบคุมมอเตอร์ ไฟ ปั๊มน้ำ จากระยะไกลได้เป็นกิโลเมตร โดยไม่ต้องใช้เครือข่ายมือถือ หรือใช้ในที่ที่สัญญาณมือถือเข้าไม่ถึง เราจะดูการประกอบวงจรอิเล็กทรอนิกส์ ศึกษาซอร์สโค้ด และสุดท้ายทดสอบการทำงานของอุปกรณ์ทั้งหมดกัน
ฟิสิกส์เบื้องหลัง DTMF
เวลาที่เรากดปุ่ม "5" บนโทรศัพท์บ้านรุ่นเก่า มันจะส่งเสียงโทนคู่ความถี่เฉพาะออกมา (ผสมกันระหว่างโทน 770Hz และ 1336Hz)
- ฝั่งส่งสัญญาณ: เราใช้วิทยุสื่อสารทั่วไปอย่าง Baofeng หรือ Motorola ค้างปุ่ม "พูด" (Talk) แล้วกด "1, 2, 3, 4" บนแป้นตัวเลข วิทยุก็จะส่งเสียงบี๊บๆ ดังๆ นั้นออกไปข้ามภูเขา
- ฝั่งรับสัญญาณ: ห่างออกไป 5 กิโลเมตร วิทยุเครื่องที่สองรับสัญญาณนั้นมา เราเชื่อมต่อแจ็คหูฟังของมันเข้ากับ โมดูลถอดรหัส DTMF MT8870 โดยตรง
- การแปลงสัญญาณทางฮาร์ดแวร์: ชิป MT8870 จะรับฟังสัญญาณเสียงอนาล็อกจากแจ็คหูฟัง วงจรภายในของมันจะแยกเสียงผสมที่ซับซ้อนนั้นออกมาเป็นเลขฐานสอง 4 บิต!
- โมดูลจะส่งค่าออกมาทางพินดิจิทัล 4 เส้น (เช่น
HIGH, LOW, HIGH, LOWซึ่งแทนเลข 5)
ไขความลับของข้อมูลไบนารี
Arduino ของเราไม่ต้องมาคอยประมวลผลเสียงให้วุ่นวาย
- ในฟังก์ชัน
loop()เราแค่ใช้คำสั่งdigitalRead()ง่ายๆ บนพินทั้ง 4 เส้นนั้น เพื่ออ่านค่าที่ MT8870 ส่งออกมา - มันจะแปลค่าไบนารีนั้นให้เป็นตัวเลขจำนวนเต็ม
if (receivedDigit == 5) { TurnOnFarmSprinkler(); delay(3600000); }- แค่นี้เราก็สามารถสั่งงานระบบควบคุมอุตสาหกรรมที่ซับซ้อนได้แล้ว แค่ส่งเสียงโทนโทรศัพท์ผ่านวิทยุอนาล็อก! จัดไปวัยรุ่น!
อุปกรณ์ที่ต้องมี (ขาดไม่ได้)
- Arduino Uno/Nano: ตัวแปลภาษาให้รีเลย์
- โมดูลถอดรหัสเสียง DTMF MT8870
- วิทยุสื่อสารอนาล็อก (UHF/VHF) 2 เครื่อง (เครื่องนึงเป็นรีโมต อีกเครื่องเป็นสถานีฐาน)
- สาย Aux 3.5mm (ตัดปลายแล้วเอาไปต่อกับชิป MT8870)
ส่วนประกอบอิเล็กทรอนิกส์
คริสตัล 3.58 MHz

ตัวต้านทาน (Resistor) 100K โอห์ม 2 ตัว

ตัวเก็บประจุ (Capacitor) เซรามิก 100 nF 2 ตัว

ตัวต้านทาน (Resistor) 300K โอห์ม 1 ตัว

Arduino Mini Pro 1 ตัว

วิทยุสื่อสาร Baofeng หรือรุ่นใกล้เคียง 2 เครื่อง

โมดูล HC-05 (ใส่หรือไม่ใส่ก็ได้) ต่อก็ต่อเมื่ออยากเห็นข้อมูลที่รับมาแสดงบนมือถือเท่านั้น เลยเป็นอุปกรณ์เสริม ไม่ใช่ของบังคับ ห้ามช็อตนะตัวนี้

ทำงานได้ทั้งโหมดหลัก (Master) และโหมดตาม (Slave) บนบลูทูธ ตั้งค่าได้ผ่านคำสั่ง AT บลูทูธรุ่น V2.0+EDR ความถี่ทำงาน: 2.4 GHz ISM band การมอดูเลต: GFSK (Gaussian Frequency Shift Keying) กำลังส่ง: <=4dBm, Class 2 ความไวสัญญาณ: <=-84dBm @ 0.1% BER ความปลอดภัย: มีระบบพิสูจน์ตัวตนและเข้ารหัส โปรไฟล์บลูทูธ: Bluetooth Serial Port ระยะทำการสูงสุด 10 เมตร (ในสภาวะเหมาะสม) แรงดันทำงาน: 3.6 VDC ถึง 6 VDC กระแสใช้งาน: 30 mA ถึง 50 mA ชิป: BC417143 เวอร์ชันเฟิร์มแวร์: 3.0-20170609 เบาด์เริ่มต้น: 38400 อัตราเบาด์ที่รองรับ: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 อินเทอร์เฟซ: Serial TTL เสาอากาศ: ติดตั้งบนแผ่นวงจร (PCB) ความปลอดภัย: การพิสูจน์ตัวตนและการเข้ารหัส (รหัสผ่านเริ่มต้น: 0000 หรือ 1234) อุณหภูมิทำงานสูงสุด: 75°C อุณหภูมิทำงานต่ำสุด: -20°C ขนาด: 4.4 x 1.6 x 0.7 ซม. ขาเฟมเมล

แจ็คปลั๊กแบบเมล ขนาด 2.5 มม.

ไอซี MT8870de

การจัดขา (Pinout) ของ MT8870DE

ข้อมูลสเปค (Data sheet) หาดูได้ตามเว็บทั่วไปนะน้อง
จอแสดงผล OLED ขับเคลื่อนด้วยไดรเวอร์ SSD1306

จอแบบนี้ภาพสวยกว่า LCD แบบเก่า แถมกินไฟน้อยกว่าด้วย เอาไปเลยวัยรุ่น! สเปคคร่าวๆ: ไดรเวอร์ IC: SSD1306 ขนาด: 0.91 นิ้ว OLED ความละเอียด: 128 x 32 พิกเซล ขนาดจอ: 38 * 12 มม. จำนวนขา: 4 ขา ประเภทอินเทอร์เฟซ: อินเทอร์เฟซ IIC สีจอ: ขาว / น้ำเงิน รายละเอียดขา: GND: กราวด์ VCC: ขั้วบวก (DC 3.3 ~ 5v) อุณหภูมิทำงาน: -40 ~ 85 ℃ SCL: สายสัญญาณนาฬิกา SDA: สายสัญญาณข้อมูล
จอ OLED แบบนี้ไม่ต้องใช้แบ็คไลท์นะ มันเรืองแสงได้เอง สีจอเป็นสีน้ำเงิน ภาพสวยคมชัดกว่า LCD ทั่วไป แถมประหยัดไฟกว่า การใช้ IIC (I2C) ทำให้ต่อสายน้อยลง สะดวกดี ใช้กับ Arduino, ESP8266, ESP32, STM32 และอื่นๆ ได้เลย ใช้แรงดัน 3.3v ถึง 5v
ขาเมล (Pines macho)

ซ็อกเก็ตสำหรับ Arduino Mini Pro

ซ็อกเก็ตสำหรับไอซี MT8870

วงจร

แผ่นวงจรพิมพ์ (PCB)

ดาวน์โหลดไฟล์ PCB –> dtmf duino
