加载中
加载中
表情图片
评为精选
鼓励
加载中...
分享
加载中...
文件下载
加载中...
修改排序
加载中...
曙光生物研究探空火箭计划(超详细,持续更新)流量警告
暮光之羽2019/08/11喷气推进 IP:四川

自立下flag已经过去了3个多月,整天画图奔波忙到吐。然后。。。然后就忘记发帖了(跪)

香蕉君可能会迟到,但他从不缺席(误)。


项目说明:

1.搭载仓鼠一只。

2.携带心率血氧传感器对其记录在强加速度下生物体征数据的变化。

3.携带气压传感器测量高度海拔与温度。

4.携带三轴加速度计完成开伞和飞行数据测量。

5.携带sd卡模块记录全部数据。

6.搭载宏天云图传及高清运动相机,实时完成火箭航拍并记录影像。

7.搭载miniDV(夜视)监测生物舱装况并记录影像。

传感器及电子元件清单

IMG_20190704_185335.jpg


注:图中一些元件并没有用到(如hx711用作试车台推力计)

arduino尽管性能不佳,但如此小巧简单还是用作航电开发板的首选。。嗯。老板来两片

mpu6050,强大。@彩虹之巅,详见https://www.kechuang.org/t/55025(很多同学反映GitHub上面下载的库文件会带有网页地址,影响程序编译,整理了一下贴过来方便大家使用)

mpu6050.zip

max30102,心率血氧模块,非常小巧好用。上资料:

MH-ET LIVE _MAX30102 Ardunio.zip

微信图片_20190810213812.png

图片mmexport1562767575138.jpg

bmp180,非常常见的气压计。上代码:

Other
//Arduino 1.0+ Only //Arduino 1.0+ Only /*Based largely on code by  Jim Lindblom Get pressure, altitude, and temperature from the BMP085. Serial.print it out at 9600 baud to serial monitor. */ #include <wire.h> #define BMP085_ADDRESS 0x77  // I2C address of BMP085 const unsigned char OSS = 0;  // Oversampling Setting // Calibration values int ac1; int ac2; int ac3; unsigned int ac4; unsigned int ac5; unsigned int ac6; int b1; int b2; int mb; int mc; int md; // b5 is calculated in bmp085GetTemperature(...), this variable is also used in bmp085GetPressure(...) // so ...Temperature(...) must be called before ...Pressure(...). long b5;  void setup(){   Serial.begin(9600);   Wire.begin();   bmp085Calibration(); } void loop() {   float temperature = bmp085GetTemperature(bmp085ReadUT()); //MUST be called first   float pressure = bmp085GetPressure(bmp085ReadUP());   float atm = pressure / 101325; /"standard atmosphere"   float altitude = calcAltitude(pressure); //Uncompensated caculation - in Meters    Serial.print("Temperature: ");   Serial.print(temperature, 2); //display 2 decimal places   Serial.println("deg C");   Serial.print("Pressure: ");   Serial.print(pressure, 0); //whole number only.   Serial.println(" Pa");   Serial.print("Standard Atmosphere: ");   Serial.println(atm, 4); //display 4 decimal places   Serial.print("Altitude: ");   Serial.print(altitude, 2); //display 2 decimal places   Serial.println(" M");   Serial.println();//line break   delay(1000); //wait a second and get values again. } // Stores all of the bmp085's calibration values into global variables // Calibration values are required to calculate temp and pressure // This function should be called at the beginning of the program void bmp085Calibration() {   ac1 = bmp085ReadInt(0xAA);   ac2 = bmp085ReadInt(0xAC);   ac3 = bmp085ReadInt(0xAE);   ac4 = bmp085ReadInt(0xB0);   ac5 = bmp085ReadInt(0xB2);   ac6 = bmp085ReadInt(0xB4);   b1 = bmp085ReadInt(0xB6);   b2 = bmp085ReadInt(0xB8);   mb = bmp085ReadInt(0xBA);   mc = bmp085ReadInt(0xBC);   md = bmp085ReadInt(0xBE); } // Calculate temperature in deg C float bmp085GetTemperature(unsigned int ut){   long x1, x2;   x1 = (((long)ut - (long)ac6)*(long)ac5) >> 15;   x2 = ((long)mc << 11) (x1 + md);   b5 =" x1 + x2;"   float temp =" ((b5 + 8)">>4);   temp = temp /10;   return temp; } // Calculate pressure given up // calibration values must be known // b5 is also required so bmp085GetTemperature(...) must be called first. // Value returned will be pressure in units of Pa. long bmp085GetPressure(unsigned long up){   long x1, x2, x3, b3, b6, p;   unsigned long b4, b7;   b6 = b5 - 4000;   // Calculate B3   x1 = (b2 * (b6 * b6)>>12)>>11;   x2 = (ac2 * b6)>>11;   x3 = x1 + x2;   b3 = (((((long)ac1)*4 + x3)<<oss) + 2)>>2;   // Calculate B4   x1 = (ac3 * b6)>>13;   x2 = (b1 * ((b6 * b6)>>12))>>16;   x3 = ((x1 + x2) + 2)>>2;   b4 = (ac4 * (unsigned long)(x3 + 32768))>>15;   b7 = ((unsigned long)(up - b3) * (50000>>OSS));   if (b7 < 0x80000000)     p =" (b7<<1)/b4;"   else   x1 =" (p">>8) * (p>>8);   x1 = (x1 * 3038)>>16;   x2 = (-7357 * p)>>16;   p += (x1 + x2 + 3791)>>4;   long temp = p;   return temp; } // Read 1 byte from the BMP085 at 'address' char bmp085Read(unsigned char address) {   unsigned char data;   Wire.beginTransmission(BMP085_ADDRESS);   Wire.write(address);   Wire.endTransmission();   Wire.requestFrom(BMP085_ADDRESS, 1);   while(!Wire.available())     ;   return Wire.read(); } // Read 2 bytes from the BMP085 // First byte will be from 'address' // Second byte will be from 'address'+1 int bmp085ReadInt(unsigned char address) {   unsigned char msb, lsb;   Wire.beginTransmission(BMP085_ADDRESS);   Wire.write(address);   Wire.endTransmission();   Wire.requestFrom(BMP085_ADDRESS, 2);   while(Wire.available()<2)     ;   msb =" Wire.read();"   lsb =" Wire.read();"   return (int) msb<<8 | lsb; }  read the uncompensated temperature value unsigned int bmp085readut(){   unsigned int ut;     write 0x2e into register 0xf4  this requests a temperature reading   wire.begintransmission(bmp085_address);   wire.write(0xf4);   wire.write(0x2e);   wire.endtransmission();  wait at least 4.5ms   delay(5);  read two bytes from registers 0xf6 and 0xf7   ut =" bmp085ReadInt(0xF6);"   return ut;  read the uncompensated pressure value unsigned long bmp085readup(){   unsigned char msb, lsb, xlsb;   unsigned long up =" 0;"  write 0x34+(oss<<6into register 0xf4  request a pressure reading w  oversampling setting   wire.write(0x34 + (oss<<6));  wait for conversion, delay time dependent on oss   delay(2 + (3<<oss));  read register 0xf6 (msb), 0xf7 (lsb), and 0xf8 (xlsb)   xlsb =" bmp085Read(0xF8);"   up =" (((unsigned long) msb << 16) | ((unsigned long) lsb << 8) | (unsigned long) xlsb) ">> (8-OSS);   return up; } void writeRegister(int deviceAddress, byte address, byte val) {   Wire.beginTransmission(deviceAddress); // start transmission to device    Wire.write(address);       // send register address   Wire.write(val);         // send value to write   Wire.endTransmission();     // end transmission } int readRegister(int deviceAddress, byte address){   int v;   Wire.beginTransmission(deviceAddress);   Wire.write(address); // register to read   Wire.endTransmission();   Wire.requestFrom(deviceAddress, 1); // read a byte   while(!Wire.available()) {     // waiting   }   v = Wire.read();   return v; } float calcAltitude(float pressure){   float A = pressure/101325;   float B = 1/5.25588;   float C = pow(A,B);   C = 1 - C;   C = C /0.0000225577;   return C; }</2)></ 0x80000000)></oss) + 2)></ 11)></wire.h>

微信图片_20190810212642.png

sd卡模块(注意带电平转换)

继电器模块(可用三极管代替)

gps模块(需要sim800c支持gprs数据传输至onenet云,然后运存又炸了,然后就需要2560,然后。。就没有然后了。最后搞了个tcl的成品gps+北斗跟踪器)

在这里还是讲述一下这个悲伤的故事叭= =

图片IMG_20190711_163223.jpg

测试123 qwq(因为在室内。。根本搜不到星)

图片IMG_20190711_163311.jpg

后来在室外也搜不到,,商家的陶瓷天线我认为一点用都没有。。。

故接上了3m长的强大天线= =(收到了信号√)

资料包https://www.kechuang.org/t/83599

因为要远程监控轨迹,所以就用到了物联网数据整合利器onenet平台https://open.iot.10086.cn/

申请项目找到自己设备的key然后把key填写至sim800c或其他gprs模块的代码中去,就可以实时记录项目数据了

代码:

Other
#include <timerone.h> #define DebugSerial Serial #define GprsSerail Serial3 #define GpsSerial  Serial2 struct {   char GPS_Buffer[80];   bool isGetData;   //是否获取到GPS数据   bool isParseData; //是否解析完成   char UTCTime[11];   //UTC时间   char latitude[11];    //纬度   char N_S[2];    //N/S   char longitude[12];   //经度   char E_W[2];    //E/W   bool isUsefull;   //定位信息是否有效Save_Data; const unsigned int gpsRxBufferLength = 600; char gpsRxBuffer[gpsRxBufferLength]; unsigned int gpsRxCount = 0; #define Success 1U #define Failure 0U int L = 13//LED指示灯引脚 unsigned long  Time_Cont = 0;       //定时器计数器 const unsigned int gprsRxBufferLength = 600; char gprsRxBuffer[gprsRxBufferLength]; unsigned int gprsBufferCount = 0; char OneNetServer[] = "api.heclouds.com";       //不需要修改 char device_id[] = "3225187";    //修改为自己的设备ID char API_KEY[] = "R9xO5NZm6oVI4YBHvCPKEqtwYtMA";    //修改为自己的API_KEY char sensor_gps[] = "location"; void setup() {     pinMode(LOUTPUT);     digitalWrite(LLOW);     Save_Data.isGetData = false;     Save_Data.isParseData = false;     Save_Data.isUsefull = false;     DebugSerial.begin(9600);     GprsSerail.begin(9600);     GpsSerial.begin(9600);      //定义波特率9600     Timer1.initialize(1000);     Timer1.attachInterrupt(Timer1_handler);     initGprs();     DebugSerial.println("\r\nsetup end!"); } void loop() {       gpsRead();  //获取GPS数据       parseGpsBuffer();//解析GPS数据       printGpsBuffer();//输出解析后的数据  ,包括发送到OneNet服务器   } void printGpsBuffer() {   if (Save_Data.isParseData)   {     Save_Data.isParseData = false;          DebugSerial.print("Save_Data.UTCTime = ");     DebugSerial.println(Save_Data.UTCTime);     if(Save_Data.isUsefull)     {       Save_Data.isUsefull = false;       DebugSerial.print("Save_Data.latitude = ");       DebugSerial.println(Save_Data.latitude);       DebugSerial.print("Save_Data.N_S = ");       DebugSerial.println(Save_Data.N_S);       DebugSerial.print("Save_Data.longitude = ");       DebugSerial.println(Save_Data.longitude);       DebugSerial.print("Save_Data.E_W = ");       DebugSerial.println(Save_Data.E_W);              postGpsDataToOneNet(API_KEY,device_id,sensor_gps,Save_Data.longitude,Save_Data.latitude);      }     else     {       DebugSerial.println("GPS DATA is not usefull!");     }        } } void parseGpsBuffer() {   char *subString;   char *subStringNext;   if (Save_Data.isGetData)   {     Save_Data.isGetData = false;     DebugSerial.println("**************");     DebugSerial.println(Save_Data.GPS_Buffer);          for (int i = 0 ; i <= 6 ; i++)     {       if (i ="= 0)"       {         if ((substring =" strstr(Save_Data.GPS_Buffer, ",")) == NULL)"           errorlog(12);   解析错误       }       else         substring++;         if ((substringnext =" strstr(subString, ",")) != NULL)"         {           char usefullbuffer[2];            switch(i)           {             case 1:memcpy(save_data.utctimesubstringsubstringnext - substring);break;  获取utc时间             case 2:memcpy(usefullbuffersubstringsubstringnext - substring);break;              case 3:memcpy(save_data.latitudesubstringsubstringnext - substring);break;   获取纬度信息             case 4:memcpy(save_data.n_ssubstringsubstringnext - substring);break;  获取n s             case 5:memcpy(save_data.longitudesubstringsubstringnext - substring);break;              case 6:memcpy(save_data.e_wsubstringsubstringnext - substring);break;  获取e w             default:break;           }           substring =" subStringNext;"           save_data.isparsedata =" true;"           if(usefullbuffer[0="= 'A')"             save_data.isusefull =" true;"           else if(usefullbuffer[0="= 'V')"         }         else           errorlog(13);       }   } } void gpsread() {   while (gpsserial.available())   {     gpsrxbuffer[gpsrxcount++=" GpsSerial.read();"     if (gpsrxcount ="= gpsRxBufferLength)clrGpsRxBuffer();"   char* gps_bufferhead;   char* gps_buffertail;   if ((gps_bufferhead =" strstr(gpsRxBuffer, "$GPRMC,")) != NULL || (GPS_BufferHead = strstr(gpsRxBuffer, "$GNRMC,")) != NULL )"     if (((gps_buffertail =" strstr(GPS_BufferHead, "\r\n")) != NULL) && (GPS_BufferTail "> GPS_BufferHead))     {       memcpy(Save_Data.GPS_BufferGPS_BufferHeadGPS_BufferTail - GPS_BufferHead);       Save_Data.isGetData = true;       clrGpsRxBuffer();     }   } } void clrGpsRxBuffer(void) {   memset(gpsRxBuffer0gpsRxBufferLength);      //清空   gpsRxCount = 0; } double longitudeToOnenetFormat(char *lon_str_temp) {   double lon_temp = 0;   long lon_Onenet = 0;   int dd_int = 0;   long mm_int = 0;   double lon_Onenet_double = 0;   lon_temp = atof(lon_str_temp);   lon_Onenet =lon_temp*100000;  //转换为整数   dd_int = lon_Onenet/10000000//取出dd   mm_int = lon_Onenet%10000000;  //取出MM部分   lon_Onenet_double = dd_int + (double)mm_int/60/100000;//换算为Onenet格式   return lon_Onenet_double; } double latitudeToOnenetFormat(char *lat_str_temp) {   double lat_temp = 0;   long lat_Onenet = 0;   int dd_int = 0;   long mm_int = 0;   double lat_Onenet_double = 0;   lat_temp = atof(lat_str_temp);   lat_Onenet =lat_temp*100000;  //转换为整数   dd_int = lat_Onenet/10000000//取出dd   mm_int = lat_Onenet%10000000;  //取出MM部分   lat_Onenet_double = dd_int + (double)mm_int/60/100000;//换算为Onenet格式   return lat_Onenet_double; } void postGpsDataToOneNet(charAPI_VALUE_temp,chardevice_id_temp,charsensor_id_temp,charlon_temp,charlat_temp) {     char send_buf[400]= {0};     char text[100= {0};     char tmp[25= {0};     char lon_str_end[15= {0};     char lat_str_end[15= {0};     dtostrf(longitudeToOnenetFormat(lon_temp),3,6lon_str_end);  //转换成字符串输出     dtostrf(latitudeToOnenetFormat(lat_temp),2,6lat_str_end);  //转换成字符串输出     //连接服务器     memset(send_buf0400);    //清空     strcpy(send_buf"AT+CIPSTART=\"TCP\",\"");     strcat(send_bufOneNetServer);     strcat(send_buf"\",80\r\n");     if (sendCommand(send_buf"CONNECT"100005== Success);     else errorLog(7);     //发送数据     if (sendCommand("AT+CIPSEND\r\n"">"30001== Success);     else errorLog(8);     memset(send_buf0400);    //清空     /*准备JSON串*/     //ARDUINO平台不支持sprintf的double的打印,只能转换到字符串然后打印     sprintf(text,"{\"datastreams\":[{\"id\":\"%s\",\"datapoints\":[{\"value\":{\"lon\":%s,\"lat\":%s}}]}]}"       ,sensor_id_temp,lon_str_end,lat_str_end);        /*准备HTTP报头*/     send_buf[0= 0;     strcat(send_buf,"POST /devices/");     strcat(send_buf,device_id_temp);     strcat(send_buf,"/datapoints HTTP/1.1\r\n");//注意后面必须加上\r\n     strcat(send_buf,"api-key:");     strcat(send_buf,API_VALUE_temp);     strcat(send_buf,"\r\n");     strcat(send_buf,"Host:");     strcat(send_buf,OneNetServer);     strcat(send_buf,"\r\n");     sprintf(tmp,"Content-Length:%d\r\n\r\n"strlen(text));//计算JSON串长度     strcat(send_buf,tmp);     strcat(send_buf,text);     if (sendCommand(send_bufsend_buf30001== Success);     else errorLog(9);     char sendCom[2= {0x1A};     if (sendCommand(sendCom"\"succ\"}"30001== Success);     else errorLog(10);     if (sendCommand("AT+CIPCLOSE\r\n""CLOSE OK"30001== Success);     else errorLog(11);     if (sendCommand("AT+CIPSHUT\r\n""SHUT OK"30001== Success);     else errorLog(11); } void initGprs() {     if (sendCommand("AT\r\n""OK"300010== Success);     else errorLog(1); //      如果输入 AT+CREG? <cr>则返回+CREG: <mode>, <stat> [ ,<lac>,<ci> ]   // 注: <mode>的值共有三个选项,分别是 0 or 1 or 2,  其中0 代表关闭网络注册结果 //            码, 1 代表当网络注册状态改变时激活网络注册结果码, 2 代表激活网 // 络注册结果码同时显示区域和小区信息. //    <stat>的返回值共有三个,分别是 0, 1, 2,3,4,5 ,  其中 0 代表没有注册网络同时 //   模块没有找到运营商, 1代注册到了本地网络, 2 代表找到运营商但没 // 有注册网络, 3 代表注册被拒绝, 4 代表未知的数据, 5代表注册在漫游 // 状态. //    <lac>表示所属网络区域代码,十六进制格式显示,如: “ 279C”  //    <ci>表示所属网络的小区 ID,十六进制格式显示,如: “ 0EB2”  Tech-Link T&E      if (sendCommand("AT+CREG?\r\n""+CREG: 0,1"300010== Success);     else errorLog(2);     if (sendCommand("AT+CGCLASS=\"B\"\r\n""OK"30002== Success);     else errorLog(3);     if (sendCommand("AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n""OK"30002== Success);     else errorLog(4);     if (sendCommand("AT+CGATT=1\r\n""OK"30002== Success);     else errorLog(5);     if (sendCommand("AT+CLPORT=\"TCP\",\"2000\"\r\n""OK"30002== Success);     else errorLog(6);  } void(* resetFunc) (void= 0//制造重启命令  void errorLog(int num)   {     DebugSerial.print("ERROR");     DebugSerial.println(num);     while (1)     {         digitalWrite(LHIGH);         delay(300);         digitalWrite(LLOW);         delay(300);         if (sendCommand("AT\r\n""OK"10010== Success)         {             DebugSerial.print("\r\nRESET!!!!!!\r\n");             resetFunc();         }     } } unsigned int sendCommand(char *Commandchar *Responseunsigned long Timeoutunsigned char Retry) {     clrGprsRxBuffer();     for (unsigned char n = 0n < retryn++)     {         debugserial.print("\r\n---------send at command:---------\r\n");         debugserial.write(command);         gprsserail.write(command);         time_cont =" 0;"         while (time_cont < timeout)         {             gprsreadbuffer();             if(strstr(gprsrxbufferresponse!=" NULL)"             {                 debugserial.print("\r\n="=========receive AT Command:==========\r\n");"                 debugserial.print(gprsrxbuffer);  输出接收到的信息                 clrgprsrxbuffer();                 return success;             }         }     }     debugserial.print("\r\n="=========receive AT Command:==========\r\n");"     debugserial.print(gprsrxbuffer);     clrgprsrxbuffer();     return failure; } void timer1_handler(void) {     time_cont++; void gprsreadbuffer() {     while (gprsserail.available())         gprsrxbuffer[gprsbuffercount++=" GprsSerail.read();"         if (gprsbuffercount ="= gprsRxBufferLength)clrGprsRxBuffer();" void clrgprsrxbuffer(void)     memset(gprsrxbuffer0gprsrxbufferlength);       清空     gprsbuffercount =" 0;" }< pre><retryn++)></ci></lac></stat></mode></ci></lac></stat></mode></cr></= 6 ; i++)></timerone.h>

当然喽。2560!328p相继去世

小朋友就应该有小朋友的亚子(误)

IMG_20190810_223833.jpg

宏天云图传(来自邪恶疯狂推销员 绝对零度 )

QQ图片20190810232834.png

2w图传配备1280p高清小蚁运动相机

IMG_20190620_205304.jpg

调试(用的雪花屏减少信号干扰)

图片IMG_20190730_192728.jpg

玛德线断了

图片IMG_20190802_221431.jpg

自奸商零度了解小蚁相机的信号传输方式不同,连接线比普通micro usb多一根(普通为黑白绿红,坑爹线为黑白黄绿红)

那么。。注入灵魂

图片IMG_20190802_214239.jpg

图片IMG_20190802_221145.jpg

图片IMG_20190802_231612.jpg

小部件比如开关什么的就不列举了

接线图及电子元件测绘

IMG_20190725_220435.jpg

IMG_20190725_220400.jpg


现在来整合一下max30102和bmp180的程序

开局失利= = 刚一上来内存就爆了qaq

我日你仙人板板

微信图片_20190810214341.png

官方明示不得使用mega328p

无奈去掉了血氧浓度测试这个功能(有兴趣的盆友可以用2560畅玩)

阉割成太监:

微信图片_20190810214723.png

搞了一下午终于小有成就

微信图片_20190810214903.png

嗯。看起来好像没什。。。。

我@#¥%%#@¥%……(此处应该有脏话)

崩溃

I2c通信失败

在哥们的帮助下排错= =(转眼就忙到了凌晨)

1565445264(1).png

天。。粗心漏了一段代码

终于,功夫不负有心人

QQ图片20190810215838.jpg

源汁源味

max30102_bmp180(1)(1).rar

实在是没有精力搞sd卡数据写入了(大家闲着可以搞一搞),然后在小箱子里翻到了这个神器(某宝搜索串口数据储存器)

只要接电源和数据线路(txd反接rxd这样)就可以完成数据写入了(最大支持32GbU盘或tf卡)

IMG_20190810_220601.jpg

资料如下

LCES 串口SD卡模块资料.zip

布线做航电

此乃精工雕琢,集天地之精华之纸模(雾)

图片IMG_20190727_175358.jpg

图片IMG_20190727_175323.jpg

图片IMG_20190727_175349.jpg

糙汉子一枚略略略粗糙orz

根据纸模的大致结构就可以进行3d建模了

肝肝肝。肝就对了

day one 

1565448508(1).png

day two

图片-50d3bb49b826ce1b.png

day three

图片-25d31c77b002ce1.png

day four

图片3f962f31d6d4ddab.png

day five

图片IMG_20190725_222105.jpg

QQ图片20190810230125.png

!!!!

图片-70a6d0893797d3d2.png

看了看时间,已是凌晨3点

一阵反胃。赶忙跑到厕所,那一天真的画吐了

洗了个澡回到电脑前,揉揉眼睛看着努力的成果,开心得笑了,可能这就是diy的乐趣吧

/****************************************************************************************/

我是航天员刘培强

图片IMG_20190806_121614.jpg

图片IMG_20190806_121733.jpg

图片IMG_20190806_125129.jpg

当老爷供着

IMG_20190807_192800.jpg

七夕了,送根黄瓜

IMG_20190807_192001.jpg

IMG_20190807_191957.jpg

小崽子在我给它量体征的时候咬了我一口跑路了,害的我在床下逮了半个小时

1565452082(1).png

1565452136(1).png

1565452167(1).png

感谢@零度 提供的3d打印服务w

补更完毕

待续,感谢关注


来自:航空航天 / 喷气推进
41
 
9
新版本公告
~~空空如也
电子Q
5年9个月前 IP:上海
862189

LZ考虑打板不,打板可以减少不少体积,提高电路可靠性

测试电路一般是一大堆传感器和线的...我会随便用黑胶布包一下就完了...不会像LZ一样用SW系统建模(膜)


不过看起来是大工程啊,加油~😁

引用
评论(1)
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ERIC20041219
5年9个月前 IP:浙江
862191

支持!☣生物探空火箭

引用
评论
2
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年9个月前 IP:山西
862195
引用ERIC20041219发表于2楼的内容
支持!☣生物探空火箭

感谢资磁!

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
山氰水溴
5年9个月前 IP:广东
862196

滋磁,建议楼主使用场管模块代替继电器,增加可靠性。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
mach ring studio
5年9个月前 IP:浙江
862224

原来这仓鼠是干这事用的

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
xljxlj
5年9个月前 修改于 5年9个月前 IP:浙江
862254
引用暮光之羽发表于3楼的内容
感谢资磁!

328不够用可以用mega644,那个运存大些,价格差不多,板子大小也差不多


感觉还是打样一下比较好,杜邦线的质量的确不咋地,我还有一个10x15cm的免费打样机会没用掉,可以帮你打下,支持一下学长啊😁

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
UIC
5年9个月前 IP:浙江
862279

支持支持!估计射高能有多少

别让小老鼠掉下来时候挂了啊,还是想看到心率血压数据

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ENG ETO
5年9个月前 IP:湖南
862290

可以先空载发射测一下加速度

别仓鼠当场去世了(手动滑稽)

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年9个月前 IP:山西
862291
引用xljxlj发表于6楼的内容
328不够用可以用mega644,那个运存大些,价格差不多,板子大小也差不多感觉还是打样一下比较好,...

哇,找了半天这种东西了,多谢提示😂


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年9个月前 IP:山西
862292

非常人道的测试:把仓鼠绑自行车后轮上,然后码表定速骑

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年9个月前 IP:山西
862294

这种加速度的话人是肯定承受不了的,大概20几个g,小动物在短时间内应该没什么大问题💀

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
Robot_V1
5年9个月前 修改于 5年9个月前 IP:江西
862322
引用暮光之羽发表于11楼的内容
这种加速度的话人是肯定承受不了的,大概20几个g,小动物在短时间内应该没什么大问题💀

为何不先做个简易离心机测试一下呢?

ps:1、关于抗过载能力:有记录的人类存活的最大过载约为46.2g(没错,就是那个火箭雪橇的驾驶员);其他哺乳动物未知,小强能扛1000g以上。

2、动物在不同方向上对加速度的承受能力有极大差异。以人类为例,对前后方向上的过载承受能力远高于竖直方向。这是血液流向决定的。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
154454496
5年9个月前 IP:江苏
862357

离心机测试+1。

话说只有我的关注点在萌萌哒小仓鼠吗?为啥要送它上天(而不是其他动物)?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ENG ETO
5年9个月前 IP:湖南
862364
引用154454496发表于13楼的内容
离心机测试+1。话说只有我的关注点在萌萌哒小仓鼠吗?为啥要送它上天(而不是其他动物)?

感觉没有别的合适的了……

小强之类的生命体征不好测啊……


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年9个月前 IP:山西
862369

小崽子又咬我,明天做离心机训练

超级截屏_20190814_004930.png


引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
Squid
5年9个月前 IP:重庆
862406

建议加个座椅,把小白鼠牢牢地绑在上面,以免乱动弄掉测心跳的电极或者在发射中左右摇摆。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年9个月前 IP:山西
862408
引用Squid发表于16楼的内容
建议加个座椅,把小白鼠牢牢地绑在上面,以免乱动弄掉测心跳的电极或者在发射中左右摇摆。

蛤蛤蛤(手动滑稽)

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
BackspACE
5年9个月前 IP:内蒙古
862474

建议去打个PCB吧,无论是体积还是电气部分的稳定性都要好很多。某宝随便找就可以,也不贵。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年9个月前 修改于 5年8个月前 IP:山西
862815

小鼠的生活日常


00:00
00:00
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
video_20190819_114702.mp4  点击下载

臂力惊人身强体壮,经过一番训练已经丝毫不会畏惧很大的噪音了(⊙x⊙;)

(在它小屋外经常使用角磨机。。)

注:3d打印那边出了点问题,应该是软件问题,目前已经调整好了,还剩下小鼠的宇航服没做好,然后就是这几天撸主外出参加比赛大概4天时间

IMG_20190821_190347.jpg

嘤嘤嘤,请观众老爷们耐心等待。

零件加工好后由@零度 负责更新制作组图

呜呜呜

太艹了,各种失误

qq_pic_merged_1567159190950.jpg


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
Andyccr
5年9个月前 IP:广东
862846

好,牛逼。鼓励。

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-16533
5年9个月前 IP:广东
862853

鼠鼠吓尿会不会造成航电报废2333

+0.5
科创币
虎哥
2019-08-23
噗,这是一个很重要的问题
+0.5
科创币
ERIC20041219
2019-08-24
亏你想的出来
引用
评论
9
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
Robot_V1
5年9个月前 IP:山东
862875

楼上说得对,“乘员舱”应妥善密封、加压、控温,还应提前对“乘员”进行训练,使其适应“乘员舱”以及发射时的噪声、振动。毕竟实验目的是“对其记录在强加速度下生物体征数据的变化”,应尽量减少其他因素造成的影响。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年9个月前 IP:内蒙古
862890
引用zx-16533发表于21楼的内容
鼠鼠吓尿会不会造成航电报废2333

所以专门为小鼠制作了一套航天服,具有抗荷防水的功能,连接件见正文最下方3图,分别是头盔、腰带、手套环😂这个问题早就考虑到了233

引用
评论
3
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
314152
5年9个月前 IP:广东
862904
引用Robot_V1发表于12楼的内容
为何不先做个简易离心机测试一下呢?ps:1、关于抗过载能力:有记录的人类存活的最大过载约为46.2g...

没错,头脚方向大部分人6G就挂彩了😂当然也不乏少数且经过训练的那些扛12G30+s以上

倒是胸背方向能扛20+G,参考联盟那次事故

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年8个月前 修改于 5年5个月前 IP:山西
863150

失踪人口回归前来更新(汗)

3D打印航电 @零度(此楼更新中)

5a507c8817b1d1d0.jpg

48c540340c7a704f.jpg

这里出了点小插曲。。。除了打印软件抽风外,散热风扇也坏掉了

经过一番调整之后恢复了正常

7a0dc60fc85e4b8d.jpg

142e990b7360faf4.jpg

IMG_20190829_233741.jpg

装零件

IMG_20190830_165131.jpg

IMG_20190830_165122.jpg

可能由于调试原因,一个部件打坏了。还有几个部件需要做出调整

QQ图片20190830171734.jpg

QQ图片20190830171526.jpg

塞不进去(无助= =)

``JP09R@URJT8L_H`{YY}~2.jpg

还有就是。。这哥们好像变胖了= =

只能再做一套航天服了

QQ图片20190830171456.jpg

航电舱与发动机段连接件(因为没有57的酚醛棒料了,只能打印一个喽)

QQ图片20190830165831.png

大一真是忙的一批,好不容易结了几门课终于有时间回来更新了

今天调试了一下GPS/北斗模块,让我的小奴隶去给物联卡交了个话费

这里就出现问题了= =、

BF1T%9S952CVH263_(I}AVS.png

但是

7FB2DA69FB5897F613C57D5AFB63B9DE.jpg

原因是这样的,如果你的物联卡不是本省的。。就不会在营业厅的终端上查找到。

也就是说不能在实体店进行缴费活动,只能在网上营业厅缴费

028B197D2C71A6D2CC1B2ED9C1C13C5E.jpg

缴费过后,插进模块开始测试

😃用放大镜看看这是个什么品种的憨批

DMUQ2TTA599{_RQZE)C$`3M.png

?????????????

W6N@6(MYGG~@V3AY%TMRK$A.png

981823206DD2CF3BFBB045DC90F33BD847B951.jpg

指示灯显示正常

CFF94B8E8E7B5E4646109A59E403F047.jpg

响应很快,精度很好(误差在一米左右的范围)

Inked113{OCIG3)74%DV92XP`M[9_LI.jpg

(未完)

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年8个月前 IP:山西
863151

火箭发动机(此楼更新中)

感谢@御坂18650 毛妹贡献的57航箭

IMG_20190830_173250.jpg

IMG_20190830_173317.jpg

经毛妹测试,使用KNSB燃料可获得800N的推力

57外径航箭测绘

QQ图片20190830172843.png

当时还没用熟soildworks。。emm就用AutoCAD先跑一跑

航箭气动自旋1200r/min,这还怎么航拍。。(对方并不想理你并向你丢了一只高能自爆螺旋拐弯狗.jpg)

所以用铝板把气动槽填♂满了嘤

IMG_20190829_190718.jpg

用剪板器ctrl+c

IMG_20190829_195336.jpg

金属粘黏剂ctrl+v

IMG_20190829_195259.jpg

IMG_20190829_195324.jpg

粘贴完毕之后敲敲打打,胶水填缝

最后用角磨机磨平alt+f4(误)

燃料隔热层

因为小动物比较脆弱,所以在此选择比较温和的燃料,也是非常普遍的业余固体燃料-KNSB

隔热层使用pvc排水管道

IMG_20190830_121640.jpg

切割切割。。

鸭累!欧拉欧拉欧拉欧拉!(突然中二)

车削外壁

IMG_20190830_114649.jpg

值得注意的是,PVC管道十分脆弱,因此在使用卡盘时要在内壁垫一个坚固的实体

就是你啦(掏出)

IMG_20190830_114917.jpg

雪花飘飘,北风萧萧(雾)

IMG_20190830_121630.jpg

IMG_20190830_121627.jpg

(未完)

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
misaka10039
5年8个月前 IP:重庆
863213

加油

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
以太LYB
5年8个月前 IP:湖南
864093

坐等,加油。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
徐轩
5年8个月前 IP:宁夏
864110

加油

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
精致大眼剑水蚤
5年8个月前 IP:广东
864116

问一下,是Autocad好用还是soildworks好用?我一同学学Autocad学了一星期,跟没学差不多。。。😂

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
sd196821
5年8个月前 IP:北京
864119
引用精致大眼剑水蚤发表于30楼的内容
问一下,是Autocad好用还是soildworks好用?我一同学学Autocad学了一星期,跟没学...

3维图solidworks好用,平面图随意

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
精致大眼剑水蚤
5年8个月前 IP:广东
864164
引用sd196821发表于31楼的内容
3维图solidworks好用,平面图随意

谢谢告知!!

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年8个月前 IP:山西
864272
引用精致大眼剑水蚤发表于32楼的内容
谢谢告知!!

平面还是AutoCAD强大

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
暮光之羽作者
5年8个月前 IP:山西
864273

统一回复,开学之后事多的一批😂

不过楼主仍在艰难爬行中,感谢大家关注w

引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ERIC20041219
5年8个月前 IP:浙江
864278
引用暮光之羽发表于34楼的内容
统一回复,开学之后事多的一批😂不过楼主仍在艰难爬行中,感谢大家关注w

加油,深有同感

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
wadjt
5年8个月前 IP:四川
864283
引用暮光之羽发表于23楼的内容
所以专门为小鼠制作了一套航天服,具有抗荷防水的功能,连接件见正文最下方3图,分别是头盔、腰带、手套环...

祝升空顺利,然后那到一手数据,(其实最想看仓鼠下来是不是已经不醒鼠事了😁

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
信仰は儚き人間の為に
5年8个月前 IP:广东
864290

仓鼠会不会又胖了

引用
评论(1)
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
精致大眼剑水蚤
5年7个月前 IP:广东
864343

楼主加油,期待结果

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
玄狐道士
5年7个月前 IP:日本
864347

卧槽,玩得这么大😆,要不要先拿昆虫来做试验啊,感觉用仓鼠还有有点担心安全性😀

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
信仰は儚き人間の為に
4年10个月前 IP:广东
882325

鼠鼠上天了吗

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zx-86504
4年10个月前 IP:广东
882337

我以前对着自己的窜天猴发白日梦时也想过,没想到真的有人做了,牛逼啊 sticker

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
暮光之羽
进士 机友 笔友
文章
29
回复
350
学术分
0
2017/04/27注册,1年4个月前活动

Xing He Rocket and Space Technology Club

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的