ChatGPT是一种基于自然语言处理技术的人工智能模型,由OpenAI团队开发的。它基于大规模的语言数据集进行训练,并可以生成高质量的自然语言文本,包括对话、摘要、翻译等多种应用。

ChatGPT 主要应用场景包括:

  • 智能客服:可以根据用户提问,快速给出问题的答案和解决方案,提高客户满意度。
  • 智能写作:可以根据用户提供的关键词和语境,快速生成高质量的文章、博客等内容。
  • 聊天机器人:可以和用户进行自然语言对话,提供娱乐、信息咨询等服务。
  • 智能辅助工具 :可以用于文本翻译、语音识别、自动摘要等多种自然语言处理应用。

执行方案

向ChatGPT提问,根据反馈执行以下操作步骤:
1、完成设备树I2C节点、引脚配置
2、完成prj.conf工程配置、
3、使用ChatGPT提供的读取SHT30数据的操作代码
4、编译、运行,验证结果

示例演示

硬件组装

温湿度传感器 SHT30 与聆思CSK开发板对接,接入方式如下:

建立工程

命令行输入lisa zep create ,选择hello world的sample模板(环境部署参考聆思CSK6开发工具简介 )

步骤1:向ChatGPT提问

通过提问获得ChatGPT提供的主程序代码,并copy到工程的/src/main.c文件中
问题:如何在zephyr工程上使用I2C接口读取SHT30传感器数据并打印对应的数据

以下为Chatgpt回复

要在Zephyr工程上使用I2C接口读取SHT30传感器数据并打印对应的数据,您可以遵循以下步骤:
1.确保您的开发板上已经连接了SHT30传感器,并且已经正确配置了I2C总线。
2.在Zephyr的工程配置文件prj.conf中,启用I2C总线驱动和SHT30驱动,例如:

CONFIG_I2C=y
CONFIG_I2C_DRIVER=y
CONFIG_SHT3XD=y
CONFIG_SHT3XD_TRIGGER=y

3.在您的Zephyr应用程序中包含必要的头文件:

#include <zephyr.h>
#include <device.h>
#include <drivers/i2c.h>
#include <drivers/sensor.h>
#include <drivers/sensor/sht3xd.h>

4.初始化I2C总线,例如:

const struct device *i2c_dev;
i2c_dev = device_get_binding("I2C_1");
if (!i2c_dev) {printk("Failed to find I2C_1 device!\n");return;
}

5.初始化SHT30传感器,例如:

const struct device *sht30_dev;
struct sensor_value temp, humidity;sht30_dev = device_get_binding("SHT3XD");if (!sht30_dev) {printk("Failed to find SHT3XD device!\n");return;
}
if (sensor_sample_fetch(sht30_dev) < 0) {printk("Failed to fetch samples from SHT3XD device!\n");return;
}
if (sensor_channel_get(sht30_dev, SENSOR_CHAN_AMBIENT_TEMP, &temp) < 0) {printk("Failed to get temperature from SHT3XD device!\n");return;
}
if (sensor_channel_get(sht30_dev, SENSOR_CHAN_HUMIDITY, &humidity) < 0) {printk("Failed to get humidity from SHT3XD device!\n");return;
}
printk("Temperature: %d.%06d C\n", temp.val1, temp.val2);
printk("Humidity: %d.%06d %%\n", humidity.val1, humidity.val2);

6.编译并运行您的Zephyr应用程序,将会读取SHT30传感器的温度和湿度数据,并打印出来。

请注意,上述代码仅是示例,您需要根据您的实际应用程序做出相应的修改。

以上为Chatgpt回复

步骤2:按ChatGPT的提示根据实际情况完成工程配置

复制代码到prj.conf的配置,并根据提示建立设备树相关文件

设备树配置:boards/csk6012_nano.overlay

/*
Copyright (c) 2021-2022 listenai Intelligent Technology (anhui) Co., Ltd.
SPDX-License-Identifier: Apache-2.0
/
&pinctrl {
/ I2C alternate function */
pinctrl_i2c0_scl_default: i2c0_scl_default{
pinctrls = <I2C0_SCL_GPIOA_10>;
};
pinctrl_i2c0_sda_default: i2c0_sda_default{
pinctrls = <I2C0_SDA_GPIOA_11>;
};
};&i2c0 { /* SDA PA11, SCL PA.10, ALERT PX.XX */
status = "okay";
pinctrl-0 = <&pinctrl_i2c0_scl_default &pinctrl_i2c0_sda_default>;
pinctrl-names = "default";
sht3xd@44 {
compatible = "sensirion,sht3xd";
reg = <0x44>;
label = "SHT3XD";
// alert-gpios = <&gpiob 5 GPIO_ACTIVE_LOW>;// The driver does not currently support
status = "okay";
};
};

工程配置:prj.conf

> #Copyright (c) 2018 Peter Bigot Consulting, LLC
> #SPDX-License-Identifier: Apache-2.0
> CONFIG_STDOUT_CONSOLE=y
> CONFIG_PRINTK=y
> CONFIG_ASSERT=y
> #CONFIG_EARLY_CONSOLE=y
> CONFIG_I2C=y
> CONFIG_SENSOR=y
> CONFIG_SHT3XD=y
>
> #CONFIG_BOOT_BANNER=n

源码文件:src/main.c

/*Copyright (c) 2018 Peter Bigot Consulting, LLC
SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/zephyr.h>
#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>
#include <zephyr/sys/printk.h>
#include <stdio.h>#define ALERT_HUMIDITY_LO 50
#define ALERT_HUMIDITY_HI 60#ifdef CONFIG_SHT3XD_TRIGGER
static volatile bool alerted;static void trigger_handler(const struct device *dev,
const struct sensor_trigger *trig)
{
alerted = !alerted;
}#endifvoid main(void)
{const struct device *dev = device_get_binding("SHT3XD");
int rc;if (dev == NULL) {
printf("Could not get SHT3XD device\n");
return;
}#ifdef CONFIG_SHT3XD_TRIGGER
struct sensor_trigger trig = {
.type = SENSOR_TRIG_THRESHOLD,
.chan = SENSOR_CHAN_HUMIDITY,
};
struct sensor_value lo_thr = { ALERT_HUMIDITY_LO };
struct sensor_value hi_thr = { ALERT_HUMIDITY_HI };
bool last_alerted = false;rc = sensor_attr_set(dev, SENSOR_CHAN_HUMIDITY,
SENSOR_ATTR_LOWER_THRESH, &lo_thr);
if (rc == 0) {
rc = sensor_attr_set(dev, SENSOR_CHAN_HUMIDITY,
SENSOR_ATTR_UPPER_THRESH, &hi_thr);
}
if (rc == 0) {
rc = sensor_trigger_set(dev, &trig, trigger_handler);
}
if (rc != 0) {
printf("SHT3XD: trigger config failed: %d\n", rc);
return;
}
printf("Alert outside %d..%d %%RH got %d\n", lo_thr.val1,
hi_thr.val1, rc);
#endifwhile (true) {
struct sensor_value temp, hum;
rc = sensor_sample_fetch(dev);
if (rc == 0) {
rc = sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP,
&temp);
}
if (rc == 0) {
rc = sensor_channel_get(dev, SENSOR_CHAN_HUMIDITY,
&hum);
}
if (rc != 0) {
printf("SHT3XD: failed: %d\n", rc);
break;
}
#ifdef CONFIG_SHT3XD_TRIGGER
if (alerted != last_alerted) {
if (lo_thr.val1 > hum.val1) {
printf("ALERT: humidity %d < %d\n",
hum.val1, lo_thr.val1);
} else if (hi_thr.val1 < hum.val1) {
printf("ALERT: humidity %d > %d\n",
hum.val1, hi_thr.val1);
} else {
printf("ALERT: humidity %d <= %d <= %d\n",
lo_thr.val1, hum.val1, hi_thr.val1);
}
last_alerted = alerted;
}
#endif
printf("SHT3XD: %.2f Cel ; %0.2f %%RH\n",
sensor_value_to_double(&temp),
sensor_value_to_double(&hum));
k_sleep(K_MSEC(2000));
}
}

CMake 构建脚本:CMakeLists.txt

#Copyright (c) 2018 Peter Bigot Consulting, LLC
#SPDX-License-Identifier: Apache-2.0cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(sht3xd)FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources})

步骤3:编译/烧录验证

查询结果:it’s perfect!

经验总结

1.快速起手:使用ChatGPT快速搭建工程模板,节省时间、提高效率
2.查漏补缺与调试:当面对代码中不理解的点,可以进行提问,ChatGPT将结合示例进行讲解,可以更好地在我们的知识体系中对知识点进行补充,同时结合运行情况进行问题排查
(技术分享:聆思科技柯钿爽)

实操视频

让ChatGPT编写嵌入式应用,三分钟完成传感器接入!

用ChatGPT做嵌入式应用开发相关推荐

  1. CVTE【嵌入式应用开发】【软件技术支持】面经【已拿offer】

    [嵌入式应用开发]技术一面(30min) 1.面试官主动介绍了CVTE 2.画I2C时序图 3.聊一下项目.项目的难点,怎么解决 4.手撕代码:将字符串中的小写字母挑出来 5.问对加班有什么看法 (有 ...

  2. python最适合做什么-python适合做什么开发?

    Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. pytho ...

  3. 吴恩达OpenAI基于ChatGPT的Prompt开发教程

    吴恩达OpenAI基于ChatGPT的Prompt开发教程 1.如何给出清晰具体的提示 1.1大模型分类: Base LLM基础大语言模型来源于预训练模型:用已有单词推测下一个单词. Instruct ...

  4. OpenAI 插件可以让 ChatGPT 做什么?

    2010年苹果发布了iPhone4,那一年我本科同学在iPhone上开发了一款应用,名字叫"万年历",可能有不少人都用过,然后他就财富自由了. 今天,OpenAI官宣ChatGPT ...

  5. 浅评ChatGPT在软件开发上的辅助能力(附GPT-4对比)

    01 背景 ChatGPT于去年正式公测后,凭借其强大的自然语言处理能力迅速获得业内广泛关注,特别是辅助软件开发上,初步表现出了令人满意的能力,然而正当业内积极探索引入ChatGPT后的新工作模式之时 ...

  6. 如何使用Chatgpt做论文降重呢?

    使用ChatGPT做论文降重详细操作步骤 一.说明 1.普通的降重方法有:多重翻译降重.改写润色降重.续写降重,在降重的过程中可以配合使用,效果更加. 2.ChatGPT的高级降重方法在最后一个,就是 ...

  7. ChatGPT想干掉开发人员,做梦去吧

    很多人都发现ChatGPT可以做一些代码相关的工作,不仅可以写一些基础的类似python.java.js的代码段,还可以做一定量的调优,于是就开始担忧起来,到哪天我的开发工作会不会被ChatGPT这个 ...

  8. 用ChatGPT做表格真香!只需动嘴提要求和复制粘贴

    开发者(KaiFaX) 面向全栈工程师的开发者 专注于前端.Java/Python/Go/PHP的技术社区 明敏 发自 凹非寺 量子位 | 公众号 QbitAI 托ChatGPT的福,梦想中让Exce ...

  9. 程序员如何把ChatGPT用到开发中

    问:ChatGPT是程序员的好帮手?还是要干掉程序员? ChatGPT现在如何了? ChatGPT最近火到不行,在短短几个月时间里,OpenAI打造的ChatGPT就从一个弱小无助的AI聊天程序发展成 ...

最新文章

  1. JavaScript系统对象
  2. 总结一下“网络连接受限制”无法上网的解决办法
  3. jQuery之选项卡的实现
  4. 关于minikube使用HTTP_PROXY拉取镜像后取消代理的操作过程记录
  5. springMVC源码分析
  6. linux源码安装必备条件,玩转Linux必备的金钥匙之源码安装mysql
  7. jvm gc停顿_在JVM中记录世界停顿
  8. 十进制小数转换二进制的问题
  9. 3Dmax导入bip(此篇讲解模型都有骨骼)
  10. ncbi下载数据sra和转换fastq流程
  11. 计算机网络信息安全参考文献,计算机网络信息安全学论文参考文献 计算机网络信息安全专著类参考文献有哪些...
  12. 学好MySQL增删查改,争取不做CURD程序员【上篇】
  13. Android新体会(二)仿桌面实现图标拖动
  14. 你真的懂one-hot编码吗?
  15. Nodejs生成二维码图片文件
  16. zip文件用什么打开,如何打开zip文件
  17. 【LCC系列】自动驾驶中激光雷达和相机的自动在线标定(2013)
  18. 使用 C# 开发 Kubernetes 组件,获取集群资源信息
  19. 物联网综合实训平台-物联网实训系统-物联网实训室设备
  20. 计算机系统实验四:二进制程序逆向工程

热门文章

  1. 组装一台台式计算机的流程,如何组装电脑?组装电脑的操作流程!
  2. LDMIA、LDMIB、LDMDB、LDMDA、STMIA、LDMFD、LDMFA、LDMED、LDMEA等指令详解
  3. UVA 1600 Patrol Robot 巡逻机器人(BFS)
  4. 第一批用基因编辑工具定制DNA的婴儿即将诞生?
  5. java和golang哪个值得入手,附源代码
  6. 微信小程序如何设置跳转企业微信
  7. 关于VMware workstation Player的虚拟网络编辑器没有的情况
  8. Docker自定义镜像上传阿里云
  9. 前端切图之svg图标的复用基于defs和use 亲测有用
  10. 【android】调用系统app打开word文档遇到的问题