论坛风格切换切换到宽版
  • 6157阅读
  • 6回复

树莓派的卫星角度计算和旋转器控制,电台频率控制的python(初级水平) [复制链接]

上一主题 下一主题
离线BG9AGZ
 
发帖
285
只看楼主 倒序阅读 0楼 发表于: 2017-06-24


           一切源于网络,一切回归网络,python业余断断续续看了1个多月,在BI4WNN和BD7LSB的样例代码下,抄袭网上其他牛人的代码,结合自己写过的易语言控制软件思路,现在做出来了,树莓基于HAMLIB,电台频率控制还未测试太多,因为自己的USB转232效果不佳,没有继续实验,不过理论可以使用。
          树莓控制GS232B的旋转器没有使用HAMLIB提供的rotctld旋转器控制,因为那个会有延迟很厉害的BUG,现在自己简单的写了,最大仰角限制65度,保护旋转器,当然如果控制云台,加入秒时间来控制云台转动多少度理论也可以实现,不过不知道会不会有人用。
          树莓在执行这个脚本之前必须:1.安装hamlib 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度以上自动关机。
       另外树莓也有缺陷是,工作不够稳定,在公地的电台启动时,会发生自动重启,但在控制旋转器时,未见发射机造成死机                                                                  .
6.26更新:https://pan.baidu.com/s/1o7Y4XVO

最后,欢迎喜欢折腾的人折腾,交流脚本思路。
DE BG9AGZ  73!



[ 此帖被BG9AGZ在2017-06-26 07:00重新编辑 ]
离线爱不交租
发帖
12236
只看该作者 1楼 发表于: 2017-06-24
离线BD4OS
发帖
6198
只看该作者 2楼 发表于: 2017-06-26
我是小白请教树莓派是不是只支持到2.7?或者需要自己安装Python3解释器?
另外用什么封装Python3.6源码成exe,pyinstall支持的3.6版还没放出来,py2exe又不支持版本3。
离线BG9AGZ
发帖
285
只看该作者 3楼 发表于: 2017-06-26
回 BD4OS 的帖子
BD4OS:我是小白请教树莓派是不是只支持到2.7?或者需要自己安装Python3解释器?
另外用什么封装Python3.6源码成exe,pyinstall支持的3.6版还没放出来,py2exe又不支持版本3。 (2017-06-26 08:02) 

树莓派操作系统很多,我用的是Raspbian  Jessie,jessie python 2.7是落后电脑版本,为了稳定,后面问题我不懂。
离线BG3MBB
发帖
1072
只看该作者 4楼 发表于: 2017-06-28
记号 学习了
qq: 88971158 GRID:om68ik
离线bg8ohj
发帖
163
只看该作者 5楼 发表于: 2019-05-22
最近也在玩树莓派,对着实例做做看,本人小白
有个项目wxtoimg 气象云图的
原来的安装路径变了,文件包是xx.tag.gz的,已下载
也尝试了

tar zxvf xx.tar.gz

只能解压到/home/pi 下面,可见两个文件夹/etc 和/bin
也没找到 可以make的文件

请问 需要su root?还是?
呼号:BG8OHJ
QTH:贵州贵阳
E-mail:brightnet@qq.com
离线bg8ohj
发帖
163
只看该作者 6楼 发表于: 2019-05-22
回 bg8ohj 的帖子
bg8ohj:最近也在玩树莓派,对着实例做做看,本人小白
有个项目wxtoimg 气象云图的
原来的安装路径变了,文件包是xx.tag.gz的,已下载
也尝试了
....... (2019-05-22 10:28) 

已搞定,换了个源
https://wxtoimgrestored.xyz/downloads/wxtoimg_2.10.11-1_i386.deb
呼号:BG8OHJ
QTH:贵州贵阳
E-mail:brightnet@qq.com