아두이노 우노 R4 - MySQL
이 튜토리얼은 Arduino UNO R4를 사용하여 센서로부터 데이터를 수집하고 이를 MySQL 데이터베이스에 저장하는 방법을 안내합니다. 자세히는, 우리는 다음을 학습할 것입니다:
- Arduino UNO R4를 프로그래밍하여 MySQL 데이터베이스에 연결하는 방법
- Arduino UNO R4를 프로그래밍하여 MySQL 데이터베이스에 데이터를 삽입하는 방법
- Arduino UNO R4를 프로그래밍하여 MySQL 데이터베이스의 데이터를 업데이트하는 방법
- Arduino UNO R4를 프로그래밍하여 MySQL 데이터베이스에서 데이터를 검색하는 방법
Hardware Preparation
1 | × | Arduino UNO R4 WiFi | Amazon | |
1 | × | USB Cable Type-C | 쿠팡 | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino UNO R4 | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino UNO R4 | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino UNO R4 | Amazon | |
1 | × | (Recommended) Power Splitter For Arduino UNO R4 | Amazon |
아두이노 UNO R4 - MySQL
Arduino UNO R4는 두 가지 방법으로 MySQL 데이터베이스에 연결할 수 있습니다:
- Arduino UNO R4는 MySQL 프로토콜을 사용하여 MySQL 서버에 직접 연결합니다 (이것이 직접 방법입니다).
- Arduino UNO R4는 HTTP 프로토콜을 통해 MySQL 서버에 연결합니다 (이것이 간접 방법입니다).
어느 것이 더 나은지 보자.
Arduino UNO R4가 MySQL 서버와 직접 상호작용합니다
이것은 쉬워 보일 수 있지만, 몇 가지 단점이 있습니다:
- MySQL 사용자가 데이터베이스에 원격으로 접근할 수 있도록 허용하는 것은 사용자의 권한이 제한되었더라도 보안상 위험할 수 있습니다.
- 아두이노 UNO R4나 MySQL 서버에서 데이터를 처리하는 것은 아두이노 코드와 MySQL 스크립트를 더 복잡하게 만들며, 아두이노의 메모리와 CPU를 많이 사용하게 됩니다.
- MySQL 서버는 아두이노 UNO R4로 대량의 데이터를 보낼 수 있으며, 이는 메모리 부족 문제를 일으킬 수 있습니다.
- 많은 MySQL 라이브러리는 SSL/TLS를 지원하지 않아 사용자 이름과 비밀번호가 암호화 없이 전송되어 또 다른 보안 위험이 됩니다.
Arduino UNO R4는 HTTP/HTTPS를 통해 MySQL 서버와 간접적으로 상호작용합니다.
이 간접적인 방법은 직접적인 방법의 모든 문제를 해결합니다. 이 간접적인 방법이 어떻게 작동하는지 살펴본 후, 직접적인 방법의 문제를 어떻게 피하는지 알아보겠습니다.
작동 방식
- 1단계: Arduino UNO R4가 웹 서버에 HTTP 요청을 보냅니다.
- 2단계: 웹 서버가 PHP 스크립트를 실행합니다.
- 3단계: PHP 스크립트가 HTTP 요청으로부터 데이터를 수신하고, 처리하며, MySQL 데이터베이스와 상호작용합니다.
- 4단계: PHP 스크립트가 결과를 처리하고 이를 HTTP 응답을 통해 Arduino UNO R4로 다시 보냅니다.
이 안내서는 PC에 웹 서버와 MySQL 서버를 설치하는 방법을 가르쳐 줍니다. 복잡해 보이지만 그렇지 않습니다.
이제 간접법이 직접법의 단점을 어떻게 피할 수 있는지 살펴보겠습니다.
- MySQL 서버와 HTTP 서버를 같은 기계에 두면 MySQL 사용자 계정을 해당 기계에서만 접근할 수 있도록 설정할 수 있습니다. 이 계정의 사용자 이름과 비밀번호는 서버에 저장되어 있어 (3단계에서 언급됨) 보안을 강화하는 데 도움이 됩니다.
- PHP 스크립트(3단계 및 4단계)가 데이터 처리를 담당합니다. 이는 Arduino UNO R4와 MySQL 서버 모두에게 더 쉽고 덜 복잡하게 만듭니다. 데이터 처리를 위해 PHP를 사용하는 것이 Arduino UNO R4 코드나 MySQL 스크립트를 사용하는 것보다 더 쉽습니다.
- PHP 스크립트는 데이터를 처리한 후 필요한 정보만을 Arduino UNO R4에 보냅니다 (4단계). 이는 Arduino UNO R4의 메모리 부족을 방지하는 데 도움이 됩니다.
- 대부분의 이더넷/와이파이 라이브러리는 TLS/SSL을 지원하여 HTTPS 요청을 가능하게 합니다. HTTPS를 사용하면 데이터가 암호화되어 안전하게 인터넷을 통해 전송됩니다.
1단계에서는 Arduino UNO R4를 웹 서버에 연결하기 위해 다른 사용자 이름과 비밀번호를 사용할 수 있습니다. 보안을 유지하기 위해 HTTP 사용자 이름과 비밀번호는 MySQL 사용자 이름과 비밀번호와 동일하지 않아야 합니다.
이 가이드는 Arduino UNO R4를 MySQL에 간접적으로 연결하는 방법을 보여줍니다.
아두이노 UNO R4 - HTTP/HTTPS를 통한 MySQL
다음 단계를 실행해야 합니다:
- MySQL 서버, 웹 서버 및 PHP를 컴퓨터에 설치하십시오
- MySQL 및 웹 서버를 활성화하십시오
- MySQL 사용자 계정을 생성하십시오
- MySQL 데이터베이스를 생성하십시오
- MySQL 테이블을 생성하십시오
- PHP 스크립트를 작성하십시오
- Arduino UNO R4를 프로그래밍하십시오
그럼 이제 한 번에 한 걸음씩 나아가 봅시다.
PC에 MySQL 서버, 웹 서버, PHP 설치하기
XAMPP 패키지에는 모든 것이 포함되어 있습니다. 우리는 한 번만 설치하면 됩니다.
- 이 링크에서 XAMPP를 다운로드하세요.
- 설치하세요.
설치 후, C:\xampp\htdocs라는 폴더가 PC에 나타납니다. 이 폴더에는 PHP 코드가 포함됩니다(후에 설명 예정).
MySQL 및 웹 서버 활성화
- XAMPL 제어판을 엽니다
- 시작 버튼을 클릭하여 MySQL과 웹 서버를 켭니다 (아래 이미지 참조)
MySQL 사용자 계정 생성
우리는 로컬 컴퓨터에서만 MySQL 데이터베이스에 접근할 수 있는 MySQL 계정을 설정할 것입니다.
- 누군가가 사용자 이름과 비밀번호를 알고 있더라도 원격으로 MySQL 데이터베이스에 접속할 수 없습니다.
- PHP와 MySQL이 동일한 PC에 있기 때문에 PHP는 사용자 이름과 비밀번호를 사용하여 MySQL 데이터베이스에 연결할 수 있습니다.
MySQL 사용자 계정을 사용자 이름 ArduinoUnoR4와 비밀번호 newbiely.com으로 만들자.
- 컴퓨터에서 명령 프롬프트를 엽니다. 튜토리얼을 마칠 때까지 열어 놓으세요.
- 명령 프롬프트에 다음 명령어를 입력하세요:
- MySQL의 기본 설정에는 비밀번호가 없는 루트 계정이 포함되어 있습니다. 이 계정에 비밀번호를 설정할 것을 권장합니다.
명령 프롬프트에 다음 명령을 입력하여 루트 계정 비밀번호를 설정하세요: (예: YOUR-ROOT-PASSWORD)
- 명령 프롬프트에 이 명령을 입력하세요:
- 루트 비밀번호를 입력하고 Enter 키를 누르세요.
- 'ArduinoUnoR4' 사용자 이름과 'newbiely.com' 비밀번호로 MySQL 사용자 계정을 생성하세요. 다음 명령어를 복사하여 명령 프롬프트에 붙여넣으세요:
이제 MySQL 사용자 계정을 성공적으로 생성했습니다. PHP 스크립트에 필요하니 사용자 이름과 비밀번호를 기억하세요.
MySQL 데이터베이스 생성하기
Command Prompt에서 다음 명령어를 입력하여 db_arduino라는 데이터베이스를 만드십시오:
MySQL 테이블 생성
tbl_temperature이라는 테이블을 만듭시다. 다음 명령어를 복사하여 명령 프롬프트에 붙여 넣으세요:
하나 이상의 PHP 파일 작성
C:\xampp\htdocs에 insert_temp.php라는 PHP 파일을 만드세요.
이 PHP 코드는 HTTP 요청에서 온도를 가져와 데이터베이스에 삽입합니다.
- 컴퓨터의 IP 주소를 확인하세요. 찾는 방법이 확실하지 않다면 Google에서 검색하세요.
- PHP 코드가 작동하는지 확인하려면 웹 브라우저(예: Chrome)를 열고 이 링크로 이동하세요: http://192.168.0.4/insert_temp.php?temperature=25.3. "192.168.0.4" 대신 자신의 컴퓨터 IP 주소를 사용해야 합니다.
- 웹 브라우저에 결과가 표시됩니다.
- 데이터가 데이터베이스에 저장되었는지 확인하려면 명령 프롬프트에 이 명령어를 입력하십시오:
온도 25.3이 데이터베이스에 저장되었습니다. 다음으로, Arduino UNO R4를 프로그래밍하여 유사한 HTTP 요청을 컴퓨터로 보낼 필요가 있습니다.
아두이노 UNO R4 코드 작성
이 Arduino UNO R4 코드는 HTTP 요청을 컴퓨터에 보내 데이터베이스에 30.5°C의 온도를 추가합니다.
Arduino UNO R4 코드 for Arduino UNO R4 R4 WiFi
Detailed Instructions
이 지침을 단계별로 따르십시오:
- Arduino Uno R4 WiFi/Minima를 처음 사용하는 경우, Arduino IDE에서 Arduino Uno R4 WiFi/Minima 환경 설정에 대한 튜토리얼을 참조하세요.
- USB 케이블을 사용하여 Arduino Uno R4 보드를 컴퓨터에 연결하세요.
- 컴퓨터에서 Arduino IDE를 실행하세요.
- 적절한 Arduino Uno R4 보드(예: Arduino Uno R4 WiFi)와 COM 포트를 선택하세요.
- 코드의 IP 주소를 컴퓨터의 IP 주소로 바꾸세요.
- 코드를 컴파일하고 Arduino UNO R4에 업로드하세요.
- 시리얼 모니터를 여세요.
- 시리얼 모니터에서 출력을 확인하세요.
- 정보가 데이터베이스에 저장되었는지 확인하려면 명령 프롬프트에 이 명령어를 입력하세요:
온도 30.5가 데이터베이스에 저장되었습니다.
Arduino UNO R4가 MySQL 데이터베이스에 데이터를 삽입, 업데이트 또는 가져오는 방법
예제에서는 MySQL 데이터베이스에 데이터를 추가하는 방법을 배웠습니다. 데이터를 업데이트하거나 검색하기 위한 과정도 유사합니다. PHP 스크립트에서 MySQL 쿼리만 변경하면 됩니다. 더 많은 정보는 W3Schools를 방문하세요.
고급 사용 방법
보안을 개선하기 위해,
- Arduino UNO R4의 코드를 수정하여 HTTP 대신 HTTPS를 사용할 수 있습니다. 방법에 대한 자세한 내용은 Arduino UNO R4 - HTTPS에서 확인하세요.
- Arduino UNO R4를 웹 서버에 연결할 때 사용자 이름과 비밀번호를 사용하여 인증할 수 있습니다. 자세한 내용은 기본 액세스 인증에서 확인하세요.
※ NOTE THAT:
최고 수준의 보안을 갖춘 전체 시스템을 만들기 위해서는 더 많은 기능(예: MySQL 인젝션 방지, HTTPS를 REST API로 변환, 데이터를 JSON 형식으로 사용 등)을 추가해야 합니다. 하지만 이 가이드는 Arduino UNO R4를 배우는 초보자를 위한 것입니다. 우리는 그것을 매우 간단하게 유지했습니다. 이 가이드를 끝낸 후에는 더 고급 주제를 배울 수 있습니다.
Video Tutorial
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.