RT-Thread学习的综合应用——使用AP6181 WiFi模组对接OneNET应用示例

article/2025/8/16 0:08:33

学习了RT-Thread的内核也有一段时间了,由于各种各样的琐事自己没有去做一个综合应用示例,刚最近有点时间,做了一个对接OneNET的历程,采用的是OneNET的EDP协议,关于OneNET的EDP协议可以点击跳转至OneNET EDP协议讲解与应用这篇博客看一下,这篇博客会比较详细的介绍对接EDP协议的思路。本篇博客会根据着重的将RT-Thread的应用思路,在本应用示例也只是用来软件定时器、线程管理、信号量而已,因为我用的是潘多拉开发板进行实验,所以AP6181驱动就直接用RT-Thread的,自己也只是在这个基础上做了应用。
使用AP6181 WiFi模组对接OneNET应用示例:STM32+AP6181(SDIO WiFi模组)对接OneNET,实现温湿度定时上报,控制上报周期、控制设备LED灯、蜂鸣器以及电机,掉线自动连接、WiFi自动连接。

整个工程代码点击跳转至GitHub获取。

一、移植需要修改的地方

在移植时,主要也就是修改几个地方,代码如下:

#define ONENET_EDP_PRODUCT_ID		"190254"	/* 产品id */
#define ONENET_EDP_PRODUCT_APIKEY	"cWPICK6PDU6cOHP=T0SqMcXWRc4="	/* api key */
#define ONENET_EDP_DEVICE_ID		"504890772"	/* 设备id */
#define ONENET_EDP_DEVICE_AUTHKEY	"edp20181122"	/* 设备鉴权信息 */

需要修改的为产品ID、APIKEY、设备ID、设备鉴权信息,将这些信息修改为你自己在OneNET开发者中心的产品信息或设备信息。

二、连接OneNET思路

1、开机后,RT-Thread完成一系列的初始化后进入main线程,首先进入main函数会进行执行onenet_edp_sample();函数进行信号量创建、软件定时器创建以及线程创建:

rt_err_t onenet_edp_sample(void)
{/* 连接OneNET信号量 */link_onenet_sem = rt_sem_create("link_onenet_sem", 0, RT_IPC_FLAG_FIFO);if(link_onenet_sem == RT_NULL){rt_kprintf("[EDP]link_onenet_sem create failed\r\n");return RT_ERROR;}/* 发送心跳信号量 */send_heart_sem = rt_sem_create("send_heart_sem", 0, RT_IPC_FLAG_FIFO);if(send_heart_sem == RT_NULL){rt_kprintf("[EDP]send_heart_sem create failed\r\n");return RT_ERROR;}/* 用于获取温湿度和发送温湿度信号量 */humi_temp_sem = rt_sem_create("humi_temp_sem", 1, RT_IPC_FLAG_FIFO);if(humi_temp_sem == RT_NULL){rt_kprintf("[EDP]humi_temp_sem create failed\r\n");return RT_ERROR;}/* 用于定时触发上报温湿度数据信号量 */send_humi_temp_sem = rt_sem_create("send_humi_temp_sem", 0, RT_IPC_FLAG_FIFO);if(send_humi_temp_sem == RT_NULL){rt_kprintf("[EDP]send_humi_temp_sem create failed\r\n");return RT_ERROR;}/* 软件定时器,周期执行,120秒 */send_heart_timer = rt_timer_create("send_heart_timer", send_heart_timer_callback, RT_NULL, 120000, RT_TIMER_FLAG_SOFT_TIMER | RT_TIMER_FLAG_PERIODIC);if(send_heart_timer == RT_NULL){rt_kprintf("[EDP]send_heart_timer create failed\r\n");return RT_ERROR;}/* 软件定时器,周期执行,300秒 */send_humi_temp_timer = rt_timer_create("send_humi_temp_timer", send_humi_temp_timer_callback, RT_NULL, 30000, RT_TIMER_FLAG_SOFT_TIMER | RT_TIMER_FLAG_PERIODIC);if(send_humi_temp_timer == RT_NULL){rt_kprintf("[EDP]send_humi_temp_timer create failed\r\n");return RT_ERROR;}/* 连接设备线程 */link_dev_thread = rt_thread_create("link_dev_thread", onenet_edp_link_device_thread, RT_NULL, 2048, 4, 200);if(link_dev_thread == RT_NULL){rt_kprintf("[EDP]link_dev_thread create failed\r\n");return RT_ERROR;}rt_thread_startup(link_dev_thread);/* 发送心跳线程 */send_heart_thread = rt_thread_create("send_heart_thread", onenet_edp_send_heart_thread, RT_NULL, 1024, 4, 50);if(send_heart_thread == RT_NULL){rt_kprintf("[EDP]send_heart_thread create failed\r\n");return RT_ERROR;}rt_thread_startup(send_heart_thread);/* 平台下发命令或结果处理线程 */recv_data_pro_thread = rt_thread_create("recv_data_pro_thread",onenet_edp_receive_process_thread, RT_NULL, 4096, 4, 100);if(recv_data_pro_thread == RT_NULL){rt_kprintf("[EDP]recv_data_pro_thread create failed\r\n");return RT_ERROR;}rt_thread_startup(recv_data_pro_thread);/* 获取温湿度数据线程 */get_humi_temp_thread = rt_thread_create("get_humi_temp_thread", onenet_edp_get_humi_temp_thread, RT_NULL, 4096, 4, 50);if(get_humi_temp_thread == RT_NULL){rt_kprintf("[EDP]get_humi_temp_thread create failed\r\n");return RT_ERROR;}rt_thread_startup(get_humi_temp_thread);/* 上报温湿度数据到平台线程 */send_humi_temp_thread = rt_thread_create("send_humi_temp_thread", onenet_edp_send_humi_temp_thread, RT_NULL, 4096, 4, 100);if(send_humi_temp_thread == RT_NULL){rt_kprintf("[EDP]send_humi_temp_thread create failed\r\n");	return RT_ERROR;	}rt_thread_startup(send_humi_temp_thread);return RT_EOK;	
}

2、完成信号量创建、软件定时器的线程创建后,会进行注册网络就绪事件回调、网络断开事件回调、以及连接网络、开启自动连接网络:

/* 注册网络就绪回调、 */
rt_wlan_register_event_handler(RT_WLAN_EVT_READY, wlan_ready_handler, RT_NULL);
/* 注册网络断开事件回调 */
rt_wlan_register_event_handler(RT_WLAN_EVT_STA_DISCONNECTED, wlan_station_disconnect_handler, RT_NULL);
/* 连接路由器 */
rt_wlan_connect(WLAN_SSID, WLAN_PASSWORD);
rt_thread_mdelay(1000);
/* 开启自动连接 */
wlan_autoconnect_init();
rt_wlan_config_autoreconnect(RT_TRUE);

3、网络就绪回调函数用于释放连接OneNET信号量,告诉系统已经有网络了,可以去连接OneNET了:

void wlan_ready_handler(int event, struct rt_wlan_buff *buff, void *parameter)
{rt_kprintf("wlan ready\r\n");if(link_onenet_sem != RT_NULL){rt_sem_release(link_onenet_sem);}
}

而另一方面,连接OneNET线程会移植挂起等待连接OneNET的信号量,指导获取到这个信号量才开始去连接OneNET:

/**************************************************************
函数名称:onenet_edp_link_device_thread
函数功能:连接OneNET平台设备线程
输入参数:parameter:线程入口参数
返 回 值:无
备    注:WiFi注册上网了后连接平台,连接成功则启动定时器发送心跳
**************************************************************/
void onenet_edp_link_device_thread(void *parameter)
{rt_err_t result = RT_ERROR;while(1){result = rt_sem_take(link_onenet_sem, RT_WAITING_FOREVER); /* 等待时间:一直等 */if(RT_EOK == result){#ifdef USING_DEVICEID_APIKEY_LINKonenet_edp_link_device(ONENET_EDP_SRV_ADDR, ONENET_EDP_SRV_PORT, ONENET_EDP_DEVICE_ID, ONENET_EDP_PRODUCT_APIKEY);#elseonenet_edp_link_device(ONENET_EDP_SRV_ADDR, ONENET_EDP_SRV_PORT, ONENET_EDP_PRODUCT_ID, ONENET_EDP_DEVICE_AUTHKEY);#endif}rt_thread_mdelay(1);rt_thread_yield();/* 放弃剩余时间片,进行一次线程切换 */}
}

三、数据上报和心跳发送思路

1、连接上OneNET之后,处理平台下发命令或结果的线程会得到连接成功返回结果并进行处理,启动软件定时器进行发送心跳和上报数据:

case 0:
{rt_kprintf("Tips:	连接成功\r\n");if(send_heart_timer != RT_NULL){rt_kprintf("[EDP]start send_heart_timer\r\n");rt_timer_start(send_heart_timer);/* 启动软件定时器定时发送心跳 */}if(send_humi_temp_timer != RT_NULL){rt_kprintf("[EDP]start send_humi_temp_timer\r\n");rt_timer_start(send_humi_temp_timer);/* 启动软件定时器定时上报数据 */}break;
}

2、软件定时器回调函数用于释放发送心跳信号量:

/**************************************************************
函数名称:send_heart_timer_callback
函数功能:软件定时器回调函数,用于定时发送信号量来触发发送心跳包
输入参数:parameter:入口参数
返 回 值:无
备    注:无
**************************************************************/
void send_heart_timer_callback(void *parameter)
{if(send_heart_timer != RT_NULL){rt_sem_release(send_heart_sem);}
}

3、发送心跳线程获取到信号量之后执行发送心跳操作:

/**************************************************************
函数名称:onenet_edp_send_heart_thread
函数功能:发送心跳线程
输入参数:parameter:线程入口参数
返 回 值:无
备    注:无
**************************************************************/
void onenet_edp_send_heart_thread(void *parameter)
{rt_err_t result = RT_ERROR;while(1){result = rt_sem_take(send_heart_sem, RT_WAITING_FOREVER); /* 等待时间:一直等 */if(RT_EOK == result){onenet_edp_send_heart();}rt_thread_mdelay(1);rt_thread_yield();/* 放弃剩余时间片,进行一次线程切换 */}
}

4、同理,上报数据也是等待信号量,一旦获取到就上报数据,为保证数据上报的同步,获取数据与上报数据用来二值信号量,实现代码:

/**************************************************************
函数名称:onenet_edp_get_humi_temp_thread
函数功能:获取温湿度数据线程
输入参数:parameter:线程入口参数
返 回 值:无
备     注:无
**************************************************************/
void onenet_edp_get_humi_temp_thread(void *parameter)
{rt_err_t result = RT_ERROR;while(1){result = rt_sem_take(send_humi_temp_sem, RT_WAITING_FOREVER); /* 等待时间:一直等 */if(RT_EOK == result){result = rt_sem_take(humi_temp_sem, RT_WAITING_FOREVER); /* 等待时间:一直等 */if(RT_EOK == result){aht10_read_data(&g_temperature, &g_humidity);}rt_sem_release(humi_temp_sem);  /* 释放信号量 */}rt_thread_mdelay(1);rt_thread_yield();/* 放弃剩余时间片,进行一次线程切换 */}
}/**************************************************************
函数名称:onenet_edp_send_humi_temp_thread
函数功能:发送温湿度数据线程
输入参数:parameter:线程入口参数
返 回 值:无
备     注:无
**************************************************************/
void onenet_edp_send_humi_temp_thread(void *parameter)
{rt_err_t result = RT_ERROR;while(1){result = rt_sem_take(send_humi_temp_sem, RT_WAITING_FOREVER); /* 等待时间:一直等 */if(RT_EOK == result){result = rt_sem_take(humi_temp_sem, RT_WAITING_FOREVER); /* 等待时间:一直等 */if(RT_EOK == result){/* 上传温湿度数据到平台 */if(RT_EOK == onenet_edp_send_data(FORMAT_TYPE3, ONENET_EDP_DEVICE_ID, ONENET_EDP_PRODUCT_APIKEY, humi_temp_data_stream, humi_temp_data_stream_cnt)){rt_kprintf("Humi_Temp Send success\n");}else{rt_kprintf("Humi_Temp Status Send failed\n");}}rt_sem_release(humi_temp_sem);  /* 释放信号量 */}rt_thread_mdelay(1);rt_thread_yield();/* 放弃剩余时间片,进行一次线程切换 */}
}

四、设备断开与网络断开处理

1、如果在有网络的情况下设备突然断开,那么就需要重新连接OneNET了,首先会停止所有定时器、接着重新发送连接OneNET信号量,处理如下:

case DISCONNECT:
{rt_kprintf("WARN:连接断开,准备重连\r\n");if(send_heart_timer != RT_NULL){rt_kprintf("[EDP]stop send_heart_timer\r\n");rt_timer_stop(send_heart_timer);/* 关闭软件定时器 */}if(send_humi_temp_timer != RT_NULL){rt_kprintf("[EDP]stop send_humi_temp_timer\r\n");rt_timer_stop(send_humi_temp_timer);/* 关闭软件定时器 */}if(link_onenet_sem != RT_NULL){rt_sem_release(link_onenet_sem);}break;
}

2、如果是网络断开,那么就需要停止软件定时器,处理如下:

void wlan_station_disconnect_handler(int event, struct rt_wlan_buff *buff, void *parameter)
{rt_kprintf("disconnect from the network!\n");if(send_heart_timer != RT_NULL){rt_kprintf("[EDP]stop send_heart_timer\r\n");rt_timer_stop(send_heart_timer);/* 关闭软件定时器 */}if(send_humi_temp_timer != RT_NULL){rt_kprintf("[EDP]stop send_humi_temp_timer\r\n");rt_timer_stop(send_humi_temp_timer);/* 关闭软件定时器 */}
}

五、命令处理思路

1、在命令处理里面,主要做了控制LED、BEEP、电机以及控制上报数据周期,其中控制数据上报周期用到了rt_timer_control函数,处理如下:

/**************************************************************
函数名称:onenet_edp_command_callback
函数功能:平台下发命令回调函数
输入参数:req:下发的命令
返 回 值:无
备    注:无
**************************************************************/
void onenet_edp_command_callback(char *req)
{char *time_ptr = NULL;unsigned int current_time = 0;rt_pin_mode(PIN_LED_R, PIN_MODE_OUTPUT);rt_pin_mode(PIN_MOTOR_A, PIN_MODE_OUTPUT);rt_pin_mode(PIN_MOTOR_B, PIN_MODE_OUTPUT);rt_pin_mode(PIN_BEEP, PIN_MODE_OUTPUT);led_ctrl(0);beep_ctrl(0);motor_ctrl(0);/* LED */if(strstr((const char*)req, "LED")){if(strcmp("LED:1", req) == 0){g_led_status = 1;led_ctrl(1);/* 上传LED状态数据到平台 */onenet_edp_send_data(FORMAT_TYPE3, ONENET_EDP_DEVICE_ID, ONENET_EDP_PRODUCT_APIKEY, led_status_data_stream, led_status_data_stream_cnt);}else if(strcmp("LED:0", req) == 0){g_led_status = 0;led_ctrl(0);/* 上传LED状态数据到平台 */onenet_edp_send_data(FORMAT_TYPE3, ONENET_EDP_DEVICE_ID, ONENET_EDP_PRODUCT_APIKEY, led_status_data_stream, led_status_data_stream_cnt);}else{}}/* 蜂鸣器 */else if(strstr((const char*)req, "BEEP")){if(strcmp("BEEP:1", req) == 0){g_beep_status = 1;beep_ctrl(1);/* 上传BEEP状态数据到平台 */onenet_edp_send_data(FORMAT_TYPE3, ONENET_EDP_DEVICE_ID, ONENET_EDP_PRODUCT_APIKEY, beep_status_data_stream, beep_status_data_stream_cnt);}else if(strcmp("BEEP:0", req) == 0){g_beep_status = 0;beep_ctrl(0);/* 上传BEEP状态数据到平台 */onenet_edp_send_data(FORMAT_TYPE3, ONENET_EDP_DEVICE_ID, ONENET_EDP_PRODUCT_APIKEY, beep_status_data_stream, beep_status_data_stream_cnt);}else{}}/* 电机 */else if(strstr((const char*)req, "MOTOR")){if(strcmp("MOTOR:1", req) == 0){g_motor_status = 1;motor_ctrl(1);/* 上传BEEP状态数据到平台 */onenet_edp_send_data(FORMAT_TYPE3, ONENET_EDP_DEVICE_ID, ONENET_EDP_PRODUCT_APIKEY, motor_status_data_stream, motor_status_data_stream_cnt);}else if(strcmp("MOTOR:0", req) == 0){g_motor_status = 0;motor_ctrl(0);/* 上传BEEP状态数据到平台 */onenet_edp_send_data(FORMAT_TYPE3, ONENET_EDP_DEVICE_ID, ONENET_EDP_PRODUCT_APIKEY, motor_status_data_stream, motor_status_data_stream_cnt);}else{}}else if(strstr((const char*)req, "TIME")){time_ptr = req + 5;g_data_time = (RT_TICK_PER_SECOND * atoi(time_ptr));/* 单位:秒 */if(g_data_time > 0){rt_kprintf("g_data_time:%d\r\n", g_data_time);if(RT_EOK == rt_timer_control(send_humi_temp_timer, RT_TIMER_CTRL_SET_TIME, &g_data_time)){rt_kprintf("修改定时上传温湿度周期成功,当前周期值为:%d\r\n", g_data_time);}else{rt_kprintf("修改定时上传温湿度周期失败\r\n");}}if(RT_EOK == rt_timer_control(send_humi_temp_timer, RT_TIMER_CTRL_GET_TIME, &current_time)){rt_kprintf("current_time:%d\r\n", current_time);}/* 上传获取数据周期值到平台 */onenet_edp_send_data(FORMAT_TYPE3, ONENET_EDP_DEVICE_ID, ONENET_EDP_PRODUCT_APIKEY, data_time_data_stream, data_time_data_stream_cnt);}else{rt_kprintf("receive other commond\r\n");}
}

六、在OneNET实现的应用示例

点击跳转至在OneNET实现的应用
在这里插入图片描述

七、图片示例

1、连接成功

在这里插入图片描述

2、发送心跳成功

在这里插入图片描述

3、上报数据成功

在这里插入图片描述

4、接收命令执行操作以及上报状态成功:

在这里插入图片描述

七、FinSH抓取连接OneNET、发送心跳、上报数据控制设备的信息

1、信息如下:
\ | /
- RT - Thread Operating System
/ | \ 4.0.0 build Mar 15 2019
2006 - 2018 Copyright by rt-thread team
lwIP-2.0.2 initialized!
[SFUD] Find a Winbond flash chip. Size is 16777216 bytes.
[SFUD] w25q128 flash device is initialize success.
msh />[I/FAL] RT-Thread Flash Abstraction Layer (V0.2.0) initialize success.
[I/OTA] RT-Thread OTA package(V0.1.3) initialize success.
[I/OTA] Verify ‘wifi_image’ partition(fw ver: 1.0, timestamp: 1529386280) success.
[I/WICED] wifi initialize done. wiced version 3.3.1
[I/WLAN.dev] wlan init success
[I/WLAN.lwip] eth device init ok name:w0
join ssid:MY_WiFi
[I/WLAN.mgnt] wifi connect success ssid:MY_WiFi
[Flash] EasyFlash V3.2.1 is initialize success.
[Flash] You can get the latest version on https://github.com/armink/EasyFlash .
wlan ready
socket create success!!!, socket_id:0
[I/WLAN.lwip] Got IP address : 192.168.43.5
socket connect success!!!
[EDP]EDP_PacketConnect send success
socket receive data
Tips: 连接成功
[EDP]start send_heart_timer
[EDP]start send_humi_temp_timer
[EDP]send heart
socket receive data
cmdid: 00a8d84c-d740-586c-94d1-4e6ac32dc883, req: LED:1, req_len: 5
Send 35 Bytes
socket receive data
Tips: HeartBeat OK
socket receive data
socket receive data
Tips: Send Ok
[EDP]send heart
socket receive data
Tips: HeartBeat OK
socket receive data
cmdid: 4b3ffb43-4f0c-50f3-9370-1ec9179658d8, req: LED:0, req_len: 5
Send 35 Bytes
socket receive data
socket receive data
Tips: Send Ok
socket receive data
cmdid: 3c039820-9487-5415-948d-f209550672e5, req: LED:1, req_len: 5
Send 35 Bytes
socket receive data
socket receive data
Tips: Send Ok
socket receive data
cmdid: e8f37c5b-d136-5ff5-95f2-40a530d9d553, req: LED:0, req_len: 5
Send 35 Bytes
socket receive data
socket receive data
Tips: Send Ok
socket receive data
cmdid: f38d85db-2b5b-51a9-94c7-6fda84de0ce1, req: LED:1, req_len: 5
Send 35 Bytes
socket receive data
socket receive data
Tips: Send Ok
socket receive data
cmdid: f2d9c7cc-0b02-594d-84b6-2b8e344a621f, req: LED:0, req_len: 5
Send 35 Bytes
socket receive data
socket receive data
Tips: Send Ok
[EDP]send heart
socket receive data
Tips: HeartBeat OK
[EDP]send heart
socket receive data
Tips: HeartBeat OK
[EDP]send heart
socket receive data
Tips: HeartBeat OK
socket receive data
cmdid: 4fc4d0de-078e-5ce5-bae1-cc4fdff23ec8, req: LED:1, req_len: 5
Send 35 Bytes
socket receive data
socket receive data
Tips: Send Ok
socket receive data
cmdid: 5f56d146-0313-5814-9c62-f5836221aebd, req: LED:0, req_len: 5
Send 35 Bytes
socket receive data
socket receive data
Tips: Send Ok
[EDP]send heart
Send 65 Bytes
Humi_Temp Send success
socket receive data
Tips: HeartBeat OK
socket receive data
socket receive data
Tips: Send Ok
[EDP]send heart
socket receive data
Tips: HeartBeat OK
[EDP]send heart
socket receive data
Tips: HeartBeat OK
[EDP]send heart
socket receive data
Tips: HeartBeat OK
[EDP]send heart
socket receive data
Tips: HeartBeat OK
[EDP]send heart
socket receive data
Tips: HeartBeat OK
[EDP]send heart
Send 65 Bytes
Humi_Temp Send success
socket receive data
Tips: HeartBeat OK
socket receive data
socket receive data
Tips: Send Ok
[EDP]send heart
socket receive data
Tips: HeartBeat OK
socket receive data
cmdid: 6235c513-bee0-5a46-a5ef-9282377f352a, req: MOTOR:1, req_len: 7
Send 37 Bytes
socket receive data
socket receive data
Tips: Send Ok
socket receive data
cmdid: fcbb4818-eeb7-5cac-b122-41b6329d2c99, req: MOTOR:0, req_len: 7
Send 37 Bytes
socket receive data
socket receive data
Tips: Send Ok


http://chatgpt.dhexx.cn/article/hwnl5t4f.shtml

相关文章

IOT-OS之RT-Thread(十六)--- WLAN管理框架 + AP6181(BCM43362) WiFi模块

文章目录 一、WLAN管理框架简介二、WLAN Device实现与AP6181 WLAN驱动移植2.1 WLAN Device驱动接口层2.2 AP6181 WLAN驱动移植 三、WLAN Protocol实现与LwIP协议栈移植3.1 WLAN Protocol 网络协议层3.2 LwIP协议栈移植 四、WLAN Config 参数管理与自动连接实现4.1 WLAN Config …

ap6181移植

ap6181 功能:wifi station、softap、wifi direct 接口类型:SDIO 编译模式:编成模块方式,修改路径如下BoardConfig.mk android4.4\device\softwinner\astar-y3 BoardConfig.mk 文件决定android 加载哪一款wifi 模组, 要…

超高性价比WiFi蓝牙模块大合集

无线技术的不断成熟,对物联网的发展起着至关重要的作用,实现“万物互联、物物互联”变得更加轻松、安全。蓝牙技术和WiFi技术都属于无线通信网络标准,可以实现无线段距离联络,并且都工作在ISM2.4GHz公共频段,但是不同的…

IOT-OS之RT-Thread(十五)--- SDIO设备对象管理 + AP6181(BCM43362) WiFi模块

文章目录 一、AP6181 Wi-Fi模块简介1.1 AP6181 硬件接口1.2 AP6181 驱动层级 二 SDIO设备对象管理2.1 SDIO Bus Driver2.1.1 Host 数据结构描述2.1.2 rt_mmcsd_req 数据结构描述2.1.3 SDIO Bus 接口函数及初始化过程 2.2 SDIO Card Device & Driver2.2.1 SDIO Card 数据结构…

揭晓你所不了解的第三代测序技术

揭晓你所不了解的第三代测序技术 浏览 5440 讨论 1 biozy楼主 发布于 2015-07-10 只看楼主 什么是第三代测序技术? 第三代测序技术是指单分子测序技术。DNA测序时,不需要经过PCR扩增,实现了对每一条DNA分子的单独测序。如果你还记得&#xff…

《全基因组测序WGS数据分析——1.DNA测序技术》

WGS(Whole Genome Sequencing) 指将物种细胞里面完整的基因组序列全部DNA,检测并排列,此技术几乎能够鉴定出基因组上任何类型的突变。 对于人类来说,全基因组测序的价值是极大的,它的信息包含了所有基因和生命特征之间的内在关联…

DNA 测序技术

DNA 测序技术用以分析特定DNA 片段的碱基序列(腺嘌呤(A)、胸腺嘧啶(T)、胞嘧啶(C)与鸟嘌呤(G))的排列方式. 图2 DNA 测序及拼接过程示意图 Fig. 2 Diagram of…

单细胞测序系列之一:测序技术的发展

本文同步发布于个人博客https://www.horosama.com 相关文章链接: 单细胞测序系列之二:单细胞基因组测序 单细胞测序系列之三:单细胞转录组测序 文章目录 1 引言2 第一代测序技术3 第二代测序技术4 第三代测序技术 1 引言 图1 核酸测序技术的…

Nanopore测序技术

Nanopore测序技术 Shaoqian_Ma已关注 0.1142020.04.14 10:59:30字数 2,727阅读 360 纳米孔测序解析新型冠状病毒全基因组 本文的参考视频为:https://www.bilibili.com/video/BV13T4y15727?p9 简介 官网:https://nanoporetech.com/ 优势如下&…

群体遗传学习笔记-测序技术学习

群体遗传学习笔记-测序技术学习 重测序技术简介 全基因组重测序(Resequencing)是对已知参考基因组序列的物种进行不同个体间的基因组测序,并在此基础上对个体或群体进行差异性分析。通过全基因组重测序,将不同梯度插入片段(Insert-Size&…

生物信息学_测序技术(一)DNA测序

核酸在生命活动中起着重要的作用,核酸有两类: DNA 携带决定个体性状的遗传信息 RNA 参与遗传信息的表达与调控 DNA是携带遗传信息的载体之一,而生物体的遗传信息以特定核苷酸排列顺序存储,不同生物体具有不同的排列顺序&…

测序平台和测序技术是怎么对应的?

测序平台和测序技术是怎么对应的? 可能问了个非常基础甚至有点蠢的问题。真的没有搞懂平台和技术名字的对应关系。 首先,平台其实就是机器名字,而技术是指代不同原理吗? 那么,二代的测序平台和技术都是叫illumina吗…

DNA测序技术的发展史之——第一代测序技术

DNA测序技术的发展史之——第一代测序技术 2016-11-19 15:55:42 | 分类: 默认分类 [转载] 1953年,沃森和克里克发现了DNA的双螺旋结构,随后,分子生物学研究发展迅速。20世纪70年代,DNA测序技术发明。2001年&#xff…

DNA 测序技术的发展:第三代测序法

本文作为DNA测序的最终章,就和大家聊一聊最新一代的DNA测序技术。不相同于上两篇文章中提到的桑格法测序和SBS高通量测序,小编并没有给第三代测序法一个简单的概括性命名。原因是第三代测序的发展方向太多,不好直接概括为某一特定方法。具体来…

重测序专题(一)| 一文了解测序技术的发展

全基因组重测序(Whole-genome re-sequencing),就是对已有参考基因组的物种个体进行再次测序。它可以对单独个体,也可以对群体进行研究。运用全基因组重测序手段,在医学上我们可以提供个性化、精准化医疗,在…

第四代测序技术(纳米孔测序技术)

第四代测序技术(纳米孔测序技术) ​ 纳米孔测序技术(又称第四代测序技术)是最近几年兴起的新一代测序技术。目前测序长度可以达到150kb。这项技术开始于90年代,经历了三个主要的技术革新:一、单分子DNA从纳…

理解高通量测序技术和单细胞测序技术(自用)

首先明确单细胞测序技术不一定是高通量的,有单细胞测序技术,高通量测序技术,包括高通量测序技术在内的所有高通量技术,用于单细胞测序的高通量技术。 如果我们要从技术层面理解单细胞测序并分析其优势,就必然绕不开对“…

【单细胞测序】一、单细胞测序技术总结

文章目录 一、 单细胞测序技术简介二、单细胞测序优势三、单细胞测序原理 一、 单细胞测序技术简介 **单细胞测序技术(single cell sequencing)**是指在单个细胞水平上,对基因组、转录组、表观组进行高通量测序分析的一项新技术,…

Hi-C 测序技术(图解详解)

文章目录 一、介绍二、原理及步骤三、三维基因组检测技术比较1、C技术3C(一对一)4C(一对多)5C(多对多)Hi-C(全部互作) 2、基于免疫沉淀技术ChIP-loopChIA-PET 四、总结 一、介绍 Hi…

测序技术

第一代测序技术-Sanger末端终止法 用双脱氧核苷酸作为链终止试剂(双脱氧核苷酸在脱氧核糖上没有聚合酶延伸链所需要的3-OH基团,所以可被用作链终止试剂)通过聚合酶的引物延伸产生一系列大小不同的分子后再进行分离的方法。测序引…