littlebot
Published on 2025-04-15 / 1 Visits
0

【源码】基于C++和Python的星空指向系统

项目简介

本项目是一个结合了STM32嵌入式系统与PC端应用程序的星空指向系统,采用C++和Python编程语言开发。通过WiFi通信,PC端接收用户输入的待观测星体信息并发送给STM32。STM32依据接收到的数据,利用磁力计获取设备方向信息,进而控制步进电机和舵机,使星空指向器准确指向目标星体。

项目的主要特性和功能

  1. WiFi通信:实现PC与STM32之间的数据实时交互。
  2. 磁力计功能:读取设备的偏航角、俯仰角和翻滚角等方向信息。
  3. 电机控制:根据接收到的数据控制步进电机和舵机转动,实现星空指向。
  4. 校准重置:提供磁力计校准和设备重置功能,保障数据准确和设备正常运行。
  5. 用户交互:PC端通过GUI界面,允许用户输入待观测星体名称。

安装使用步骤

环境准备

确保PC和STM32连接到同一WiFi网络。

PC端操作

  1. 复制skypointer_pc文件夹。
  2. 安装所需库: bash pip install -r requirements.txt
  3. 配置WiFi:
    • 修改main.py中的IP地址为PC的IP地址: python HOST = "YOUR_IP_ADDRESS" PORT = YOUR_PORT
    • 修改source/my_wifi.h中的端口地址为套接字监听的端口: c++ static constexpr size_t REMOTE_PORT = YOUR_PORT;
  4. 运行程序: 运行main.py,程序开始监听端口,等待来自微控制器的数据,此时会弹出GUI界面,在文本框中输入想要观测的星体并按回车键。

STM32端操作

  1. 复制skypointer_stm32文件夹。
  2. 配置WiFi:
    • 修改mbed_app.json中的WiFi SSID和密码: c++ "nsapi.default-wifi-ssid": "\"YOUR_WIFI_ID\"", "nsapi.default-wifi-password": "\"YOUR_WIFI_PASSWORD\"",
    • 修改mbed_app.json中的IP地址为PC的IP地址和端口: json "config": { "hostname": { "value": "\"PC_IP_ADDRESS\"" }, }
  3. 运行程序: 使用MbedOS 6编译程序,并下载到微控制器。

硬件连接

  1. 连接STM32与步进电机驱动器 | 步进电机驱动器 | STM32 | | ----- | ------------------ | | EN | D1 | | MS1 | D2 | | MS2 | D3 | | MS3 | D4 | | STEP | D10 | | DIR | D0 | | VDD | 5V | | GND(靠近VDD) | GND |
  2. 连接步进电机驱动器与步进电机 | 驱动器 | 步进电机 | | ----- | ------ | | 2B | 红色 | | 2A | 绿色 | | 1A | 蓝色 | | 1B | 黑色 | | STEP | D10 | | DIR | D0 |
  3. 连接舵机与STM32 | STM32 | 舵机 | | ----- | ----- | | D6 | 信号 | | 5V | VCC | | GND | GND |

使用方法

  1. PC端:在文本框中输入想要观测的星体,点击回车键。若星体不在数据库中,指向器将指向北极星。
  2. STM32端
    • 设置:WiFi套接字连接成功后,橙色LED亮起;校准完成后,LED 3亮起。校准过程中请勿移动微控制器。
    • 重新校准:若需要重新校准微控制器,按下微控制器上的用户按钮。请在平坦表面进行校准。
    • 观测:校准完成后,可在PC端文本框中输入想要观测的星体并点击回车键,星空指向器将指向目标星体。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】