首页 > 平台 > Hackaday.io上的树莓派项目-KAPCOM

Hackaday.io上的树莓派项目-KAPCOM

Hackaday.io上的树莓派项目-KAPCOM
关于项目
项目描述:还有一个用于 Kerbal 太空计划的硬件控制器。利用 Telemachus、Python 和 Arduino 驱动操纵杆、按钮和显示器,用于输入线线飞行控制和遥测数据的输出。其理念是使事物模块化且可重用,以便其他人可以出于自己的目的重用组件,而无需重新发明轮子。但是,这是仅用于 KSP 的单个专用控制器。我预计不会轻易将此返工到一般使用控制器。
项目图片
项目详情
状态:生产中的机柜
我正在创建一个控制台/模拟控制Kerbal太空计划。尽可能,我希望这是键盘和鼠标控件的完全替代。虽然这个项目是为我,我试图使这个模块化和可配置的,为其他DIYers跟随我的脚步。
而不是一个简单的键盘模拟器,我将使用通过Telemachus API提供的无线飞行控制。我使用Thearn 的 Python-Arduino-Command-API的经过大量修改版本,通过串行发送读/写请求,将遥测和线线数据从 Arduino 传输到 Python 脚本和 602p 的 pyksp 模块,用于从 Python 通信到 Kerbal 空间计划。
我使用 Arduino Mega 2560 作为我的控制器, 因为它有更大的 Io 引脚数量。这让我无需多路复用的女儿板。我创建了一个基本的屏蔽,它提供了方便的引脚连接杜邦电缆,将运行到每个组件。其中一张照片显示,从该板到操纵手柄的 6 针连接器运行。这提供了 4 个信号引脚以及 +5v 和 GND。
我开始使用带导电漆的原板,但那非常不可靠。我最终移动到焊接痕迹,最后移动到一个制造的PCB。我用 Fritzing 来设计板, 并上传到我的 Github 存储库。我从见工作室融合订购我的PCB。这是我第一次设计和订购PCB,但它很简单,它出来很好。
以下是工作工作和计划概述:
 Arduino与克巴尔空间计划之间的交流
用于暂存和中止的受保护输入
API 按钮
双操纵杆
非 API 按钮
触发按键
油门
指示灯指示灯
从文件进行配置
可以从文件中读取 JSON
使用此数据为硬件创建对象
7 段显示
Python 类完成并测试
已测试硬件
LED 指示灯显示屏
Python 类完成并测试
背包组装
已测试硬件
完整硬件测试
按钮中更换的 LED 和电阻器
将所有线束焊接到按钮上
修复了原板上的不良痕迹
将所有控件和显示器安装在新鞋盒中
经过测试和工作
用于检查依赖项的设置脚本
印刷多氯联苯
到达并组装
安装和测试
板载树莓派 + Wifi + 电池
树莓派2
可充电电池
通过协同力控制鼠标的轨迹球
多个 Arduino 支持
一台计算机来处理多个设备
UUID 标识的每个
多模式支持
重新映射漫游车、EVA 等的控件和显示
创建 JSON 配置文件的配置向导
显示用于显示配置的显示
触摸屏上的 SpaceX 龙一样?
使用触摸屏以 SpaceX 样式显示选项
与阿波罗时代的技术更适合整体美学
选项:
选择显示的数据
选择显示格式
更改模式
界面使用 Flask 基于 Web
可能使用智能手机作为显示器
1 X  Arduino巨无霸 2560
2 X 4 轴操纵手柄
4 X 8 位七段 LED 显示屏
1 X 双行 4 位七段 LED 显示屏
5 X 双色 24 条杆带 I2C 背包
6 X LED 照明按钮
2 X 切换开关和盖 - 照明(绿色和红色)
2 X 6 针杜邦跳线
1 X 10x 5 针杜邦跳线
1 X 10x 4 针杜邦跳线
3 X 10x 3 针杜邦跳线
1 X 200x 20cm 公男性杜邦跳线
1 X 15x 40 针公头
1 X 大红色按钮
1 X 大绿色按钮
1 X 10x 小绿色按钮
1 X Wombat 原型板
1 X 树莓派2
1 X Wifi 加密狗
1 X SD 卡
1 X 电池组
这个项目没有死。自从我上次发帖以来发生了很多事 (最明显的是新生儿!我想打印我的控制器的油门, 所以这似乎是一个明显的选择, 打印它。经过几个原型和几个重新设计后,它发展得很好。这是一个7部分的构建,包括一个底盘,一个盖,两个控制臂,一个手柄和两个端盖。Vex 电位计适合我内置在机箱中的支柱,因此它大多没有工具。
我仍然在等待一个零件, 我必须重新打印手柄多一点间距。之后, 我可能会采取裂缝打印控制台的车身面板, 而不是试图削减有机玻璃。
我一直在提出一个相当重大的努力,以清理代码和消除潜在的问题。我已经集成了 Travis - ci 和 Coveralls, 并开始使用 py. test 创建测试。到目前为止, 我已经达到 20% 的覆盖率, 即使这些测试是相当 "轻" 的实际测试。我还集成了一些代码分析的量化代码,因此我一直在修复这些问题,并使存储库 PEP8 符合要求(至少尽可能多,PyCharm 正在发现一些非问题的问题)。
我仍在调查 Pex 和裤子作为可能的交付机制。我有点难过, 他们似乎不支持 Windows 。特别是因为 Windows 用户不太可能有 CLI 体验,并且自包含文件会很好。
我刚刚在 Github 上标记并发布了 v0.9.0 。这与我本月早些时候做的视频系列相关。完成之后,我将其活动开发分支合并到主服务器中,为 v0.9.1 做好准备
下一个版本将主要涵盖我做的东西, 因为这些视频。此处的地标性功能是 Web UI。引擎盖下也有很多变化和改进。我的目标是月底。繁忙的工作日程和家并没有给我很多机会,以工作最近。我想在发布之前测试一下我工作的东西。
弗拉斯克, API, AJAX, jQuery
我一直在坚实的黑客在 Kapcom 的网络 Ui 。这将提供一个仪表板,用于在配置模式之间切换以及动态重新配置显示器。到目前为止,我有一个功能齐全,但不是很漂亮的仪表板,我有一个正在进行中的配置编辑器。
我选择使用 Flask 来提供静态页面,该页面利用 jQuery 通过 API 将 AJAX 请求发送回 Flask,然后 API 从 KAPCOM 对象查询数据。我也扔了一些图表
听起来很复杂,但真的没那么糟。它使整个事情非常动态和加载没有页面刷新。在幕后,我不得不做一些工作,使KAPCOM线程化,并提供一种与它交互的方式,使WebUI将工作在所有。我的 Ajax 和 jQuery 在边缘绝对是粗糙的, 但我越来越熟悉, 因为我去。
总的来说,我对它如何出来很满意。我应该能够在接下来的一天左右完成配置编辑器。完成后,我会花一些时间来完善仪表板,让其看起来非常接近 SpaceX 界面。
仪表板:
配置编辑器:
今晚我得到了一切工作, 以支持多个 Arduinos 和多个控制模式。可能是我处理过的最困难的事情, 只是因为数据结构变得多么复杂。现在一切都在工作。肯定需要大量的测试与多种配置模式,但这将是随着时间的推移。
无论如何,我得到了这一切与树莓PI工作,所以我现在有一个功能无线控制器!
接下来,我可能会看看创建一个基于Web的配置器/查看器。
我一直在修改配置和 Python 接受支持多模式和多个设备。这项工作仍在进行中,但它正在实现。
同时,我对Telemachus的更改刚刚被拉入最新的版本,所以简单的操纵杆映射很容易做到,即使没有我的自定义版本。
所以昨晚,我集思广益,想如何最好地完成多种配置模式,我正为如何实现操纵杆而苦苦挣扎。虽然它工作,它远不是优雅。每个"Joy.toString()"返回一个逗号分隔的轴列表:即-1,-1,-1 或 0,0,0 或 1,1,1 或介于两者之间的某样东西。由于 Telemachus API 只有"setYawPitchRollXYZ",因此我必须将两个响应聚合到单个 API 调用中。
它还不错, 但它使 "Joy0" 和 "Joy1" 特别雪花, 不像系统的其余部分那样容易互换。如果我想为太空飞机实现单独的控制,它必须是非常具体的代码,而不仅仅是重用我用于所有其他设备。
所以, 这让我思考: 也许我应该为此提出一个功能请求?可惜作者最近没真正活跃过。我决定搜索存储库,看看我是否不能反向工程我需要什么。它原来是存储库中的单个位置,因此我添加了两个单独的方法"设置态度[yaw、俯仰、滚动]"和"setTransation[x,y,z]",并提交了拉取请求。
这可能不是正确的做法,因为我没有测试它,但我把它放在那里,希望它有一天可能会拉。今天早上我醒来, 决定尝试我的手在建立一个模组。看到我没有这个经验,没有环境设置,我开始与Telemachus文档。我确实遇到了一些障碍。
在 Mac 上, 视觉工作室出去了。我选择了萨马林
您需要下载并安装Unity 4.6.5
不要使用单开发, 我不能得到它正确构建
您需要为应用程序安装 Ksp 的 Windows (KSP_Data从 Telemachus wiki 的第 2 步)
您可能能够从 KSP.app/内容/数据获取它,但这不是 100% 匹配。
生成后脚本仅是 Windows。
要么处理它,要么使用矮行星的修复
即使使用此修复程序,它似乎也不起作用 100%,因此请确保在复制 .dll 的 .dll 时,您会获得新建的修复程序。
我再说一遍, 检查. dll 的时间戳。我花了很长时间梳理代码, 当涉及到什么错误时, 我仍然使用旧版本。
无论如何,所有说和做,我能够成功地建立Telemachus从来源与我的新贡献。从现在开始,我将使用此生成,它将使计划模式输入的生活更加简单。
Sen
294次阅读
2020-08-27