Arduino Gọi Điện Thoại Bằng Giọng Nói
Trong hướng dẫn này, chúng ta sẽ học cách sử dụng Arduino để thực hiện một cuộc gọi VoIP (Voice over Internet Protocol) thời gian thực tới điện thoại của bạn. Mã nguồn có sẵn cho Arduino Ethernet Shield. Bạn có thể chỉnh sửa nó để nó hoạt động với shield hoặc board khác.
Hướng dẫn cung cấp mã Arduino cho hai trường hợp:
- Arduino Uno R4 WiFi
- Arduino Uno/Mega với Ethernet Shield
Phần cứng cần chuẩn bị
| 1 | × | Arduino UNO R4 WiFi | ||
| 1 | × | Alternatively, DIYables STEM V4 IoT | ||
| 1 | × | (Tùy chọn) DIYables STEM V4 IoT | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) |
Alternatively if using Ethernet:
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | Arduino Ethernet Shield | ||
| 1 | × | Ethernet Cable | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Power Splitter for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Điều kiện tiên quyết
Nếu bạn chưa biết về IFTTT và các khái niệm liên quan, chúng tôi khuyến nghị bạn đọc các bài hướng dẫn sau:
Sơ đồ đấu dây
- Arduino - Ethernet Shield: chúng ta chỉ cần ghép shield lên Arduino Uno/Mega

Cách hoạt động
Chúng ta cần:
- Cài đặt ứng dụng IFTTT trên điện thoại của bạn (có sẵn cho Android và iOS).
- Tạo một Applet IFTTT trên trang web IFTTT, kết nối Webhooks với dịch vụ Cuộc gọi VoIP.
Khi chúng ta tạo Applet:
- Chúng ta có thể viết tin nhắn văn bản, sau đó tin nhắn này sẽ được chuyển thành tin nhắn thoại để gửi tới điện thoại.
- Chúng ta có thể chèn dữ liệu từ Arduino vào tin nhắn.
Quy trình làm việc
- Arduino gửi một yêu cầu HTTP tới Webhooks của IFTTT,
- Webhooks kích hoạt dịch vụ VoIP Calls trên IFTTT
- Dịch vụ VoIP Calls trên IFTTT chuyển văn bản thành tin nhắn thoại.
- Dịch vụ VoIP Calls trên IFTTT gọi điện tới ứng dụng IFTTT trên điện thoại của bạn.
- Điện thoại của bạn đang đổ chuông.
- Bạn nhận cuộc gọi.
- Tin nhắn thoại được phát.
※ Lưu ý:
- Thông điệp được xác định trên Applet, không phải trong mã Arduino.
- Vì đây là VoIP, điện thoại của bạn cần được kết nối với Internet.
- Cuộc gọi VoIP miễn phí.
- Arduino có thể nói chuyện với bạn, nhưng bạn không thể nói chuyện với Arduino.
Cách sử dụng IFTTT với Arduino
- Cài đặt ứng dụng IFTTT trên điện thoại của bạn
- Tạo một tài khoản IFTTT (https://ifttt.com/join) và đăng nhập vào IFTTT.
- Tạo một Applet cho các dịch vụ Webhooks và VoIP Calls. Vui lòng ghi lại tên sự kiện mà chúng tôi sử dụng.
- Sau khi tạo Applet, lấy khóa Webhooks từ IFTTT.
- Sao chép mã Arduino dưới đây và dán vào Arduino IDE.
- Thay thế tên sự kiện và khóa Webhooks trong mã Arduino.
- Tải mã lên Arduino
※ Lưu ý:
- Tên sự kiện do bạn chỉ định. Bạn có thể đặt bất kỳ tên nào.
- Khóa Webhooks được IFTTT tạo ra. Bạn không thể thay đổi nó.
Xem video hướng dẫn ở cuối bài hướng dẫn này.
Mã Arduino
Mã Arduino IFTTT cho Arduino Uno R4 WiFi
Mã Arduino IFTTT cho Arduino Uno/Mega với Ethernet Shield
※ Lưu ý:
Tutorial này đã sử dụng địa chỉ IP động (qua DHCP). Nếu bạn muốn sử dụng địa chỉ IP tĩnh:
- Với Ethernet Shield, bạn cần chỉnh sửa mã Arduino. Xem Arduino Ethernet Shield với địa chỉ IP tĩnh
Kết quả
Trong hai đoạn mã ở trên, nếu thành công,
- Kết quả trong Serial Monitor trông như dưới đây:
- Kiểm tra điện thoại của bạn có đang đổ chuông hay không.
- Nhận cuộc gọi.
- Nghe tin nhắn thoại.
Video hướng dẫn
Cách tích hợp dữ liệu cảm biến vào tin nhắn thoại
Để đưa dữ liệu từ Arduino vào tin nhắn thoại, chúng ta cần làm:
- Trong Arduino: Chèn dữ liệu vào yêu cầu HTTP (trong chuỗi truy vấn).
- Trong Applet: Thay đổi cài đặt để trích xuất dữ liệu từ yêu cầu HTTP.
Bạn có thể tìm hiểu chuỗi truy vấn là gì trong bài hướng dẫn này
Có 5 biến có thể sử dụng trong cài đặt của Applet IFTTT.
| {{EventName}} | Extracted from HTTP request |
|---|---|
| {{OccurredAt}} | System time when event occurs |
| {{Value1}} | Extracted from the variable value1 of query string in HTTP request |
| {{Value2}} | Extracted from the variable value2 of query string in HTTP request |
| {{Value3}} | Extracted from the variable value3 of query string in HTTP request |
Ví dụ:
- Trong Arduino: Thay String queryString = "" bằng String queryString = "?value1=26&value2=70" trong các mã ở trên.
- Trong Applet: Chỉnh sửa tin nhắn văn bản trong cài đặt của Applet IFTTT như sau:
Chào bạn,
Đây là Arduino Uno, tôi muốn thông báo cho bạn rằng:
- Nhiệt độ ngoài trời là {{Value1}} °C
- Độ ẩm ngoài trời là {{Value2}} %
Tất cả các giá trị nêu trên được đo tại {{OccurredAt}}
thẻ xuống dòng
Chúc may mắn và khỏe mạnh!
Trong tin nhắn ở trên, hãy để '
' tạo thành một dòng mới khi hiển thị.
Tin nhắn thoại sẽ như sau:
Video trên YouTube
Bạn có thể đọc nhiệt độ và độ ẩm từ cảm biến và đưa vào chuỗi truy vấn. Xem cách đưa dữ liệu từ cảm biến vào chuỗi truy vấn
Thách thức bản thân
Dựa trên mã ở trên, hãy thực hiện dự án sau:
- Gọi VoIP tới điện thoại của bạn khi nút được nhấn
- Gọi VoIP tới điện thoại của bạn khi cửa được mở
- Gọi VoIP tới điện thoại của bạn khi nhiệt độ quá nóng ...
WARNING
Hướng dẫn này đang được phát triển.