我正试图使用SIM7020E芯片上的AT命令通过t-mobile NB-IoT网络发送UDP数据包。我使用了产品wiki作为参考。我的sim卡的初始版本不支持TCP,但如果我能成功地使用UDP通信,我计划稍后使用它。
我在Raspberry Pi上创建了一个UDP套接字;nc-u-l 9999";。我在我的主机提供商上设置了一个A记录,将dev.mydomain.com引用到树莓派的IP地址。我通过从另一个网络上的笔记本电脑发送UDP数据包来验证端口转发和A记录设置;nc-u dev.mydomain.com 9999";并键入一些测试字符串,所以这一切都有效。
在4G芯片上,我使用以下AT命令:
// Check network
AT+CSQ
+CSQ: 21,0
AT+CGREG?
+CGREG: 0,5
AT+COPS?
+COPS: 0,2,"20416",9
AT+CGCONTRDP
+CGCONTRDP: 1,5,"iot.t-mobile.nl","x.x.x.x.255.255.255.0" <-- crossed out my ip
// Create UDP socket
AT+CSOC=1,2,1
+CSOC: 0
// Connect socket 0 to the listening port on the Raspberry Pi
AT+CSOCON=0,9999,"dev.mydomain.com"
OK
// Send "test"
AT+CSOSEND=0,0,"test"
在这一点上,我希望看到";测试";出现在Raspberry Pi的命令行中,但什么也没发生。在T-mobile门户中,它显示PDP上下文已成功激活。此外,使用AT*MCGDEFCONT="IP","iot.t-mobile.nl","username","password"
手动设置APN也不起作用。
汉斯,你解决这个问题了吗?我和一个SIM7020E的追随者一起艰难前行https://www.waveshare.com/wiki/Pico-SIM7020E-NB-IoT代码示例。通过CHTTPCREATE/CHTTPCON/CHTTPSEND AT cmds成功地将HTTP GETS发送到服务器(而不必使用microython糟糕的urequests库(,这些cmds似乎能够通过LTE向服务器发送数据包,而无需指定TCP/UDP等或使用套接字。也许试试吧?
遗憾的是,我想出了一个聪明的主意,在uart上尝试"AT+POWD=1"命令(本应为7020E断电(&现在,该模块除了响应AT cmds之外什么都不做(仍然自动连接到LTE网络,并缓慢闪烁网络引导,只是不会做任何其他事情。(真的很遗憾,否则的话,这个小模块很好。