OpenEdv-开源电子网

标题: STM32项目,《智能直饮水控制中心》,STM32+UCOSIII+EMWIN+IOT机智云实现物联网 [打印本页]

作者: 飘逸心晴    时间: 2017-10-31 17:57
标题: STM32项目,《智能直饮水控制中心》,STM32+UCOSIII+EMWIN+IOT机智云实现物联网
本帖最后由 飘逸心晴 于 2019-10-24 14:53 编辑

大家好,感谢大家点进来看这个帖子,自从八月份有计划离职后一直在家苦苦自学深造,先是对STM32所有资源包括各种外设等等的详细学习,然后学习了UCOSIII并买了作者出版的书,然后学习了EMWIN并成功移植到UCOSIII上面,学完之后开始学习LWIP。学完LWIP后想做物联网的实验,发现要连接到公网比较繁琐,无意间得知机智云这个平台,就开始学习机智云,并做了一些简单的物联网实验。终于在上个月低把学习计划完成了。
那么学归学,真正掌握了多少,如何验证自己的学习成果,于是在刚离职那时候就规划好了,根据以往的习惯,学完之后做一个实际可稳定使用的产品。
当然最终做的项目大方向没变,只是具体项目最后来的考虑中换成了"智能直饮水控制中心"
(, 下载次数: 53)

OK,进入正题。


智能直饮水控制中心

家里是老房子,供给水管用的是铁管,久了里面肯定生锈,而进户水管是UPVC水管,为了让家人喝上不流经生锈水管的水,我在客厅安装了一个直饮机,进水直接从进户水管引入(据称出水可以直接饮用,然而秉着健康为上的理念,并没有直接饮用)。然而问题来了,由于经过了多级过滤,出水处水压大大降低,流速很慢,装完一电热壶水要等个一分钟,得一直守在那,离开一不注意就会水淹客厅(当然没那么夸张),于是充满工科细胞的我立马萌生出利用专业能力做一个自动控制系统(好吧,只是控制板),水满了自动关水。在出水与水龙头之间串一个常闭电磁阀,按下控制板上的按钮,电磁阀通电,打开通道,水龙头开始出水。最开始的方案采用定时器,定了70s(之前测出装满水要70s),于是兴高采烈装上去用,效果不错。然而经过几天的观察发现,同样测试条件,早晚流出的水的总量不一样,时多时少虽然相差不大,但是秉着严谨的心态开始查找问题,最终发现由于时间段不同,周边住户用水量不同,用的人多了水压低,流速就低,流速x时间=总量,流速低了,总量就低了。我这个不是处女座却拥有处女座的强迫症心态,要求一定要完美,于是抛弃这个方案,于是去淘宝逛啊逛,发现有一种叫霍尔式水流量计的传感器,串在水管之间,采用5V供电,一旦有水流过,就会产生方波信号,信号频率与流速成正比关系,无水流则无输出。一拍即合,立马买来开发,串在出水管中,方波信号输入到单片机中,当单片机收到的信号计数达到设定值就断开电磁阀。经过几天测试,无论什么时段流出来的水量基本不变,满足我的要求!于是愉快的使用了差不多一年,用户体验非常棒!(也没啥用户其实也就只是我家人)下面贴上图片(那时候还在读大学,经济困难,所以没去打PCB板,用了洞洞板),这个只是用51单片机做的。于是现在做的这个智能直饮水控制中心,是在这个的核心功能基础上加入其它功能,升级换代而成的。

(, 下载次数: 50)


1、出水量达到设定值自动关水
2、温度、湿度测量
3、光照强度测量
4、用水总量统计
5NTP时间
6、物联网,可在手机APP上远程查看室内温度、湿度、上电总次数等信息
7、简洁易懂的UI界面

STM32F103VET6              1
DHT11数字温湿度传感器    1
光照强度传感器               1
W25Q32 4MB外部FLASH    1
2.8寸电阻液晶屏              1
MP2359 DC-DC电源芯片     1
AMS1117-3.3线性电源芯片  1
继电器                           1
恢复出厂设置按键             1
LED指示灯                       2
ESP8266WIFI模块             1

UCOSIII+EMWIN+IOT


UI界面简介
(, 下载次数: 37)

待机界面(未连接电磁阀及水流量计)
(, 下载次数: 55)

煲水出水,出水量为1.4L(未连接电磁阀及水流量计)
(, 下载次数: 46)

手动出水,不会自动停止出水(未连接电磁阀及水流量计)
(, 下载次数: 58)

背面基本都是贴片元件,由于都是人工焊接所以用0805封装
(, 下载次数: 42)

核心芯片STM32103VET6,1厘米的宽度有20+个引脚,非常密集
当然就不能采用传统的锡条了,用的锡泥,本质上也是焊锡,只是像泥一样流状,人工焊接IC的神器
(, 下载次数: 35)

机智云云端操作界面及手机APP截图,注意手机网络是蜂窝数据而非WIFI
(, 下载次数: 52)
(, 下载次数: 50)


以下是详细的介绍视频
http://player.youku.com/embed/XMzEzMTEwODcxNg


另外我会将程序及原理图发上来供大家参考,初学者经验有限,存在一些可完善的地方,欢迎大家指出!
程序空间占用: ROM:140Kb   RAM:39Kb
(由于程序中存在设备Product Key及Product Secret,因此已将这两个参数抹去,但不影响参考


后言:
这几个月来把学习计划都给完成了,虽然曾经为上家就职公司研发了大量的51单片机项目,但在做这个项目的过程中,依然深刻的感受到一个最大的特点,研发一个新的东西的过程中,肯定会磕磕碰碰,遇到大大小小的问题,大大小小的绊脚石,这就决定了半途而废者无法体会到成功的喜悦。要想取得最后的胜利,还需有一颗坚持不懈的心和信念。第二点是,学无止境,山外有山人外有人,要怀着一颗谦卑的学习心态,不断学习,不断适应社会的发展,才能够活出价值。这个项目做完,就准备去工作了,之前是在广州,但是这次想去深圳,因为在广州没有归属感,而我从小喜欢深圳,深圳的行业氛围也更浓厚,在此也祝愿各位学习、工作道路顺利!

(, 下载次数: 18716)
(, 下载次数: 11942)


作者: 飘逸心晴    时间: 2017-10-31 18:00
话说有哪位知道视频怎么添加到帖子里面去吗,这个优酷的视频贴上去只有网站,怎么把播放窗口直接就在帖子里?
作者: powerzhouhui    时间: 2017-11-1 12:05
支持支持
作者: d1z1y2    时间: 2017-11-1 12:18
不错
作者: aiyeba    时间: 2017-11-6 11:48
飘逸心晴 发表于 2017-10-31 18:00
话说有哪位知道视频怎么添加到帖子里面去吗,这个优酷的视频贴上去只有网站,怎么把播放窗口直接就在帖子里 ...

大神,你知道怎样学习emwin吗?没有什么经验。
作者: persevere    时间: 2017-11-6 13:40
@飘逸心晴   能分享下emwin和Lwip的学习经验吗??谢谢了!
作者: hopper    时间: 2017-11-6 13:56
厉害啊,这么快就切换成功。
作者: 飘逸心晴    时间: 2017-11-6 15:34
aiyeba 发表于 2017-11-6 11:48
大神,你知道怎样学习emwin吗?没有什么经验。

不敢受大神这个称号。EMWIN我也是看原子的视频,不过讲得比较一般,都是讲基础的。建议把基础的弄懂,然后自己做一个项目,综合那些基础的项目。一般STM32的学习都是理论+实践
作者: 飘逸心晴    时间: 2017-11-6 15:35
persevere 发表于 2017-11-6 13:40
@飘逸心晴   能分享下emwin和Lwip的学习经验吗??谢谢了!

学习的话,这两块原子都有视频,不过讲的都没有STM32基础知识和UCOS这两个系列的好,这两个讲的都是属于基础的东西,建议先摸透基础,然后自己再搞一个综合实践去做,STM32的学习模式基本都是理论+实践
作者: 飘逸心晴    时间: 2017-11-6 15:36
hopper 发表于 2017-11-6 13:56
厉害啊,这么快就切换成功。

切换速度这个不是我的功劳,主要还是机智云自身的配网策略、联网策略比较优秀
作者: aiyeba    时间: 2017-11-6 15:45
飘逸心晴 发表于 2017-11-6 15:34
不敢受大神这个称号。EMWIN我也是看原子的视频,不过讲得比较一般,都是讲基础的。建议把基础的弄懂,然 ...

原子哥的这些视频哪里看到的,我都没有发现还有这些视频。
作者: 飘逸心晴    时间: 2017-11-6 17:14
aiyeba 发表于 2017-11-6 15:45
原子哥的这些视频哪里看到的,我都没有发现还有这些视频。

http://www.openedv.com/forum.php ... &extra=page%3D1
作者: meimengxing2014    时间: 2017-11-6 17:53
这个项目不错,很有想法,下载来学习下。我问下,为什么在广州没有归属感?
作者: meimengxing2014    时间: 2017-11-6 17:58
还请问下,这个机智云是什么?怎么用的啊?
作者: BJTT    时间: 2017-11-6 22:15
学习了
作者: 乐仔    时间: 2018-3-4 22:18
楼主您好,我将您的程序移到mini板,卡在校准的地方,能帮忙看下吗,跳过校准是可以显示图形界面的

作者: 乐仔    时间: 2018-3-4 22:21
本帖最后由 乐仔 于 2018-3-4 22:40 编辑

图一,校准不成功

作者: 乐仔    时间: 2018-3-4 22:26
乐仔 发表于 2018-3-4 22:18
楼主您好,我将您的程序移到mini板,卡在校准的地方,能帮忙看下吗,跳过校准是可以显示图形界面的

。。。

作者: 乐仔    时间: 2018-3-4 22:27
乐仔 发表于 2018-3-4 22:26
。。。

咋就发不了图片,程序啊
作者: 乐仔    时间: 2018-3-4 22:30
图一,校准不成功

作者: 乐仔    时间: 2018-3-5 08:54
有移到RCT6成功的吗?
作者: 乐仔    时间: 2018-3-5 12:32
本帖最后由 乐仔 于 2018-3-5 23:43 编辑

(, 下载次数: 24) 是W25Q64那块程序有问题
作者: 乐仔    时间: 2018-3-5 12:42
(, 下载次数: 16) W25Q32里边定义的这块是什么意思呢?我看教程没有这个,原子用的校准是AT24CXX_Init(),楼主用的是W25Q32,改如何改呢

作者: 乐仔    时间: 2018-3-5 12:44
本帖最后由 乐仔 于 2018-3-5 14:23 编辑

我把原子触摸屏例程改成楼主的这种写法,读出来的坐标全是0,也是校准无效
作者: 乐仔    时间: 2018-3-6 15:02
本帖最后由 乐仔 于 2018-3-6 15:29 编辑

(, 下载次数: 22) (, 下载次数: 754)

本可以校准成功,显示出UI界面,现在为什么停在“校准成功”的提示语那里?

作者: vghuu123    时间: 2018-3-7 16:24
不错,感谢分享
作者: Polychromatic    时间: 2018-3-7 18:22
666666666666楼主超级厉害,膜拜,
作者: huige    时间: 2018-3-14 17:24
谢谢分享
作者: 灵动微MM32    时间: 2018-3-14 19:25

厉害啊,这么快就切换成功。
作者: slsdz    时间: 2018-3-15 10:19
记号下,感谢分享
作者: hedongliang    时间: 2018-5-12 12:01
请问有那些位图素材吗,像wifi图标 温度计图标 ,可以分享一下吗?
作者: hedongliang    时间: 2018-5-12 12:12
乐仔 发表于 2018-3-5 12:32
是W25Q64那块程序有问题

可以吧mini移植的分享一下吗
作者: dscx05    时间: 2018-5-26 11:11
厉害的楼主
作者: givemefive    时间: 2018-5-28 20:31
说句实话,像楼主这样的青年已经很少了
作者: liushiming82    时间: 2018-5-28 21:49
霍尔式水流量计的传感器通过计数脉冲个数来确定水量吗?它们之间是什么关系
作者: NewGuard    时间: 2018-5-29 08:59
厉害了我的哥!
作者: 奋青    时间: 2018-5-31 07:48
哥 W25Q128这里你是干什么用的?
作者: zsy223344    时间: 2018-6-29 11:15
楼主   就是你的LCD屏是自己焊的   还是买人家的成品呢

作者: yjh    时间: 2018-6-29 14:11
厉害                                                   
作者: cvgjhuor    时间: 2018-7-3 13:26
厉害厉害!
作者: 飘逸心晴    时间: 2018-7-18 13:58
meimengxing2014 发表于 2017-11-6 17:53
这个项目不错,很有想法,下载来学习下。我问下,为什么在广州没有归属感?

可能是因为稍微有一点点排外文化
作者: 飘逸心晴    时间: 2018-7-18 13:59
meimengxing2014 发表于 2017-11-6 17:58
还请问下,这个机智云是什么?怎么用的啊?

机智云是一个物联网平台,使用很简单,可以百度搜索一下机智云,官网里面就有简单的使用教程
作者: 飘逸心晴    时间: 2018-7-18 14:00
乐仔 发表于 2018-3-6 15:02
本可以校准成功,显示出UI界面,现在为什么停在“校准成功”的提示语那里?

不好意思,一直没上论坛,没看到你的问题
作者: 飘逸心晴    时间: 2018-7-18 14:00
Polychromatic 发表于 2018-3-7 18:22
666666666666楼主超级厉害,膜拜,

不敢,谢谢
作者: 飘逸心晴    时间: 2018-7-18 14:01
灵动微MM32 发表于 2018-3-14 19:25
厉害啊,这么快就切换成功。

你们MM有一位微信名是帛凉的HR,当时我偷了你们的简历并邀请我去面试,在这个项目开始之前
作者: 飘逸心晴    时间: 2018-7-18 14:01
hedongliang 发表于 2018-5-12 12:01
请问有那些位图素材吗,像wifi图标 温度计图标 ,可以分享一下吗?

可以。你现在还需要不,我只有这几个,都是手工制作的
作者: 飘逸心晴    时间: 2018-7-18 14:02
givemefive 发表于 2018-5-28 20:31
说句实话,像楼主这样的青年已经很少了

谢谢,其实大神还有很多,所以要继续
作者: 飘逸心晴    时间: 2018-7-18 14:02
liushiming82 发表于 2018-5-28 21:49
霍尔式水流量计的传感器通过计数脉冲个数来确定水量吗?它们之间是什么关系

是的。这个看规格书,有计算公式
作者: 飘逸心晴    时间: 2018-7-18 14:02
奋青 发表于 2018-5-31 07:48
哥 W25Q128这里你是干什么用的?

这里面是储存校准参数,还有上电次数、用水统计这几个数据用的
作者: 飘逸心晴    时间: 2018-7-18 14:03
zsy223344 发表于 2018-6-29 11:15
楼主   就是你的LCD屏是自己焊的   还是买人家的成品呢

是买成品的,带有40PIN的排线,再自己焊到板子上
作者: hellowSTM32    时间: 2018-7-18 14:12
楼主,谢谢。学习了
作者: 翾宥    时间: 2018-7-18 14:35
谢谢楼主分享,好好研究下NTP
作者: a0101    时间: 2018-8-7 15:50
各位大佬好,我想问一下这个长按按键为啥不起作用。没有清楚信息啊?
作者: h418452224    时间: 2018-8-22 19:19
乐仔 发表于 2018-3-6 15:02
本可以校准成功,显示出UI界面,现在为什么停在“校准成功”的提示语那里?

大神您好,请问你是真么校准成功的?
作者: lantian    时间: 2019-1-10 19:27
请问一下楼主,有没有做过外部按键控制屏幕的,我做的外部按键的总是死机
作者: Powerfu    时间: 2019-4-18 02:22
请教你在智能直饮水控制中心项目中,LCD显示的位图坐标数组数组是怎么生成的,我在bmpcvt试过好像不能转成你那样的数组。
位图xxx坐标点数据
static const unsigned int BmpArray_CONN[482][2]={
{25,9},{26,9},{27,9},{51,9},{52,9},{53,9},{54,9},{24,10},{25,10},{26,10},
作者: Powerfu    时间: 2019-4-18 12:17
源码中位图不知道是用什么工具软件转成坐标矩阵数组,下面代码即是坐标点数组。我上网找了很久也未能找到。急需大家的帮吗?求高手帮忙位图xxx坐标点数组
static const unsigned int BmpArray_CONN[482][2]={
{25,9},{26,9},{27,9},{51,9},{52,9},{53,9},{54,9},{24,10},{25,10},{26,10},
{27,10},{51,10},{52,10},{53,10},{54,10},{55,10},{23,11},{24,11},{25,11},{26,11},
{52,11},{53,11},{54,11},{55,11},{56,11},{22,12},{23,12},{24,12},{25,12},{54,12},
{55,12},{56,12},{57,12},{21,13},{22,13},{23,13},{24,13},{49,13},{55,13},{56,13},
{57,13},{58,13},{20,14},{21,14},{22,14},{23,14},{28,14},{29,14},{30,14},{31,14},
{48,14},{49,14},{50,14},{51,14},{56,14},{57,14},{58,14},{59,14},{20,15},{21,15},
{22,15},{27,15},{28,15},{29,15},{30,15},{48,15},{49,15},{50,15},{51,15},{52,15},
{57,15},{58,15},{59,15},{19,16},{20,16},{21,16},{22,16},{26,16},{27,16},{28,16},
{29,16},{30,16},{49,16},{50,16},{51,16},{52,16},{53,16},{57,16},{58,16},{59,16},
{60,16},{19,17},{20,17},{21,17},{25,17},{26,17},{27,17},{28,17},{34,17},{35,17},
{44,17},{50,17},{51,17},{52,17},{53,17},{58,17},{59,17},{60,17},{18,18},{19,18},
{20,18},{25,18},{26,18},{27,18},{33,18},{34,18},{35,18},{36,18},{43,18},{44,18},
{45,18},{46,18},{51,18},{52,18},{53,18},{54,18},{58,18},{59,18},{60,18},{61,18},
{18,19},{19,19},{20,19},{24,19},{25,19},{26,19},{27,19},{32,19},{33,19},{34,19},
{35,19},{36,19},{43,19},{44,19},{45,19},{46,19},{47,19},{52,19},{53,19},{54,19},
{59,19},{60,19},{61,19},{18,20},{19,20},{20,20},{24,20},{25,20},{26,20},{31,20},
{32,20},{33,20},{34,20},{45,20},{46,20},{47,20},{48,20},{53,20},{54,20},{55,20},
{59,20},{60,20},{61,20},{17,21},{18,21},{19,21},{20,21},{24,21},{25,21},{26,21},
{31,21},{32,21},{33,21},{46,21},{47,21},{48,21},{53,21},{54,21},{55,21},{59,21},
{60,21},{61,21},{17,22},{18,22},{19,22},{24,22},{25,22},{26,22},{30,22},{31,22},
{32,22},{33,22},{46,22},{47,22},{48,22},{53,22},{54,22},{55,22},{59,22},{60,22},
{61,22},{17,23},{18,23},{19,23},{23,23},{24,23},{25,23},{30,23},{31,23},{32,23},
{47,23},{48,23},{49,23},{53,23},{54,23},{55,23},{59,23},{60,23},{61,23},{62,23},
{17,24},{18,24},{19,24},{23,24},{24,24},{25,24},{30,24},{31,24},{32,24},{47,24},
{48,24},{49,24},{53,24},{54,24},{55,24},{59,24},{60,24},{61,24},{62,24},{17,25},
{18,25},{19,25},{23,25},{24,25},{25,25},{30,25},{31,25},{32,25},{47,25},{48,25},
{49,25},{53,25},{54,25},{55,25},{59,25},{60,25},{61,25},{62,25},{17,26},{18,26},
{19,26},{24,26},{25,26},{26,26},{30,26},{31,26},{32,26},{46,26},{47,26},{48,26},
{49,26},{53,26},{54,26},{55,26},{59,26},{60,26},{61,26},{62,26},{17,27},{18,27},
{19,27},{20,27},{24,27},{25,27},{26,27},{31,27},{32,27},{33,27},{46,27},{47,27},
{48,27},{53,27},{54,27},{55,27},{59,27},{60,27},{61,27},{18,28},{19,28},{20,28},
{24,28},{25,28},{26,28},{31,28},{32,28},{33,28},{34,28},{45,28},{46,28},{47,28},
{48,28},{53,28},{54,28},{55,28},{59,28},{60,28},{61,28},{18,29},{19,29},{20,29},
{24,29},{25,29},{26,29},{27,29},{32,29},{33,29},{34,29},{35,29},{43,29},{44,29},
{45,29},{46,29},{47,29},{52,29},{53,29},{54,29},{59,29},{60,29},{61,29},{18,30},
{19,30},{20,30},{25,30},{26,30},{27,30},{33,30},{34,30},{35,30},{36,30},{43,30},
{44,30},{45,30},{46,30},{51,30},{52,30},{53,30},{54,30},{58,30},{59,30},{60,30},
{61,30},{19,31},{20,31},{21,31},{25,31},{26,31},{27,31},{28,31},{34,31},{35,31},
{43,31},{44,31},{45,31},{51,31},{52,31},{53,31},{58,31},{59,31},{60,31},{19,32},
{20,32},{21,32},{26,32},{27,32},{28,32},{29,32},{49,32},{50,32},{51,32},{52,32},
{53,32},{57,32},{58,32},{59,32},{60,32},{19,33},{20,33},{21,33},{22,33},{27,33},
{28,33},{29,33},{30,33},{48,33},{49,33},{50,33},{51,33},{52,33},{57,33},{58,33},
{59,33},{20,34},{21,34},{22,34},{23,34},{28,34},{29,34},{30,34},{31,34},{48,34},
{49,34},{50,34},{51,34},{56,34},{57,34},{58,34},{59,34},{21,35},{22,35},{23,35},
{24,35},{29,35},{30,35},{49,35},{55,35},{56,35},{57,35},{58,35},{22,36},{23,36},
{24,36},{25,36},{54,36},{55,36},{56,36},{57,36},{22,37},{23,37},{24,37},{25,37},
{26,37},{53,37},{54,37},{55,37},{56,37},{24,38},{25,38},{26,38},{27,38},{52,38},
{53,38},{54,38},{55,38},{25,39},{26,39},{27,39},{51,39},{52,39},{53,39},{54,39},
{26,40},{52,40},};


位图xxx信息表
GUI_ARRAY_BITMAP bmpGUI_LOGO_CONN=
{
        0,
        0,
        482,
        GUI_LIGHTCYAN,
        BmpArray_CONN
};


作者: ly7817    时间: 2019-4-24 10:50
感谢分享
作者: jinniuxing    时间: 2019-7-29 14:44
谢谢,分享!
作者: 五月爸爸    时间: 2019-8-6 16:48
飘逸有微信吗?加一个
作者: 人可233    时间: 2019-9-14 15:20
老哥 我想打板做下你这个,但是配单的客服说有问题需要我确认一下,我找了一天了还是没解决,没辙了,想请问下老哥咋整

作者: efree    时间: 2019-10-23 16:26
学习一下,谢谢,顶。
作者: 飘逸心晴    时间: 2019-10-24 14:51
人可233 发表于 2019-9-14 15:20
老哥 我想打板做下你这个,但是配单的客服说有问题需要我确认一下,我找了一天了还是没解决,没辙了,想请 ...

不好意思,一直没有上论坛,现在才看到。你还需要吗?

作者: 飘逸心晴    时间: 2019-10-24 14:51
Powerfu 发表于 2019-4-18 12:17
源码中位图不知道是用什么工具软件转成坐标矩阵数组,下面代码即是坐标点数组。我上网找了很久也未能找到。 ...

不好意思,一直没有上论坛。问题解决了吗?
作者: 人可233    时间: 2019-11-17 13:53
飘逸心晴 发表于 2019-10-24 14:51
不好意思,一直没有上论坛,现在才看到。你还需要吗?

如果老哥方便的话
作者: 菜鸟不会飞    时间: 2019-12-3 12:04
学习一下
作者: zhtxwz    时间: 2020-3-1 12:40
大神,6666
作者: 可道曾还    时间: 2020-4-17 15:32
楼主问下用机智云后LWIP能用上不,我在您的程序中找不到LWIP方面的程序,多谢了
作者: 嵌入式学习者    时间: 2020-5-28 18:08
mark,楼主厉害了
作者: jinniuxing    时间: 2020-6-2 09:41
谢谢分享!
作者: yanghan    时间: 2020-7-10 11:30
Powerfu 发表于 2019-4-18 12:17
源码中位图不知道是用什么工具软件转成坐标矩阵数组,下面代码即是坐标点数组。我上网找了很久也未能找到。 ...

同问,这个问题怎么解决的?
作者: jinniuxing    时间: 2020-11-19 10:04
谢谢分享!




欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) Powered by Discuz! X3.4