我的物联网综合知识之创建硬件端
来源:互联网 发布:淘宝190宝贝分类代码 编辑:程序博客网 时间:2024/05/03 00:18
上一节,我们把服务端搭建了起来。并通过curl命令对温度数据的上传与存储、Led灯的开关状态改变进行了测试。本节,我们将使用Arduino UNO开发板和树莓派作为控制器,连接传感器(以温度传感器DS18B20为例)和执行器(以Led灯为例)。
- 控制器1**树莓派**作为协调层,负责网络连接,并通过串口接收来自Arduino开发板发来的传感器数据,通过Python代码将数据上传给服务端
- 控制器2 Arduino UNO开发板作为硬件层,直接连接硬件,负责硬件控制,包括收集数据和控制状态。
硬件连接
连接说明:
- 对于Led灯,要正确区分正负极,长脚为正极,短脚为负极,或者大的PN结对应负极,小的PN结对应正极,Led的正极接Arduino开发板的13端口,负极接GND即可。
- 对于DS18B20,面对平的一面,从左至右,依次接Arduino开发板的负极、2端口、正极5v。
Arduino代码:读取连接在Arduino上的温度传感器数据,发给串口,并且通过串口读取来自python代码的led状态,控制灯的开与关。
#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);int ledPort=13;//Led灯的正极连接到13端口int serialData;void setup(void){ Serial.begin(9600); sensors.begin(); pinMode(ledPort,OUTPUT);}void loop(void){ String inString=""; while (Serial.available()>0) { int inChar=Serial.read(); if (isDigit(inChar)){ inString+=(char)inChar; } serialData=inString.toInt(); } if (serialData==1){ digitalWrite(ledPort,HIGH); }else{ digitalWrite(ledPort,LOW); } sensors.requestTemperatures(); // Send the command to get temperature Serial.print("{\"temperature\":"); Serial.print(sensors.getTempCByIndex(0)); Serial.println("}"); delay(1000);//每隔1秒获得一次传感器的数据}
Python代码:与服务端交互,将传感器数据上传,并将led状态下发。
import jsonimport urllib2import serialimport timeimport requestsurl_led="http://localhost:3000/led"ser=serial.Serial("/dev/ttyUSB0",9600)while 1: sensor=ser.readline() sensor=json.loads(sensor) r=requests.post("http://localhost:3000/sensor",data=sensor) r.text data=urllib2.urlopen(url_led) status=json.load(data)[0]['status'] if status: ser.write('1') else: ser.write('0') time.sleep(1)
0 0
- 我的物联网综合知识之创建硬件端
- 我的物联网综合知识之创建数据库
- 我的物联网综合知识之创建服务端1
- 我的物联网综合知识之创建服务端2
- 我的物联网综合知识之创建app版前端
- 我的物联网综合知识之前言
- 我的物联网综合知识之整体架构
- 物联网学习的误区之:我要做物联网工程师!
- 物联网之第二天:寻找硬件。
- 物联网硬件相关
- 物联网综合练习之单片机TCP服务器
- 我的物联网项目(十) 线下之战
- 物联网开源硬件
- 基于ZigBee的物联网家居系统学习(硬件尾声到android端)
- 用开源硬件建设物联网–WiFi的优缺点
- 物联网知识学习
- 物联网知识
- 笔记本的硬件知识
- Activity启动模式详解
- Sublime Text 3常用快捷键
- 影像相加(add、addWeighted)
- android完全退出应用解决方案
- 点击追加以及删除
- 我的物联网综合知识之创建硬件端
- JavaScript代码规范和性能整理
- 展讯7731经ZA7783转接芯片支持RGB投影仪功能总结
- 抓包和发包工具
- Android中NestedScrollView嵌套RecyclerView出现滚动不流畅的问题
- AnimationDrawable使用简介
- 近5年133个Java面试问题列表
- 前端笔试面试常用知识点(二)(2016.10)
- oracle spatial 增查SQL示例(二 ) 复杂多边形