IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> JavaScript照样能打!JS版的温湿度上云来啦 -> 正文阅读

[嵌入式]JavaScript照样能打!JS版的温湿度上云来啦

案例介绍

基于HaaS EDU K1开发,通过I2C采集温湿度的数据,并且通过IoT组件上云的JavaScript轻应用案例。

简介

本案例主要分为三个部分:

  1. 环境准备
  2. 温湿度数据采集
  3. 数据上云

环境准备

1.烧写支持轻应用的HaaS Edu K1开发板

2.下载VScode软件,并且安装HaaS Studio插件

固件烧写

案例是基于JavaScript轻应用,需要能运行javascript代码的硬件环境,需要保证HaaS Edu K1烧写了支持JavaScript轻应用固件,操作步骤如下。

创建项目

?等待下载

创建成功,跳转到新项目。

?

编译烧写

以HaaS EDU K1为例

?

编译

编译成功

?

烧写

选择串口


烧写中

?
烧写成功?

温湿度采集

说明:案例开发基于HaaS Edu K1单板自带温湿度模块Si7006,具体参考硬件资源

代码编写

// app.js
import * as i2c from 'i2c';


// 初始化对应的I2C
let sensor = i2c.open({
?id: 'sensor',
?success: function () {
? ?// 初始化成功
? ?console.log('open i2c success')
?},

?fail: function () {
? ?// 初始化失败
? ?console.log('open i2c failed')
?}

});



setInterval(function () {
?// 切换成温度模式
?sensor.write([0xF3]);
?sleepMs(30)
?// 代码功能:原始数据格式为[142,124]转成0x8e7c,再解析成数值36476
?var tempData = Number('0x' + sensor.read(2).map((i) => ((i < 10 ? ?'0': '') + i.toString(16))).toString().replace(/,/g, ''));
?// 温度公式,可参考Si7006的datasheet
?var temp = ((175.72 * tempData) / 65536 - 46.85).toFixed(2);
?console.log('temp data is ' + temp);


?sleepMs(30);


?// 切换成湿度模式
?sensor.write([0xF5]);
?sleepMs(30);
?// 代码功能:原始数据格式为[142,124]转成0x8e7c,再解析成数值36476
?var humiData = Number('0x' + sensor.read(2).map((i) => ((i < 10 ? ?'0': '') + i.toString(16))).toString().replace(/,/g, ''));
?// 湿度公式,可参考Si7006的datasheet
?var humi = ((125 * humiData) / 65536 - 6).toFixed(2);
?console.log('humi data is ' + humi);
}, 1000);



// app.json
{
? ?"version": "1.0.0",
? ?"io": {
? ? ? ?"sensor": {
? ? ? ? ? ?"type": "I2C",
? ? ? ? ? ?"port": 1,
? ? ? ? ? ?"addrWidth": 7,
? ? ? ? ? ?"freq": 400000,
? ? ? ? ? ?"mode": "master",
? ? ? ? ? ?"devAddr": 64
? ? ? ?}
? ?},
? ?"debugLevel": "DEBUG"
}

数据上云

上云分两部分展开,一部分是云端配置,一部分是代码编写。

说明:使用netmgr组件连接网络,再通过iot将采集到的数据上传云端。

云端配置

1.进入物联网平台

?

2.创建产品

?

3.创建产品配置

?

4.查看产品详情

?

5.定义物模型

(1)创建湿度模型

?

(2)创建温度模型

?

6.创建设备

?

7.获取登录信息

说明:获取productKey, deviceName, deviceSecret填入代码中

?

代码编写

// app.js

import * as i2c from 'i2c';

import * as netmgr from 'netmgr';

import * as iot from 'iot';



let sensor = i2c.open({

?id: 'sensor',

?success: function () {

? ?console.log('open i2c success')

?},

?fail: function () {

? ?console.log('open i2c failed')

?}

});



function uploadData(iotdev) {

?// 获取云端下发的消息

?iotdev.onService(function(service) {

? ?console.log('received cloud service id ' + service.service_id);

? ?console.log('received cloud service param ?' + service.params);

? ?console.log('received cloud service param len ?' + service.params_len);

?});

?// 云端收到上报下发的消息

?iotdev.onProps(function(properity) {

? ?console.log('received cloud properity param ' + properity.params);

? ?console.log('received cloud properity param len ' + properity.params_len);

?});

?// 每一秒钟上报温湿度数据

?setInterval(function () {

? ?sensor.write([0xF3]);

? ?sleepMs(30)

? ?// 代码功能:原始数据格式为[142,124]转成0x8e7c,再解析成数值36476

? ?var tempData = Number('0x' + sensor.read(2).map((i) => ((i < 16 ? ?'0': '') + i.toString(16))).toString().replace(/,/g, ''));

? ?console.log('tempData:', tempData);

? ?var temp = ((175.72 * tempData) / 65536 - 46.85);

? ?console.log('temp data is ' + temp);



? ?sleepMs(30);



? ?sensor.write([0xF5]);

? ?sleepMs(30);

? ?// 代码功能:原始数据格式为[142,124]转成0x8e7c,再解析成数值36476

? ?var humiData = Number('0x' + sensor.read(2).map((i) => ((i < 16 ? ?'0': '') + i.toString(16))).toString().replace(/,/g, ''));

? ?var humi = ((125 * humiData) / 65536 - 6);;

? ?console.log('humi data is ' + humi);



? ?// 上报数据到云端

? ?iotdev.postProps(

? ? ? ?JSON.stringify({

? ? ? ? ? ?Humidity: humi,

? ? ? ? ? ?Temperature: temp,

? ? ? ?})

? ?);

?}, 1000);

}



function iotDeviceCreate() {

?const productkey = 'xxxxxx'; ? ? //请输入您的pk

?const devicename = 'xxxxxx'; ? ?//请输入您的dn

?const devicesecret = 'xxxxxx'; ? //请输入您的ds

?// 初始化IoT连接

?iotdev = iot.device({

? ? ?productKey: productkey,

? ? ?deviceName: devicename,

? ? ?deviceSecret: devicesecret

?});

?// IoT连接成功

?iotdev.on('connect', function () {

? ? ?console.log('success connect to aliyun iot server');

? ? ?// 上报数据

? ? ?uploadData(iotdev);

?});



?// IoT重新连接

?iotdev.on('reconnect', function () {

? ? ?console.log('success reconnect to aliyun iot server');

?});

?// IoT断开连接

?iotdev.on('disconnect', function () {

? ? ?console.log('aliyun iot server disconnected');

?});

}



// 初始化网络,基于wifi的连接

var network = netmgr.openNetMgrClient({

?name: '/dev/wifi0'

});



// 连接网络

network.connect({

?ssid: 'xxxxx', ? ? ? ? ? ? //请替换为自己的热点ssid

?password: 'xxxxx' ? ? ?//请替换为自己热点的密码

});



// 连接失败的监听

network.on('error', function () {

?console.log('error ...');

});



// 连接成功的监听

network.on('connect', function () {

?console.log('net connect success');

?// 连接成功后建立IoT连接

?iotDeviceCreate();

});



// app.json

{

? ?"version": "1.0.0",

? ?"io": {

? ? ? ?"sensor": {

? ? ? ? ? ?"type": "I2C",

? ? ? ? ? ?"port": 1,

? ? ? ? ? ?"addrWidth": 7,

? ? ? ? ? ?"freq": 400000,

? ? ? ? ? ?"mode": "master",

? ? ? ? ? ?"devAddr": 64

? ? ? ?}

? ?},

? ?"debugLevel": "DEBUG"

}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:16:06  更:2021-08-26 12:17:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 5:05:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码