问题描述
我正在尝试使用 SIM7020E 芯片上的 AT 命令通过 t-mobile nb-iot 网络发送 UDP 数据包。我使用 the product wiki 作为参考。我的sim卡的入门版本不支持TCP,但如果我可以成功地使用UDP进行通信,我打算稍后使用它。
我使用“nc -u -l 9999”在 RaspBerry Pi 上创建了一个 UDP 套接字。我在我的托管服务提供商上设置了 A 记录,将 dev.mydomain.com 引用到 RaspBerry Pi 的 IP 地址。我通过使用“nc -u dev.mydomain.com 9999”从我的笔记本电脑在另一个网络上发送 UDP 数据包并输入一些测试字符串来验证 portforward 和 A-record 设置,所以这一切正常。
在 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,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,"test"
此时我希望在 RaspBerry Pi 的命令行中看到“test”,但没有任何反应。在 T-mobile 门户中,它显示 PDP 上下文已成功激活。
此外,使用 AT*MCGDEFCONT="IP","username","password"
手动设置 APN 不起作用。
解决方法
你帮汉斯解决了吗?按照 https://www.waveshare.com/wiki/Pico-SIM7020E-NB-IoT 代码示例,我一直在忙着使用 SIM7020E。通过 CHTTPCREATE/CHTTPCON/CHTTPSEND AT cmds 成功地将 HTTP GETS 发送到服务器(而不必使用 micropython 的可怜的 urequests 库),这似乎能够通过 LTE 将数据包发送到服务器,而无需指定 TCP/UDP 等或使用一个插座。也许试一试?
遗憾的是,我有一个聪明的想法,那就是在 uart 上尝试“AT+POWD=1”cmd(本来应该关闭 7020E 的电源),现在该模块现在除了 echo AT cmds 什么也不做(仍然自动连接到 LTE网络和网络指示灯缓慢闪烁,只是不会做任何其他事情。)真可惜,否则不错的小模块。