[arduino][python] HC-06 Bluetooth 통신 Test
HC-06 연결(Arduino Code RXD/TXD 선언 시 하드웨어 연결과 반대로 define)
VCC : 5V
GND : GND
RXD : Arduino D3
TXD : Arduino D2
[Arduino IDE 사용] / [Visual Studio Code사용]
Arduino IDE or VS code 초기 셋팅 및 설정 참고
https://jinozblog.tistory.com/207
[arduino] LM35 / TMP36 Sensor 연결도 : arduino IDE or VScode 설정 및 모니터링
Arduino UNO R3 : LM35 Sensor 연결도(TMP36 동일) 및 전달함수식 LM35 Analog Output이므로 A0 ~ A5에 연결 : 필자는 A0에 연결 range : 온도 / 출력(전송)전압, -55ºC ~ 150ºC : -550mV ~ 1500mV LM35 Transfer Function Arduino AO resol
jinozblog.tistory.com
[Arduino Code]
HC-06 Bluetooth 연결
#include <SoftwareSerial.h>
#define BT_RXD 2 //hc06 TX to ArdUno D2
#define BT_TXD 3 //hc06 RX to ArdUno D3
SoftwareSerial hc06(BT_RXD, BT_TXD);
const int baud_rate = 9600;
String stringsum;
void setup() {
Serial.begin(baud_rate);
hc06.begin(baud_rate);
}
void loop() {
float data0 = 22.3;
float data1 = 12.6;
stringsum = "ia" + String(data0) + "b" + String(data1) + "f";
Serial.println(stringsum);
hc06.println(stringsum);
delay(1000);
}
Arduino Serial Monitoring
[python Code]
MacBook Pro 13(2019년)
모델 식별자: MacBookPro15,2
macOS Sonoma
HM-10 Bluetooth 연결 안됨
HC-06 Bluetooth 연결 안됨
iphone App. LightBlue 확인 가능
https://jinozblog.tistory.com/215
MacBook Air 2014
macOS Bigsur 가능
HC06 Bluetooth pyserial Read
python 실행 시 Arduino IDE Serial Monitor 창을 닫고 실행해야함. port가 사용 중이기 때문에 통신이 안됨!!
1. Serial Port 찾기
python library pyserial Install
terminal 창에서 : pip install pyserial
vscode 사용 시 하단 터미널(terminal)에서 다음과 같이 입력
findport.py
import serial.tools.list_ports as serial_port
port_lists = serial_port.comports()
for port_list in port_lists:
print(port_list)
출력 결과
macOS 환경에서 device(Arduino Uno Serial Port 연결, HC-06 Bluetooth module은 연결 안됨)
Serial Port : /dev/cu.usbmodem141201
Ubuntu 환경에서 (Arduino Uno Serial Port 연결, HC-06 Bluetooth 연결)
Serial Port : /dev/ttyACM0
Bluetooth Port : /dev/rfcomm0
window 환경에서 테스트하지는 못했지만 COM 뒤에 숫자가 붙는 형식으로 나타남
2. Serial Port Read
Test 환경 : Ubuntu, Serial Port / Blutooth 둘다 확인
OS 환경에 따라 아래 코드 port_ser, port_ble Device 경로 수정
import serial
import time
import pandas as pd
baud_rate = 9600
port_ser = '/dev/ttyACM0'
port_ble = '/dev/rfcomm0'
ard_ser = serial.Serial(port_ser, baud_rate)
ard_ble = serial.Serial(port_ble, baud_rate)
df_header = ['Data_A','Data_B']
df = pd.DataFrame(columns=df_header, index=None)
for t in range(5):
serial_data = ard_ser.readline().decode()
bluetooth_data = ard_ble.readline().decode()
print("[serial]:{}".format(serial_data))
print("[bluetooth]:{}".format(bluetooth_data))
try:
if bluetooth_data[0] == 'i':
data_A = bluetooth_data[bluetooth_data.index('a')+1:bluetooth_data.index('b')]
data_B = bluetooth_data[bluetooth_data.index('b')+1:bluetooth_data.index('f')]
else:
data_A = 0
data_B = 0
except:
pass
df.loc[t] = [data_A,data_B]
print(df)
time.sleep(1)
df.to_csv('./save.csv')
출력결과
datasave : save.csv