当前位置: 首页 > article >正文

Microchip安卓配件开发平台:MCU与安卓系统高效协同实战指南

1. 项目概述当单片机巨头拥抱安卓生态作为一名在嵌入式领域摸爬滚打了十几年的老工程师我经历过从8位机到32位ARM再到各种RTOS的变迁。但最近几年一个趋势越来越明显越来越多的智能设备特别是那些需要复杂人机交互、联网功能或多媒体处理的设备开始选择安卓作为其操作系统。这不再是手机和平板的专属。然而对于习惯了用C语言在单片机MCU世界里“精打细算”的我们来说安卓的Java/Kotlin世界、庞大的SDK和复杂的应用框架常常让人望而却步。这中间仿佛隔着一道鸿沟。就在这个当口Microchip微芯科技——这家以PIC、AVR单片机闻名遐迩的半导体巨头——推出了它的“Android系统配件开发平台”。这个标题乍一听有点跨界但细想之下却精准地戳中了当前嵌入式开发的一个核心痛点如何让传统的、擅长控制与实时处理的MCU与强大的、生态丰富的安卓系统高效、可靠地协同工作这个平台本质上是一座桥连接了MCU的“物理世界”和安卓的“应用世界”。它不是让你去开发一个完整的安卓设备那是SoC厂商的事而是让你能轻松地为安卓设备手机、平板、车载主机、智能家居中控等开发外接的智能硬件配件。简单来说如果你正在做一个项目比如一个通过安卓平板控制的专业调音台、一个为医疗设备添加智能交互界面的外挂模块、一个连接车载安卓大屏的车辆状态监控HUD或者任何需要安卓App与自定义硬件深度交互的产品那么这个平台就是你绕不开的利器。它解决了通信协议的统一、电源管理的协同、驱动开发的标准化等一系列繁琐问题让你能专注于产品功能本身而不是在系统集成上反复踩坑。2. 平台核心架构与设计思路拆解Microchip的这个平台并非一个单一的产品而是一套包含硬件参考设计、核心通信协议、软件开发套件SDK以及配套工具的完整解决方案。其设计思路非常清晰以MCU为硬件核心通过标准化的方式接入安卓系统将MCU的“能力”暴露给安卓应用反之亦然。2.1 硬件基石从评估板到核心模块平台的硬件起点通常是Microchip提供的评估板EVB例如基于ATSAMD21或ATSAMD51系列ARM Cortex-M0/M4内核MCU的开发板。这些板子预装了平台的固件并集成了与安卓设备连接的关键接口。最核心的连接方式无疑是USB。在安卓系统中USB接口的角色非常灵活设备可以通过USB被识别为多种类型大容量存储设备U盘、人机接口设备HID如键盘鼠标、或者通信设备CDC。Microchip平台巧妙地利用了USB Accessory Mode和Android Open Accessory (AOA)协议。在这种模式下安卓设备作为USB主机可以为配件MCU供电并建立双向通信通道。即使你的安卓设备运行的是“仅主机”模式的OTG也能很好地支持。注意虽然蓝牙和Wi-Fi也是可选方案但对于需要高带宽、低延迟、稳定供电和即插即用体验的配件如音频设备、数据采集卡USB往往是首选。平台对USB通信的底层封装省去了你从头编写USB设备驱动和协议栈的麻烦。除了评估板Microchip还提供了核心的系统级模块SOM或芯片方案。这意味着你可以将经过验证的MCU、电源管理、USB物理层等电路作为一个最小核心单元直接设计进你的产品PCB中加速产品化进程。2.2 通信协议核心ADB与自定义服务的权衡硬件连通后数据如何交换这里平台给出了两个主要路径对应不同的应用场景和复杂度。路径一利用Android Debug Bridge (ADB)这是最快速的上手方式。MCU通过USB模拟成一个ADB设备。安卓端你可以在App中通过执行adb shell命令或使用Process类来启动一个与MCU串口通信的本地守护进程。MCU端的数据则通过虚拟串口CDC收发。优点实现简单无需在安卓端安装特定驱动或服务适合原型验证和调试。缺点依赖设备开启“USB调试”模式这在最终用户产品中是不可接受的并且通信效率和安全性都较低。路径二实现自定义的Android配件协议推荐用于产品这是平台的精华所在。Microchip的MCU固件会实现一个自定义的USB设备类。当配件插入安卓设备时系统会检测到这个特定的USB设备并提示用户安装对应的配件服务APK。这个APK包含了必要的USB通信驱动通过Android USB Host API和一个后台服务Service。工作流程MCU上电通过USB向安卓设备声明自己为特定配件。安卓系统弹出提示用户安装并授权配套的App/服务。App中的后台服务通过UsbManager与MCU建立连接获取UsbInterface和UsbEndpoint。双方基于预定义的二进制或文本协议例如简单的帧头长度数据校验和格式进行高速、可靠的双向数据传输。优点用户体验好即插即用提示无需开启调试模式通信直接、高效、可后台运行安全性更高可进行配件认证。实操心得在定义通信协议时建议采用TLVType-Length-Value或类似结构化的格式。即使初期数据简单良好的协议设计也能为未来功能扩展留足空间避免后期“打补丁”式的混乱。2.3 软件开发套件固件与安卓端双管齐下平台提供了完整的SDK通常包含两部分MCU固件库与示例基于Microchip的MPLAB® X IDE和Harmony框架。提供完整的USB设备栈配置、通信协议解析、电源管理、GPIO控制等底层驱动和中间件。你几乎不需要从零编写USB描述符或处理底层中断只需关注业务逻辑调用API即可发送接收数据。安卓端Java/Kotlin库以AAR库或源代码形式提供。封装了USB设备枚举、连接管理、数据传输等复杂操作。你只需要在App中初始化这个库注册数据回调监听器就能像操作一个本地Socket一样与硬件配件交互。这种“两头都照顾”的SDK设计极大地降低了全栈开发的难度。一个熟悉嵌入式C语言的工程师和一个安卓应用开发者可以基于这套清晰的接口进行协同并行开发。3. 核心细节解析与实操要点理解了架构我们深入到几个决定项目成败的关键细节。这些往往是官方文档一笔带过但实际开发中会耗费大量时间的“坑点”。3.1 电源管理与枚举时序USB配件模式的一个巨大优势是可由安卓主机供电通常提供5V/500mA。但这带来了时序上的挑战。上电浪涌与复位MCU的电源来自USB VBUS。当插头插入时VBUS电压的建立需要时间同时安卓主机会检测数据线D/D-状态来识别设备类型。如果MCU程序启动过快在USB主机控制器还未准备好通信时就试图进行USB枚举会导致枚举失败。解决方案在MCU硬件上确保有足够的电源去耦电容并检查VBUS是否作为MCU的复位源或中断源。在固件中实现一个稳健的启动延迟。例如检测到VBUS有效后延时100-200ms再初始化USB外设。更好的做法是通过上拉电阻配置USB数据线让MCU在收到主机发出的复位信号SE0状态后再开始枚举过程。Microchip的固件库通常已经处理好了这部分逻辑但你需要理解其原理以便在自定义硬件时排查问题。实操心得务必用逻辑分析仪或带USB协议分析功能的工具抓取一次完整的插入、枚举、数据传输过程。亲眼看到握手信号和数据包能帮你快速定位是硬件链路问题、描述符问题还是软件时序问题。3.2 通信协议设计的可靠性保障在USB这种可靠物理链路上为什么还要考虑通信协议可靠性因为应用层软件可能出错数据需要被正确解析。帧同步与粘包处理MCU和安卓App之间通过USB的Bulk Endpoint传输的是原始的字节流。如果你发送“数据包A”和“数据包B”接收端可能一次读到“AB”的一部分。因此必须在应用层定义清晰的帧结构。推荐帧结构示例[帧头 2字节][长度 2字节][命令字 1字节][数据负载 N字节][CRC校验 2字节]帧头固定值如0xAA55用于在字节流中识别帧的起始位置。长度指示从“命令字”到“数据负载结束”的总字节数或整个帧的字节数。用于验证帧的完整性。命令字定义此帧数据的含义如读取传感器、设置LED状态。CRC校验对帧头之后或整个帧的数据进行循环冗余校验确保数据传输无误。超时与重发机制对于重要的指令如固件升级命令需要实现简单的应答机制。发送方发出命令后启动定时器如果在规定时间内未收到对应的“ACK”应答帧则进行重发可设置最大重试次数。实操心得在安卓端建议将USB读数据操作放在一个独立的Thread或Coroutine中循环读取字节流并送入一个“协议解析器”状态机。避免在主线程中进行阻塞式读取。MCU端发送数据时如果单次数据量大要注意分包避免超过USB端点最大包长度通常为64字节。3.3 安卓端服务与生命周期管理这是安卓开发者的主战场也是配件体验是否流畅的关键。服务Service设计必须使用IntentService或更现代的JobIntentService/ForegroundService来管理USB连接。因为USB通信是长时间、可能阻塞的操作绝不能放在Activity中。连接管理与广播接收服务需要监听系统的UsbManager.ACTION_USB_DEVICE_ATTACHED和UsbManager.ACTION_USB_DEVICE_DETACHED广播以动态处理配件的插拔。当检测到配件插入时需要向用户请求权限UsbManager.requestPermission获得授权后才能打开连接。与UIActivity的通信服务运行在后台如何将接收到的硬件数据如传感器读数实时更新到前台界面推荐使用LiveData配合ViewModel或者使用事件总线如EventBus进行解耦。服务将数据封装成事件抛出各个Activity或Fragment按需订阅。权限与清单配置在AndroidManifest.xml中除了声明USB_DEVICE_ATTACHED广播接收器还需要在activity或service中通过intent-filter和meta-data来声明你的应用关联的USB设备。这里需要填写配件设备的厂商IDVID和产品IDPID这两个ID由Microchip预先定义或由你向USB-IF申请自定义。填错了你的App就不会被系统自动唤醒来响应配件插入。避坑指南在安卓10及以上版本后台启动Activity受到严格限制。如果你的配件插入时需要自动启动App可能需要引导用户授予“特殊访问权限”或将应用设为白名单。更友好的设计是插入后通过通知Notification提示用户点击通知再进入应用。4. 完整开发流程与核心环节实现让我们以一个具体的例子串联整个流程开发一个智能温湿度计配件它通过USB连接安卓平板实时显示数据并记录曲线。4.1 第一步硬件选型与原理图设计MCU选型选择Microchip的ATSAMD21G18。理由Cortex-M0内核功耗低自带全速USB设备控制器有足够的GPIO和ADC通道连接温湿度传感器如SHT30使用I2C接口。核心电路USB接口采用Micro-USB或USB-C连接器注意D/D-线上串联22Ω电阻以提高信号完整性。电源从USB VBUS取电使用LDO如MIC5219-3.3稳压至3.3V为MCU和传感器供电。务必加入ESD保护器件如USBLC6-2。传感器接口将SHT30的SCL、SDA引脚连接到MCU的I2C外设引脚并加上拉电阻。设计要点在原理图中将USB的ID引脚如果使用Micro-USB通过一个电阻下拉到地明确告知安卓设备此配件为“从设备”。参考Microchip评估板的原理图进行设计是最稳妥的方式。4.2 第二步MCU固件开发环境搭建安装MPLAB X IDE v5.50及以上版本安装XC32编译器并导入Microchip Harmony框架。创建项目使用Harmony配置器MHC新建一个基于ATSAMD21的工程。在图形化界面中使能“USB Device”驱动并将其配置为“Custom Device”自定义设备类。配置USB描述符这是关键一步。在MHC中编辑USB描述符设置厂商IDVID和产品IDPID。初期开发可使用Microchip的测试用ID如VID0x04D8产品化前必须申请自己的VID/PID。配置设备类bDeviceClass、子类、协议码通常自定义设备设为0xFF厂商特定。配置端点Endpoint至少需要一对Bulk端点一个IN用于MCU发送数据到主机一个OUT用于主机发送数据到MCU。建议端点大小为64字节。编写应用逻辑// 伪代码逻辑 void APP_Tasks(void) { switch(appState) { case APP_STATE_INIT: // 初始化I2C连接传感器 SHT30_Init(); // 等待USB连接建立 break; case APP_STATE_WAIT_FOR_CONFIGURATION: if (USB设备已配置) { appState APP_STATE_READ_SENSOR; } break; case APP_STATE_READ_SENSOR: // 读取温湿度数据 float temp SHT30_ReadTemperature(); float humidity SHT30_ReadHumidity(); // 封装数据帧 build_data_packet(CMD_SENSOR_DATA, temp, humidity, packet_buffer); // 通过USB端点发送 USB_DEVICE_EndpointWrite(USB_ENDPOINT_IN, packet_buffer, packet_length); // 延时1秒 _delay_ms(1000); // 检查是否有来自主机的命令如设置采样率 if (USB端点有数据) { USB_DEVICE_EndpointRead(USB_ENDPOINT_OUT, rx_buffer, size); parse_host_command(rx_buffer); } break; } }编译与调试将固件编译后通过板载的调试器如EDBG烧录到MCU。使用串口调试助手连接MCU的UART和PC端的USB设备查看工具如lsusbon Linux, Device Manager on Windows来验证USB枚举是否成功。4.3 第三步安卓应用程序开发环境与依赖使用Android Studio在项目的build.gradle中添加Microchip提供的USB通信库依赖。声明USB配件在AndroidManifest.xml中声明对配件的识别。activity ... intent-filter action android:nameandroid.hardware.usb.action.USB_DEVICE_ATTACHED / /intent-filter meta-data android:nameandroid.hardware.usb.action.USB_DEVICE_ATTACHED android:resourcexml/device_filter / /activity在res/xml/device_filter.xml文件中定义你的配件VID/PID。?xml version1.0 encodingutf-8? resources usb-device vendor-id1234 product-id5678 / !-- 替换为你的VID/PID -- /resources实现USB服务创建一个继承自IntentService的UsbCommunicationService。class UsbCommunicationService : IntentService(UsbCommService) { private lateinit var usbManager: UsbManager private var connection: UsbDeviceConnection? null private var endpointIn: UsbEndpoint? null private var endpointOut: UsbEndpoint? null override fun onHandleIntent(intent: Intent?) { usbManager getSystemService(Context.USB_SERVICE) as UsbManager val device intent?.getParcelableExtraUsbDevice(UsbManager.EXTRA_DEVICE) device?.let { // 请求权限通常已在Activity中完成 if (usbManager.hasPermission(it)) { connection usbManager.openDevice(it) connection?.let { conn - // 查找并配置接口、端点 val usbInterface it.getInterface(0) conn.claimInterface(usbInterface, true) endpointIn usbInterface.getEndpoint(0) // 假设端点0是IN endpointOut usbInterface.getEndpoint(1) // 假设端点1是OUT // 启动数据读取线程 startReadingThread(conn) } } } } private fun startReadingThread(connection: UsbDeviceConnection) { thread { val buffer ByteArray(64) while (true) { val bytesRead connection.bulkTransfer(endpointIn, buffer, buffer.size, 500) if (bytesRead 0) { // 解析数据帧 val parsedData parseDataPacket(buffer.copyOf(bytesRead)) // 通过LiveData或EventBus发送到UI viewModel.sensorData.postValue(parsedData) } } } } fun sendCommand(cmd: ByteArray) { endpointOut?.let { connection?.bulkTransfer(it, cmd, cmd.size, 500) } } }构建UI与数据绑定在MainActivity中启动服务并观察ViewModel中的LiveData来更新图表和显示数据。4.4 第四步集成、测试与优化功能联调将烧写好固件的硬件通过USB线连接到安卓平板安装开发好的APK。观察系统是否弹出连接提示App能否自动启动并显示数据。压力测试让设备连续运行数小时监测数据是否出现丢包、错乱App内存占用是否稳定。功耗优化在MCU固件中如果采样率不高可以在数据发送间隙让MCU进入低功耗休眠模式由USB中断或定时器唤醒。用户体验打磨处理配件拔除时的异常优雅断开连接提示用户添加数据本地存储SQLite、导出CSV等功能。5. 常见问题与排查技巧实录在实际开发中你一定会遇到各种问题。下面是我和团队踩过坑后总结的“排错清单”。5.1 硬件连接与枚举失败现象可能原因排查步骤与解决方案安卓设备无任何反应不提示安装USB物理连接不通MCU未上电或未运行程序USB数据线仅支持充电。1. 用万用表测量USB连接器VBUS是否有5V电压。2. 检查MCU电源指示灯是否亮起复位电路是否正常。3.更换一条已知良好的数据线很多线只有电源线无数据线。4. 用PC连接MCU看PC的设备管理器能否识别到未知USB设备。提示“无法识别的USB设备”USB枚举过程中断USB描述符错误端点配置冲突。1. 使用USB协议分析仪抓取枚举过程看在哪一步失败获取描述符、设置地址等。2. 检查MCU固件中的USB描述符VID/PID/类/端点是否配置正确特别是端点类型和大小。3. 确保MCU的USB时钟源通常需要48MHz配置正确且稳定。枚举成功但配套App不自动启动AndroidManifest.xml中device_filter.xml的VID/PID与MCU固件中设置的不一致。1. 核对MCU固件usb_device_init_data.c文件中的VID/PID。2. 核对安卓项目device_filter.xml中的VID/PID。3. 确保完全一致包括大小写通常为16进制小写。5.2 通信不稳定与数据错误现象可能原因排查步骤与解决方案数据时有时无或大量丢包USB缓冲区溢出安卓端读取线程阻塞协议未处理粘包。1.MCU端检查发送数据前是否确认上一次发送已完成USB_DEVICE_EndpointIsReady。避免在中断中长时间处理或发送大数据。2.安卓端确保bulkTransfer在独立线程中运行超时时间设置合理如500ms。3.协议层务必实现帧头识别和长度校验。接收方持续读取字节流只有找到帧头且后续数据长度匹配时才认为收到一帧完整数据。收到乱码或数据解析错误双方通信波特率对于虚拟串口或数据格式字节序、浮点数格式不一致。1. 如果使用虚拟串口CDC确保MCU的串口波特率与安卓端SerialPort设置的波特率完全相同。2. 如果传输多字节数据如int, float明确约定字节序Endianness。嵌入式ARM通常是小端Little-Endian而网络传输通常用大端。建议在协议中统一使用大端序或传输前进行转换。3. 发送方在发送前将数据按约定格式打包接收方按相同格式解包。安卓App连接后很快崩溃或失去响应在主线程进行USB同步读写操作服务生命周期管理不当导致内存泄漏。1. 绝对禁止在UI线程调用bulkTransfer()。2. 检查UsbCommunicationService是否在任务完成后正确停止自己。3. 使用LeakCanary等工具检测内存泄漏确保在Service的onDestroy()或连接断开时释放所有USB接口connection.releaseInterface()并关闭连接。5.3 安卓系统兼容性与权限问题现象可能原因排查步骤与解决方案在Android 8.0上后台服务被杀死从Android 8.0开始对后台服务限制加强。将IntentService替换为JobIntentService或者对于需要持续连接的应用考虑启动一个前台服务Foreground Service并显示一个持续的通知告知用户。在部分品牌手机上无法工作手机厂商定制系统可能修改了USB主机策略或权限弹窗逻辑。1. 引导用户去手机系统的“USB设置”或“开发者选项”中检查USB配置模式是否为“文件传输”或“MIDI”某些模式下AOA协议可能被禁用。2. 在App内增加更详细的连接引导页面图文并茂地教用户如何授权USB配件。配件拔插后需要重新打开App才能连接服务没有正确监听USB_DEVICE_DETACHED广播或连接资源未及时清理。1. 确保在Service或一个独立的BroadcastReceiver中注册了分离广播。2. 收到分离广播后立即关闭所有USB端点、接口和连接并释放资源。3. 当新设备插入时重新走完整的权限请求和连接流程。最后的个人体会Microchip这个安卓配件开发平台最大的价值在于它提供了一套“端到端”的验证过的方案。它把USB通信、电源管理这些底层且容易出错的脏活累活都封装好了让我们能把精力集中在产品功能的创新上。从原型到量产这套路径是清晰的。我强烈建议在动手画原理图之前先花几天时间把官方的评估板和示例代码跑通把数据流从传感器到安卓屏幕的整个路径走一遍。这个过程里遇到的每一个报错和异常都会让你对这套系统的理解加深一层远比直接看文档来得深刻。当你成功让第一行“Hello from MCU”显示在安卓App上时你会发现横跨在MCU和安卓之间的那道鸿沟已经有一座坚实的桥可以通行了。

相关文章:

Microchip安卓配件开发平台:MCU与安卓系统高效协同实战指南

1. 项目概述:当单片机巨头拥抱安卓生态作为一名在嵌入式领域摸爬滚打了十几年的老工程师,我经历过从8位机到32位ARM,再到各种RTOS的变迁。但最近几年,一个趋势越来越明显:越来越多的智能设备,特别是那些需要…...

拓璞数控港股上市:市值142亿港元 年营收5.8亿,净利163万

雷递网 雷建平 5月20日上海拓璞数控科技股份有限公司(简称:“拓璞数控”,股票代码:“07688”)今日在港交所上市。拓璞数控此次发售6533万股,发售价26.39港元,募资总额为17.24亿港元;…...

港科大沈劭劼、谭平团队最新成果:开源280万全景数据集,实现零样本立体匹配

「一举攻克全景3D视觉两大瓶颈」 目录 01 行业痛点:数据匮乏与畸变失效的双重桎梏 1. 数据集稀缺,泛化能力受限 2. 球面畸变破坏单目先验一致性 02 核心突破:超大数据与航向对齐先验双驱动 1. 280万级合成数据集,打破数据壁…...

保姆级教程:在S32G274ARDB2上,用IPCF点亮RGB LED(附源码解析)

从零玩转S32G2核间通信:手把手实现IPCF控制RGB灯效 拿到S32G274A开发板的第一天,我就被那个三色RGB LED吸引了——这不仅是硬件调试的指示灯,更是验证核间通信的绝佳媒介。作为多核异构处理器,S32G2的A53与M7核心如何协同工作&…...

基于PSoC 6与BMI160构建嵌入式IMU测试系统:从驱动到上位机全流程

1. 项目概述:从一颗传感器到一个完整的测试系统最近在做一个嵌入式项目,需要用到一款高性能的惯性测量单元(IMU)——博世的BMI160。这颗芯片在消费电子和物联网领域很常见,三轴加速度计加三轴陀螺仪,精度和…...

告别MPU6050例程!ATK-IMU901与Arduino串口通信的3个关键避坑点

ATK-IMU901与Arduino串口通信的实战避坑指南 当你从MPU6050切换到ATK-IMU901时,可能会发现原本顺畅的代码突然"罢工"了。这不是你的错——这两款IMU模块在设计理念上存在本质差异。本文将带你深入理解ATK-IMU901的通信机制,避开三个最常见的移…...

cp520靶场学习笔记

正文1、端口扫描2、web登录页面用户密码爆破3、文件上传漏洞利用4、nc 反弹5、Linux用户检索与特权分析6、图片隐写7、解密与格式转换8、cp命令横向获取用户密码9、diff命令进行文件比较正文 kali攻击机地址:192.168.1.4 靶场地址:192.168.1.15 1、端口…...

AOCODARC-F7MINI飞控固件编译踩坑记:从‘make arm_sdk_install’失败到成功编译

AOCODARC-F7MINI飞控固件编译实战:从工具链安装到烧录全流程解析 1. 环境准备与工具链安装 编译BetaFlight固件最令人头疼的环节往往不是代码本身,而是环境配置。以Ubuntu 20.04为例,我们需要先解决两个核心问题:基础编译环境和AR…...

C++ STL常用函数一览表(快速记忆版本)

C STL 常用数据结构与函数整理 这份笔记按常见 STL 容器分类整理&#xff0c;适合在刷题和复习时快速查阅。1. vector 1.1 特点 底层是动态数组支持随机访问尾部插入、删除效率高中间插入、删除效率低 1.2 常用定义 vector<int> v; vector<int> v(5); /…...

不止是省9.9刀:解锁特斯拉Model 3的‘行驶中保持WiFi’功能,打造家庭移动娱乐中心

不止是省9.9刀&#xff1a;解锁特斯拉Model 3的‘行驶中保持WiFi’功能&#xff0c;打造家庭移动娱乐中心 特斯拉Model 3的车载4G网络虽然方便&#xff0c;但在信号不佳的区域或需要大流量娱乐的场景下&#xff0c;往往显得力不从心。更让许多家庭用户纠结的是&#xff0c;高级…...

STM32 HAL库驱动中景园0.96寸OLED(SSD1306)避坑指南:从IIC地址到GRAM刷新的完整流程

STM32 HAL库驱动中景园0.96寸OLED&#xff08;SSD1306&#xff09;全流程实战解析 在嵌入式开发中&#xff0c;OLED显示屏因其高对比度、低功耗和快速响应等特性&#xff0c;成为许多项目的首选显示方案。本文将深入探讨如何基于STM32 HAL库高效驱动中景园0.96寸OLED&#xff0…...

Kimi、DeepSeek、阶跃星辰三天融资超百亿,中国AI的“中场战事”刚刚开始

过去一周&#xff0c;融资狂潮、智能体大军与算力基建三大赛道同时开火&#xff0c;天平正在加速倾斜。大模型调用量&#xff1a;连续三周&#xff0c;中国AI压住美国5月18日&#xff0c;根据OpenRouter最新数据&#xff0c;2026年5月11日至17日当周&#xff0c;全球AI大模型总…...

未来5年,程序员换工作,请做好降薪准备!

最近看到不少大厂的去年和一季度财报都公布了&#xff0c;不少人年终奖也发的差不多了&#xff0c;再加上金三银四也过了有一段时间了。按理来说&#xff0c;该晋升的晋升&#xff0c;该跳槽的跳槽&#xff0c;该加薪的加薪&#xff0c;基本尘埃落定&#xff0c;我公号后台应该…...

API 监控告警系统

LogMonitor - API监控告警系统 基于Python的智能API监控系统&#xff0c;集成Splunk日志分析和钉钉告警&#xff0c;支持多种API类型的实时监控和趋势分析。 代码地址 https://github.com/junbingliu007/log_monitor 功能特性 多API类型监控&#xff1a;支持多种API类型智…...

Midjourney × CLO 3D无缝协同方案(工业级打版前必读):实现AI草图→虚拟缝合→力学模拟零损转换

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Midjourney CLO 3D无缝协同方案&#xff08;工业级打版前必读&#xff09;&#xff1a;实现AI草图→虚拟缝合→力学模拟零损转换 在高精度服装数字样衣开发流程中&#xff0c;Midjourney生成的创意草图常因缺…...

企业级RAG系统数据可信生死线:Perplexity验证功能内测权限仅剩最后17个——附白名单申请通道

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;企业级RAG系统数据可信生死线&#xff1a;Perplexity验证功能内测权限仅剩最后17个——附白名单申请通道 在企业级RAG&#xff08;Retrieval-Augmented Generation&#xff09;系统中&#xff0c;检索结果与生…...

有这5个迹象,说明你公司内斗很严重!

见字如面&#xff0c;我是军哥&#xff01;昨天&#xff0c;一位读者小王给我留言。他在某大厂担任项目经理&#xff0c;最近工作推进得很艰难。同一件事开了好几次会&#xff0c;领导就是不拍板。跨部门协作费力不讨好&#xff0c;谁都不愿负责&#xff0c;项目卡在那里没有进…...

光纤干涉条纹投射导向的动态三维形貌测量技术【附程序】

✨ 长期致力于条纹投射轮廓术、光纤干涉条纹投射、正弦相位调制、任意步距相移相位解调、系统标定研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;基于…...

Dify系列课程 - 5.Ollama:轻松驾驭本地大语言模型(在 Windows 上安装 Ollama 并部署 DeepSeek 大模型)

Ollama 安装Deepseek大模型 Ollama 大模型安装完成...

勒索病毒防线与数据恢复能力:四家云厂商安全水位线横向测评

对于制造业等行业的内部核心业务&#xff08;MES、WMS、ERP、HIS等&#xff09;上云&#xff0c;深信服托管云凭借其“资源专属全栈托管主动服务”三位一体的模式&#xff0c;在业务连续性保障、就近部署低时延以及贴身服务响应等方面&#xff0c;表现出比主流公有云方案更强的…...

序列近似整数规划导向的通用高性能离散变量拓扑优化新方法【附算法】

✨ 长期致力于拓扑优化、整数规划、序列近似规划、信赖域、拓扑不变量研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;正则松弛算法求解大规模可分离整…...

脉冲神经网络与测试时自适应技术解析

1. 脉冲神经网络与测试时自适应概述脉冲神经网络&#xff08;Spiking Neural Networks, SNNs&#xff09;作为第三代神经网络模型&#xff0c;其核心在于模拟生物神经元的脉冲发放机制。与传统人工神经网络不同&#xff0c;SNN中的神经元仅在膜电位达到特定阈值时才产生脉冲信号…...

类型转换:隐式、显式与类型提升

在Java开发中&#xff0c;数据类型转换是最基础也最容易被忽略的核心操作——从简单的变量赋值、数字运算&#xff0c;到复杂的方法传参、泛型适配、多态转型、序列化&#xff0c;几乎每一行代码都隐含着类型转换的逻辑。很多同学只停留在“会用”的层面&#xff1a;知道int转l…...

KING大咖直播|驯服时间洪流:电科金仓KES时序版“硬核”解码

设备互联、生产监控、交易行情……时序数据正以指数级速度狂奔&#xff0c;传统数据库频频掉队&#xff1f;电科金仓KES时序版&#xff0c;用“一库多模”破题&#xff1a;千万级并发写入稳如磐石、20倍压缩比瘦身立现、高密度写入与实时分析同框——这是国产时序数据库交出的一…...

磁性衬底导向的宽带超材料吸波体的吸波机理及设计方案【附代码】

✨ 长期致力于磁性材料、超材料吸波体、宽频带微波吸收、吸波机理、智能算法研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;对称模型分析多层反射干涉…...

电铲自主行走多耦合行为及轨迹控制技术【附代码】

✨ 长期致力于电铲、自主行走、多耦合行为、离散元法、反演滑模控制、轨迹控制研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;机电-离散元多体耦合动…...

夹矸煤层采煤机螺旋滚筒工作性能优化【附代码】

✨ 长期致力于夹矸煤层、螺旋滚筒、工作性能、可靠性、多目标优化研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;离散元-有限元耦合截割模型与煤岩参…...

从音箱分频到电源净化:聊聊RLC低通滤波器那些意想不到的实用场景

从音箱分频到电源净化&#xff1a;聊聊RLC低通滤波器那些意想不到的实用场景 在电子工程的世界里&#xff0c;RLC低通滤波器就像一位低调的幕后英雄。它不像微处理器那样引人注目&#xff0c;也不像显示屏那样直观可见&#xff0c;却在无数电子设备中默默发挥着关键作用。从你每…...

盒子定位(Mac版)

Mac版写HTML与Windows版不同&#xff0c;但思路不变。首先&#xff0c;创建HTML文件&#xff0c; 通过快捷键commandspace 搜索“文本编辑”App。接下来&#xff0c;点击新建文稿将文稿重命名&#xff0c;改为html后缀结尾&#xff0c;如下图所示通过选择VScode的打开方式&…...

抖音视频批量下载神器:3分钟学会无水印批量下载技巧

抖音视频批量下载神器&#xff1a;3分钟学会无水印批量下载技巧 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…...