添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
不過使用套件都要有引入,就像是python的import,C的include
而node是require 程式碼就像這樣

const Readline = require('@serialport/parser-readline')
var SerialPort = require("serialport");

然後改個名子

const parser = new Readline()

這樣就成功把套件引入進來了,再來Serial要溝通要知道對方的port跟鮑率

var arduinoCOMPort = "/dev/ttyACM0";
var arduinoport = new SerialPort(arduinoCOMPort, {baudRate: 9600}).setEncoding('utf8');

之後就是接收資料的部份

arduinoport.on("open", (err) => {  
    console.log('serial port open'); //成功連接時印出port open
    if(err){
        console.log("no serial device found")//失敗時印出 device not found
  },20);
arduinoport.pipe(parser)
parser.on('data', line =>{
console.log(line)

執行出來的結果
之後可能會發現怎麼有時候第一條訊息好像會缺一塊
這是因為連接上的時候arduino seiral的輸出沒有同步到
所以要改成可以跟程式同步或是我傳送訊息給arduino在給我資料
所以arduino程式改成

char data;
#include "Adafruit_CCS811.h" 
Adafruit_CCS811 ccs;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); 
  ccs.begin();
  delay(1000);
  while(!ccs.available());
void loop() {
  while(Serial.available()>0){
    data = Serial.read();
    if(data == 'g'){ 
      if(ccs.available()){
        if(!ccs.readData()){
          Serial.print("CO2:");
          Serial.print(ccs.geteCO2());
          Serial.print(",");
          Serial.print("TVOC:");
          Serial.println(ccs.getTVOC());

然後在nodejs後面新增一個

setInterval(function(){
    arduinoport.write('g')
  },1000)

藉由傳送訊息讓arduino吐資料給你的方式 讓接收資料的時候不會有不同步的問題
之後在送資料給前端的時候,就不會產生格式不對或資料欄位錯誤的情況發生

今天到這樣結束,明天要教iot常用的通訊方式MQTT