Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8737

Arduino Due✖️Ethernet shield2をつかってNode.js✖️ExpressでAPIをたたく

$
0
0

はじめに

最近は、ESP32でWiFi通信をして何か作ってばかりです。
そういえば有線LANにつないでインターネット接続したことがあまりありませんでした。
なので、有線LANをつなぎNode.jsとExpressをつかったAPIをArduino Dueからたたいてみます。

必要なもの、環境

  • Arduino Due(Ethernet shield2がつかえれば良いのArduino Unoでも構いません)
  • Ethernet shield2
  • Node.js (v12.13.0)
  • Express

プログラム

Node.js側のプログラム

node.jsをインストールしている前提です。
適当なディレクトリに下記を実行します。そしてプログラムはindex.jsに書きます。

npm init
npm i express
touch index.js
varexpress=require('express');constbodyParser=require('body-parser');varhttp=require("http"),url=require("url"),server;varapp=express();app.use(express.json());constport=process.env.PORT||3200;app.listen(port,()=>console.log(`Listening on port ${port}...`));app.use(bodyParser.urlencoded({extended:false}));app.use(bodyParser.json());app.get('/',(req,res)=>{res.setHeader('Content-Type','text/plain');res.json("Hello World !!");//res.sendStatus(200);});app.post('/api',(req,res)=>{//Arduinoからの送られたデータvalをコンソール画面に表示するconsole.log(req.query.val);res.setHeader('Content-Type','text/plain');res.json("Hello");//res.sendStatus(200);});

Arduino側のプログラム

#include <SPI.h>
#include <Ethernet2.h>
// Arduino Due : SerialUSB// Arduino Uno : Serial// 参考// https://www.arduino.cc/reference/en/language/functions/communication/serial/#define SERIAL SerialUSB
// Ethernet shield2のMACアドレス// シールドの裏面に記載してある番号の前に0xをつけるbytemac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED};// Arduinoの固定IP// ここを適当なIPアドレス(ルーター内で空いているもの)に変更IPAddressip(192,168,1,177);// PCのIPアドレスを入力charserver[]="192.168.11.66";// クライアントEthernetClientclient;intval=0;// POSTする間隔intINTERVAL=500;boolpost(intval){//データを送るのでメソッドはPOSTStringheader="POST /api/?val=";header+=String(val);header+=" HTTP/1.1";SERIAL.println("connecting...");//今回は3200番のポート番号を使ったif(client.connect(server,3200)){SERIAL.println("connected");client.println(header);client.println("Host: 192.168.11.66");client.println("Content-Type: application/x-www-form-urlencoded");client.println("User-Agent: Arduino Post Client");client.println("Connection: close");client.println();client.print("");client.stop();SERIAL.println("disconnecting.");returntrue;}else{SERIAL.println("connection failed");returnfalse;}}voidsetup(){SERIAL.begin(115200);while(!SERIAL){;// wait for serial port to connect. Needed for Leonardo only}if(Ethernet.begin(mac)==0){SERIAL.println("Failed to configure Ethernet using DHCP");Ethernet.begin(mac,ip);}delay(1000);}voidloop(){val=random(255);SERIAL.println(val);//ランダムな数をPOSTpost(val);delay(INTERVAL);}

動作確認

Node.jsのindex.jsを

node index.js

で動作させ、Arduino Dueにプログラムを書き込み電源をいれれば、コンソール画面にランダムな数がPOSTされます。

image.png

所感

POSTだけでなくGETや他のメソッドも簡単に実装できそうです。

参考

https://kimizuka.hatenablog.com/entry/2016/07/12/235535


Viewing all articles
Browse latest Browse all 8737

Trending Articles