공유 블로그

사용법

https://www.arduino.cc/en/Main/Software

일단 아두이노 툴 다운로드해서 설치하세요

 

 

아두이노 툴에서 StandardFirate 클릭 [사진참조]

 

 

장치 관리자로 아두이노 포트 확인 후

맞는 보드 & 포트 체크해주세요

그리고 아두이노 업로드 

 

그러면 아두이노 툴은 이제 없어도 됩니다.

 

이제 파이썬 파일 만들어서 진행하는데 바탕화면에 아무 이름이나 .py로 하나 만드세요

(참고로 파이썬은 기본적으로 설치되어있어야 합니다.)

 

일단 저는 웹에서 LED를 껐다 켰다 할 수 있는 코드를 올리도록 하겠습니다.

나중에 응용해서 해보세요!

 

코드 구성

arduino_upload.py

from pyfirmata import Arduino, util
import requests, json, os
import pymysql

sql = 'select * from serial where No = '
No = 1

PIN = 13   # 아두이노 우노 LED 디지털 핀
DELAY = 1  # 1초 지연 시간
board = Arduino('COM18') # 보드 포트 번호

data = {'PIN':PIN} 
headers = {"Content-Type":"application/json", 'Accept': 'text/plain'} 

while True:
    get = requests.post('http://localhost:3000/python',json={},headers=headers) 
    print(get.json())
    for k,v in get.json().items():
        if(v == 'ON'):
            print(v)
            board.digital[PIN].write(1)
        elif(v == 'OFF'):
            print(v)
            board.digital[PIN].write(0)

 

이젠 nodejs설치 진행해주세요

웹상으로 제어할 겁니다.

 

arduino_web.js

//웹 전용
var express = require('express');
var app = express();
var bodyParser = require('body-parser')//웹 통신 허용
const request = require('request');
var port = 3000;

//아두이노 전용
let LED;
let PIN1;

//DB 전용
var mysql = require('mysql');
const { rootCertificates } = require('tls');
var connection = mysql.createConnection({
  host: '127.0.0.1',
  user: 'mysql DB 계정',
  password: 'mysql DB 패스워드',
  database: 'arduino'
})
var sql = 'INSERT INTO serial(Pin,name,action)values(?,?,?)';

app.set('view engine', 'ejs'); // ejs 허용
app.use(express.static(__dirname + '/public')); //css 허용

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));

// parse application/json
app.use(bodyParser.json());

//get방식으로 보냄(초기화)
app.get('/', function (req, res) { 
  res.render('serial', { 
    LED: 'OFF' , 
    PIN: PIN1
  });
});

//post방식으로 보냄(button작동)
app.post('/', function (req, res, next) {
  LED = req.body.LED;
  if (LED == 'ON') {
    LED = 'OFF';
    res.render('serial', { 
      LED: 'OFF' ,
      PIN: PIN1
    });
  } else {
    LED = 'ON';
    res.render('serial', { 
      LED: 'ON', 
      PIN: PIN1
    });
  }

  console.log(LED);

  //DB 보냄
  connection.query(sql, [PIN1,'LED', LED], function (error) {
    if (error) throw error;
  });

});

app.post('/python', function (req,res) {
  console.log(LED);
  return res.json({name: "LED",action: LED});
});

app.post('/node', function (req,res) {
  PIN1=req.body.PIN
  console.log(PIN1)
  return res.end();
});

app.listen(port, function () {
  console.log('server on! http://localhost:' + port);
});

 

 

구성도

python(아두이노) < -> NodeJS - > MySQL

 

해당 코딩 한 곳에 cmd 창 여시고

1. node arduino_web.js

2. python arduino_upload.py

3. 웹 여시고 localhost:3000 또는 127.0.0.1:3000

순으로 진해해주세요

 

그리고 웹에 있는 OFF 버튼 눌러서 아두이노 13 pin 불이 꺼지고

ON버튼 눌럿을때 켜지는지 확인합니다.

 

 

확인

더보기

 

 

다음으로 해볼 프로젝트

다음으로 해볼 프로젝트는 ESP에 WEB IoT를 구성 해보도록 하겠습니다.

ESP로 웹을 구성하는 방법에 대한 블로그 작성해 보았습니다.

많은 이용 부탁드립니다.

https://all-share-source-code.tistory.com/61

 

ESP8266 WEB IoT 구성하기

저번 블로그에서 ESP8266 필드 & 파일 업로드 방법을 알려드렸습니다. https://all-share-source-code.tistory.com/56 SETUP.EXE 설" data-og-host="all-share-source-code.tistory.com" data-og-source-url="http..

all-share-source-code.tistory.com

 

 

 

---- 추가 내용 ----

더보기

아두이노 같은 경우에는 제한 적인 게 너무 많습니다.

따라서 아두이노 보다는 라즈베리파이 또는 젯슨 나노 같은 임베디드 기기로 하는 것을 추천드립니다. 

(저도 아두이노로 프로젝트를 진행해보려고 하였지만 이거 때문에 골머리만 더 아파지고 화난 적이 한두 번이 아니네요.. 오늘도 TMI네요..ㅋㅋㅋ)

요즘은 젯슨 나노로 프로젝트 진행 중인 상태입니다...

나중에 젯슨 나노로 간단한 프로젝트들도 여러 개 올려 보겠습니다.ㅎ

 

궁금한 점 있으면 댓글 주세요!!

 

공유하기

facebook twitter kakaoTalk naver band kakaostory Copy URL