Arduino에서 공기 품질 (+ CO2 농도)을 측정하고 json 서버로 값을 반환합니다.
샘플 코드를 실행하여 htp://192.168.0.117/ 에 액세스하면 다음과 같은 값을 얻을 수 있습니다.
사용 장비
품목
장비명
사용중인 Arduino
arduino nano
쓰기 부트로더
atmega328old
LAN 실드
ENC28J60
공기 품질 센서
MQ135
GPIO 단자의 연결 설정
센서 단자
Arduino 터미널
A0
A0
Vcc
3.3V
GND
GND
소스 코드는 이쪽
SensorJsonServer.ino
#include <UIPEthernet.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEE };
IPAddress ip(192, 168, 0, 117);
IPAddress myDns(192, 168, 0, 1);
EthernetServer server(80);
int valueA0;
void setup(){
Serial.begin(9600); // sets the serial port to 9600
// start ip address
Ethernet.begin(mac, ip , myDns );
// start server
server.begin();
}
void loop(){
EthernetClient client = server.available();
if (client){
boolean currentLineIsBlank = true;
while (client.connected()){
if (client.available()){
char c = client.read();
if (c == '\n' && currentLineIsBlank){
valueA0 = analogRead(A0);
Serial.print(valueA0, DEC);
Serial.println("ppm");
float mq135_ro = mq135_getro( ( 2000.0 * ( 1023 - valueA0 ) / valueA0 ) , 399 );
Serial.println( mq135_ro );
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: application/json");
client.println();
/*
const char index_html[] PROGMEM = R"rawliteral(
[
{"id" : 0, "name" : "MQ135" , "gpio" : "A0" , "value" : "valueA0" , "unit" : "ppm" }
]
)rawliteral";
client.print(index_html);
*/
client.println("[");
client.println(" {\"id\" : 0, \"sensor\" : \"MQ135\" , \"gpio\" : \"A0\" , \"type\" : \"air_quality\" , \"value\" : " + String( valueA0 ) + " , \"unit\" : \"ppm\" } , " );
client.println(" {\"id\" : 1, \"sensor\" : \"MQ135\" , \"gpio\" : \"A0\" , \"type\" : \"co2_percent\" , \"value\" : " + String(mq135_ro , 0 ) + " , \"unit\" : \"%\" }" );
client.println("]");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r'){
currentLineIsBlank = false;
}
}
}
delay(10);
client.stop();
//Serial.println(" Disconnected\n");
}
}
//
long mq135_getro(long resvalue, double ppm) {
return (long)( resvalue * exp( log( 116.6020682 / ppm ) / -2.769034857 ) );
}
php로 읽을 수 있는지 확인하십시오.
php 소스 코드
json_print.php
<?php
$json = file_get_contents( "http://192.168.0.117/" );
$json_arr = json_decode( $json , true );
var_dump( $json_arr );
실행
php json_print.php ;
결과
array(2) {
[0]=>
array(6) {
["id"]=>
int(0)
["sensor"]=>
string(5) "MQ135"
["gpio"]=>
string(2) "A0"
["type"]=>
string(11) "air_quality"
["value"]=>
int(1014)
["unit"]=>
string(3) "ppm"
}
[1]=>
array(6) {
["id"]=>
int(1)
["sensor"]=>
string(5) "MQ135"
["gpio"]=>
string(2) "A0"
["type"]=>
string(11) "co2_percent"
["value"]=>
int(26)
["unit"]=>
string(1) "%"
}
}
CO2 농도도 일단 기술하고 있습니다만, 자신이 없기 때문에 자세한 방법 교수 부탁드립니다 m(_ _)m
참고 링크
Reference
이 문제에 관하여(Arduino에서 공기 품질 (+ CO2 농도)을 측정하고 json 서버로 값을 반환합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mugimugi/items/c56f6e3977bc5ed0b0ac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)