• RainbowSoft Studio Z-Blog
  • RainbowSoft Studio Z-Blog
  • 本站支持WAP访问
  • 订阅本站的 RSS 2.0 新闻聚合
博主:虎子哥
电子邮件:flashindream[AT]gmail[DOT]com
略懂Flash的天文爱好者

ARM导星系统摆拍

Post by indream, 2010-6-10, Views:

嘿嘿

Tags: 自动导星  ARM 

ARM导星系统开发笔记(二)

Post by indream, 2010-6-6, Views:

今天给系统加入了串口通讯,可以发送字符指令控制Autostar。从Usart出来的电平需要先转换成TTL电平再能跟PC串口通讯。折腾大半天,终于搞定Autostar的连接线,实现整个回馈系统。

void USART_GPIO_Init(void){
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1 ,ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //推挽输出-TX
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入-RX
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  USART_Configuration();
}
void USART_Configuration(void){
   USART_InitTypeDef USART_InitStructure;
   USART_ClockInitTypeDef USART_ClockInitStructure;
   USART_StructInit(&USART_InitStructure);
   USART_ClockStructInit (&USART_ClockInitStructure);
   USART_ClockInit(USART1, &USART_ClockInitStructure);
   USART_Init(USART1, &USART_InitStructure);
   USART_Cmd(USART1, ENABLE);
}
void USART1_Puts(char * str)
{
    while(*str)
    {
        USART_SendData(USART1, *str++);
       while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
    }
}
Tags: 自动导星  ARM 

ARM导星系统开发笔记(一)

Post by indream, 2010-6-4, Views:

GetLightZone函数主要实现获取整个屏幕最亮的区域(通过按键中断调用), GetPixelPos函数在图像刷新之后获取锁定亮区域的星点中心坐标.

void GetLightZone(void){
  int i=0,j=0,ii=0,jj=0;
  long totalLight=0,maxLight=0,pixel=0;
 
  for(i=0;i<24;i++){
    for(j=0;j<32;j++){
        totalLight = 0;
        for(ii=0;ii<10;ii++){
            for(jj=0;jj<10;jj++){
                                pixel=GetLight(LCD_RD_PIXEL(i*10+ii,j*10+jj));
                totalLight+=pixel;
            }
        }
        if(totalLight>maxLight){
            maxLight=totalLight*1;
            posBlock[0] = (int)(i/3)*w;
            posBlock[1] = (int)(j/3)*w;
        }
    }
  }
}
void GetPixelPos(void){
  unsigned int  i=0,j=0,w2=w/2;
  unsigned long maxI = 0,maxJ=0,tempI=0,tempJ=0;
  for(i=0;i<w;i++){
    tempI = 0;
    tempJ = 0;
    for(j=0;j<w;j++){
        tempJ+=GetLight(LCD_RD_PIXEL(posBlock[0]+i,posBlock[1]+j));
        tempI+=GetLight(LCD_RD_PIXEL(posBlock[0]+j,posBlock[1]+i));
    }
    if(maxJ<tempJ){
        maxJ = tempJ;
        centerX=posBlock[0]+i;
    }
    if(maxI<tempI){
        maxI = tempI;
        centerY=posBlock[1]+i;
    }
  }
  posBlock[0]=centerX-w2;
  if(centerX<w2){
      posBlock[0]=0;
  }
  if(centerX>224){
      posBlock[0]=209;
  }
  posBlock[1]=centerY-w2;
  if(centerY<w2){
      posBlock[1]=0;
  }
  if(centerY>304){
      posBlock[1]=289;
  }
}

 这是用70mmF5抓取的星点,天蝎座某星

Tags: 自动导星  ARM 

开发基于ARM(CORTEX M3)自动导星系统

Post by indream, 2010-6-3, Views:

上周买了一块基于stm32的camera开发板,花了一周时间学习ARM.在多个嵌入式高手的帮助指导下,终于在昨晚理解了整个系统,今天终于实现了图像数据的采集功能.

图像采集的大问题已基本解决,接下来就是要开发通讯协议控制goto或者通过PWM控制电机驱动.哈哈

Tags: 自动导星  ARM 

基于Python for S60的自动导星程序(四)

Post by indream, 2010-3-10, Views:

今天又用手机导星系统拍了10几张照片,只有两张尚可,这两张均为天狼星作导星,用猎户座episode星(1.7等)做导星基本上有不规则运动.
除了导星的亮度问题还有一个是机械问题,好几次是因为相机在球台上滑动了位置,另外一个问题是程序自动关闭,初步判断是电量变化提醒造成的

600秒,镜头焦距210mm@f22,iso100

M41,600秒,镜头焦距210mm@f22,iso100


手机导星工作照

正面

Tags: PyS60  图像处理  自动导星 

基于Python for S60的自动导星程序(三)

Post by indream, 2010-3-9, Views:

很久没有在南方的三月份看见下雪了,这次冷空气也带来了久违的晴天.下班回家后就开始把flash版的自动导星程序移植到python,没花多少时间把程序调试运行在手机上.
终于到了实际拍摄验证效果的时刻.目标依旧是天狼星
依次拍了60秒(F8),180秒(F22),900秒(F22),ISO均是100,镜头焦距135mm,机身EOS 300D,手机N6120C,赤道仪LXD75(朝南卧室,没有对极轴,仅通过指南针估计一下方向)

图像均为RAW转JPG,100%裁切


60秒


180秒


900秒

最后一张是手机在第一次拍900秒到一半的时候,程序自动退出

Tags: PyS60  图像处理  自动导星 

基于Python for S60的自动导星程序(二)

Post by indream, 2010-3-6, Views:

手机键盘在使用viewfinder的时候不能用keyEvent检测,从pycamera的例子找到利用viewfinder.getEvents()方法获取键盘按下事件的检测

for ev in viewfinder.getEvents():
                keyHandleEvent(ev)

星点中心的判断,是通过灰度最大值来确定高亮区的中心位置,程序如下

            maxY=0
            posx = 0;
            posy = 0;
            p255 = math.pow(255,5)
            for i in xrange(0,aCols):
                line=0
                for j in xrange(0,aRows):
                    (r,g,b) = Image.GetPixel(i,j)
                    gy=(r * 0.30 + g * 0.59 + b * 0.11);
                    line+=math.pow(gy,6)/p255
                if maxY<line:
                    maxY = line
                    posx = i
            maxX=0
            for i in xrange(0,aRows):
                line=0
                for j in xrange(0,aCols):
                    (r,g,b) = Image.GetPixel(j,i)
                    gy=(r * 0.30 + g * 0.59 + b * 0.11);
                    line+=math.pow(gy,6)/p255
                if maxX<line:
                    maxX = line
                    posy = i
Tags: PyS60  自动导星 

基于Python for S60的自动导星程序(一)

Post by indream, 2010-3-3, Views:

从irxon购入一个bt5701的蓝牙串口,今天到了.刚到家就迫不及待开始写手机蓝牙通讯的代码.

import appuifw
import socket
import e32
def bt_connect():
    global sock
    sock=socket.socket(socket.AF_BT,socket.SOCK_STREAM)
    target=''
    if not target:
        address,services=socket.bt_discover()
        print "Discovered: %s, %s"%(address,services)
        if len(services)>1:
            import appuifw
            choices=services.keys()
            choices.sort()
            choice=appuifw.popup_menu([unicode(services[x])+": "+x for x in choices],u'Choose port:')
            target=(address,services[choices[choice]])
        else:
            target=(address,services.values()[0])
    print "Connecting to "+str(target)
    sock.connect(target)
    print "OK."
    bt_typetext()

def bt_typetext():
    global sock
    test = appuifw.query(u"Type words", "text", u"")
    if test == None:
        exit_key_handler()
    else:
        sock.send(test)
        bt_typetext()

def exit_key_handler():
    script_lock.signal()
    appuifw.app.set_exit()

appuifw.app.title = u"bt mob to PC"
script_lock = e32.Ao_lock()
appuifw.app.exit_key_handler = exit_key_handler()
bt_connect()
script_lock.wait()

 依次发送指令(区分大小写)给LXD75

:RM#
:Ms#
:Qs#

 成功实现16倍速,向南转动,向南转动停止

Tags: PyS60  图像处理  自动导星 

Python for S60开发入门

Post by indream, 2010-2-28, Views:

(1)Python for S60是Python在Nokia S60平台上的解释器,功能相对于flash要强大,比java开发更简单
PyS60安装文件可以在http://sourceforge.net/projects/pys60/files/
需要安装2个文件,PythonScriptShell.SISPythonForS60.SIS
如果不需要在PC模拟调试的话,可以用记事本写好脚本直接放手机Python文件夹运行,作者一般是用nokia的pc套装连接手机进行程序调试
手机上也有个python编辑器叫PED,http://code.google.com/p/ped-s60/

(2)NokiaCV LIB是Nokia为Symbian平台提供的开源图像处理扩展库 http://research.nokia.com/research/projects/nokiacv
下载安装NokiaCV for python,
ncvlib11.rar
pyncvlib11.rar

(3)补充一个lightblue是Python蓝牙API
http://lightblue.sourceforge.net/

sis,sisx安装时如果提示证书过期,请先调小手机日期年份到2009年再安装

我的目标是手机摄像头采集图像->python处理图像->通过蓝牙发送命令控制外部蓝牙串口,就差蓝牙控制的程序验证了

Tags: PyS60  图像处理 

猎户座大星云

Post by indream, 2009-3-18, Views:



第一次拍深空

Tags: M42  猎户座 
  • 最新评论
  • 最新留言
  • 热门标签

Friend Connect

Statistics