树莓派实战GPRS
来自Jack's Lab
(版本间的差异)
(→树梅派串口环回) |
(→使用systemd 服务) |
||
第127行: | 第127行: | ||
</source> | </source> | ||
+ | |||
==使用systemd 服务== | ==使用systemd 服务== | ||
+ | |||
+ | 构建如下的systemd服务配置 | ||
<source lange=bash> | <source lange=bash> | ||
第150行: | 第153行: | ||
</source> | </source> | ||
+ | |||
+ | 使能并启动服务 | ||
+ | <source lang="bash"> | ||
+ | |||
+ | systemctl enable lora-gw | ||
+ | systemctl start lora-gw | ||
+ | |||
+ | </source |
2017年10月25日 (三) 20:57的版本
目录 |
1 SIM800 GPRS/GSM
老牌GPRS芯片, 所以兼容性好. Arduino 都有很好的支持, 更不用说数梅派这种Linux操作系统的.
2 树梅派串口环回
数梅派上使用SIM800的主要问题是串口经常被占用. 而且系统很复杂, 多种渠道会占用唯一的硬件串口资源. 一旦串口能正常工作, 在数梅派上使用SIM800是一件很轻松的事情.
所以串口环回试验一定要做。就是
将RX/TX 拿杜邦线短接,启动 minicom -D /dev/ttyS0 (或者 /dev/ttyAMA0) 这样就能看到键盘敲入的字符都有回显。如果minicom开启了本地回显(CTRL+A E), 每一个敲入的字符都显示为两个。
如果不能得到正确的回显或者各种运行错误, 请按照下面步骤排查。
确保kernel不使用串口做为console
sudo raspi-config 禁用 "Advanced" choose "Serial" (Enable/Disable shell and kernel messages on the serial connection)
确保 /boot/cmdline.txt 不包含串口选项
类似这样: dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait 不能是这样的(树莓派版本不同,下面的AMA0 有可能是 ttyS0) dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
禁用 serial-getty 服务
sudo systemctl disable serial-getty@ttyAMA0.service sudo systemctl mask serial-getty@ttyAMA0.service
确保e UART pins (15 and 16 wPi) are in state ALT0
gpio readall 应该是如下: Phy 8 ALT0 NAME TXD
如果不是,可以用如下命令修改 gpio mode 15 ALT0; gpio mode 16 ALT0
确保 uart 在 /boot/config.txt使能,特别是如上步骤操作后 /dev/ttyAMA0 (ttyS0) 消失的情况
确保 enable_uart=1 在 /boot/config.txt 内
3 简单AT命令
3.1 查询SIM卡状态
at+cpin?
3.2 查询网络状态
At+cops?
+cops 0,0,“Chian mobile”
3.3 读取国际识别码
AT+CIMI
3.4 发送短消息
> AT+CMGF=1 OK > AT+CMGS="+861533xxxx3" > test sms > ctl+z +CMGS: 0
3.5 TCP 连接
at+cipstart="tcp","api.thingspeak.com","443" AT+cipDI=0 at+cipsend > POST /update?api_key=5J9GD27HXIMASDRC&field1=5000&headers=false HTTP/1.1 >GET /update?api_key= at-cipshut
4 串口拨号
sudo apt-get install ppp screen elinks ls /etc/ppp/peers/ sudo vim /etc/ppp/peers/gprs
要保持115200的波特率, 9600的话速度非常低。
5 默认路由
ppp 已经设置了默认路由.
route add default ppp0
6 启动deamon程序
#Start daemon sudo start-stop-daemon --start -b --pidfile /run/ppp --startas /usr/bin/pon gprs #More easy and dirty way sudo setsid ./start-lora > /dev/null 2>&1 < /dev/null & cat start-lora #!/bin/bash cd /home/pi/loraGW/ ./lora_gateway_pi2 --mode=2|python ./post_processing_gw.py >>/var/log/lora
7 使用systemd 服务
构建如下的systemd服务配置
cat /etc/systemd/system/lora-gw.service [Unit] Description=Lora GateWay Service #After=network.target [Service] ExecStart=/home/pi/star/loraGW/start-lora StandardOutput=null Restart=always #WorkingDirectory=/home/pi/star/loraGW [Install] WantedBy=multi-user.target Alias=lora-gw.service
使能并启动服务
systemctl enable lora-gw systemctl start lora-gw </source