<파이썬으로 밝기 값을 요청하여 어두워지면 스마트폰으로 알림보내기>
https://slack.com 에서 워크페이스 생성하고
https://api.slack.com/ 에서 워크스페이스에서 동작하는 봇을 만들기 위해 접속해서 app을 생성함
그리고 조도센서로 값을 받아서 일정값 보다 아래면 어두워졌다고 보냄
더보기
import time
import serial
import serial.tools.list_ports
import threading
import requests
import json
slack_webhook_url = "api 주소"
def sendSlackWebhook(strText):
headers = {
"Content-type":"application/json"
}
data = {
"text" : strText
}
res = requests.post(slack_webhook_url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
return "ok"
else:
return "error"
def send_bright():
sendData = f"BRIGHT=?\n"
my_serial.write(sendData.encode())
serial_receive_data = ""
def serial_read_thread():
global serial_receive_data
while True:
read_data = my_serial.readline()
serial_receive_data = read_data.decode()
def send_bright_1sec():
t2 = threading.Timer(1, send_bright_1sec)
t2.daemon = True
t2.start()
send_bright()
def main():
try:
send_bright_1sec()
global serial_receive_data
while True:
if "BRIGHT=" in serial_receive_data:
bright = int(serial_receive_data[7:])
print("밝기값:",bright)
serial_receive_data = ""
if bright < 10:
sendSlackWebhook("어둡습니다.")
for i in range(60):
time.sleep(60.0)
except KeyboardInterrupt:
pass
if __name__== '__main__':
ports = list(serial.tools.list_ports.comports())
for p in ports:
if 'USB' in p.description:
print(f"{p}포트에 연결하였습니다.")
my_serial = serial.Serial(p.device, baudrate=9600, timeout=1.0)
time.sleep(2.0)
t1 = threading.Thread(target=serial_read_thread)
t1.daemon = True
t1.start()
main()
my_serial.close()

<온도 센서 받기>


- 온도/습도 센서 받아서 엑셀에 저장하기



<파이썬으로 GUI 만들어서 서보모터 제어하기>

더보기
import tkinter
import tkinter.font
import time
import serial
import serial.tools.list_ports
def send_servo(self):
value = scale.get()
print(value)
send_servo(value)
time.sleep(0.1)
def send_servo(digree):
sendData = f"SERVO={digree}\n"
my_serial.write(sendData.encode())
if __name__== '__main__':
ports = list(serial.tools.list_ports.comports())
for p in ports:
if 'USB' in p.description:
print(f"{p}포트에 연결하였습니다.")
my_serial = serial.Serial(p.device, baudrate=9600, timeout=1.0)
time.sleep(2.0)
window = tkinter.Tk()
window.title("SERVO CONTROL")
# window.geometry("500X200")
window.resizable(False,False)
font = tkinter.font.Font(size=20)
label = tkinter.Label(window, text="SERVO DIGREE", font=font)
var = tkinter.IntVar()
scale = tkinter.Scale(window, variable=var, command=send_servo, orient="horizontal", showvalue=True, tickinterval=20, to=180, length=500)
scale.set(90)
label.grid(row=0, column=0, columnspan=3)
scale.grid(row=3, column=0, columnspan=3)
window.mainloop()

<음성 인식>
더보기
import speech_recognition as sr
import time
import serial
import serial.tools.list_ports
def send_rgb_led(red, green, blue):
sendData = f"RGB={red},{green}, {blue}\n"
my_serial.write(sendData.encode())
def main():
try:
while True:
r = sr.Recognizer()
with sr.Microphone() as source:
print("음성입력")
audio = r.listen(source)
try:
stt = r.recognize_google(audio, language='ko-KR')
print("음성변환:"+stt)
if "빨간색" in stt and "켜" in stt:
print("빨간색 LED ON")
send_rgb_led(255,0,0)
elif "녹색" in stt and "켜" in stt:
print("녹색 LED ON")
send_rgb_led(0, 255,0)
elif "노란색" in stt and "켜" in stt:
print("노란색 LED ON")
send_rgb_led(0,0,255)
elif "불" in stt and "꺼" in stt:
print("모든 LED OFF")
send_rgb_led(0,0,0)
except sr.UnknownValueError:
print("오디오를 이해할 수 없습니다.")
except sr.RequestError as e:
print(f"에러가 발생했습니다. 원인:{e}")
except KeyboardInterrupt:
pass
if __name__== '__main__':
ports = list(serial.tools.list_ports.comports())
for p in ports:
if 'USB' in p.description:
print(f"{p}포트에 연결하였습니다.")
my_serial = serial.Serial(p.device, baudrate=9600, timeout=1.0)
time.sleep(2.0)
main()
my_serial.close()

'아두이노' 카테고리의 다른 글
| 아두이노 코로나 현황표시 / 색상 검출(OpenCV) / 가변저항값 그래프 (0) | 2023.08.02 |
|---|---|
| 파이썬 이용해 미세먼지와 측정소 출력 (0) | 2023.08.01 |
| 파이썬으로 환율/기상청 날씨 아두이노 LCD에 표시하기 (0) | 2023.08.01 |
| 파이썬으로 아두이노 가변저항, 조도센서, 온습도센서 제어하기 (0) | 2023.07.31 |
| 파이썬으로 아두이노 서보모터, 피에조부저, FND 제어 (0) | 2023.07.31 |