рдкрд╛рдпрдерди рдФрд░ рдЕрд░реБрдбрд┐рдиреЛред рд╕рд░рд▓, рддреЗрдЬ рдФрд░ рд╕реБрдВрджрд░

рдмрд╣реБрдд рдмрд╛рд░, рд╢реБрд░реБрдЖрддреА рдФрд░ рди рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдкреНрд░рд╢реНрди рд╣реИрдВред рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ Arduino рдХреЛ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВ? рдФрд░ рдЕрдЧрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рдпрдорд┐рдд рдШрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ? рдФрд░ рдЕрдЧрд░ рдЖрдк ESP8266 рдХреЗ рд╕рд╛рде рдкреАрдбрд╝рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рд░ рдмрд╛рд░ Arduino IDE рдЦреЛрд▓рдирд╛ рдФрд░ рдкреЛрд░реНрдЯ рдореЙрдиреАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдорд╛рдВрдб рднреЗрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдореИрдВ Arduino рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ GUI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ред

рдЙрдкрдХрд░рдг


рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдмреЛрд░реНрдб рдорд┐рд▓рд╛ рд╣реИ: рдЕрд░реБрдбрд┐рдиреЛ рдПрд╕рдПрд╕ рдорд╛рдЗрдХреНрд░реЛ ред Digispark Attiny 85 рдЬреИрд╕рд╛ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдпрд╣ рдмреЛрд░реНрдб, рдлрд┐рд░ рднреА USB рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде Arduino Micro рдХрд╛ рдПрдХ рдЪреАрдиреА рд╕рдВрд╕реНрдХрд░рдг рд╣реИред



рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХреА, рдХреНрдпреЛрдВрдХрд┐ iomoio рдЙрдкрдирд╛рдо рд╡рд╛рд▓рд╛ рдПрдХ YouTube рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рдЪреБрдХрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ред

рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЫреЛрдЯреЗ рдШрд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрд╛рд░реЛрдВ рдореЗрдВ рдПрдХ рд╕реБрдкрд░ рд╕рдВрдкрддреНрддрд┐ рд╣реИ: рд╕рдмрд╕реЗ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреНрд╖рдг рдореЗрдВ рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВред

MacOS Mojave рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдХрдмреБрдХ рдкреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдпрдВрддреНрд░рдг рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдпрд╛ рд▓рд┐рдирдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд▓реЗрдЦ рдХреЛ рдмрдВрдж рди рдХрд░реЗрдВ - рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

Arduino рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрдЪ


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рд╕реНрдХреЗрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдорд╛рдВрдб рдкрд░, рдПрд▓рдИрдбреА рдХреЛ рдЪрд╛рд▓реВ рдФрд░ рдмрдВрдж рдХрд░рддрд╛ рд╣реИред

рдЪреЗрддрд╛рд╡рдиреА

Arduino SS Micro рдореЗрдВ LED SS рдкреЛрд░реНрдЯ рдкрд░ рд╣реИрдВрдЧ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдорд╛рдирдХ рдмреНрд▓рд┐рдВрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдирд┐рдорд┐рд╖ рдПрд▓рдИрдбреА рд╣реИред

char inChar; #define LED_PIN SS void setup() { pinMode(LED_PIN, OUTPUT); //   Serial.begin(115200); //  Serial -  } void loop() { if (Serial.available() > 0) { inChar = Serial.read(); if (inChar=='e') // e - Enable -  { digitalWrite(LED_PIN,HIGH); } } else if (inChar=='d') // d - Disable -  { digitalWrite(LED_PIN,LOW); } else if (inChar=='b') // b - Blink -    { while (true){ digitalWrite(LED_PIN,HIGH); delay(1000); digitalWrite(LED_PIN,LOW); delay(1000); } } } 

рдпрджрд┐ рдЖрдк рдПрдХ рдФрд░ Arduino рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - рдПрд▓рдИрдбреА рдХреЗ рдкрд┐рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред

рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛрдб


рдкрд╛рдпрдерди рдХреЗ рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдЗрд╕рдХреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • PySerial - рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп
  • PyQT5 - рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп

рд╕реНрдерд╛рдкрдирд╛


рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ - рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

 pip install pyserial pyqt5 

GUI рдмрдирд╛рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк qtDesigner рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕


рдЪреВрдВрдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреЛрд░реНрдЯ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЬрд┐рд╕ рдЧрддрд┐ рд╕реЗ рд╕рдВрдЪрд╛рд░ рд╣реЛрдЧрд╛ред



рд╕реНрд░реЛрдд рдХреЛрдб


рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рд╕рднреА рдХрд╛рдо PySerial рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╣реИред рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд┐рд╕ рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ?

рдкреВрд░реЗ рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рд╕рд╛рдЗрдЯ рдкрд░, рдереЙрдорд╕ рдирд╛рдо рдХреЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

 def serial_ports(): """ Lists serial port names :raises EnvironmentError: On unsupported or unknown platforms :returns: A list of the serial ports available on the system """ if sys.platform.startswith('win'): ports = ['COM%s' % (i + 1) for i in range(256)] elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'): # this excludes your current terminal "/dev/tty" ports = glob.glob('/dev/tty[A-Za-z]*') elif sys.platform.startswith('darwin'): ports = glob.glob('/dev/tty.*') else: raise EnvironmentError('Unsupported platform') result = [] for port in ports: try: s = serial.Serial(port) s.close() result.append(port) except (OSError, serial.SerialException): pass return result 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдЙрдкрд▓рдмреНрдз рдЧрддрд┐ рдХреА рдПрдХ рд╕реВрдЪреА рд░рдЦрдиреА рдЪрд╛рд╣рд┐рдП:

 speeds = ['1200','2400', '4800', '9600', '19200', '38400', '57600', '115200'] 

рдЕрдм рдЪрд▓реЛ рдПрдХ рд╕рд╛рде рдбрд┐рдЬрд╝рд╛рдЗрди (QtDesigner рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдФрд░ рдПрдХ ppyic5 рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ .py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдкреЛрд░реНрдЯ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб ред

рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдЬрд┐рдХ рд╡рд╛рд▓реЗ рдореБрдЦреНрдп рд╡рд░реНрдЧ

 class LedApp(QtWidgets.QMainWindow, design.Ui_Form): def __init__(self): super().__init__() self.setupUi(self) self.Port.addItems(serial_ports()) self.Speed.addItems(speeds) self.realport = None self.ConnectButton.clicked.connect(self.connect) self.EnableBtn.clicked.connect(self.send) def connect(self): try: self.realport = serial.Serial(self.Port.currentText(),int(self.Speed.currentText())) self.ConnectButton.setStyleSheet("background-color: green") self.ConnectButton.setText('') except Exception as e: print(e) def send(self): if self.realport: self.realport.write(b'b') 

рд╡реИрд░рд┐рдПрдмрд▓ рд╕реЗрд▓реНрдл.рдкреЛрд░реНрдЯ рдФрд░ рд╕реЗрд▓реНрдл.рдкреЗрдб рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдкреЛрд░реНрдЯ рдФрд░ рдЧрддрд┐ рдХреЗ рдорд╛рди рд╣реИрдВред

рдЬрдм рдЖрдк self.ConnectButton рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдиреЗрдХреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЧрддрд┐ рд╕реЗ рджрд┐рдП рдЧрдП рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдмрдЯрди рд╣рд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд▓реЗрдмрд▓ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред



рднреЗрдЬреЗрдВ рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реЗ рдкреЛрд░реНрдЯ рдХреЛ рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬрддрд╛ рд╣реИ - рд╣рдореЗрдВ рдкрд▓рдХ рдореЛрдб рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк USB рд╕реЗ рдЬреБрдбрд╝реЗ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рд▓реЗрдЦ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдФрд░ рдЕрд╡рд▓реЛрдХрди рд╣реИ, рдЕрдзрд┐рдХ рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ:


Arduino рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрдЪ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб GitHub рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

Source: https://habr.com/ru/post/hi443326/


All Articles