查看: 4681|回复: 5

[原创] 【LPC54114】项目:智能摇篮

[复制链接]
  • TA的每日心情
    郁闷
    2021-3-10 19:44
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    126

    主题

    525

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2018
    最后登录
    2023-12-25
    发表于 2017-5-9 16:35:54 | 显示全部楼层 |阅读模式
    本帖最后由 MDebug 于 2017-5-9 16:37 编辑

        该装置主要由LPC54114开发版、3.2 寸 TFT 触摸显示屏、esp8266 模块、 NRF24l01 无线数据传输模块、 MLX90614 红外线人体测温、摄像头等传感器组成。
        实现的功能:

    1) 当我们不在婴儿身边但想要了解婴儿情况时,可以微信发指令给单片机,摄像头会根据单片机处理过后的指令数据执行相应动作对婴儿拍照并发送回父母手机微信 APP, 这样我们就可以看到婴儿的实际情况。

    2) 当婴儿的体温不正常或者周围环境异常时, APP 会提醒父母及时注意婴儿的情况。

    3)婴儿睡姿检测,家长可以通过对睡姿检测模块上的对应的 led 亮灭判断婴儿睡姿是否正确。

    2.png
                      睡姿显示电路

    4.png

    NRF24l01无线与ESP8266WIFI模块

    3.png

    7725摄像头

        APP采用JAVA语言通过Android Studio编译器编写,APP部分有2个子页面,婴儿的生理参数页面,显示婴儿的体温和体重,环境参数页面,可以显示被窝温度,还有环境的温湿度。
        电脑软件通过采用C#语言通过Visual Studio 编译器编写,可以实时显示各个传感器的数据并且显示摄像头拍摄照片的画面。
        调试效果欠佳,还需要继续调试。因为项目后期还有用途,因此只能放出一部分代码,请见谅。
        5.png
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Net;
    6. using System.IO;
    7. using System.Threading.Tasks;

    8. namespace ANOGround
    9. {
    10.     class uploadPic
    11.     {

    12.         /// <summary>
    13.         /// 上传图片文件
    14.         /// </summary>
    15.         /// <param name="url">提交的地址</param>
    16.         /// <param name="poststr">发送的文本串   比如:user=eking&pass=123456  </param>
    17.         /// <param name="fileformname">文本域的名称  比如:name="file",那么fileformname=file  </param>
    18.         /// <param name="filepath">上传的文件路径  比如: c:/12.jpg </param>
    19.         /// <param name="cookie">cookie数据</param>
    20.         /// <param name="refre">头部的跳转地址</param>
    21.         /// <returns></returns>
    22.         public string HttpUploadFile(string url, string poststr, string fileformname, string filepath, string cookie, string refre)
    23.         {

    24.             // 这个可以是改变的,也可以是下面这个固定的字符串
    25.             string boundary = "------WebKitFormBoundarybrwwfMBZPAaKJAtk";

    26.             // 创建request对象
    27.             HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://fuhome.net/api/photo/");
    28.             webrequest.ContentType = "multipart/form-data; boundary=----WebKitFormBoundarybrwwfMBZPAaKJAtk";
    29.             webrequest.Method = "POST";
    30.             webrequest.Accept = "text/html";
    31.             webrequest.Referer = "http://fuhome.net/api/photo/";
    32.             webrequest.UserAgent = "Mozilla/5.0 (Windows NT 5.2; rv:11.0) Gecko/20100101 Firefox/11.0";
    33.             webrequest.KeepAlive = true;

    34.             // 构造发送数据
    35.             StringBuilder sb = new StringBuilder();

    36.             // 文本域的数据

    37.             sb.Append(boundary);
    38.             sb.Append("\r\n");
    39.             sb.Append("Content-Disposition: form-data; name="sbid"");
    40.             sb.Append("\r\n\r\n");
    41.             sb.Append("1287371275");
    42.             sb.Append("\r\n");
    43.             sb.Append(boundary);
    44.             sb.Append("\r\n");
    45.             sb.Append("Content-Disposition: form-data; name="sbmm"");
    46.             sb.Append("\r\n\r\n");
    47.             sb.Append("0c6d4c1311355b69");
    48.             sb.Append("\r\n");
    49.             sb.Append(boundary);
    50.             sb.Append("\r\n");
    51.             sb.Append("Content-Disposition: form-data; name="feelid"");
    52.             sb.Append("\r\n\r\n");
    53.             sb.Append("321");
    54.             sb.Append("\r\n");

    55.             // 文件域的数据
    56.             sb.Append(boundary);
    57.             sb.Append("\r\n");
    58.             sb.Append("Content-Disposition: form-data; name="uploadfile"; filename="temp.jpg"");
    59.             sb.Append("\r\n");

    60.             sb.Append("Content-Type: ");
    61.             sb.Append("image/jpeg");
    62.             sb.Append("\r\n\r\n");

    63.             string postHeader = sb.ToString();
    64.             byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);

    65.             //构造尾部数据
    66.             byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n" + boundary + "\r\n");

    67.             FileStream fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);
    68.             long length = postHeaderBytes.Length + fileStream.Length + boundaryBytes.Length;
    69.             webrequest.ContentLength = length;

    70.             Stream requestStream = webrequest.GetRequestStream();

    71.             // 输入头部数据
    72.             requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);

    73.             // 输入文件流数据
    74.             byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))];
    75.             int bytesRead = 0;
    76.             while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
    77.                 requestStream.Write(buffer, 0, bytesRead);

    78.             // 输入尾部数据
    79.             requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
    80.             WebResponse responce = webrequest.GetResponse();
    81.             Stream s = responce.GetResponseStream();
    82.             StreamReader sr = new StreamReader(s);

    83.             // 返回数据流(源码)
    84.             return sr.ReadToEnd();
    85.         }
    86.     }
    87. }
    复制代码

    1. #include <string.h>
    2. #include "gizwits_product.h"
    3. #include "Hal_key/Hal_key.h"
    4. #include "Hal_Usart/hal_uart.h"
    5. #include "Hal_led/Hal_led.h"
    6. #include "Hal_motor/Hal_motor.h"
    7. #include "Hal_rgb_led/Hal_rgb_led.h"
    8. #include "Hal_temp_hum/Hal_temp_hum.h"
    9. #include "Hal_infrared/Hal_infrared.h"
    10. #include "Hal_Watchdog/hal_watchdog.h"
    11. #include "bsp_key.h"

    12. /**包头*/
    13. unsigned char datahead[32]={0xFE,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,0xF5,0xF4,0xF3,0xF2,0xF1,0xF0,0xEF,0xEE,0xED,0xEC,0xEB,0xEA,0xE9,0xE8,0xE7,0xE6,0xE5,0xE4,0xE3,0xE2,0xE1,0xE0,0xDF};

    14. u8 gesture=0;        
    15.         
    16. extern unsigned char feeder_rec;//暖奶器开关
    17. extern unsigned char eat_alert_rec;//喝奶闹钟开关
    18. extern unsigned char humidifier_rec;//加湿器开关
    19. extern unsigned char anion_rec;//负离子净化器开关
    20. extern unsigned char blanket_rec;//恒温床垫开关
    21. extern unsigned char swing_rec;//摇摆档位选择
    22. extern unsigned char eat_hour_rec;//定时喝奶时
    23. extern unsigned char eat_minute_rec;//定时喝奶分
    24. extern unsigned char pee_rec;//是否尿床
    25. extern unsigned char eat_status_rec;//上次是否喝奶
    26. extern unsigned char temperature_rec;//环境温度
    27. extern unsigned char humidity_rec;//环境湿度
    28. extern unsigned char baby_heat_rec;//婴儿体温
    29. extern unsigned char baby_weight_rec;//婴儿体重
    30. extern unsigned char co_value_rec;//CO浓度
    31. extern unsigned char bed_heat_rec;//床垫温度

    32. volatile gizwitsReport_t reportData;//dev_status包含在里面
    33. keyTypedef_t singleKey[2];
    34. keysTypedef_t keys;

    35. void userInit(void)
    36. {
    37.           Key_GPIO_Config();
    38.     delayInit(72);
    39.     uartxInit();
    40.     rgbLedInit();
    41.     ledGpioInit();
    42.     rgbKeyGpioInit();
    43.     motorInit();
    44.     dht11Init();
    45.     irInit();
    46.     watchdogInit(2);    //5,625看门狗复位时间2s

    47.     memset((uint8_t*)&reportData, 0, sizeof(gizwitsReport_t));
    48.     motorStatus(MOTOR_SPEED_DEFAULT);
    49. }

    50. void userHandle(void)
    51. {
    52.                 /**控制类数据点*/
    53.                 uint8_t curFeeder = 0;
    54.                 uint8_t curEat_Alert = 0;
    55.                 uint8_t curHumidifier = 0;
    56.                 uint8_t curAnion = 0;
    57.                 uint8_t curBlanket = 0;
    58.                 uint8_t curColor = 0;
    59.                 uint8_t curHour = 0;
    60.                 uint8_t curMin = 0;
    61.           static uint32_t feederLastTimer=0;
    62.                 static uint32_t eat_alertLastTimer=0;
    63.                 static uint32_t humidifierLastTimer=0;
    64.                 static uint32_t anionLastTimer=0;
    65.                 static uint32_t blanketLastTimer=0;
    66.                 static uint32_t colorLastTimer=0;
    67.                 static uint32_t hourLastTimer=0;
    68.                 static uint32_t minLastTimer=0;
    69.         
    70.                 /**传感器类数据点*/
    71.     int8_t curTem = 0;  //当前的温度
    72.     int8_t curHum = 0;  //当前的湿度
    73.     uint8_t curInfrared = 0;   //当前红外状态
    74.                 uint8_t curPee = 0;  //当前是否尿床
    75.                 uint8_t curEat = 0;  //当前的喝奶状态
    76.                 uint8_t curBaby_Heat = 0;  //当前婴儿的体温
    77.                 uint8_t curBaby_Weight = 0; //当前婴儿的体重
    78.                 uint8_t curCO_Value = 0; //当前CO的浓度
    79.                 uint8_t curBed_Heat = 0;  //当前被窝的温度
    80.     static int8_t lastTem = 0;  //上一次的温度,只有上次和这次的不一样才上传
    81.     static int8_t lastHum = 0;  //上一次的湿度,只有上次和这次的不一样才上传
    82.                 static uint32_t peeLastTimer=0;  //上一次尿床检测的TimerCount
    83.                 static uint32_t eatLastTimer=0;  //上一次喝奶状态的TimerCount
    84.                 static uint32_t babyhLastTimer=0;//上一次婴儿体温的TimerCount
    85.                 static uint32_t weiLastTimer=0;  //上一次婴儿体重的TimerCount
    86.                 static uint32_t COLastTimer=0;   //上一次CO浓度的TimerCount
    87.                 static uint32_t bedhLastTimer=0; //上一次被窝温度的TimerCount
    88.     static uint32_t irLastTimer = 0;  //上一次红外的TimerCount
    89.     static uint32_t thLastTimer = 0;  //上一次Dht11的TimerCount 只有超过2s以上才上传

    90.                 /**获取控制类数据*/
    91.                 curFeeder=feeder_rec;
    92.                 curEat_Alert=eat_alert_rec;
    93.                 curHumidifier=humidifier_rec;
    94.                 curAnion=anion_rec;
    95.                 curBlanket=blanket_rec;
    96.                 curColor=swing_rec;
    97.                 curHour=eat_hour_rec;
    98.                 curMin=gesture;

    99.                 /**获取传感器类数据*/
    100.     curInfrared = irHandle();
    101.                 curPee=pee_rec;
    102.                 curEat=eat_status_rec;
    103.                 curBaby_Heat=baby_heat_rec;
    104.                 curBaby_Weight=baby_weight_rec;
    105.                 curCO_Value=co_value_rec;
    106.                 curBed_Heat=bed_heat_rec;
    107.                 curTem=temperature_rec;
    108.                 curHum=humidity_rec;
    109.                
    110.                 /**控制类数据的更新*/
    111.     if(curFeeder != reportData.devStatus.LED_OnOff)//暖奶器
    112.     {
    113.         if((gizwitsGetTimerCount() - feederLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    114.         {
    115.             reportData.devStatus.LED_OnOff = curFeeder;

    116.             feederLastTimer = gizwitsGetTimerCount();
    117.             printf("LED_OnOff %d \r\n", feederLastTimer);
    118.         }
    119.     }
    120.                
    121.                 if(curEat_Alert != reportData.devStatus.Eat_Alert)//喝奶闹钟
    122.     {
    123.         if((gizwitsGetTimerCount() - eat_alertLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    124.         {
    125.             reportData.devStatus.Eat_Alert = curEat_Alert;

    126.             eat_alertLastTimer = gizwitsGetTimerCount();
    127.             printf("Eat_Alert %d \r\n", eat_alertLastTimer);
    128.         }
    129.     }

    130.                 if(curHumidifier != reportData.devStatus.Humidity_OnOff)//加湿器
    131.     {
    132.         if((gizwitsGetTimerCount() - humidifierLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    133.         {
    134.             reportData.devStatus.Humidity_OnOff = curHumidifier;

    135.             humidifierLastTimer = gizwitsGetTimerCount();
    136.             printf("Humidity_OnOff %d \r\n", humidifierLastTimer);
    137.         }
    138.     }               
    139.                
    140.                 if(curAnion != reportData.devStatus.Anion_OnOff)//负离子净化器
    141.     {
    142.         if((gizwitsGetTimerCount() - anionLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    143.         {
    144.             reportData.devStatus.Anion_OnOff = curAnion;

    145.             anionLastTimer = gizwitsGetTimerCount();
    146.             printf("Anion_OnOff %d \r\n", anionLastTimer);
    147.         }
    148.     }        
    149.                
    150.                 if(curBlanket != reportData.devStatus.Blanket_OnOff)//恒温床垫
    151.     {
    152.         if((gizwitsGetTimerCount() - blanketLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    153.         {
    154.             reportData.devStatus.Blanket_OnOff = curBlanket;

    155.             blanketLastTimer = gizwitsGetTimerCount();
    156.             printf("Blanket_OnOff %d \r\n", blanketLastTimer);
    157.         }
    158.     }        

    159.                 if(curColor != reportData.devStatus.LED_Color)//摇摆档位
    160.     {
    161.         if((gizwitsGetTimerCount() - colorLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    162.         {
    163.             reportData.devStatus.LED_Color = curColor;

    164.             colorLastTimer = gizwitsGetTimerCount();
    165.             printf("LED_Color %d \r\n", colorLastTimer);
    166.         }
    167.     }        
    168.                
    169.                 if(curHour != reportData.devStatus.LED_R)//喝奶时
    170.     {
    171.         if((gizwitsGetTimerCount() - hourLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    172.         {
    173.             reportData.devStatus.LED_R = curHour;

    174.             hourLastTimer = gizwitsGetTimerCount();
    175.             printf("LED_R %d \r\n", hourLastTimer);
    176.         }
    177.     }        
    178.                
    179.                 if(curMin != reportData.devStatus.LED_G)//喝奶分
    180.     {
    181.         if((gizwitsGetTimerCount() - minLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    182.         {
    183.             reportData.devStatus.LED_G = curMin;

    184.             minLastTimer = gizwitsGetTimerCount();
    185.             printf("LED_G %d \r\n", minLastTimer);
    186.         }
    187.     }        
    188.                
    189.                 /**传感器类数据状态更新*/
    190.     if(curInfrared != reportData.devStatus.Infrared)//红外反射
    191.     {
    192.         if((gizwitsGetTimerCount() - irLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    193.         {
    194.             reportData.devStatus.Infrared = curInfrared;

    195.             irLastTimer = gizwitsGetTimerCount();
    196.             printf("Infrared %d \r\n", irLastTimer);
    197.         }
    198.     }
    199.    
    200.     if(curPee != reportData.devStatus.Pee_OnOff)//尿床检测
    201.     {
    202.         if((gizwitsGetTimerCount() - peeLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    203.         {
    204.             reportData.devStatus.Pee_OnOff = curPee;

    205.             peeLastTimer = gizwitsGetTimerCount();
    206.             printf("Pee_OnOff %d \r\n", peeLastTimer);
    207.         }
    208.     }
    209.                
    210.     if(curEat != reportData.devStatus.Eat_Status)//上次是否喝奶
    211.     {
    212.         if((gizwitsGetTimerCount() - eatLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    213.         {
    214.             reportData.devStatus.Eat_Status = curEat;

    215.             eatLastTimer = gizwitsGetTimerCount();
    216.             printf("Eat_Status %d \r\n", eatLastTimer);
    217.         }
    218.     }               
    219.                
    220.     if(curBaby_Heat != reportData.devStatus.Baby_Heat)//婴儿体温
    221.     {
    222.         if((gizwitsGetTimerCount() - babyhLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    223.         {
    224.             reportData.devStatus.Baby_Heat = curBaby_Heat;

    225.             babyhLastTimer = gizwitsGetTimerCount();
    226.             printf("Baby_Heat %d \r\n", babyhLastTimer);
    227.         }
    228.     }                        
    229.                
    230.     if(curBaby_Weight != reportData.devStatus.Baby_Weight)//婴儿体重
    231.     {
    232.         if((gizwitsGetTimerCount() - weiLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    233.         {
    234.             reportData.devStatus.Baby_Weight = curBaby_Weight;

    235.             weiLastTimer = gizwitsGetTimerCount();
    236.             printf("Baby_Weight %d \r\n", weiLastTimer);
    237.         }
    238.     }               

    239.     if(curCO_Value != reportData.devStatus.CO_Value)//一氧化碳浓度
    240.     {
    241.         if((gizwitsGetTimerCount() - COLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    242.         {
    243.             reportData.devStatus.CO_Value = curCO_Value;

    244.             COLastTimer = gizwitsGetTimerCount();
    245.             printf("CO_Value %d \r\n", COLastTimer);
    246.         }
    247.     }                                
    248.                
    249.     if(curBed_Heat != reportData.devStatus.Bed_Heat)//被窝温度
    250.     {
    251.         if((gizwitsGetTimerCount() - bedhLastTimer) > REPORT_TIME_MAX/4) //timeout = 2S
    252.         {
    253.             reportData.devStatus.Bed_Heat = curBed_Heat;

    254.             bedhLastTimer = gizwitsGetTimerCount();
    255.             printf("Bed_Heat %d \r\n", bedhLastTimer);
    256.         }
    257.     }                        
    258.                
    259.     if((gizwitsGetTimerCount()-thLastTimer) > REPORT_TIME_MAX) //timeout = 2S
    260.     {
    261.                                 if((curTem != lastTem)||(curHum != lastHum))//温湿度
    262.                                 {            
    263.                                                 reportData.devStatus.Temperature = curTem;
    264.                                                 reportData.devStatus.Humidity = curHum;
    265.                                                 
    266.                                                 lastTem = curTem;
    267.                                                 lastHum = curHum;
    268.                                                 
    269.                                                 printf("Temperature&Humidity  [%d-%d] %d %d\r\n", gizwitsGetTimerCount(), thLastTimer, curTem, curHum);
    270.                                 }        
    271.         thLastTimer = gizwitsGetTimerCount();
    272.     }
    273. }

    274. void key1ShortPress(void)
    275. {
    276.     printf("KEY1 PRESS\r\n");
    277. }

    278. void key1LongPress(void)
    279. {
    280.     printf("KEY1 PRESS LONG ,Wifi Reset\r\n");
    281.     gizwitsSetDefault();

    282. }
    283. void key2ShortPress(void)
    284. {
    285.     printf("KEY2 PRESS ,Soft AP mode\r\n");

    286.     //Soft AP mode, RGB red
    287.     ledRgbControl(255, 0, 0);
    288.     gizwitsSetMode(SoftAp_Mode);
    289. }

    290. void key2LongPress(void)
    291. {
    292.     //AirLink mode, RGB Green
    293.     printf("KEY2 PRESS LONG ,AirLink mode\r\n");
    294.     ledRgbControl(0, 128, 0);
    295.     gizwitsSetMode(AirLink_Mode);
    296. }

    297. void gestureGet(void)
    298. {
    299.                 if(Key_Scan(GPIOA,GPIO_Pin_1)==1)
    300.                         gesture|=0x01;
    301.                 else
    302.                         gesture&=0xfe;
    303.                
    304.                 if(Key_Scan(GPIOA,GPIO_Pin_4)==1)
    305.                         gesture|=0x02;
    306.                 else
    307.                         gesture&=0xfd;
    308.                
    309.                 if(Key_Scan(GPIOA,GPIO_Pin_5)==1)
    310.                         gesture|=0x04;
    311.                 else
    312.                         gesture&=0xfb;
    313.                
    314.                 if(Key_Scan(GPIOA,GPIO_Pin_7)==1)
    315.                         gesture|=0x08;
    316.                 else
    317.                         gesture&=0xf7;
    318.                
    319.                 if(Key_Scan(GPIOB,GPIO_Pin_0)==1)
    320.                         gesture|=0x10;
    321.                 else
    322.                         gesture&=0xef;
    323.                
    324.                 if(Key_Scan(GPIOB,GPIO_Pin_6)==1)
    325.                         gesture|=0x20;
    326.                 else
    327.                         gesture&=0xdf;
    328.                
    329.                 if(Key_Scan(GPIOB,GPIO_Pin_12)==1)
    330.                         gesture|=0x40;
    331.                 else
    332.                         gesture&=0xbf;
    333.                
    334.                 if(Key_Scan(GPIOB,GPIO_Pin_13)==1)
    335.                         gesture|=0x80;
    336.                 else
    337.                         gesture&=0x7f;
    338. }


    339. int main(void)
    340. {
    341.     SystemInit();
    342.    
    343.     userInit();

    344.     singleKey[0] = keyInitOne(0,RCC_APB2Periph_GPIOB, GPIOB, GPIO_Pin_10, key1ShortPress, key1LongPress);
    345.     keys.keyNum++;
    346.     singleKey[1] = keyInitOne(1,RCC_APB2Periph_GPIOA, GPIOA, GPIO_Pin_8, key2ShortPress, key2LongPress);
    347.     keys.keyNum++;
    348.     keys.singleKey = (keyTypedef_t *)&singleKey;
    349.     keyParaInit(&keys);

    350.     gizwitsInit();
    351.    
    352.     printf("Gokit Init Success \r\n");
    353.     while(1)
    354.     {
    355.                                 gestureGet();
    356.                         
    357.         watchdogFeed();
    358.         
    359.         userHandle();//获取各个传感器的状态
    360.         
    361.         gizwitsHandle((gizwitsReport_t *)&reportData);
    362.     }
    363. }
    复制代码

    很开心
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-11 11:14
  • 签到天数: 345 天

    连续签到: 1 天

    [LV.8]以坛为家I

    18

    主题

    1317

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    3269
    最后登录
    2023-3-16
    发表于 2017-5-9 18:10:26 | 显示全部楼层
    谢谢分享!!!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-5-24 10:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    140

    主题

    2087

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3913
    最后登录
    2020-5-24
    发表于 2017-5-9 19:45:56 | 显示全部楼层
    上视频
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-5-10 07:45:33 | 显示全部楼层
    看见这板子想起当时在学校用雕刻机自己刻板子玩
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    昨天 12:47
  • 签到天数: 1984 天

    连续签到: 34 天

    [LV.Master]伴坛终老

    4

    主题

    8973

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13982
    最后登录
    2025-8-2
    发表于 2017-5-10 07:50:38 | 显示全部楼层
    干的不错啊
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2019-4-1 22:48
  • 签到天数: 302 天

    连续签到: 1 天

    [LV.8]以坛为家I

    87

    主题

    7322

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    4619
    最后登录
    2021-1-25
    发表于 2017-5-23 16:14:45 | 显示全部楼层
    还真有才
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-3 04:00 , Processed in 0.092290 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表