close
今年Maker Faire Taipei前拿到QNAP的新玩意 - QBoat Sunny,一块和Rasperry Pi差不多长相的开发板,但既然是QNAP出的,自然和NAS脱不了关系,没错,它就是一块单板NAS,本来NAS服务器该有的功能,它具体而微地都能提供,最大的差异之处在于储存容量:QBoat Sunny是存在SSD中,自然没有HDD那么大容量,但用于Edge Computing是很够了。

实际测试了一下,觉得QNAP这次该是打中了IoT市场需求的痛点。怎么说呢?很多人会说:「不过就是压低成本改用ARM当base,把硬盘改成SSD做的NAS而已啊!」当你讲这句话的时候,就自己打嘴巴了!NAS不是PC灌个Windows或Linux当档案与数据库服务器,真正的NAS核心精神,是要整合自身的软件与硬件双重资源,让NAS本身在网络运算与服务上可以显示出价值!换句话来说,不是看体积大小、执行效率….等,而是可以「适时提供用户需要的服务功能」才是NAS的价值。

接下来,我们就逐步透过不同的应用呈现,来看QBoat Sunny到底有何长处。第一个就先用WiFi无线感测当作场景,看看能有多省事吧!

 

基础架构


d


 

  • MediaTek LinkIt 7697的部分


可以透过HTTP Request命令DHT11以网页的方式回传DHT11的温湿度读值,脚位连接的方式:




















DHT11



MediaTek LinkIt 7697



+


5V

-



GND


DO

P3



 

源代码如下;就是透过LWiFi连结Wireless AP router,并且套用DHT11的链接库,可以编译完成后以浏览器试试看,例如 : http://192.168.1.xxx/temp 看会否传出温度的值
















GET参数


功用

/temp



取得摄氏温度


/humi

取得湿度百分比值



 

程序代码如下:
<< MonitorNode.ino >>

#include <LWiFi.h>
#include "DHT.h"

#define DHTPIN 3 // what digital pin we’re connected to
#define WARNPIN 13

// Uncomment whatever type you’re using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);

char ssid[] = “LaisanHere”; // your network SSID (name)
char pass[] = “t101419008”; // your network password
int keyIndex = 0; // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;

WiFiServer server(80);

void setup() {
//Initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

// attempt to connect to Wifi network:
while (status != WL_CONNECTED) {
Serial.print(“Attempting to connect to SSID: “);
Serial.println(ssid);
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
status = WiFi.begin(ssid, pass);
}
server.begin();
// you’re connected now, so print out the status:
printWifiStatus();

// Activate DHT11
dht.begin();

pinMode(WARNPIN, OUTPUT);
digitalWrite(WARNPIN, LOW);
}
void loop() {
// listen for incoming clients
WiFiClient client = server.available();
if (client) {
Serial.println(“new client”);

String msg;
String param;

// an http request ends with a blank line
if (client.connected()) {
while (client.available()) {
char c = client.read();
msg += String(c);
}
}

Serial.print(msg);

int posi = msg.indexOf(“Referer: “);
if(posi > 0)
{
String sb = msg.substring(posi);
int p = sb.indexOf(“/”);
param = sb.substring(p+2);
p = param.indexOf(“/”);
param = param.substring(p, p+5);
}
else
{
posi = msg.indexOf(“GET”);
param = msg.substring(posi+4, posi+9);
}

Serial.println(param);

// send a standard http response header
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“Connection: close”); // the connection will be closed after completion of the response
client.println();

if(param == “/warn”)
{
digitalWrite(WARNPIN, HIGH);
client.println(“WARNING !!”);
}
if(param == “/cler”)
{
digitalWrite(WARNPIN, LOW);
client.println(“CLEAR”);
}
if(param == “/temp”)
{
float t = dht.readTemperature();
client.println(t);
}
if(param == “/humi”)
{
float h = dht.readHumidity();
client.println(h);
}

// close the connection:
client.stop();
Serial.println(“client disonnected”);
}

// give the web browser time to receive the data
delay(100);
}

void printWifiStatus() {
// print the SSID of the network you’re attached to:
Serial.print(“SSID: “);
Serial.println(WiFi.SSID());

// print your WiFi shield’s IP address:
IPAddress ip = WiFi.localIP();
Serial.print(“IP Address: “);
Serial.println(ip);

// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print(“signal strength (RSSI):”);
Serial.print(rssi);
Serial.println(” dBm”);
}



  • QBoat Sunny的部分


透过QIoT Suite Lite之中有内建的Node-red,透过在浏览器上呈现的GUI拖曳与设定,就能够以HTTP Request分别0.5、1分钟,分别读取DHT11上的温度和湿度。

  • 教学描述影片


https://www.facebook.com/QNAPIoT/videos/919521734883909/
arrow
arrow
    全站熱搜

    tttt 發表在 痞客邦 留言(0) 人氣()