虎子哥的博客

2012/01/23

辣椒一号赤道仪的无线控制器

发布者: indream 分类: Arduino|天文


写了一个可以调整转速的iphone程序,似乎有点供电不足(查出的原因是外接电源电流过大造成的,现在改用5v移动电源通过USB口供电),电阻发热量也有点大。
参考资料:
iOS设备的Socket通讯 http://freegezi.net/blog/2011/12/325
Arduino驱动四相五线步进电机 http://freegezi.net/blog/2011/12/317
Arduino读写永久数据 http://freegezi.net/blog/2012/01/342

2012/01/20

辣椒一号赤道仪本体制作完工

发布者: indream 分类: Arduino|天文



春节期间计划把控制器组装好,程序开发完成。

2012/01/09

Arduino实现读写永久数据

发布者: indream 分类: Arduino

EEPROM(电可擦写可编程只读存储器)是可用户更改的只读存储器(ROM)——一种掉电后数据不丢失的存储芯片。其可通过高于普通电压的作用来擦除和重编程(重写)。
arduino提供很方便的读写EEPROM的函数。这块Arduino Duemilanove板载只有512bytes,不过存简单数据已经足够了。

#include <EEPROM.h>
int addr = 0;
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  if (Serial.available() > 0) {
    int val = Serial.read();
    EEPROM.write(addr, val);
    Serial.print("I received: ");
    Serial.println(val);
  }
  int value = EEPROM.read(addr);
  Serial.print("Value: ");
  Serial.println(value);
  delay(1000);
}

通过几个晚上的折腾,终于打通了通讯的所有环节。WIFI串口需要3.3V的供电,Arduino上的3.3V供电的时候降压到了2.3V导致WIFI串口无法正常工作。现在用5V串了个2欧的电阻,工作电压稳定在3.5V。
Arduino的接收代码:

void setup(){
  Serial.begin(115200);
}
void loop() {
  while(Serial.available()>0){
    Serial.print(Serial.read(),HEX);
  Serial.print("\r\n");
  }
  delay(100);
}

iPhone端的发送代码:

AsyncSocket * asyncSocket;
-(void)sendDataToWifi{
    Byte byte[] = {0x7f};
    NSData *adata = [[NSData alloc] initWithBytes:byte length:1];
    [asyncSocket writeData:adata withTimeout:-1 tag:1009];
}

2011/12/12

穿越东西冲

发布者: indream 分类: 其他

上周六参加了一次南澳东西冲的穿越活动,从东冲出发,全程徒步翻山越岭爬悬崖耗时6个小时有惊无险到达西冲目的地。沿途风景很漂亮,不愧是十大XX海岸线之一啊。虎子哥长时间缺乏运动,导致第二天开始腿脚酸痛。呃。








2011/12/11

ios设备与WIFI串口模块通讯

发布者: indream 分类: Arduino|ios应用|ios开发

8月份就入了一块wifi串口模块,打算用它来控制赤道仪.因为工作太忙,一直没有开始研究.趁着看月全食的空隙,花了1天时间开始折腾这个模块.
wifi串口模块设置成无线串口模式,ios设备手动输入ip和网关.
ios app使用了asyncSocket开源库(https://github.com/robbiehanson/CocoaAsyncSocket)项目需要导入CFNetwork.framework.
这样通过socket就可以发送数据到wifi串口模块,后续工作是让arduino接收来自wifi串口数据并控制电机转速.

2011/12/10

沙罗周期No.135 12月10日月全食

发布者: indream 分类: 天文


拍摄参数:ISO400,15秒,D=80mm,f=560mm,Canon EOS 1100D

标签:

2011/12/08

Arduino驱动四相五线步进电机

发布者: indream 分类: Arduino


28BYJ48 四相五线步进电机,电压为DC5V—DC12V,这个电机通过减速齿轮1:64减速输出,实际步距角度是5.625度
八拍方式驱动:0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09

int Pin0 = 10;
int Pin1 = 11;
int Pin2 = 12;
int Pin3 = 13;
int _step = 0;
boolean dir = true;//正反转
int stepperSpeed = 5;//电机转速,5ms一步
void setup()
{
  pinMode(Pin0, OUTPUT);
  pinMode(Pin1, OUTPUT);
  pinMode(Pin2, OUTPUT);
  pinMode(Pin3, OUTPUT);
}

void loop()
{
  switch(_step){
    case 0:
      digitalWrite(Pin0, LOW);
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, HIGH);
    break;
    case 1:
      digitalWrite(Pin0, LOW);
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, HIGH);
      digitalWrite(Pin3, HIGH);
    break;
    case 2:
      digitalWrite(Pin0, LOW);
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, HIGH);
      digitalWrite(Pin3, LOW);
    break;
    case 3:
      digitalWrite(Pin0, LOW);
      digitalWrite(Pin1, HIGH);
      digitalWrite(Pin2, HIGH);
      digitalWrite(Pin3, LOW);
    break;
    case 4:
      digitalWrite(Pin0, LOW);
      digitalWrite(Pin1, HIGH);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break;
    case 5:
      digitalWrite(Pin0, HIGH);
      digitalWrite(Pin1, HIGH);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break;
      case 6:
      digitalWrite(Pin0, HIGH);
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break;
    case 7:
      digitalWrite(Pin0, HIGH);
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, HIGH);
    break;
    default:
      digitalWrite(Pin0, LOW);
      digitalWrite(Pin1, LOW);
      digitalWrite(Pin2, LOW);
      digitalWrite(Pin3, LOW);
    break;
  }
  if(dir){
    _step++;
  }else{
    _step--;
  }
  if(_step>7){
    _step=0;
  }
  if(_step<0){
    _step=7;
  }
  delay(stepperSpeed);
}