环境:raspbian-stretch(2018-06-27)

树莓派:3代B型

1、树莓派设备,需要在野外也能拥有独立联网能力,那必不可少的需要使用物联网模块。

这里使用的是微雪的SIM868通讯模块,如下图:

2、将SIM868如下插入在空展板中,SIM868中使用的是联通4Gsim卡,其实SIM868采用PIN#8(TX)、PIN#10(RX)引脚与树莓派进行串口通讯,供电则是通过PIN#4(5V)、PIN#6(GOUND)支持。SIM868模块采用http传输协议与服务器连接。

3、服务器配置

安装Apache服务,使用xampp软件安装该服务,xampp链接:https://pan.baidu.com/s/15dt5s3DbZVd8YPckv2GkzA 密码:78fg

运行XAMPP Control Panel,

启动Apache服务,如果启动失败,应该是端口被占用,更改Apache的服务端口,就OK!

4、程序代码

1)、python代码

import time

import serial

def send_data(param):

W_http_6='AT+HTTPPARA="URL","http://xxx.xxx.xxx.xxx/iot.php?status='+str(param)+'"\r\n'ser.write(W_http_6)

time.sleep(2)

W_http_7='AT+HTTPACTION=0\r\n'ser.write(W_http_7)

time.sleep(1)if __name__ == '__main__':

ser = serial.Serial("/dev/ttyS0",115200)

print ser

W_http_1='AT+HTTPTERM\r\n'ser.write(W_http_1)

print "http_1"time.sleep(2)

W_http_2='AT+SAPBR=3,1,"CONTYPE","GPRS"\r\n'ser.write(W_http_2)

print "http_2"time.sleep(2)

W_http_3='AT+SAPBR=3,1,"APN","CMNET"\r\n'ser.write(W_http_3)

print "http_3"time.sleep(2)

W_http_4='AT+SAPBR=1,1\r\n'ser.write(W_http_4)

print "http_4"time.sleep(2)

W_http_5='AT+HTTPINIT\r\n'ser.write(W_http_5)

print "http_5"time.sleep(2)

status=1while True:

send_data(status)

print status

status = status+1time.sleep(3)

2)、php程序代码:

header("Content-type: text/html; charset=utf-8");

$file = 'log.txt';//要写入文件的文件名(可以是任意文件名),如果文件不存在,将会创建一个$status = $_GET['status'];

echo $status ;

if($status != "")

{

$content = "status=".$status.",time=".date("Y/m/d H:i:sa")."\n"; if($f = file_put_contents($file, $content,FILE_APPEND)){//这个函数支持版本(PHP 5)echo "写入成功。
";

}

}if($data = file_get_contents($file)){; //这个函数支持版本(PHP 4 >= 4.3.0, PHP 5)echo "写入文件的内容是:$data";

}

?>

5、代码解析

这里使用的Python版本号为2.7.13import time

import serial

引用了python的2个类库time以及串口调试库serial,为实现程序的调试可编写,在使用serial串口调试库前,要实现树莓派的串口配置和Linux系统下的串口调试工具minicom的安装。具体方法可参考之前的文章《树莓派串口配置及minicom的安装》

def send_data(param):

W_http_6='AT+HTTPPARA="URL","http://xxx.xxx.xx.xx/iot.php?status='+str(param)+'"\r\n'

ser.write(W_http_6)

time.sleep(2)

W_http_7='AT+HTTPACTION=0\r\n'

ser.write(W_http_7)

time.sleep(1)

这里将主函数循环的状态status变量的值当做参数传送给你个send_data()函数,在添加到HTTP请求的URL中,在服务器端写了个PHP程序iot.php(程序源码解析如下)用以接收SIM868通讯模块发送过来的HTTP请求,并使用GET的方式获得到HTTP请求URL中传入的status值,并插入到日志txt中。

if __name__ == '__main__':

ser = serial.Serial("/dev/ttyS0",115200)

print ser

W_http_1='AT+HTTPTERM\r\n'

ser.write(W_http_1)

print "http_1"

time.sleep(2)

W_http_2='AT+SAPBR=3,1,"CONTYPE","GPRS"\r\n'

ser.write(W_http_2)

print "http_2"

time.sleep(2)

W_http_3='AT+SAPBR=3,1,"APN","CMNET"\r\n'

ser.write(W_http_3)

print "http_3"

time.sleep(2)

W_http_4='AT+SAPBR=1,1\r\n'

ser.write(W_http_4)

print "http_4"

time.sleep(2)

W_http_5='AT+HTTPINIT\r\n'

ser.write(W_http_5)

print "http_5"

time.sleep(2)

status=1

while True:

send_data(status)

print status

status = status+1

time.sleep(3)

以上代码是在通过调用serial库,设置树莓派串口通信的波特率为115200,并使用 ser.write()函数向串口写入可操作SIM868模块进行通讯的AT指令,这里的AT指令是对SIM868进行HTTP通讯前的配置,具体AT指令的含义在这里不再赘述,可自行百度查找。这是使用time.sleep()函数控制程序执行的等待时间,确保串口写入数据成功。<?php

header("Content-type: text/html; charset=utf-8");

$file = 'log.txt';//要写入文件的文件名(可以是任意文件名),如果文件不存在,将会创建一个

$status = $_GET['status'];//从url中获取status参数的值

echo $status ; //输出status参数的值

if($status != "")//如果status参数有值,则将该值插入到日志中

{

$content = "status=".$status.",time=".date("Y/m/d H:i:sa")." \n";//定义插入到日志的数据格式

if($f = file_put_contents($file, $content,FILE_APPEND)){// 这个函数支持版本(PHP 5)

echo "写入成功。
";

}

}

//读出日志中的所有数据,并输出到html中

if($data = file_get_contents($file)){; // 这个函数支持版本(PHP 4 >= 4.3.0, PHP 5)

echo "写入文件的内容是:$data";

}

?>

6、测试结果

树莓派terminal端运行

python sim868.py

浏览器查看日志情况,可以看到树莓派通过SIM868模块确实将数据发送给了服务器!!!

参考资料:http://www.eefocus.com/communication/397109

python 物联网服务器_python+树莓派实现IoT(物联网)数据上传到服务器相关推荐

  1. 通过GPRS将GPS数据上传到服务器

    文章目录 一.目的 二.使用的器件 1. GPRS模块和物联网卡 2. GPS模块 3. MCU 三.电路连接 四.程序设计 五.程序代码 一.目的   将GPS获取到的位置信息,通过GPRS将数据上 ...

  2. 微信图片 自动上传到服务器,微信小程序怎样使图片上传至服务器

    这次给大家带来微信小程序怎样使图片上传至服务器,微信小程序使图片上传至服务器的注意事项有哪些,下面就是实战案例,一起来看一下.-wxml 发布项目 /**选择图片 */ choose: functio ...

  3. 单片机 上传服务器协议,单片机数据上传云服务器

    单片机数据上传云服务器 内容精选 换一换 公有云平台提供的云监控,可以对云耀云服务器的运行状态进行日常监控.您可以通过管理控制台,直观地查看云耀云服务器的各项监控指标.云耀云服务器正常运行.关机.故障 ...

  4. 怎么把项目的数据上传到服务器,怎么把sql数据库上传到云服务器

    怎么把sql数据库上传到云服务器 内容精选 换一换 本章介绍如何在管理控制台购买GaussDB(for openGauss)实例,并通过内网使用弹性云服务器连接GaussDB(for openGaus ...

  5. 传感器如何将消息发送给云服务器,通过 NodeMCU (ESP8266) 将传感器数据上传至 MQTT 云服务...

    本示例将演示如何通过 基于 ESP8266 的 NodeMCU,把通过 DHT11 传感器搜集到的温.湿度数据通过 MQTT 协议将其上报到云端的 MQTT 服务,并且展示应用端如何订阅到这些数据并对 ...

  6. android post数据到php服务器,通过post方法将数据上传到服务器Android Studio

    我正试图通过android studio中的POST请求上传一张图片到服务器上,但我完全被困住了. 控制台没有给我任何信息,可以指出出了什么问题,当我单击上传,它只是不工作. 我在postexecut ...

  7. SIM808调试笔记(GNSS获取经纬度,GPRS数据上传到服务器)

    前一段时间调了LoNet 808,基于SIM808,就是下图这块板子.遇到了一些困难,记录下来,希望以后遇到类似问题有个参考.可能会有理解错误的地方,欢迎指出. 1.建立串口通信. 板子使用3.7V ...

  8. 数据上传虚拟服务器,如何上传数据到虚拟主机

    如何上传数据到 上传数据到虚拟主机,一般采取FTP软件方式较多. 1.FTP上传 FTP是连接虚拟主机,管理虚拟主机文件的重要方式.由于技术原因,虚拟主机无法远程管理,主要采取控制面板和FTP方式.可 ...

  9. 文件上传linux服务器,Linux 文件上传Linux服务器

    进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...

  10. java代码上传exel,excle上传服务器并解析!求excel上传到服务器的java代码

    如何将数据上传给服务器 医嘱以形式发送过来? 办法有很多,最简单的,就是在机器里,建立2个数据库A,B,假如A是外务器. 在数据库中,以A数据库做发布,让B数据库订阅,弄好以后,A数据库的数据就会自动 ...

最新文章

  1. [转载]Linux 线程实现机制分析
  2. 混合云备份利用自定义Workflow保护MySQL的实践
  3. Colocation Guard公司再增1万平方英尺的数据中心空间
  4. 编辑按钮 php,自定义百度编辑器菜单按钮
  5. mac下git与github简单使用
  6. Stock Arbitraging
  7. flutter android 权限,Flutter permission_handler 权限插件的使用详解
  8. matlab数字图像处理实验一:图像的读取显示存储、平移镜像放大缩小及旋转
  9. PR音频处理——收尾音乐
  10. The Bequeath Protocol Adapter [ID 16653.1]
  11. applicationContext.xml的头文件
  12. ESP32基础应用之使用两个ESP32通过阿里云物联网平台实现相互通信
  13. 【踩坑记录】Gazebo启动慢,画面卡“Preparing your world”
  14. 【论文阅读】Interpolation Consistency Training for Semi-Supervised Learning
  15. 【Python】第二章 内置数据类型
  16. ux设计_netflixs ux设计让我们彻夜难眠
  17. 400G如何引领下一代数据中心网络?
  18. 复旦大学游记(r10笔记第88天)
  19. 10个免费在线网站测速工具
  20. STM32 CubeIDE ADC及AD8232模块心电采集实验

热门文章

  1. Codeforces 1009G Allowed Letters 最大流转最小割 sosdp
  2. linux学习笔记-7.文件属性
  3. 712. Minimum ASCII Delete Sum for Two Strings
  4. nyoj 8 一种排序(用vector,sort,不用set)
  5. win7下cmd常用命令
  6. Linux系统下编译连接C源代码
  7. sqlplus登录、连接命令
  8. hdu 5040 bfs
  9. 超全必读!NLP 事件抽取综述(下)
  10. 【学术新闻】强强联合!Papers with Code携手arXiv,上传论文、提交代码一步到位...