一群来自23区和24区的业余卫星爱好者
        写了很久,感觉功能完整多了,谢谢BI4WNN, BD7LSB。
        增加串口连接指示,第一个1为USB0,接收电台,没有连接为1,连接为0,第二个1为USB1,发射电台,,没有连接为1,连接为0,第3个0为旋转器,没有连接为1,连接为0,实际意思只是表达打开了串口,不一定连上旋转器,USB也是,连上USB转TTL,只能说明,不能说明连上电台。tcp 连接后sx命令(顺序sx,拼音缩写)是指,把排序好的星历发送到手机,
          虽然代码比较乱,但是感觉功能上已经很完整,因为python的TK原来的界面代码没有删除,只要设置个判断,就可以自动在WIN和ubuntu启用,代码可以在树莓用,也可以在WIN7用,也可以在UBUNTU用。理论可以在LIVECD用,不过WIN7下和ubuntu下python模块不知道能不能安装上, 这个树莓派 WIN7 UBUNTU 三平台,卫星多普勒旋转器控制,测试继续,python语言的多平台移植,确实很强大。
          树莓可以挂上2角度传感器,和4个小LED等,模仿BHC 12年那个arduino手持追星校正方向用,程序加载这个代码里也很简单。
          2017.6.24

一切源于网络,一切回归网络,python业余断断续续看了1个多月,在BI4WNN和BD7LSB的样例代码下,抄袭网上其他牛人的代码,结合自己写过的易语言控制软件思路,现在做出来了,树莓基于HAMLIB,电台频率控制还未测试太多,因为自己的USB转232效果不佳,没有继续实验,不过理论可以使用。
树莓控制GS232B的旋转器没有使用HAMLIB提供的rotctld旋转器控制,因为那个会有延迟很厉害的BUG,现在自己简单的写了,最大仰角限制65度,保护旋转器,当然如果控制云台,加入秒时间来控制云台转动多少度理论也可以实现,不过不知道会不会有人用。
树莓在执行这个脚本之前必须:1.安装hamlib ,可能会有lib库缺少,导致安装困难,需要安装lib,没有树莓教程,但是hamlib有英文文档
看到那几个命令和其他软件一样的安装方法./configure 或者 make会有lib库的缺少,这个得注意,我安装的是2010年的版本,好wheel  jess的树莓都装上过,都有lib库的缺少情况安装比较慢,最少1个小时.2.安装模块如下,里面很多可能树莓python自带,也可能没用上,但我还是先提醒一下,3自动启动的sh脚本可以借鉴我附件anjian_jiaoben (放到/etc/init.d/)和kaiji.sh,  脚本autowifi.py是防止自动断网的,树莓B会出现这个问题。4.附件所有文件除了anjian_jiaoben都放pi目录下。5.DS3212模块自己琢磨,kaiji.sh会启动.6.关闭树莓自带串口的调试输出,在raspi-config里设置,因为使用的这个串口控制RS232B协议旋转器。
配置文件myapp.conf 中 jingdu=106.7583   weidu=33.1175    gaodu=555   为自己所处位置的经纬度,高度(米)。
电台设置:下行xiaxing=340(电台型号rigctl -l 命令查询得知)xiaxing_b=9600  (波特率)xiaxing_icom=08(icom机器地址必写,其他机器写了也不影响)xiaxing_win_com=com11(win平台下行串口,树莓派下USB0,随便插会试验出,)上行设置含义一样。

import chardet
import socket,serial
import ephem
import os,sys
import threading
import time,calendar
import string
import math
import  datetime
from pyorbital import tlefile
from pyorbital.orbital import Orbital
import BG4WNN_tle
import sqlite3
import subprocess
import traceback
import codecs
import Queue
import select
import logging

import ConfigParser

脚本的特点:1.野外使用,必须用安卓手机给树莓一个IP地址,否则树莓会不停重启程序,并且会写入2个日志文件,我做了2个日志文件,是出于实验,脚本有错误产生后,自动重新启动脚本,无需担心死机,即便真的死机可以,使用压缩文件reboot.py按键硬件重启树莓派。
2.可以加角度传感器,只要增加简单代码和GPIO LED灯指示,就可以实现卫星角度判断,绑在八木上,校正八木指向用,也可以接入发射电台Key,增加一个GPIO按钮,设置自动呼叫功能,不过代码我还没想好。
3,因为是win ,ubuntu 树莓派三个平台可以用,但ubuntu下需要做简单设置,并安装所需要python模块, WIN7下也可以启动,也必须安装需要python模块,另外得手动修改串口号,默认的是COM11是接收机,COM7.是发射机.
4.脚本使用SQLiteStudio(win7上的电脑软件)修改频率数据库,因为是2种星历对应2种频率数据库,而ao73 dk3wn星历没有,紫丁香1amsat星历没有。amsat对应s.db,dk3wn网站星历对应dk3wn.db ,使用数据库,因为自带的排序查找非常方便,这个频率数据库是提供的每个卫星的频率计算,如果当星历中有新卫星时,可以手动增加它的频率,当星历的卫星名称改变时,也必须修改这个频率数据库,因为排序脚本会使用这个名称.
5.野外使用配合安卓手机,使用压缩文件提供的apk串口调试来下达指令给树莓派,使用前需要把这个手机调试程序的文字编码调到utf8,因为脚本中文输出是utf8.tcp连接1111端口做主控制,UDP连接1333做自动显示状态用(注意UDP的电脑地址,包括手机地址需要提前在myapp.conf修改,因为UDP广播还未学习透彻),如果在电脑上调试,首先进入路由器查看树莓IP地址,比如我的192.168.1.100.进入SSH后,输入:nc 192.168.1.1.100 1111进入TCP连接状态,输入:nc -lu 1333,进入UCP 接收状态显示。

TCP连接后,命令如下:一.切换星历:输入am(amsat星历) 输入dk(dk3wn网站星历)
二.卫星过境排序:输入px(排序)(每次切换星历后必须键入一次px,否则因为切换星历后没有数据,可能会出错) 。
三.显示卫星时间过境顺序,sx(顺序).
四.按照这个过境时间的数字序号,输入1到14等,会切换到该卫星,
五.TCP下输入:hx(回显),自动不停的回显卫星和旋转器状态.
六. 当输入hx后,要停止回显,输入gb就可以(但这个我没弄好,也是不足之处,有时无法关闭)
七 .输入wz(位置):会显示当前旋转器位置.
八.比如输入:sz 103.222 32.1111 555        (设置)sz(空格)经度(空格)维度(空格)高度(米)为改变卫星计算的本地经纬度,不过地点不变的话,建议修改目录下的配置文件。
九.输入help:显示简单的帮助提示。
6。树莓的GPIO接口,18,17 各连接1个LED二极管到地线, 一个是TCP,UDP连接正常,会闪烁显示,一个是卫星计算和旋转器,电台控制的连接正常,会闪烁显示,出现故障时,用于判断故障,实际现在具备故障后自动重启脚本,这个可能有点多余,不过留着好看,  GPIO   7  8  25是三个按钮 对地线连接,是扫频和微调发射机用按钮,一个按钮是扫频按下,就可以用接收机滚轮带动发射机扫描线性卫星转发器其他友台CW或者SSB频率,还有二个按钮是当卫星过境时多普变化厉害,导致需要微调发射机上下频率,这样自己的上行会落在自己的下行上。也就是上,下微调发射机频率,这个功能待实验和继续完善。
特别之处是:我的旋转器是朝南安装,俄罗斯和欧洲方向可以自由转,345到360盲区在南,因为南边台少,所以TCP显示旋转器水平位置和卫星水平方向做了180度加减,根据自己旋转器安装,需要稍微注销掉我呼号横线标注的那段,shuipin1=shuipin就可以了。
这个脚本一直全天开着,是不依赖电脑,控制旋转器旋转,按照树莓对卫星排序的第1个过境卫星进行旋转,过境仰角0度或1度很低仰角的卫星也会自动追踪的,在300秒后进行卫星过境排序,当卫星距离自己位置小于10分钟时,不会进行排序,所以间隔5分钟内的卫星可能会漏掉,需要用手机看下,按数字进行选择卫星,还有一个关键处,脚本和数据库要chmod 777权限,否则出现错误,而且如果要增加代码,建议初学者使用pycharm,不然随便增加代码可能引起缩进改变,导致一些莫名其妙的错误。树莓温度监测是60度以上自动关机。
另外树莓也有缺陷是,工作不够稳定,在公地的电台启动时,会发生自动重启,但在控制旋转器时,未见发射机造成死机

 

 

 

https://pan.baidu.com/s/1o7Y4XVO
7.10更新(增加GPIO18继电器控制电台,指定卫星比如ISS过境 接收APRS,增加一个总星历,无需换星历了)
https://pan.baidu.com/s/1nvQG7MD
myapp.conf 中ip项目是TCP连接树莓时的IP地址是选择树莓派网线网卡地址eth0 还是无线网卡地址wlan0    继电器jidianqi= 选择的卫星,斜杠分开, 当卫星过境,控制继电器 GPIO 18,数据库shujuku 为所编辑的卫星频率数据库。
7.16更新,解决无法开机自动启动,自动下载3个星历合并为1个,并且每个星历时间最新,增加usbGPS模块,10秒更新一次给主程序计算用,开机的更新经纬度和高度会存入myapp.conf,可以任意变更地点,支持型号好像可以从执行命令行:gpsd -l得到,GPS串口设置在myapp.conf中,主程序wx-wanmei.py 链接: https://pan.baidu.com/s/1eR2YsF4 密码: 1cpj

树莓类似星载计算机,估计卫星计算机应该也类似这样,当然树莓,比美国登月时的星载计算机强大N多倍了,现在火箭和卫星,进入轨道后的计算可能都是靠GPS或者北斗的导航来定位自己的经纬度的,不然不可能准确计算出自己的位置,GPS和北斗一直是大国发展的首要。

7-18更新,因为ephem是写好的类,所以使用多线程很容易出现很多问题,改进地方,减少多线程操作zhuxiancheng() 计算,尽可能了放一个循环,减少很多严重错误,配置文件中myapp.conf  xianshi=no,可以把后台时的print 关闭,减少CPU资源。我的开机启动文件从aprs-afsk.py启动,里面有自动创建虚拟内存文件夹ram的代码,复制所有文件到这个文件夹,减少对内存卡损害,aprs-afsk.py懒得在修改,就这样吧。链接: https://pan.baidu.com/s/1skAJ6fb 密码: u4qt

分享到您的社交平台:

发表评论: