一、基于TencentOS Tiny的智能甲醛监测仪 - A' {! i" H+ { A) W5 i, x9 R2 y+ z5 Z 2 h, n( y, m: _% l8 ]' O 甲醛是室内一项非常重要的指标,对眼、鼻、喉的黏膜有强烈的刺激作用,最普遍的症状就是眼睛受刺激和头痛,严重的可引起过敏性皮炎和哮喘。由于新房装修场景对甲醛监测的需求越来越多,拥有一台准确、性价比高、稳定的智能甲醛监测仪能给大家的健康生活带来一份便利,今天小编就来教大家如何基于STM32G0开发板+ESP8266 WiFi + TencentOS Tiny物联网操作系统,来自制一个智能甲醛监测仪。 本项目制作的甲醛监测仪可以实时的检测室内甲醛浓度,在OLED屏幕上显示具体数值,同时还可以将数据实时上报到腾讯云物联网开发平台IoT Explorer,用户可以在“腾讯连连”小程序实时查看数据,并通过公众号及时接收告警信息。. [8 N, W- G \+ t+ j# B 本项目所需要的物品清单有:1 s* V) S, \5 j TOS_EVB_G0开发板 x 1' _% G, b& B# G4 h% t/ E2 U+ E* b( z 英国 Dart 甲醛传感器 x 11 C3 f% J, o- f E53甲醛传感器底板 x 1/ n' E5 | h+ @2 ]3 W* \: s 成品组装图(安装各接插件时,请务必参考成品图,不要弄错方向,否则可能烧坏MCU)( s3 `3 S$ \9 y# _0 h- s2 Q 好啦~接下来开始我们的制作!3 r* d/ Q; p7 w' N: F6 K' Z ! I! ^* U# t5 ~: r4 Q1 d8 X 9 z9 A' d2 Z# o7 P+ B( c 二、TOS EVB G0开发板介绍 " i" w1 T; ^, x. f 1. 开发板特性 TOS_EVB_G0 开发板是由腾讯TencentOS-tiny团队设计的一款物联网开发板,板载资源如下: - 主控芯片采用STM32G070RB,Flash空间仅有128KB、RAM空间仅有20KB;" o) L! k/ e% _, A, O! N - 板载腾讯云定制固件版ESP8266 WIFI模组; - 板载E53传感器标准接口,方便连接各种E53传感器; - 板载0.91'OLED显示屏幕; - 板载8MB SPI Flash,可用于固件升级; - 板载CH340 转串口连接,可以使用一根USB线连接至电脑,查看串口日志;, _. g Q3 ~0 i5 P6 l9 G 2. 开发板硬件电路详解1 [: m9 h5 W7 V9 { . `' V2 ?/ ?* i& A) Z 2.1. 最小系统电路 ! G. H/ a1 k% J! _& a 最小系统部分由电源电路、时钟电路、Boot电路、复位电路、下载电路组成: 2.2. WIFI电路 v: t7 |! @ A2 j7 _ WIFI部分包括ESP8266 WIFI模组供电电路、串口通信电路:1 [7 {+ R6 w0 V9 ~ E$ V" b6 o' M0 g 2.3. E53扩展接口电路9 o5 Q* k% ]* Z7 Q$ z7 { E53扩展接口是由物联网俱乐部定义的标准接口,供外部传感器连接,包括:一个串口、一个SPI接口、一个IIC接口、四个普通GPIO口、一个ADC模拟采集接口,一个DAC模拟输出接口,如图: ) ^2 s; G- S& K% a 2.4. USB转串口电路, ]' f* P/ F# h1 I8 `" R+ f ' K! T, y( b8 e! C9 B3 W 6 N; V% V* g) S: b% Q: r USB转串口电路将串口信息转换为USB口信号,使得开发板可以直接通过USB线连接至PC,在PC上使用串口助手查看日志: 2.5. OLED显示屏幕电路5 r1 k! n e, I OLED屏幕部分包括OLED供电部分和通信部分: ' C% K% M, f* o1 i; U. w1 x( {, E 2.6. 连接Micor USB线' x5 x2 ]5 k" H8 y/ e( j 2.7. 连接ST-Link下载器* ~/ J. M) Z/ y o 开发板3v3---> STlink 3.3V9 t# N8 t R3 O5 k( W2 l, _& v 开发板DIO---> STlink SWDIO# Q* m8 r6 r# x0 I4 R4 T1 q 开发板CLK---> STlink SWCLK 开发板GND---> STlink GND 2 A8 g$ }: T( E 请大家参考下图进行连接,千万不要接反接错,以免烧掉MCU % m: }2 {; W C( b; B* m , p Z7 f5 r2 p b8 H$ ^: H+ g& H! h k, }, g0 X4 U' n' [ / M4 C& y! a) G: _1 o 3. 开发板软件环境准备+ I5 Z+ m: S4 @. G5 x+ } 3.1 MDK软件介绍& e8 Y, }0 R6 B/ q5 e. a/ Y - g$ r! p9 h5 T) @5 M, D MDK 即RealView MDK 或MDK-ARM(Microcontroller Development kit),是 ARM 公司收购Keil公司以后,基于uVision界面推出的针对ARM7、ARM9、Cortex-M0、Cortex-M1、Cortex-M2、Cortex-M3、Cortex-R4等ARM处理器的嵌入式软件开发工具。MDK-ARM 集成了业内最领先的技术,包括 uVision4 集成开发环境与 RealView 编译器RVCT。支持 ARM7、ARM9 和最新的Cortex-M3/M1/M0 核处理器,自动配置启动代码,集成 Flash 烧写模块,强大的 Simulation 设备模拟,性能分析等功能,与 ARM 之前的工具包 ADS 等相比,RealView 编译器的最新版本可将性能改善超过 20%。* m. s2 E& f3 y( o$ S" K+ }) `5 ? Keil公司开发的ARM开发工具MDK,是用来开发基于ARM核的系列微控制器的嵌入式应用程序。它适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件,支持所有基于ARM的设备,能帮助工程师按照计划完成项目。 2 j6 L8 X. Y0 n' U* v 3.2 MDK安装 + G% \1 [! v# E! _7 _6 j; b/ V9 V 登录MDK官网,下载MDK5软件,下载地址: % M; v5 V1 m1 ? http://www2.keil.com/mdk5 6 t. t9 v5 n: K- I0 l# w7 n3 U 或者 https://www.keil.com/download/product/ 下载的版本最好在5.24以上,本开发教程以5.24版本为例,双击MDK524应用程序文件,点击next>>。 打上 I agree前面的勾勾,即是同意一些安装协议。点击next>>。; h J& U/ O% d. {7 s3 p$ N2 ] 选择安装路径,可以默认也可以安装在我们自己建立的文件夹下。点击next>>。* S: y4 ]9 N' U" ]9 s: B0 I ) q$ S" q; {% L7 B! N 这里填写的是我们的一些信息,填写完整后,继续next>>。 然后等待安装完成即可。 5 h( ?- H3 N! G4 n0 A/ T3 k 安装完成,点击Finish。 然后会跳出来这个界面,这个我们后面再讲,先点OK,把弹框都叉掉。 2 r& l* L$ S) A8 l$ x 激活MDK,导入License,激活MDK后便可使用了。 # ~, B! [# K3 ~2 s }$ T 特别提示:一定要输入License激活MDK软件,建议购买正版License。 3.3 PACK安装" N; J( n r. m* E) y ' F" N: u. K" w5 f6 T$ p) A8 K 安装完MDK后,我们需要安装开发套件中单片机型号对应的Pack。# A) S( s' N8 S/ ~( m ) F6 G( ]2 [: v# b( R& H 安装方式一 3 s) ^- ?- G. _5 @ 登录官网:http://www.keil.com/dd2/pack/ 下载Keil.STM32G0xx_DFP.x.x.x.pack 后安装。5 A! f. v3 K6 V. r. a3 Q 9 X: z! P" ?+ z; C3 ~ 安装方式二 MDK软件上在线安装 6 ~+ P4 k5 D3 K 打开软件,在导航栏打开Pack安装界面,然后选择ok选项。( G; e, ^5 C B* F* D* ` 进入在线安装界面,选着STM32G0XX Pack,点击Install进行安装。' D% Y6 b+ W. { { 至此,我们开发板的单片机程序开发环境已经搭建完毕,重启MDK软件就可以使用了。 3.4 ST-Link驱动安装- h1 n- o. ^5 w5 {. T2 \: D 4 \. J$ r- c9 ]# i 前面讲了开发板单片机程序的开发环境的搭建,但是为了将程序烧录到开发板中我们还需要使用仿真器。我们这套开发板选用ST公司的ST-Link V2仿真器进行开发板程序的烧写和仿真,下面介绍ST-Link驱动的安装及环境搭建。( }. |6 B" D \: j ; ?. y N# o: d , C$ N2 ?& y* Y2 H1 G7 y 在ST官网下载ST-Link驱动, % ~, B" N) o4 T2 U https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-utilities/stsw-link009.html (驱动有2种:32位电脑系统安装“dpinst_x86”、64位电脑系统安装“dpinst_amd64”)。 - c; G) ^1 [+ F/ X6 Y9 y8 Y) Q 运行对应的驱动,安装ST-Link V2驱动程序。安装路径尽量保持默认路径。 这里提醒 2 点: 1 V& s+ k1 w5 e$ Q ~% u 1, 各种 windows 版本设备名称和所在设备管理器栏目可能不一样,例如 WIN10 插上STLINK 后显示的是 STM32 STLINK。8 z/ x( a ]& ^# l2 b: T $ O# d. t5 M* y 2, 如果设备名称旁边显示的是黄色的叹号,请直接点击设备名称,然后在弹出的界面点击更新设备驱动1 F6 j0 m' d# m' y* d4 _4 {; H$ v 1 d/ `3 D# g* r; R I: b6 H* q 至此, ST-Link 驱动已经安装完成。接下来大家只需要在 MDK工程里面配置一下 ST-Link即可。 ! l/ ^/ _6 b4 \% H! A G6 `& C& J3 e' ` 3.5 CH340串口驱动安装0 k) ^8 G5 {: P, d2 } ! \4 S' W$ U2 g% O9 ? ) y1 w5 s3 x( W2 T1 N* w0 ~ 6 l, s5 J! V# C 8 D% k! a9 G" G" G& J 互联网搜索下载CH340 串口芯片的驱动6 Q$ |# P: G$ X! ? " i5 c* r. W) J% k4 r 0 v p* t$ y/ P! I: G2 R 安装方法:打开驱动安装程序点击安装即可。: C( J: q: l& h( n " `3 B/ o3 F6 B# {7 o " q) C- D% X' ?3 y9 T0 ~3 O 注:若安装失败,请先点击卸载,后点击安装。 3.6 串口调试助手的安装与使用 ' U# y$ l$ o# @7 G7 }2 A5 H , c& Q4 Q5 v3 A" d. | 工具下载:; J7 H: u& c! P2 r " X3 N0 \7 L o7 v5 t2 j8 F7 P http://www.daxia.com/download/sscom.rar+ s3 ]' L7 y0 {5 s 安装方法:串口调试助手sscom5.13.1是免安装的,解压出压缩包即可直接使用。 根据PC和终端之间的连接,选择正确的串行端口。6 a0 m. c; ]2 T' ?9 s# L }# j0 h: e9 W0 K( }7 I' H0 R) v 打开电脑的设备管理器,在端口列表可以看到PC与开发板连接的端口号。# _, C) \' v' c1 L/ }; @3 o! ` 我这里显示的是COM26,所以要在sscom工具中选择COM26,开发板程序波特率设置为115200,所以我在sscom串口工具中选择115200波特率。 三、烧写腾讯云IoT定制固件 9 c3 a3 D7 `( u% X S _; T3 B1. 下载固件 6 t9 a: x9 j( x9 W 腾讯云IoT AT指令是一套针对使用通讯模组(2G/4G/NB/WIFI)接入腾讯云物联平台的定制AT指令集,如果通讯模组实现了该指令集,则设备接入和通讯更为简单,所需代码量更少。ESP8266作为IoT领域使用最广泛的一款WiFi芯片/模组,腾讯云在其通用AT指令基础上,增加了腾讯云IoT AT指令集,形成一个定制的模组固件QCloud_IoT_AT_ESP8266。 h1 x7 S% C+ N3 S/ k - S4 N* Y. k' y' D( B' v# B 下载链接:https://github.com/tencentyun/qcloud-iot-esp-wifi , @7 r6 X4 ~, b s+ B . Q" m7 F, X# l: K* X3 | 使用git下载的命令如下: 2 ]. q* L" m0 p# u' s7 z * B, @2 R- X. l( T6 g* P git clone https://github.com/tencentyun/qcloud-iot-esp-wifi.git 4 l5 f4 r. Z; c6 t+ U( g 下载之后即可在图中圈出的文件夹中看到定制固件: 2. 下载烧写工具 5 C$ Y9 k6 d* m- ? 使用乐鑫官方下载工具ESPFlashDownloadTool,下载链接如下:5 B- n9 m; ~* O7 C& Z D G$ J https://www.espressif.com/zh-hans/support/download/other-tools( V$ k# x1 q8 Z2 U9 S - U$ \" F5 V. }2 e) T+ @6 e " K. T9 N3 S+ N8 M, z: Q 点击下载Flash 下载工具(ESP8266 & ESP32 & ESP32-S2): 下载之后解压即可。1 r/ m. v* _/ e+ y% \7 M 3. 固件说明 ' u0 c! c4 G1 r: `( A& r& t- R 腾讯云IoT定制的AT模组固件适用于所有FLASH大小为2MB或者2MB以上的ESP8266模组。 % ?$ m) X* r' x AT串口使用UART0,默认的Tx为GPIO1,Rx为GPIO3。但因为ESP8266的UART0 默认会在上电启动期间输出一些打印,如果打印信息影响设备功能,可在上电期间将 U0TXD(GPIO1)、U0RXD(GPIO3) 分别与 U0RTS (GPIO15),U0CTS(GPIO13)进行交换,以屏蔽打印。因此提供两个版本的固件:9 J5 l* q& ]7 E* D - U$ Z: f& P& H% w- j1 I. b) w - 名称包含UART_1_3的固件串口使用的Tx为GPIO1,Rx为GPIO3。 3 j2 z0 J$ H6 L+ f , y1 C- L$ V2 X( I: |8 o: m7 W - 名称包含UART_15_13的固件串口使用的Tx为GPIO15,Rx为GPIO13。 进入QCloud_IoT_AT_ESP8266_FW,本文中我们使用第一个固件:0 Y- }- i+ J- k( j3 c0 P! M8 \ 4. 烧写固件1 Q6 \ L1 t2 g& K; j - C* M* e5 m! i) y' h 4.1. 切换boot选择端子和串口选择端子! L& C+ M2 V* c ① 将开发板上的ESP8266启动引脚配置端子切换到低电平;& f; z9 U/ I' F- V . Q5 n) m& _. U# r ② 将开发板上的串口选择端子置于中间,使ESP8266直接与PC串口连接: 方法参考下图: P' ~' A5 k, L# `7 W 6 A* {4 a/ Z% @ 4.2. 运行Flash烧写工具 7 D+ @: O# s% A9 y% p: o* m7 m 双击工具,运行:, i, A! A1 i4 o& @' F1 }. F6 { 4 ^3 I8 F2 ?# n0 _$ c 8 E" \$ u+ d' M9 Z+ x* [ 选择开发者模式:. \6 g3 z" W2 H6 a 5 u- z" _7 R1 y3 @& E $ ^8 a Q* y" ]9 J: P& y' H) X 4.3. 开始下载! c$ [1 B, S" W7 n' y . f0 M% n% `, J7 W [+ ] 按照图中进行操作:' g- m) f8 T! j6 T6 h# _+ P0 ` * X* Z3 K6 K7 Q8 o& h3 _ 5 ] ]: ?6 _* a9 h( j* Z 点击下载之后,按下开发板上的复位键,Flash下载工具开始下载:* p$ E0 R+ }5 W. N. \6 | 3 ^1 L- V% N! y; ?5 T, n0 W0 m - \' j0 {5 M0 D- e ; H" K! A4 P3 p+ ] L$ { 若没有显示,请检查接线端子是否连接正确。1 N( f6 i% ^. V' k 9 |4 Y! J: H5 u' W5 v- U" ~ * [) H9 {# b' e) z) C 4.4. 下载完成! A% C& a4 g [: \ 下载完成之后如图: * s e: p4 R* B% h" a3 E q R % d# \9 T) W N/ l) Z 3 f2 m6 m0 E/ c" a- U3 I 关闭工具,将boot选择引脚拔下,将串口选择端子恢复默认。' E9 T ~5 ~$ g" b& r- q 6 ~- [/ ~! p. k2 }, J2 P) C 注意:完成固件下载后,一定切记将跳线端子恢复到默认状态,默认端子怎么短接可以参考前面完整的组装成品图,否则wifi将没法工作,MCU也没法控制wifi。( R- i9 D3 d2 k4 ?8 o F) t# k 四、基于TencentOS Tiny接入腾讯云IoT Explorer 3 p$ A6 B: R* Z6 i( _" b- n1 _# B) G2 Y( @ 基于TencentOS Tiny EVB G0要完成腾讯云IoT Explorer对接,需要完成两个部分的工作。 ; E0 r+ u7 y7 F 5 f5 W* j" z& n, }, `. I; U 一是:腾讯云IoT explorer 上完成项目、产品、设备创建、参数配置' q# S, Z5 @$ x ! p; c/ U% y4 r$ k+ W 二是:基于TencentOS Tiny完成应用开发,向腾讯云上报业务数据。( i& a$ ^8 ?5 E+ m; L( g; t 4 g, ]/ Y4 Z! v. H : t |+ F! A0 A9 Y j 1. 云端操作步骤 : g s% c; A) F 1.1. 新建项目: S# }: H1 K: o4 [1 W' N5 v* G9 E % u7 y% D" d; a, { 登录腾讯云物联网开发平台! N' D9 S3 n! b6 X. a" F + s0 O3 X3 V( N6 ]. G" `* ? https://cloud.tencent.com/product/iotexplorer% _" j: }9 R" t6 S( M 8 Q! n! ~) c# n8 \9 }: g% W4 | ( M5 p' a: l' j, |6 u 点击新建项目,填写项目名称和简介:6 q# O# t6 G7 k # J' `. e4 T! j5 d) p \/ u 1.2. 新建产品/ B7 T$ U ?; R8 \ 1 {3 ?# {2 v) A1 X 点击项目名称进入到该项目中,点击新建产品:! j1 c) Y( P1 K 产品新建成功后,可在产品列表页查看到: & k0 Y. j8 Y6 i* ^, {8 ~2 h2 \) x % v& x/ R) y& e 1.3. 数据模板 5 c, }5 {3 ~2 @9 p8 O3 ?) p# ] 进入产品,点击【数据模板】,点击【导入JSON】,导入下面的JSON代码:
, B/ H& h1 L6 Z/ p+ n , U9 m1 d$ ~1 c+ w 1.4. 创建设备' r& ?! W2 j9 H; q9 ^! @ 7 X9 |1 z o; p' V0 p3 S m % V* b0 x( ~- p& ^& t" f2 x3 @8 e# p 点击【设备调试】,进入后点击【新建设备】,创建真实设备: 创建成功之后进入设备,查看到产品ID、设备名称、设备秘钥: 3 x* f! x1 n9 _+ n* {; w% @ 2. 基于TencentOS Tiny 完成设备侧应用开发; o/ W9 x+ t' z9 n- b 进入 6 m, q: d. }% {4 v2 I 3 }7 M, H4 L# n9 C& {2 F1 V; P: B <TencentOS-tiny\board\TencentOS_tiny_EVB_G0\KEIL\mqtt_iot_explorer_tc_ch20_oled> 目录,打开TencentOS_tiny.uvprojx工程。 9 Z7 w9 F: v1 \2 l- S5 J 2.1. 修改WIFI接入信息 2 R2 U0 M- G' S9 L0 C( C" p! j 打开mqtt_iot_explorer_tc_ch20_oled.c文件编辑,修改要接入WIFI的名称和密码(建议使用手机热点,不要有特殊字符): 7 ?' u+ G; W6 n% Q% j 2.2. 修改云端对接信息 8 h2 Q: w) h3 z$ E$ Y! ] @8 T+ H6 A) w* W; M 同样在此文件宏,修改云端配置信息,使用之前在云端查看的信息替换: 2.3. 编译工程 点击编译按钮,编译整个工程: 2.4. 下载程序& A2 y8 i% e: n- [ 点击进入工程配置界面按纽,进入工程配置界面: T% t* D2 {* _0 |* o. l4 L7 h 选择Debug选项,进入仿真器设置界面。 下拉仿真器选择列表,选着ST-Link Debugger并勾选右侧Use,点击Settings进入ST-Link V2仿真器配置界面。 开发板设计的程序烧录方式为SW,此处Unit选择ST-Link/V2,且Port选择SW,并确认右侧框内是否检测出SW设备,点击<确认>保存配置。% R% }$ ^0 p) Y- V1 Y( b 点击确定之后,回到主界面,点击下载按钮: 2.5. 使用串口助手查看日志 运行sscom软件,打开电脑上开发板对应的串口,比如我选择COM26,点击【打开串口】:8 f) z1 v# {( c- K4 A 按下开发板上的复位键,程序开始运行,即可在串口助手中看到系统运行打印的日志: Q3 Q6 }4 V' b3 Y- E% N! S1 C* a: K 3. 云端平台查看设备数据 回到腾讯云物联网开发平台,可以看到设备状态变为【在线】: 点击【设备日志】一栏,可以看到设备上报的甲醛浓度值: 点击【设备属性】一栏,点击【甲醛浓度值】后的【查看】,即可看到甲醛浓度值的历史数据曲线图: 3 S ~' O6 j0 l- R7 c& M { 五、腾讯连连小程序操作步骤 1. 添加家庭 ( b8 _8 i1 R- T' e! |7 q 手机端在【微信】搜索【腾讯连连】小程序,首次使用需要进入后点击【我的】->【家庭管理】,添加一个你喜欢的名称即可。( r$ D4 T3 m. R* a6 b , s0 B3 {5 g. S4 v2 W0 p' A7 E- f 2. 添加调试设备 返回【首页】,点击右上角“加号”图标: 进入后点击右上角扫码图标:4 y& K* _4 l9 R) T 7 m2 ]; ]1 s7 _( U9 ` 在腾讯云物联网开发平台进入【设备调试】,点击对应设备后的【二维码】:3 c& e% g2 H: U) j/ u- F; @9 T 腾讯连连扫描此二维码即可成功添加设备,添加成功之后如图: 点击此设备即可实时查看数据,并下发控制指令: 3. 修改腾讯连连显示面板$ ^! z9 T. S8 K7 I5 T ' c# ]* }( M. g7 \' a+ n# ] 进入【交互开发】,点击【面板配置】一栏:( m F2 P( g/ ]* U7 | M% ? , [, d3 @( I7 y' i: T8 | 在此页面中可以自己根据喜好配置小程序显示面板,如图:8 }# `! S% W- E7 H 保存之后,在腾讯连连小程序删除设备,重新扫描绑定设备即可生效。 % _7 ^$ ]: i" \, ^ 六、腾讯连连公众号设备告警操作步骤 9 F4 b; _; z7 z* S" L" a' |: V7 `9 T4 m: H2 o5 `) _ - K6 q9 _1 s# ?. J0 C 1 B" Q& e! L7 F i 1. 创建数据流' [# J/ d; ]6 Q) B9 J 点击左侧【数据开发】一栏,点击【新建数据流】:. ^5 Z, B( z( l7 c3 m 2. 设计数据流" M/ v* W1 W5 H, @6 { O : @$ @; i5 c1 B5 r % l( `) g# D0 w" `( P( W+ H' `6 S& e 添加并设置【设备数据】节点:* R0 l$ A9 x5 B4 Z( ` 添加并设置【过滤节点】:0 w$ O/ l% J* o# `9 a0 T2 E 添加并设置【推送节点】:9 d& M: ~5 M4 M# D1 a# }, T ! q, p& _& W4 D 3. 启动数据流7 I' R6 W8 B* b5 b' |& ? 4 |! }; ^- V) X, f9 l i 设计完成后,点击【保存按钮】,再点击【启用】: 4. 关注腾讯连连公众号 在微信关注【腾讯连连】公众号: 关注后,如果有任何告警消息,即可在公众号接收到。/ G: u( L0 f7 w7 U+ R3 s; U1 J >如果仅仅为了测试告警功能,可以先将告警值设较小的值,比如设为0.070,测试完成之后再恢复国家规定标准0.80。/ s) o/ a* P; K3 ~" i+ N . m( z7 x0 J9 N: L1 }2 Z+ ~$ W8 t 至此,基于TencentOS Tiny的智能甲醛监测仪制作完成。 ! n6 P$ M6 r, U |
确实有点长
你不是搞过么
我感觉没赵日天牛逼