Mục lục:

Trình tạo chức năng di động trên WiFi và Android: 10 bước
Trình tạo chức năng di động trên WiFi và Android: 10 bước

Video: Trình tạo chức năng di động trên WiFi và Android: 10 bước

Video: Trình tạo chức năng di động trên WiFi và Android: 10 bước
Video: Lộ trình tự học lập trình di động (Android, iOS) cơ bản, siêu chi tiết 2024, Tháng bảy
Anonim
Trình tạo chức năng di động trên WiFi và Android
Trình tạo chức năng di động trên WiFi và Android
Trình tạo chức năng di động trên WiFi và Android
Trình tạo chức năng di động trên WiFi và Android
Trình tạo chức năng di động trên WiFi và Android
Trình tạo chức năng di động trên WiFi và Android
Trình tạo chức năng di động trên WiFi và Android
Trình tạo chức năng di động trên WiFi và Android

Gần cuối thế kỷ 20, nhiều đổi mới công nghệ đã xuất hiện, đặc biệt là trong lĩnh vực truyền thông; nhưng không chỉ. Đối với chúng tôi, người dùng, người tiêu dùng và kỹ sư đã hiểu ra sự phát triển nhanh chóng của các thiết bị điện tử, có thể giúp cuộc sống của chúng ta dễ dàng hơn rất nhiều: Đồng hồ thông minh, nhà thông minh, điện thoại thông minh, v.v.

Vì ngày nay mọi thứ đều có thể "thông minh", tôi đã quyết định thiết kế một thiết bị siêu hữu ích để trở thành một phần của thiết bị phòng thí nghiệm điện tử thiết yếu - Máy phát chức năng di động, có thể điều khiển bằng điện thoại thông minh dựa trên hệ điều hành Android thông qua WiFi trực tiếp hoặc Mạng cục bộ WiFi (WLAN).

Tại sao chúng ta nên chế tạo thiết bị này?

Phần lớn các thiết bị thử nghiệm ngày nay khá đắt tiền. Và đôi khi, những thiết bị này không di động. Là một giải pháp cho giá cao, thiếu tính di động và thiếu khả năng truy cập mạng của thiết bị, thiết bị cung cấp bộ tạo dạng sóng kênh đôi, thực sự di động và có quyền truy cập không hạn chế vào mạng - internet hoặc cục bộ.

Và tất nhiên, thiết bị nên được chế tạo vì sự nhiệt tình, tuân thủ các nguyên tắc DIY - Đôi khi chúng ta phải tự làm những việc để cảm thấy đúng:)

Các tính năng chính

Nguồn cấp

  • Đầu nối USB Loại A, cho cả hệ thống cấp điện và lập trình
  • Hệ thống quản lý pin Li-Ion hoàn chỉnh - Chế độ sạc và ổn định
  • Triển khai Công tắc thông minh - không cần công tắc bật tắt nguồn
  • Nguồn cung cấp kép: + 3,3V và -3,3V để tạo dạng sóng điện áp đối xứng

Tạo dạng sóng

  • Thực hiện mức DC ở tầng đầu ra - dạng sóng phân cực giữa các ranh giới điện áp
  • Tạo dạng sóng 4 loại dựa trên DDS - Sine, tam giác, vuông và DC
  • Hỗ trợ tần số lên đến 10MHz
  • Dòng điện đầu ra lên đến 80mA với khả năng cung cấp công suất tối đa 500mW
  • Các kênh riêng biệt để tạo dạng sóng - mạch dựa trên AD9834 chia nhỏ

Liên lạc

  • Triển khai ESP32 - Khả năng WiFi áp dụng
  • Hoàn thành hỗ trợ TCP / IP bằng thiết bị phát điện và điện thoại thông minh Android
  • Khả năng lưu trữ các thông số của người dùng cho mọi chu kỳ thiết bị
  • Giám sát trạng thái - cả hai hệ thống đều nhận biết được trạng thái của nhau: FuncGen (từ nay hãy gọi nó theo cách này) và điện thoại thông minh.

Giao diện người dùng

  • Màn hình LCD 20 x 4 ký tự với giao diện dữ liệu 4 bit đơn giản
  • Ứng dụng Android - kiểm soát hoàn toàn của người dùng đối với thiết bị FuncGen
  • Mạch buzzer - phản hồi âm thanh cho người dùng

Bước 1: Sơ đồ khối - Phần cứng

Sơ đồ khối - Phần cứng
Sơ đồ khối - Phần cứng
Sơ đồ khối - Phần cứng
Sơ đồ khối - Phần cứng

Bộ vi điều khiển - ATMEGA32L

Vi điều khiển là một chip có thể lập trình được bao gồm tất cả các chức năng của máy tính nằm trong một chip điện tử duy nhất. Trong trường hợp của chúng ta, nó là "bộ não" và là thành phần trung tâm của hệ thống. Mục đích của MCU là quản lý tất cả các hệ thống ngoại vi, xử lý giao tiếp giữa các hệ thống này, kiểm soát hoạt động của phần cứng và cung cấp hỗ trợ hoàn chỉnh cho giao diện người dùng và tương tác của nó với người dùng thực tế. Dự án này dựa trên MCU ATMEGA32L, có thể hoạt động trên 3.3V và tần số 8MHz.

Giao tiếp SoC - ESP32

SoC (Hệ thống trên chip) này cung cấp hỗ trợ giao tiếp hoàn chỉnh cho FuncGen - Khả năng truy cập vào WiFi bao gồm giao tiếp trực tiếp, cục bộ hoặc internet. Mục đích của thiết bị là:

  • Xử lý việc truyền dữ liệu giữa ứng dụng Android và thiết bị FuncGen
  • Quản lý các thông điệp dữ liệu / kiểm soát
  • Hỗ trợ cấu hình Máy khách-Máy chủ TCP / IP liên tục

Trong dự án của chúng tôi, SoC là espressif ESP32, quá phổ biến để mở rộng hơn nữa:)

Hệ thống quản lý pin Li-Ion

Để biến thiết bị của chúng tôi thành thiết bị di động, thiết bị có chứa mạch sạc pin Li-Ion được thiết kế. Mạch dựa trên IC MC73831, với dòng điện sạc có thể điều khiển được thông qua việc điều chỉnh giá trị của một điện trở lập trình duy nhất (Chúng tôi sẽ trình bày chủ đề này trong bước Sơ đồ). Đầu vào cấp nguồn cho thiết bị là đầu nối USB Loại A.

Mạch công tắc thông minh

Mạch điều khiển nguồn thiết bị công tắc thông minh cung cấp khả năng kiểm soát phần mềm hoàn chỉnh đối với trình tự tắt thiết bị và không cần công tắc bật tắt bên ngoài để cắt điện áp pin của thiết bị. Tất cả các hoạt động nguồn được thực hiện bằng cách nhấn nút nhấn và phần mềm của MCU. Trong một số trường hợp, cần phải tắt hệ thống: Điện áp pin thấp, điện áp đầu vào cao, lỗi giao tiếp, v.v. Công tắc thông minh dựa trên IC công tắc thông minh STM6601, rẻ và rất thân thiện để chơi với mọi người.

Bộ cấp nguồn chính

Thiết bị này bao gồm hai mạch cung cấp năng lượng điều khiển bằng pin - + 3,3V cho tất cả các mạch cung cấp kỹ thuật số / tương tự và -3,3V cho đầu ra đối xứng FunGen liên quan đến điện thế 0V (nghĩa là dạng sóng được tạo ra có thể được đặt trong [-3,3V: 3,3V] khu vực.

  • Mạch cung cấp chính dựa trên bộ điều chỉnh điện áp tuyến tính 1A LP3875-3.3 LDO (low droputut).
  • Mạch cung cấp thứ cấp dựa trên IC LM2262MX, thực hiện chuyển đổi điện áp âm DC-DC thông qua tụ điện-sạc-bơm - hệ thống mà IC dựa trên.

Hệ thống máy phát dạng sóng

Hệ thống được thiết kế tập trung vào các mạch tích hợp DDS (tổng hợp kỹ thuật số trực tiếp) riêng biệt, cho phép điều khiển tạo dạng sóng hoàn chỉnh bằng SPI của MCU (giao diện ngoại vi nối tiếp). Các mạch được sử dụng trong thiết kế là Analog Devices AD9834 có thể cung cấp các loại dạng sóng khác nhau. Những thách thức chúng tôi cần đối mặt khi làm việc với AD9834 là:

  • Biên độ dạng sóng cố định: Biên độ dạng sóng được điều khiển bởi mô-đun DAC bên ngoài
  • Không quan tâm đến mức DC bù đắp: Thực hiện các mạch tổng với các giá trị bù DC mong muốn
  • Các đầu ra riêng biệt cho sóng vuông và sóng tam giác / sin: Thực hiện mạch chuyển đổi tần số cao, do đó mỗi đầu ra đơn kênh có thể cung cấp tất cả các dạng sóng mong muốn: sin, tam giác, vuông và DC.

Màn hình tinh thể lỏng

LCD là một phần của UI (giao diện người dùng) và mục đích của nó là cho phép người dùng hiểu thiết bị hoạt động gì ở chế độ thời gian thực. Nó tương tác với người dùng ở mọi trạng thái thiết bị.

Buzzer

Mạch tạo âm đơn giản để có thêm phản hồi từ thiết bị tới người dùng.

Lập trình ISP tích hợp

Có một vấn đề dai dẳng đối với mọi kỹ sư khi nói đến quá trình lập trình: Luôn luôn có nhu cầu tồi tệ nhất là phải tháo rời sản phẩm để lập trình lại nó với một phần sụn mới. Để khắc phục sự bất tiện này, bộ lập trình AVR ISP đã được gắn vào thiết bị từ bên trong, trong khi dữ liệu USB và đường dây điện được gắn với đầu nối USB Loại A của thiết bị. Trong cấu hình này, chúng ta chỉ cần cắm FuncGen qua cáp USB để lập trình hoặc sạc!

Bước 2: Sơ đồ khối - Kết nối mạng

Sơ đồ khối - Mạng
Sơ đồ khối - Mạng

Bộ tạo chức năng kênh kép

Thiết bị chính. Cái mà chúng tôi đã xem xét ở bước trước

ESP-WROOM-32

Tích hợp Hệ thống trên chip với khả năng WiFi và BLE. SoC được gắn vào bo mạch chính (Chúng tôi sẽ trình bày vấn đề này trong bước sơ đồ) thông qua mô-đun UART và hoạt động như một bộ truyền tin giữa thiết bị chính và điện thoại thông minh Android.

Mạng cục bộ WiFi

Điện thoại thông minh và thiết bị sẽ giao tiếp qua WiFi trực tiếp hoặc mạng cục bộ, dựa trên cấu hình máy chủ / máy khách TCP. Khi các thiết bị nhận ra nhau trên WiFi, thiết bị chính sẽ tạo máy chủ TCP với các tham số thích hợp và có thể gửi / nhận tin nhắn. Thiết bị hoạt động như một thiết bị phụ của điện thoại thông minh. Mặt khác, thiết bị Android kết nối với máy chủ TCP như một thiết bị mạng khách, nhưng được coi là thiết bị truyền thông điệp chính - điện thoại thông minh là người khởi xướng chu trình giao tiếp hoàn chỉnh: Gửi tin nhắn - nhận trả lời.

Điện thoại thông minh Android

Thiết bị điện thoại thông minh dựa trên hệ điều hành Android chạy trên ứng dụng FuncGen

Bước 3: Các bộ phận, Công cụ, IDE và Hóa đơn Nguyên vật liệu

Bộ phận, Công cụ, IDE và Hóa đơn Nguyên vật liệu
Bộ phận, Công cụ, IDE và Hóa đơn Nguyên vật liệu
Bộ phận, Công cụ, IDE và Hóa đơn Nguyên vật liệu
Bộ phận, Công cụ, IDE và Hóa đơn Nguyên vật liệu
Bộ phận, Công cụ, IDE và Hóa đơn Nguyên vật liệu
Bộ phận, Công cụ, IDE và Hóa đơn Nguyên vật liệu

Hóa đơn vật liệu (Xem bảng XLS đính kèm)

Giao diện người dùng và kết nối hệ thống

  • 1 x 2004A Char-LCD 20x4 Xanh lam
  • 1 x Đầu nối USB Loại B
  • 1 x 10 Bộ Mini Micro JST XH 2.54mm 4 Pin
  • 1 x 6 chiếc Mo moment SW

Đặt hàng PCB (Theo Seeed Studio)

Vật liệu cơ bản FR-4

Số lớp 2 lớp

Số lượng PCB 10

Số kiểu dáng khác nhau 1

Độ dày PCB 1,6mm

Màu PCB Màu xanh lam

Bề mặt hoàn thiện HASL

Đập mặt nạ hàn tối thiểu 0,4mm ↑

Trọng lượng đồng 1oz

Kích thước lỗ khoan tối thiểu 0,3mm

Chiều rộng vết / Khoảng cách 6/6 triệu

Mạ nửa lỗ / Lỗ đúc Không

Kiểm soát trở kháng Không

Công cụ

  • Súng bắn keo nóng
  • Cái nhíp
  • Máy cắt
  • Dây ~ 22AWG cho mục đích xử lý sự cố
  • Hàn sắt / trạm
  • Thiếc hàn
  • Trạm làm lại SMD (tùy chọn)
  • Máy in 3D (Tùy chọn)
  • Đùn tệp
  • Lập trình AVR ISP
  • Bộ chuyển đổi USB sang nối tiếp (Tùy chọn, cho mục đích gỡ lỗi)

Môi trường phát triển tích hợp (IDE) và phần mềm

  • Autodesk EAGLE hoặc Trình chỉnh sửa sơ đồ nhịp / Trình chỉnh sửa PCB Allegro
  • OpenSCAD (Tùy chọn)
  • Ultimaker Cura (Tùy chọn)
  • Saleae Logic (Để khắc phục sự cố)
  • Atmel Studio 6.3 trở lên
  • Android Studio hoặc IDE Eclipse
  • Docklight Serial Monitor / Phần mềm giám sát cổng COM khác
  • ProgISP cho lập trình flash AVR ATMEGA32L

Bước 4: Thiết kế phần cứng - Bo mạch chính

Thiết kế phần cứng - Bo mạch chính
Thiết kế phần cứng - Bo mạch chính
Thiết kế phần cứng - Bo mạch chính
Thiết kế phần cứng - Bo mạch chính
Thiết kế phần cứng - Bo mạch chính
Thiết kế phần cứng - Bo mạch chính

Mạch quản lý pin

Mạch sạc pin dựa trên IC MCP7383, cho phép chúng ta chọn dòng sạc mong muốn cho pin Li-Ion - 3.7V với dung lượng 850mAh. Dòng sạc được đặt bằng giá trị điện trở lập trình (R1) trong trường hợp của chúng tôi

R1 = 3KOhm, I (sạc) = 400mA

Điện áp USB VBUS được lọc bởi bộ lọc π (C1, L3, C3) và hoạt động như một nguồn năng lượng cho mạch sạc.

Mạch phân áp (R2, R3) cho phép MCU cho biết nguồn điện USB bên ngoài đã được kết nối hay chưa, bằng cách cung cấp điện áp sau cho kênh MCU A / D:

V (chỉ báo) ~ (2/3) V (BUS)

Vì A / D của ATMEGA32L của chúng tôi là 12-bit, chúng tôi có thể tính toán phạm vi kỹ thuật số:

A / D (phạm vi) = 4095V (chỉ báo) / V (REF).

A / D ∈ [14AH: FFFH]

Bộ chuyển nguồn thông minh

Mạch cho phép hệ thống điều khiển cấp điện cho mọi khối được thiết kế cả từ nút nhấn và phần mềm trên MCU và dựa trên Công tắc thông minh STM6601 với tùy chọn POWER thay vì ĐẶT LẠI. Các thiết bị đầu cuối mà chúng tôi muốn xem xét là:

  • PSHOLD - Dòng đầu vào, xác định trạng thái thiết bị: nếu được kéo THẤP, thiết bị sẽ vô hiệu hóa tất cả các bộ cấp nguồn thứ cấp (+ 3,3V và -3,3V). Nếu được giữ ở mức CAO - thiết bị sẽ duy trì trạng thái BẬT.
  • nSR và nPB - Dòng đầu vào. Nút nhấn thiết bị đầu cuối. Khi phát hiện thấy cạnh rơi trên các chân này, thiết bị sẽ cố gắng chuyển sang chế độ tăng / giảm nguồn
  • nINT - Dòng đầu ra. Kéo LOW mỗi khi nhấn nút nhấn
  • EN - Dòng đầu ra, được sử dụng làm nguồn điện cho các đơn vị cung cấp điện thứ cấp. Khi được giữ ở mức THẤP, cả hai nguồn cấp điện phụ đều bị tắt

Có một số lưu ý quan trọng trước khi chúng tôi tiến hành thiết kế cuối cùng:

  • PSHOLD nên được kéo lên đến 3,3V, vì có những trường hợp khi MCU buộc tất cả I / Os ở trạng thái HIGH-Z. Trong trường hợp này, trạng thái của PSHOLD từ MCU là không xác định và có thể ảnh hưởng đáng kể đến quá trình lập trình thiết bị.
  • STM6601 nên được đặt hàng với tùy chọn điều chỉnh EN khi nhấn và giữ, thay vì tùy chọn ĐẶT LẠI (Tôi đã rơi vào điều đó).

Đơn vị cung cấp điện: + 3.3V

Cung cấp điện chính cho tất cả các hệ thống trong dự án của chúng tôi. Khi dòng + 3.3V được giữ ở mức GND (tức là không có điện áp), tất cả các IC ngoại trừ công tắc thông minh sẽ bị vô hiệu hóa. Mạch dựa trên IC LDO LP-3875-3.3, với khả năng được điều khiển thông qua thiết bị đầu cuối EN và cung cấp dòng điện lên đến 1A.

Nguồn điện cho mạch này là điện áp pin, với chỉ báo A / D kèm theo để cảm nhận VBAT trong cấu hình, tương tự như mạch cảm biến VBUS. Trong trường hợp này, các tính toán hơi khác một chút;

V (Pin-to-A / D) = 0,59V (Pin); A / D (phạm vi) ∈ [000H: C03H]

Đơn vị cung cấp điện: -3.3V

Mạch cung cấp điện áp âm cho phép chúng ta tạo ra các dạng sóng đối xứng với hệ số DC là 0V (tức là giá trị trung bình của dạng sóng có thể là 0V). Mạch này dựa trên IC LM2662MX - bộ chuyển đổi DC / DC hoạt động theo phương pháp "bơm sạc". Dòng điện đầu ra tối đa của mạch là 200mA, đủ cho các yêu cầu thiết kế của chúng tôi - chúng tôi bị giới hạn với dòng điện đầu ra 80mA từ mỗi kênh của thiết bị.

IC thực hiện tất cả các công việc cần thiết, vì vậy chúng ta chỉ cần gắn các bộ phận là hai tụ điện: C33 để chuyển mạch và C34 cho đường dây -3.3V (xem xét giảm nhiễu). Tần số chuyển mạch là không đáng kể trong thiết kế nếu chúng ta đặt mạch đủ xa các bộ phận tạo dạng sóng (Chúng ta sẽ thảo luận ở bước Bố trí PCB).

Bộ vi điều khiển - MCU

Đây là người quản lý và Giám đốc điều hành của hệ thống của chúng tôi - kiểm soát, xử lý mạng, truyền thông điệp và hỗ trợ giao diện người dùng - mọi thứ đều do MCU.

MCU đã được chọn là Atmel ATMEGA32L, trong đó L là viết tắt của hoạt động điện áp được hỗ trợ ∈ [2,7V: 5,5V]. Trong trường hợp của chúng tôi, điện áp hoạt động là + 3,3V.

Hãy xem xét các khối hoạt động chính, cần thiết để hiểu, làm việc với MCU trong thiết kế của chúng tôi:

  • Bộ tạo dao động bên ngoài - Là một thành phần tùy chọn, vì chúng tôi quan tâm đến tần số hoạt động 8MHz
  • Điều khiển ngoại vi, Mạng SPI - Tất cả các thiết bị ngoại vi (trừ ESP32) đều giao tiếp với MCU qua SPI. Có ba đường chia sẻ cho tất cả các thiết bị (SCK, MOSI, MISO) và mỗi mạch ngoại vi đều có đường CS (Chip Select) chuyên dụng. Các thiết bị SPI là một phần của thiết bị:

    1. D / A để điều khiển biên độ - Kênh A
    2. D / A để điều khiển biên độ - Kênh B
    3. Thiết bị AD9834 - Kênh A
    4. Thiết bị AD9834 - Kênh B
    5. D / A để điều khiển điện áp phân cực - Kênh A
    6. D / A để điều khiển điện áp phân cực - Kênh B
    7. Chiết áp kỹ thuật số cho cài đặt độ sáng / độ tương phản của màn hình LCD
  • Hỗ trợ LCD - Vì LCD là màn hình hiển thị ký tự 20 x 4 chung, chúng tôi đang sử dụng giao diện 4 bit (Dòng D7: D4), chân điều khiển (Dòng RS, E) và điều khiển độ sáng / độ tương phản (Dòng V0 và Anode)
  • Hỗ trợ LED RGB - Mô-đun này là tùy chọn, nhưng có đầu nối LED RGB cathode chung với điện trở thích hợp, được kết nối với MCU.
  • Kiểm soát nguồn - MCU thực hiện giám sát hệ thống điện ở chế độ thời gian thực và xử lý tất cả các sự kiện điện cần thiết:

    1. VBAT_ADC - Giám sát điện áp pin và xác định trạng thái của nó (Kênh ADC0)
    2. PWR_IND - Chỉ báo kết nối nguồn điện bên ngoài (Kênh ADC1)
    3. PS_HOLD - Dòng kích hoạt nguồn chính cho tất cả các hệ thống đã xác định. Khi MCU kéo xuống mức thấp, thiết bị sẽ tắt nguồn
    4. Ngắt đầu cuối của công tắc thông minh - Giám sát trạng thái nút nhấn
  • Quản lý mạng WiFi - ESP32: MCU giao tiếp với ESP32 thông qua giao diện UART. Vì 8MHz cho phép chúng tôi thực hiện tốc độ truyền là 115200 với một sai số tương đối nhỏ, chúng tôi có thể sử dụng ESP32 trong mạch mà không cần xác định trước về sự thay đổi tốc độ truyền.

Lập trình viên AVR ISP

MCU của chúng tôi được lập trình thông qua SPI với dòng đặt lại (/ RST) phải được kéo CAO để hoạt động bình thường (nếu không - MCU sẽ tự thấy mình ở trạng thái đặt lại mãi mãi).

Để cho phép thiết bị vừa được lập trình vừa được sạc qua USB, tôi đã đính kèm bộ lập trình AVR ISP (Sản phẩm cỡ nhỏ, mua từ eBay). Để duy trì hỗ trợ USB hoàn chỉnh của thiết bị, cần phải kết nối các đầu cuối USB Loại A (D +, D-, VBUS và GND) với thiết bị AVR ISP.

Mạch tạo dạng sóng

Cốt lõi của thiết bị là các mạch này. AD9834 là thiết bị DDS công suất thấp cung cấp cho chúng tôi tất cả các dạng sóng mà chúng tôi muốn lấy từ hệ thống. Mạch chứa hai IC AD9834 độc lập với bộ dao động 50MHz bên ngoài được tách biệt (như có thể thấy trong sơ đồ). Lý do cho bộ dao động được tách biệt là do cân nhắc giảm tiếng ồn của các mạch kỹ thuật số, vì vậy quyết định là xử lý các đường 50MHz thích hợp với các bộ tạo dao động được đặt liền kề với AD9834.

Bây giờ chúng ta hãy xem xét một số phép toán:

Vì thiết bị DDS hoạt động trên công nghệ Bánh xe pha với giá trị đầu ra được giữ trong thanh ghi 28 bit, chúng tôi có thể mô tả việc tạo dạng sóng một cách toán học:

dP (pha) = ωdt; ω = P '= 2πf; f (AD9834) = ΔP * f (clk) / 2 ^ 28; ΔP ∈ [0: 2 ^ 28 - 1]

Và theo biểu dữ liệu AD9834, có tính đến tần số tối đa, có thể thu được độ phân giải tần số đầu ra:

Δf = k * f (dao động) / f (cực đại) = 0,28 * 50M / 28M = 0,187 [Hz]

Các IC AD9834 cung cấp đầu ra dòng điện tương tự cho sóng tam giác / sin (đầu cuối IOUT) và đầu ra kỹ thuật số cho sóng vuông (đầu cuối SIGN_OUT). Việc sử dụng bit dấu hiệu hơi phức tạp một chút nhưng chúng tôi có thể xử lý nó - Mỗi khi DDS vượt qua ngưỡng giá trị so sánh, SIGN_OUT sẽ hoạt động tương ứng. Một điện trở 200Ohm được gắn vào đầu ra của mỗi kênh, vì vậy điện áp đầu ra sẽ có giá trị có ý nghĩa:

I (kênh đơn) = V (đầu ra) / R (lựa chọn điện áp); V (đầu ra) = R (VS) * I (SS) = 200I (SS) [A]

Mạch điều khiển biên độ (D / A)

Theo biểu dữ liệu của AD9834, biên độ của nó có thể được điều chỉnh bằng cách cung cấp dòng điện cho hệ thống DDS đầy đủ, vì vậy với sự trợ giúp của IC D / A kép, chúng ta có thể kiểm soát biên độ tín hiệu đầu ra bằng cách điều chỉnh dòng điện đó. Một lần nữa, một số phép toán:

I (toàn thang đo) = 18 * (V_REF - V_DAC) / R_SET [A]

Theo sơ đồ và đưa một số vào phương trình:

I (toàn thang đo) = 3,86 - 1,17 * V_DAC [A]

Mô-đun D / A được sử dụng trong thiết kế là MCP4922 12-bit, khi dòng điện nằm trong khoảng [0mA: 3,86mA] và hàm biên độ tuyến tính là:

V (chọn biên độ) = 1 - [V (D / A) / (2 ^ 12 - 1)]

Mạch ghép kênh dạng sóng

Các đầu ra tạo sóng vuông và sóng sin / tam giác được tách ra ở AD9834, do đó chúng tôi phải sử dụng mạch ghép kênh tốc độ cao cho cả hai đầu ra để cho phép truy xuất tất cả các dạng sóng mong muốn từ một kênh được tách riêng lẻ. IC ghép kênh là một công tắc tương tự ADG836L với điện trở trên rất thấp (~ 0,5Ohm).

Bảng lựa chọn mà MCU đang sử dụng cho các kết quả đầu ra như sau:

Lựa chọn chế độ [D2: D1] | Đầu ra Kênh A | Kênh đầu ra B

00 | Hình sin / Tam giác | Hình sin / Tam giác 01 | Hình sin / Tam giác | Hình vuông 10 | Hình vuông | Hình sin / Tam giác 11 | Hình vuông | Quảng trường

Mạch điều khiển điện áp phân cực (D / A)

Một trong những tính năng chính của máy phát dạng sóng là kiểm soát giá trị DC của nó. Trong thiết kế này, nó được thực hiện bằng cách đặt điện áp D / A mong muốn trên mỗi kênh và các điện áp phân cực này được tổng hợp bằng các đầu ra ghép kênh mà chúng ta đã thảo luận trước đó một chút.

Điện áp thu được từ D / A nằm trong phạm vi [0V: + 3.3V] vì vậy có một mạch dựa trên op-amp ánh xạ phạm vi D / A thành [-3.3V: + 3.3V], cho phép thiết bị cung cấp toàn dải của thành phần DC mong muốn. Chúng tôi sẽ bỏ qua phép toán phân tích phiền phức và chỉ tập trung vào kết quả cuối cùng:

V_OUT (kênh B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (kênh A) = V_BIAS_A (+) - V_BIAS_A (-)

Bây giờ, phạm vi thành phần DC nằm trong phạm vi [-3.3V: + 3.3V].

Mạch tổng hợp - Các thành phần DC và đầu ra dạng sóng

Tại thời điểm này, chúng tôi có mọi thứ chúng tôi cần cho đầu ra thiết bị thích hợp - Điện áp phân cực (thành phần DC) trong dải điện áp đầy đủ và đầu ra AD9834 được ghép nối. Chúng tôi sẽ biến điều đó thành hiện thực bằng cách sử dụng bộ khuếch đại tổng hợp - cấu hình op-amp

Hãy bỏ qua toán học một lần nữa (Chúng tôi đã đề cập đến rất nhiều phương pháp toán học rồi) và viết ra kết quả cuối cùng của đầu ra của bộ khuếch đại tổng hợp:

V (đầu ra thiết bị) = V (phân cực dương) - V (phân cực âm) - V (đầu ra ghép kênh) [V]

Kể từ đây:

V_OUT = ΔV_BIAS - V_AD9834 [V]

Đầu nối đầu ra của loại BNC được kết nối với một điện trở lựa chọn (R54, R55; R56, R57). Lý do là trong trường hợp thiết kế đó có thể bị rối loạn chức năng, chúng tôi vẫn có thể chọn nếu chúng tôi muốn sử dụng bộ khuếch đại tổng hợp.

Lưu ý quan trọng: Mạng điện trở của bộ khuếch đại tổng cuối cùng có thể được điều chỉnh bởi nhà thiết kế, để thay đổi biên độ tối đa có thể được truy xuất từ thiết bị. Trong trường hợp của tôi, tất cả các amps đều có chung độ lợi = 1, do đó biên độ bộ đệm tối đa là 0,7Vpp cho sóng tam giác / sin và 3,3Vpp cho sóng vuông. Phương pháp toán học cụ thể có thể được tìm thấy trong số các hình ảnh đính kèm của bước.

ESP32 làm mô-đun bên ngoài

MCU giao tiếp với ESP32 thông qua giao diện UART. Vì tôi muốn có PCB của riêng mình cho ESP32, nên có 4 thiết bị đầu cuối có sẵn để kết nối: VCC, RX, TX, GND. J7 là đầu nối giao diện giữa các PCB và ESP32 sẽ được phân bổ làm mô-đun bên ngoài bên trong thiết bị.

Giao diện người dùng - LCD và loa

Màn hình LCD được sử dụng là màn hình hiển thị ký tự 20 x 4 chung với giao diện 4 bit, Như có thể thấy từ thiết kế, có một chiết áp kỹ thuật số SPI được gắn vào các đầu cuối LCD "A" và "V0" - mục đích của nó là để điều chỉnh độ sáng và độ tương phản của mô-đun LCD theo lập trình.

Loa cung cấp đầu ra âm thanh cho người dùng bằng cách tạo sóng vuông đơn giản từ MCU. BJT T1 điều khiển dòng điện qua loa có thể chỉ ở hai trạng thái - BẬT / TẮT.

Bước 5: Thiết kế phần cứng - Mô-đun ESP32

Thiết kế phần cứng - Mô-đun ESP32
Thiết kế phần cứng - Mô-đun ESP32

ESP32 được sử dụng như một mô-đun bên ngoài cho PCB chính. Giao tiếp thiết bị dựa trên các lệnh AT, có sẵn trên chương trình cơ sở của một thiết bị chung.

Không có nhiều điều để mở rộng về thiết kế này, nhưng có một số lưu ý cho thiết kế:

  • Để xử lý lỗi khi sử dụng mô-đun UART thích hợp của ESP32, tôi đã gắn ba điện trở lựa chọn cho cả dòng TX và RX. (0Ohm cho mỗi cái). Đối với cấu hình tiêu chuẩn, mô-đun UART2 được sử dụng cho các lệnh AT (R4, R7 phải được hàn)
  • Thiết bị có đầu ra 4 dòng - VCC, GND, TX, RX.
  • Các chân IO0 và EN đánh giá hoạt động của thiết bị và nên được thiết kế như nó được cung cấp trong sơ đồ

Tất cả các tính năng của PCB chúng tôi sẽ đề cập trong bước sau.

Bước 6: Bố cục PCB

Bố cục PCB
Bố cục PCB
Bố cục PCB
Bố cục PCB
Bố cục PCB
Bố cục PCB

Mục tiêu của việc thiết kế PCB

  1. Tạo hệ thống nhúng cho tất cả các mạch tích hợp trên cùng một bảng
  2. Cải thiện hiệu suất thiết bị thông qua thiết kế một PCB chính duy nhất
  3. Giảm chi phí - nếu bạn muốn tra cứu giá, các thiết kế giá rẻ THỰC SỰ là chi phí thấp
  4. Giảm thiểu kích thước bảng điện tử
  5. Dễ dàng khắc phục sự cố - Chúng tôi có thể sử dụng TPs (Điểm kiểm tra) cho mỗi đường dây có thể bị trục trặc.

Các thông số kỹ thuật

Cả hai PCB: main và ESP32 đều có chung đặc điểm cho quá trình sản xuất - chi phí thấp và có thể hoạt động cho các mục đích của chúng tôi. Hãy xem chúng:

A - Bảng chính

  • Kích thước: 10 cm x 5,8 cm
  • Số lớp: 2
  • Độ dày PCB: 1,6mm
  • Khoảng trống / chiều rộng tối thiểu: 6/6 triệu
  • Đường kính lỗ tối thiểu: 0,3mm
  • Đồng đến các cạnh của PCB khoảng cách tối thiểu: 20mil
  • Hoàn thiện bề mặt: HASL (Màu bạc đẹp, loại rẻ)

B - Bảng chính

  • Kích thước: 3cm x 4cm
  • Số lớp: 2
  • Độ dày PCB: 1,6mm
  • Khoảng trống / chiều rộng tối thiểu: 6/6 triệu
  • Đường kính lỗ tối thiểu: 0,3mm
  • Đồng đến các cạnh của PCB khoảng cách tối thiểu: 20mil
  • Hoàn thiện bề mặt: HASL

Bước 7: Bao vây 3D

Bao vây 3D
Bao vây 3D

Tôi đã không tự mình thiết kế nó, bởi vì vào thời điểm đó tôi đang thuyết phục thiết bị này hoạt động, vì vậy tôi không biết tất cả những điều cơ bản về in 3D. Vì vậy, tôi đã sử dụng một dự án SCAD từ Thingiverse và gắn các khẩu độ khác nhau vào các ranh giới, theo thông số kỹ thuật của thiết bị của tôi.

  1. Thiết bị in: Creality Ender-3
  2. Loại giường: Kính, độ dày 5mm
  3. Đường kính sợi: 1,75mm
  4. Loại sợi: PLA +
  5. Đường kính vòi: 0,4mm
  6. Tốc độ ban đầu: 20mm / giây
  7. Tốc độ trung bình: 65mm / giây
  8. Hỗ trợ: N / A
  9. Đổ đầy: 25%
  10. Nhiệt độ:

    • Giường: 60 (oC)
    • Vòi phun: 215 (oC)
  11. Màu sợi: Đen
  12. Tổng số khẩu độ: 5
  13. Số tấm bao vây: 4

    • Vỏ hàng đầu
    • Vỏ đáy
    • Bảng điều khiển phía trước
    • Bảng điều khiển phía sau

Bước 8: Triển khai phần mềm - MCU

Triển khai phần mềm - MCU
Triển khai phần mềm - MCU
Triển khai phần mềm - MCU
Triển khai phần mềm - MCU
Triển khai phần mềm - MCU
Triển khai phần mềm - MCU

Liên kết GitHub tới Android và Mã Atmega32

Thuật toán phần mềm

Tất cả các hoạt động được thực hiện bởi MCU, được mô tả trong sơ đồ đính kèm. Thêm vào đó, có một mã đính kèm cho dự án. Hãy đề cập đến các thông số kỹ thuật của phần mềm:

Tăng sức mạnh

Ở giai đoạn này, MCU thực hiện tất cả các trình tự khởi tạo cùng với việc xác định loại giao tiếp được lưu trữ với thiết bị Android: Giao tiếp mạng WiFi hoặc WLAN trực tiếp - dữ liệu này được lưu trữ trong EEPROM. Người dùng có thể xác định lại kiểu ghép nối thiết bị Android ở giai đoạn này.

Ghép nối thiết bị Android trực tiếp

Kiểu ghép nối này dựa trên việc tạo mạng WiFi bởi thiết bị FuncGen. Nó sẽ tạo AP (Access Point) và một máy chủ TCP trên IP thiết bị cục bộ với một SSID cụ thể (tên mạng WiFi) và một số cổng cụ thể. Thiết bị phải giữ trạng thái - mở cho các kết nối.

Khi thiết bị Android được kết nối với FuncGen, MCU sẽ chuyển sang chế độ ACTIVE và phản hồi theo hướng dẫn của người dùng từ thiết bị Android.

Ghép nối mạng WLAN

Để giao tiếp trên mạng WiFi cục bộ, MCU phải cung cấp các lệnh để ESP32 tạo AP, giao tiếp với thiết bị Android và trao đổi dữ liệu mạng quan trọng:

  • Thiết bị Android nhận từ FuncGen địa chỉ MAC của nó, lưu trữ nó trong bộ nhớ.
  • Thiết bị FuncGen nhận mẫu thiết bị Android đã chọn các thông số WLAN: SSID, loại bảo mật và Mật khẩu và lưu trữ nó trong EEPROM.

Khi các thiết bị thực sự được kết nối với cùng một mạng WLAN, thiết bị Android sẽ tìm kiếm FuncGen bằng cách quét tất cả địa chỉ MAC của các thiết bị được kết nối với mạng WLAN. Khi thiết bị Android xác định MAC phù hợp, nó sẽ cố gắng giao tiếp.

Kết nối và Xử lý trạng thái - MCU

Khi các thiết bị giao tiếp với nhau, giao thức (Xem bước trước khi kết thúc) vẫn giữ nguyên và lưu đồ cũng vậy.

Giám sát trạng thái thiết bị

Ngắt định thời cung cấp cho MCU các chi tiết cần thiết để xử lý trạng thái. Mỗi chu kỳ ngắt bộ định thời, danh sách các tham số sau được cập nhật:

  • Nguồn điện bên ngoài - Bật / Tắt
  • Trạng thái điện áp pin
  • Cập nhật giao diện người dùng cho mỗi tùy chỉnh
  • Nút nhấn: Được nhấn / Không được nhấn

Bước 9: Triển khai phần mềm - Ứng dụng Android

Triển khai phần mềm - Ứng dụng Android
Triển khai phần mềm - Ứng dụng Android
Triển khai phần mềm - Ứng dụng Android
Triển khai phần mềm - Ứng dụng Android
Triển khai phần mềm - Ứng dụng Android
Triển khai phần mềm - Ứng dụng Android
Triển khai phần mềm - Ứng dụng Android
Triển khai phần mềm - Ứng dụng Android

Ứng dụng Android được viết theo phong cách Java-Android. Tôi sẽ cố gắng giải thích nó theo cách tương tự như các bước trước - bằng cách chia thuật toán thành các khối mã riêng biệt.

Tăng sức mạnh cho trình tự

Trình tự đầu tiên của thiết bị. Ở đây biểu trưng ứng dụng được trình bày cùng với việc kích hoạt các mô-đun GPS và WiFi của thiết bị Android (Đừng lo lắng, GPS chỉ cần thiết để quét các mạng thích hợp WiFi).

Thực đơn chính

Sau khi ứng dụng được khởi động, bốn nút sẽ xuất hiện trên màn hình. Các nút hành động:

  1. KẾT NỐI TRỰC TIẾP: Khởi tạo kết nối với AP của FuncGen bằng SSID của IOT_FUNCGEN. Nếu kết nối thành công, thiết bị sẽ chuyển sang chế độ giao diện người dùng chính.
  2. KẾT NỐI WIFI: Thiết bị kiểm tra xem có các thông số dữ liệu được lưu trữ trong bộ nhớ hay không: wifi.txt, mac.txt. Nếu không có dữ liệu nào được lưu trữ, thiết bị sẽ từ chối yêu cầu của người dùng và cung cấp thông báo bật lên rằng việc ghép nối WLAN phải được thực hiện trước.
  3. PAIRING: Giao tiếp với FuncGen theo cách tương tự như KẾT NỐI TRỰC TIẾP, nhưng thay vì trao đổi tin nhắn liên tục, chỉ có một cái bắt tay. Thiết bị Android kiểm tra xem nó đã được kết nối với mạng WiFi chưa và yêu cầu người dùng nhập mật khẩu. Nếu kết nối lại thành công, thiết bị Android sẽ lưu trữ SSID và mã khóa trong tệp wifi.txt. Sau khi giao tiếp thành công với FuncGen, nó sẽ lưu trữ địa chỉ MAC đã nhận trong tệp mac.txt.
  4. Thoát: Nói đủ rồi:)

Trình quản lý quét WiFi

Tôi muốn ứng dụng hoạt động hoàn toàn và không cần thực hiện các điều chỉnh ngoài ứng dụng. Vì vậy, tôi đã thiết kế WiFi Scanner, thực hiện tất cả các hoạt động cần thiết để kết nối với mạng WiFi bằng mã khóa và SSID đã biết.

Truyền dữ liệu và giao tiếp TCP

Đây là khối mã chính trong ứng dụng. Đối với tất cả các đơn vị giao diện người dùng, có một thông báo xác định ở một định dạng cụ thể (Bước tiền cuối cùng), buộc FuncGen phải cung cấp đầu ra mong muốn cho các kênh. Có ba loại trường giao diện người dùng đang hoạt động:

  1. Tìm kiếm thanh: Ở đây chúng tôi xác định phạm vi thực của các tham số đầu ra FuncGen

    1. Biên độ
    2. Dc bù đắp
    3. Độ sáng màn hình LCD
    4. Độ tương phản lcd
  2. Chỉnh sửa văn bản: Để giữ cho các giá trị số nguyên được xác định rõ ràng và chính xác, việc nhập tần số được thực hiện thông qua các hộp văn bản chỉ số
  3. Các nút: Lựa chọn các tham số từ danh sách có sẵn:

    1. Dạng sóng

      1. Sin
      2. Tam giác
      3. DC
      4. Quảng trường
      5. TẮT
    2. Nhận thông tin

      1. Trạng thái pin (Phần trăm)
      2. Trạng thái AC (Nguồn điện bên ngoài)
    3. Tùy chọn khởi động (Đối với FuncGen MCU)

      1. Cài đặt nhà máy
      2. Khởi động lại
      3. Tắt
      4. Trực tiếp - Khởi động lại với chế độ ghép nối trực tiếp
      5. WLAN - Khởi động lại với chế độ ghép nối WLAN
    4. Thoát ra Menu chính: Đã nói đủ:)

Bước 10: Kiểm tra

Đề xuất: