失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关

使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关

时间:2019-08-14 03:27:30

相关推荐

使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关

上篇“【物联网(IoT)开发】Arduino 入门 Hello World(LED闪烁)”只是通过将一段程序烧录到Arduino开发板上控制LEC闪烁,没有任何连网动作,也就是说断开网络提供电源依然还可以工作。本文将介绍如何开发一个应用程序,以便使用适用于物联网 (Internet of Things, IoT) 的技术。我们的应用程序通过串口收集数据,将其存储在一个 Web 服务器上,然后在网页上实时显式结果,并可以在网页上控制LED的开关。

构建一个类似的应用程序的前提条件

对于第 1 部分,您需要:

一个 Bluemix 帐户,您还没有? 点击这里注册,已经有,点击这里登录;

对 HTML(超文本标记语言)的基本了解;

对CSS (层叠样式表)的基本了解;

对JavaScript(一种直译式脚本语言)的基本了解;

对Python 编程的基本了解;

对MySQL数据库及管理工具的基本了解;

对SQL语言的基本了解;

对于第 2 部分,您需要:

一个ArduinoNANO或其他兼容Arduino的主板

可选:ArduinoEthernet Shield

一个LED灯(发光二极管)

一些母母跳线(female-female jumper wire)

Python 2.7.x

我提供了所有必要代码,但对这些技术的基本了解有助于您理解有关的细节,但不是必须如此。

也无需拥有使用 Arduino 或任何其他类型的微型控制器主板的经验。

步骤 1. 创建您的Python应用程序

1、在Bluemix用户界面中,转至“仪表板”。

2、单击创建应用程序。

3、单击Web,然后按照指导经验来选择入门模板,指定名称以及选择编码方式。

输入应用程序名称

应用程序名称是唯一的,接下来要通过它做为二级域名来访问你的应用!

点击完成之后,需要等待一会儿,然后可以看到下图的界面

这时就可以访问你刚刚创建的应用了。如下图:

步骤 2. 添加数据库服务

可以通过单击Bluemix用户界面中应用程序“概述”上的添加服务或 API,将服务添加到应用程序中。也可以使用 cf 命令行界面。请参阅处理应用程序的可用选项。

在服务列表中选择数据库(ClearDB MySQL Database)

您可以指定服务的名称,也可以使用默认的;

如果你事先已经创建了数据库服务,也可以直接绑定:

获取服务信息

进入自己的应用程序》概述页面,找到已经添加的服务,点击“显示凭证”,可以查看服务的具体信息:

拿到凭证,我们就可以通过MySQL的客户端管理工具来连接管理数据库了:

1、连接数据库

如果你还没有安装Navicat forMySQL管理工具,请参考:MySQL学习(二)图形界面管理工具Navicat for MySQL安装和使用

2、创建数据表

注意:我们是没有权限创建数据库的,只能用默认创建好的;

只需要创建一张非常简单的表,来保存状态和控制命令

[sql]view plaincopy

SETFOREIGN_KEY_CHECKS=0;

------------------------------

--Tablestructurefor`led_status`

------------------------------

DROPTABLEIFEXISTS`led_status`;

CREATETABLE`led_status`(

`id`bigint(20)NOTNULL,

`status`varchar(10)DEFAULTNULL,

`control`varchar(10)DEFAULTNULL,

PRIMARYKEY(`id`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

------------------------------

--Recordsofled_status

------------------------------

INSERTINTO`led_status`VALUES('1','0','0');

步骤 3. 准备开发环境及硬件环境

有关开发环境搭建的细节,请参考下面的文章:

《Python入门》Windows 7下Python Web开发环境搭建笔记

《Python入门》第一个Python Web程序——简单的Web服务器

《Python入门》Linux 下 Python Web开发环境搭建笔记

【物联网(IoT)开发】Arduino IDE(集成开发环境)下载及安装

【物联网(IoT)开发】Arduino NANO,UNO 驱动安装

本文使用的硬件环境非常简单,请参考:

【物联网(IoT)开发】Arduino 入门 Hello World(LED闪烁)

步骤 4.编写代码

1、下载初始Hello World示例代码

你可以下载入门示例参考,也可以完全自己写!

进入您的应用程序,点击左侧的开始编码,在右侧点击“下载入门模板代码”。

也可以通过添加Git来下载代码。

2、使其在本地运行

1、将下载的入门模板代码解压到一个目录,打开命令行窗口,切换到这个目录下

可以看出代码结构是很简单的;

2、执行命令:Pythonserver.py

3、在浏览器中访问:http://localhost:8000/

3、编写代码

本文涉及到三部分代码

1)、烧录到Arduino开发板上的代码,用于接收串口的命令控制LED状态,并实时输出LED的状态

[plain]view plaincopy

Stringblink_flag="1";

//thesetupfunctionrunsoncewhenyoupressresetorpowertheboard

voidsetup(){

//initializedigitalpin13asanoutput.

pinMode(2,OUTPUT);

Serial.begin(9600);

}

//theloopfunctionrunsoverandoveragainforever

voidloop(){

Stringrx_buffer;

rx_buffer=Serial.readString();

if(rx_buffer.length()==1){

blink_flag=rx_buffer;

}

if(pareTo("1")){

digitalWrite(2,LOW);//turntheLEDon(HIGHisthevoltagelevel)

//delay(1000);//waitforasecond

}else{

digitalWrite(2,HIGH);//turntheLEDoffbymakingthevoltageLOW

//delay(1000);//waitforasecond

}

Serial.print(",");

Serial.print(blink_flag);

delay(100);

}

前端页面:index.html

[html]view plaincopy

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>

<title>【物联网(IoT)开发】使用Arduino和Python在Bluemix上开发一个IoT应用程序之控制LED灯开关-无知人生,记录点滴</title>

<style>

body{

margin:0;padding:0;

}

a{

text-decoration:none;

color:black;

}

div.div_id{

float:left;

clear:left;

width:60px;

height:27px;

border-bottom:solid1px#808080;

text-align:center;

line-height:27px;

}

div.div_item{

float:left;

clear:none;

width:260px;

height:27px;

border-bottom:solid1px#808080;

text-align:left;

line-height:27px;

}

div.div_radio{

float:left;

clear:none;

width:60px;

height:27px;

border-bottom:solid1px#808080;

text-align:left;

line-height:27px;

display:none;

}

div.div_num{

float:left;

clear:right;

width:260px;

height:27px;

border-bottom:solid1px#808080;

text-align:left;

line-height:27px;

display:none;

}

</style>

<scriptsrc="jquery.js"type="text/javascript"></script>

<SCRIPTlanguage=javascript>

$(document).ready(function(){

setInterval(loadLedStatus,1000);

});

//通过AJAX加载LED状态信息

functionloadLedStatus(){

$.ajax({

type:"GET",

url:"ledinfo",

dataType:"html",

async:false,

success:function(data){

if(data=="1"){

$("#divctnr").html("<imgsrc=\"led1.png\"/>");

$("#button1").hide();

$("#button2").show();

}else{

$("#divctnr").html("<imgsrc=\"led0.png\"/>");

$("#button2").hide();

$("#button1").show();

}

console.log(data);

},

error:function(data){

console.log(data);

console.log("加载LED信息失败:"+data.responseText);

}

});

}

//通过AJAX调用后台保存LED信息

functionexecControl(status){

$("#button1").hide();

$.ajax({

type:"POST",

url:"ledcontrol",

dataType:"html",

data:{"id":status},

success:function(data){

console.log(data);

},

error:function(data){

console.log(data);

console.log("命令发送失败:"+data.responseText);

}

});

}

</SCRIPT>

</head>

<body>

<div>

<ahref="/testcs_dn"target="_blank"title="无知人生,记录点滴不积硅步,无以至千里;不积小流,无以成江海……">

<imgsrc="banner.png"border=0/>

</a>

</div>

<divstyle="width:640px;height:40px;border-bottom:solid1px#808080;text-align:center;">

<ahref="/testcs_dn/article/details/49965993"><h3>您可以在这里监控和控制LED灯的点亮或关闭</h3></a>

</div>

<tableid="Wrapper"style="padding:0px;margin:0px;min-height:300px;text-align:center;background-color:rgb(255,255,255);">

<tr>

<td>

<form>

<divid="divctnr"></div>

</form>

</td>

<td>

<divstyle="width:640px;height:40px;text-align:center;float:left;clear:both;margin-top:15px;">

<inputtype="button"id="button1"name="button1"value="点亮"onclick="execControl(1)"style="display:none;width:200px;height:45px;font-size:36px;font-weight:bold;"/>

<inputtype="button"id="button2"name="button2"value="关闭"onclick="execControl(0)"style="display:none;width:200px;height:45px;font-size:36px;font-weight:bold;"/>

</div>

</td>

</tr>

</table>

<hr/>

<divstyle="margin:auto;text-align:center;line-height:28px;">

云服务器:<ahref="https://console./home/"target="_blank"title="IBMBluemix数字创新平台"style="">

IBMBluemix数字创新平台

</a><br/>

服务提供:<ahref="/smarterplanet/us/en/ibmwatson/developercloud/language-translation/api/v2/#introduction"target="_blank"title="IBMWatsonDeveloperCloud"style="">

IBMWatsonDeveloperCloud

</a>

</div>

<divstyle="margin:auto;text-align:center;line-height:28px;">

<ahref="/testcs_dn"target="_blank"title="无知人生,记录点滴不积硅步,无以至千里;不积小流,无以成江海……"style="">

Poweredby:testcs_dn(微wx笑)<br/>

无知人生,记录点滴不积硅步,无以至千里;不积小流,无以成江海……

</a>

</div>

<br/><br/><br/>

<divid="divout"></div>

</body>

</html>

请点击左下角的“阅读原文”查看完整内容。

===========文档信息============

如果觉得《使用 Arduino 和 Python在 Bluemix 上开发一个 IoT 应用程序之控制LED灯开关》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。