用ChatGPT做嵌入式应用开发

这篇具有很好参考价值的文章主要介绍了用ChatGPT做嵌入式应用开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

ChatGPT 主要应用场景包括:

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

执行方案

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

示例演示

硬件组装

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

建立工程

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

步骤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;
}

#endif

void 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);
#endif

while (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.0

cmake_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!
用ChatGPT做嵌入式应用开发

经验总结

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

实操视频

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

关于聆思

聆思科技是一家专注提供智能终端系统级(SoC)芯片的高科技企业,目前推出的CSK6系AI芯片已适配Zephyr RTOS。

如果你在学习、开发过程中有疑问或难题,希望与专家和更多的开发者交流,欢迎+V:listenai-csk

欢迎各位同学联系我们进行技术相关的探讨,也可以在评论区进行提问,大家一起进步吧!文章来源地址https://www.toymoban.com/news/detail-425738.html

到了这里,关于用ChatGPT做嵌入式应用开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用

    STM32资料包: 百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd=8888 提取码:8888 观察电路图,核心板PD14连接底板中的P2外接排针,将正负极接上直流电压即可持续发声,频率固定。LED的PA0连接底板的D1灯。 步骤1:复制工程模板“1_Template”重命名为“4_Active

    2024年03月21日
    浏览(73)
  • 【嵌入式系统应用开发】FPGA——HLS入门实践之led灯闪烁

    HLS(High Level Synthesis) :一款高层次综合工具。 能够将 C/C++ 或者 system C 等高级语言转化为 RTL (底层硬件描述语言)电路,降低开发时间。 提供了常见的库(例如图像处理相关的 OpenCv 库和其 它的数学库)。 可以创建IP并通过例化或者使用 BlockDesign 的方式应用到项目中。 转化原

    2024年02月05日
    浏览(67)
  • 阿里P8面试官都说太详细了,嵌入式应用开发和驱动开发的区别

    1、如何进行单元测试,如何保证App稳定 ? 参考回答: 要测试Android应用程序,通常会创建以下类型自动单元测试 本地测试 :只在本地机器JVM上运行,以最小化执行时间,这种单元测试不依赖于Android框架,或者即使有依赖,也很方便使用模拟框架来模拟依赖,以达到隔离A

    2024年04月09日
    浏览(42)
  • 使用GUI Guider工具开发嵌入式GUI应用 (3) - 使用label组件

    本节讲述在GUI Guider中,应用各种UI的基本元素,并顺利部署到MCU的过程。在GUI Guider中使用各LVGL的组件时,将会涉及到GUI Guider的操作,以及将某些组件额外生成的源码添加到Keil工程中。至于具体产品中的UI应用,可以是这些基本UI元素的组合使用,以实现更加丰富的显示效果

    2024年02月12日
    浏览(55)
  • 使用GUI Guider工具开发嵌入式GUI应用(4)-使用image组件

    在没有使用LVGL和GUI Guider的时候,我想做一个电子相册的小应用,需要在MCU工程中集成一个小型的文件系统和图像解码组件,例如 fatfs (http://elm-chan.org/fsw/ff/00index_e.html)组件和 tjpgdec (http://elm-chan.org/fsw/tjpgd/00index.html)组件。使用GUI Guider显示图片就不需要这么麻烦,可以使

    2024年02月13日
    浏览(62)
  • 【嵌入式系统应用开发】FPGA——基于HC-SR04超声波测距

    硬件 DE2-115 HC-SR04超声波传感器 软件 Quartus 18.1 使用DE2-115开发板驱动HC-SR04模块,并将所测得数据显示到开发板上的数码管。 HC-SR04 超声波测距模块可提供 2cm-400cm的非接触式距离感测功能,测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。图1为 HC-SR04 外观,

    2024年02月08日
    浏览(62)
  • 全国职业院校技能大赛-嵌入式系统应用开发赛项-竞赛任务书(第5套)

    目录 全国职业院校技能大赛嵌入式系统应用开发赛项 竞赛模块: 模块一 竞赛注意事项 第一模块 嵌入式系统硬件制作与驱动开发 竞赛任务书(第5套) 一、总体要求 二、竞赛任务表 竞赛模块: 模块二 竞赛注意事项 第二模块 嵌入式系统应用程序开发 竞赛任务书(第5套)

    2024年02月04日
    浏览(54)
  • 全国职业院校技能大赛-嵌入式系统应用开发赛项-竞赛任务书(第9套)

    目录 全国职业院校技能大赛嵌入式系统应用开发赛项 竞赛模块: 模块一 竞赛注意事项 第一模块 嵌入式系统硬件制作与驱动开发 竞赛任务书(第9套) 一、总体要求 二、竞赛任务表 竞赛模块: 模块二 竞赛注意事项 第二模块 嵌入式系统应用程序开发 竞赛任务书(第9套)

    2024年02月07日
    浏览(56)
  • 使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装

    受限于每篇文章最多只能贴9张图的限制,这个教程被拆分成了多篇文章连载发布,完整目录结构如下图x所示。后续会发布完整教程的pdf文件,敬请期待。 图x 完整教程文档的目录 LVGL是一个开源免费(MIT许可)的嵌入式GUI组件(https://lvgl.io/),支持触摸屏操作,移植简单方

    2024年02月13日
    浏览(65)
  • 基于ubuntu的STM32嵌入式软件开发(四)——应用软件工程的修改、Makefile及编译脚本的编写

            本文主要介绍基于标准库函数移植的STM32的应用软件工程的修改,主要涉及到文件内容修改、Makefile文件编写、编译脚本编写等内容,其中编译脚本是基于arm-none-eabi-gcc的交叉编译器撰写的。程序亲测可以正常编译,生成.bin和.hex的可烧录镜像文件。 1.首先修改 pr

    2023年04月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包