前提・実現したいこと
Arduinoのピン情報をNode.jsで取得したいです
具体的にはA0ピンの値をNode.jsで取得し、ブラウザにただ表示させるだけです。
発生している問題・エラーメッセージ
まったく同じことをしている方のサイトを参考に実装しましたが、IPAddressに設定したアドレスに接続しても、応答せずERR_CONNECTION_TIMED_OUTになってしまいます。
URL
1192.168.1.28:3000
BrowserErr
1ERR_CONNECTION_TIMED_OUT
また、Arduinoのログのほうでも、接続したり切断したりを繰り返しているように見えました。
構成
該当のソースコード
Arduinoに書き込んだプログラム
sample.c
1#include <Ethernet.h> 2#include <SPI.h> 3 4byte mac[] = {0x90, 0xA2, 0xDA, 0x0E, 0xF2, 0xD6}; 5IPAddress ip(192, 168, 1, 28); // ArduinoのIP 6byte server[] = {192, 168, 1, 27}; //localhost 7 8// CdSの値 9int val = 0; 10 11// 使用するピン 12int iPin = A0; 13 14// POSTする間隔 15int INTERVAL = 500; 16 17// Port番号 18int port = 3000; 19 20// クライアント 21EthernetClient client; 22 23void setup() 24{ 25 Ethernet.begin(mac, ip); 26 Serial.begin(9600); 27 28 if (Ethernet.begin(mac) == 0) 29 { 30 Serial.println("Failed to configure Ethernet using DHCP"); 31 Ethernet.begin(mac, ip); 32 } 33 34 delay(1000); 35} 36 37void loop() 38{ 39 Serial.println("connecting..."); 40 val = analogRead(iPin); 41 if (client.connect(server, port)) 42 { //デフォルトのポート番号は3000 43 Serial.println("connected"); 44 client.println("POST /api/?val=" + String(val) + " HTTP/1.1"); 45 client.println("Host 192.168.1.28:" + port); 46 client.println("Content-Type: application/x-www-form-urlencoded"); 47 client.println("User-Agent: Arduino Post Client"); 48 client.println("Connection: close"); 49 client.print("Content-Length: "); 50 client.println(String(val).length()); 51 client.println(); 52 client.println(String(val)); 53 client.stop(); 54 Serial.println("disconnecting."); 55 Serial.println("POST /api/?val=" + String(val) + " HTTP/1.1"); 56 } 57 else 58 { 59 Serial.println("connection failed"); 60 } 61 62 delay(INTERVAL); 63}
get.js
1"use strict"; 2 3var http = require("http"), 4 url = require("url"), 5 server; 6 7server = http.createServer(function (request, response) { 8 request.on("end", function() { 9 var urlObj; 10 11 switch (request.method) { 12 case "POST": 13 urlObj = url.parse(request.url, true); 14 15 switch (urlObj.pathname) { 16 case "/api/": 17 console.log(urlObj.query.val); 18 response.end(); 19 break; 20 } 21 break; 22 } 23 }).resume(); 24}).listen(3000);
試したこと
再起動や、ArduinoのUSB、LANの繋ぎ変えなどをしましたが効果なしでした。
補足情報(FW/ツールのバージョンなど)
PC, Arduinoともにルーターに有線でつながれています。
追記情報
Arduinoの構成についてご指摘をいただきましたので追記させていただきます。
本体:Arduino UNO R3 + Ethernetシールド
となってます。
回答2件
あなたの回答
tips
プレビュー