EDA365电子论坛网

标题: 基于NXP i.MX 6ULL核心板的物联网模块开发案例(2) [打印本页]

作者: Tronlong123    时间: 2024-7-17 13:45
标题: 基于NXP i.MX 6ULL核心板的物联网模块开发案例(2)
本帖最后由 Tronlong123 于 2024-7-21 17:37 编辑 9 P- D$ k; C7 v
4 Q. C$ A0 l7 ~! Q% U

目录
; h5 t+ o# Q' [' ~# s( m% j+ B( u. B2 NB-IoT模块测试( Q& r4 }4 Z' O) A2 I: s
2.1 获取IMEI和IMSI2 {- w1 n- k% Z4 e; K
2.2 创建云端NB-IoT设备
# P, c- j  m/ c& h2.3 创建通信套件实例
5 ~0 l. n: O& L! }! p. A* V$ z2.3.1 生成配置参数7 N+ X+ B9 \2 t  U) Y7 d
2.3.2 创建实例
4 [+ ]9 j5 q& H; O+ u) g- L; K) f. n前言本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境:7 D& R. Y. v7 X0 ^8 q/ e
Windows开发环境:Windows 7 64bit、Windows 10 64bit
; F# m1 t9 [+ f$ r. E% i' F虚拟机:VMware15.1.0
5 r) z  H. ?+ \6 C" O+ g* Z& O' lLinux开发环境:Ubuntu18.04.4 64bit/ L/ {% b# k0 R( F5 g( u: p
U-Boot:U-Boot-2020.04
4 k7 Q2 \* ~4 x2 HKernel:Linux-5.4.70
& W2 Q$ D$ v9 H, e; J* d  H/ WLinux SDK:5.4.70_2.3.0: L$ b+ z0 n; {: H" i7 P
无特殊说明情况下,默认使用USB TO UART1作为调试串口,使用Linux系统启动卡(SD启动模式)启动系统,通过路由器与PC机进行网络连接。& \- _. P0 t% S3 s1 e
创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
& f& c. I. z1 n  I3 f, J

评估板正面图
2 NB-IoT模块测试本案例使用的NB-IoT模块型号为:亿佰特EA01-D,详细参考资料请查看产品资料“1-开箱必读\产品规格书\拓展模块规格书\”目录下的《EA01-D_Usermanual_CN_v1.1》文件。请将NB-IoT物联网卡插至NB-IoT模块Micro SIM卡槽,然后将模块插至评估板NB-IoT接口,将2.4G天线连接至模块天线接口,如下图所示。' k6 A) D- T! U0 j# T; I; L
备注:由于存在引脚复用关系,请勿同时将Zigbee、LoRa模块连接至评估板。6 I+ @' F0 b: {! j) s# v$ Y& C
2.1 获取IMEI和IMSI
6 D+ A6 s; q9 o% n# X进入评估板文件系统,执行如下命令指定串口后台运行,用于接收模块信息。4 b0 H+ p/ m1 X% X
Target#cat /dev/ttymxc5 &
* L2 z2 g2 X( t) S! RTarget#stty -F /dev/ttymxc5 -echo. b; o+ `1 ~0 H" ^1 a
执行如下命令,获取IMEI码和IMSI码。9 `# P- h* p9 Q3 M# Y9 }
Target#echo "AT+CGSN=1" > /dev/ttymxc5 //获取IMEI码
$ F* _5 i* b% x; z( }Target#echo "AT+CIMI" > /dev/ttymxc5 //获取IMSI码: j: r9 w' L! D" ?! W
本次获取的IMEI码为"864624050017021",获取的IMSI码为"460082267401907"。
% Y% g( w1 P8 s& b; s9 y+ u6 v2.2 创建云端NB-IoT设备
3 a( v0 |) J1 T' E% I$ H/ m, @本次测试以中国移动NB-IoT物联网解决方案OneNET为例进行演示。请登录官方网站:open.iot.10086.cn,通过手机号进行注册账号并登录。5 M" g3 q8 t7 N/ K0 g% s
账号登录成功,进入如下界面,点击右上角“控制台”。8 w4 y& n, B5 j- |: J
进入如下界面,点击左上角“切换至旧版”。
; Z5 C# F7 e- Z, J5 ?) V
进入如下界面,进入“NB-IoT物联网套件”。' u( {/ @) B8 s+ {- [6 W
进入如下界面,点击“添加产品”。
& Y( O+ V$ k" f; y( S3 [" B0 H
进入如下界面,根据实际情况依次输入产品信息:产品名称、产品行业、产品类别,以及技术参数:联网方式选择"NB-IoT"、设备接入协议选择"LWM2M"、操作系统选择"Linux"、网络运营商选择“移动”。6 X- q0 `! G2 {# S1 [
产品添加完成后,弹出如下窗口,点击“立即添加设备”。5 X) }# r! `* O
进入如下界面,点击“添加设备”。) w, O' `$ b6 }& L
进入如下界面,依次输入设备类型、设备名称、IMEI码和IMSI码,并开启自动订阅功能。) t) T3 M. m0 p: G/ K
设备添加成功后,将会弹出如下窗口,请将设备ID:969146269和PSK码:8NKXxti2IS5WaDjW记录保存,用于后续测试,然后点击“知道了”按钮关闭窗口。; O' F" x+ ?, L4 s- R
进入如下界面,可观察到目前设备处于离线状态,点击“详细”。5 ~( T# }& o+ `  K' f) X. b( X; e
进入如下界面,点击“编辑”,在弹出的窗口输入自定义Auth_Code:Tronlong,然后点击确认关闭窗口。至此,云端NB-IoT设备创建完成。
) K" W3 o) Y' k2 e+ A% q  j! I
2.3 创建通信套件实例. v; j& x6 _8 Y, n
本章节主要演示NB-IoT模块的通信实例,详细参考资料请查看产品资料“6-开发参考资料\其他参考文档\”目录下的《EA01-S+3GPP和运营商云平台标准指令手册》文件。' t- ^+ @* l" ]. `
2.3.1 生成配置参数$ l; k$ a7 _: O1 x& T4 T
将产品资料“4-软件资料\Tools\Windows\”目录下的cfg_tool.zip和Sublime-Text-Build-3211_x64.zip压缩包拷贝至Windows非中文目录下并解压。
' d( Y5 x$ P; R8 A. R
进入Sublime-Text-Build-3211_x64目录,双击sublime_text.exe程序进行安装。& O! S/ A  W& r+ T- J
进入cfg_tool目录,使用文本工具打开test.xml文件,5 N& T! I* c7 w/ w
根据前面步骤获取的信息,修改AuthCode为Tronlong,修改PSK为8NKXxti2IS5WaDjW,如下图所示。
+ m# l! z" g/ W& a" E* J
打开Windows命令行CMD,输入如下命令进入ctg_tool目录,生成配置文件。
3 \: o# W8 b/ B: HCMD#cd /d E:\tools\cfg_tool\& v5 \' d% n. H9 `
CMD#cis_cgtool.exe test.xml out.bin
4 d" z& e9 e, [1 a2 a
执行完成后,将会在ctg_tool目录下生成out.bin文件。% Q% c. C7 I0 x- o) [+ h
打开Sublime Text软件,将生成的out.bin文件拖入该软件打开,可看到设备配置参数以16进制显示。同时鼠标右击点击out.bin文件可查看该文件大小为93Byte。
" D# |2 T+ W; S6 Q) b$ r5 X
2.3.2 创建实例
; f# p. ]4 L: c' L3 j3 W) h(1) 创建OneNET通信套件实例
$ I; t& Y# F5 N/ R- d. `, ^2 c测试命令为:echo AT+MIPLCREATE=<total size>,<config>,<index>,<currentsize>,<flag> > /dev/ttymxc5
/ G1 U% J  Y/ t9 [( R  H! M参数解析:' ]9 X  w" l+ C
<total size>:配置文件的总长度。即out.bin文件大小,本次测试文件为93Byte。
* n% ?* Z2 }+ q<config>:配置文件内容,16进制数的形式。
9 p5 g' @4 t, h" w<index>:配置文件的序号。考虑到AT指令长度有限,一个完整的配置文件未必能在一条AT指令中发送完成,可将内容切分成多段。比如分为N段,则从前到后按照降序依次分配序号为N-1~0,按照从大到小序号的顺序每段调用一次AT指令。如当index为0时,意味着该条指令为最后一条配置消息。: v( L& T, j. t( `4 ]* j) y: H1 m2 O9 U8 X
<currentsize>:当前命令所包含的配置文件长度。本次测试为93Byte。
! D7 K! C. j  w<flag>:消息标识,1:第一条消息,2:中间消息,0:最后一条消息。' R3 U, o% n8 l0 b: Y
进入评估板文件系统,在可执行程序所在目录下执行如下命令,返回OK表示创建成功。+ t- i: v6 A- ~: h1 q* r. p  F" j
Target# echo "AT+MIPLCREATE=93,13005df10003f2004f040011800005434d494f540000000000123138332e3233302e34302e33393a35363833002741757468436f64653a54726f6e6c6f6e673b50534b3a384e4b58787469324953355761446a573bf30008e400c80000,0,93,0" > /dev/ttymxc57 `! m+ k6 Y1 v' [2 F
(2) 创建LwM2M协议实例0 e( U7 R  V: H# M* a: o( |# j
测试命令为:echo AT+MIPLADDOBJ=<ref>,<objectid>,<instancecount>,<instancebitmap>,<attributecount>,<actioncount> > /dev/ttymxc5
" U7 T6 Q$ Y! ]3 D参数解析:
, j) k3 ~3 C( ], N9 y7 B4 [- s<ref>:基础通信套件的一个实例标识,类型为一个无符号整数。
6 m7 }9 A; [% |+ Y: V<objectid>:对象ID。5 {9 @: u& o: U0 x
<instancecount>:实例个数。
" Y# f( f/ G8 K+ I7 Q<instancebitmap>:实例位图,字符串格式,每一个字符表示为一个实例,其中1表示可用,0表示不可用。例如添加的Object有5个实例,其中1、3可用,则实例位图为00101。
9 |7 w5 W6 R1 N. q4 R<attributecount>:属性个数。& K. V' n. `' @' b9 t) N$ F
<actioncount>:操作个数。4 ~1 o/ K+ A& b8 X) B
在可执行程序所在目录下执行如下命令。3 k5 ?5 K3 q# c* g; p
Target# echo AT+MIPLADDOBJ=0,3311,2,11,4,3 > /dev/ttymxc52 L2 m/ O( \: t, ]: U; o' c( a; A
(3) 发送注册请求
/ B- _9 N2 D$ Q3 e% Y测试命令为:ehco AT+MIPLOPEN=<ref>,<lifetime>,<timeout> > /dev/ttymxc5( N4 b" w. c9 U* B5 h4 {9 a
<ref>:基础通信套件的一个实例标识,类型为一个无符号整数。  s8 R/ h1 s' o
<lifetime>:生命周期,单位为秒。* t6 X; T$ N7 z$ _' t6 M1 W' o# u
<timeout>:注册的超时时长,单位为秒。8 p& Z- M. L+ ~! E' o8 x1 Z8 v( v' ^
在可执行程序所在目录下执行如下命令。当通信无误时,将会返回OK,模块接下来开始上报状态事件,如下图所示。
8 ~" @3 k, t* c" }* ?' tTarget#echo AT+MIPLOPEN=0,3000,30 > /dev/ttymxc5
/ E4 t5 y0 H8 O4 g; Q" }! p4 z( Y
状态事件信息说明如下。/ ?, f* ~! f1 x2 y
+MIPLEVENT:0,1 //bootstrap启动: D7 C* i# Q; T+ R; L4 r6 @/ }
+MIPLEVENT:0,2 //bootstrap启动成功; n9 K- s4 a+ J& c9 w3 R- w
+MIPLEVENT:0,4 //连接成功
  ^8 e, ~9 [2 M2 t2 Q4 @+MIPLEVENT:0,6 //注册成功
9 l& t% {7 P7 _( m  a" H6 t5 F1 a(4) 验证Observe请求
7 r$ f! U1 ~* [. B" W2 O实例注册成功后,NB-IoT模块将会上报Observe请求,其中上报请求中第二个参数为消息的ID,如下图所示。' M$ C7 |5 j7 e% f2 X$ {% M- F5 ?
每当模块上报一次Observe请求,请务必在5秒内执行如下命令进行验证,验证成功后,将会返回OK。如模块继续上报Observe请求,需继续执行命令验证,直至实例订阅成功,如下图所示。( |7 D; L/ d2 v2 @5 }
Target#echo AT+MIPLOBSERVERSP=0,104148,1 > /dev/ttymxc5 //验证第一条请求
$ t/ Y: a% y5 ~7 }" M1 N& HTarget#echo AT+MIPLOBSERVERSP=0,169685,1 > /dev/ttymxc5 //验证第二条请求: d* C" A6 s! M$ d9 R" @
同时,在云端设备管理界面,可观察到对应设备呈现自动订阅成功状态,至此,创建实例完成。
8 I2 N& S; X1 B! w4 o" H

) s( S; |  \- y" t+ [
3 N8 ?9 n4 D0 w. v
作者: Getaway    时间: 2024-7-18 10:37
整个草错流程很详细




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2