1. Xin chào Khách ! Ban quản trị sẽ tiến hành nâng cấp diễn đàn từ ngày 11/8/2017 Mọi truy cập có thể bị dán đoạn, mong bạn thông cảm!
    Dismiss Notice

Chia sẻ Giao Tiếp Gui Python Và Kit Launpad Điều Khiển Đơn Giản

Thảo luận trong 'Họ MSP430'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. suriken0911

    suriken0911 Kỹ sư

    Tham gia ngày:
    13/9/13
    Bài viết:
    689
    Đã được thích:
    189
    Điểm thành tích:
    43
    Giới tính:
    Nam
    Nghề nghiệp:
    Sinh Viên- CTU
    Nơi ở:
    Cần Thơ
    Chào các bạn!
    Mình sẽ chia sẽ cách thức để giao tiếp một Kit Launpad Msp430 và Một Gui Viết Bằng Python.
    1.Gui Viết Bằng Python:
    Python là ngôn ngữ rất hay, đơn giản cho chúng ta thực hiện những ý tưởng trong truyền thông.
    Hiện nay có nhiều tài liệu về lập trình python rồi mình không chia sẽ lại nữa:
    các bạn có thể tìm theo các link:
    Python Basic:
    http://www.tutorialspoint.com/python/python_basic_syntax.htm

    python gui programming:
    python gui programming

    hoặc một số trang khác , các bạn có thể tìm thêm.
    đầu tiên ta cài python 2.7:
    link: Python 2.7 Release | Python.org

    Ta sẽ dùng thư viện Pyserial của python để viết ứng dụng này.
    link phần mềm:pyserial 2.7 : Python Package Index.
    sau đó trong python chỉ cần import serial là sử dụng được seria port.

    ta dùng phương thức serial port uart là có thể giao tiếp(mình hay gọi thế này).
    Tiếp Theo là code giao diện đơn giản gồm hai nút tắt đèn và mở đèn, các bạn có thể viết thêm các phần khác nếu muốn phát triển.
    code:
    Mã:
    from Tkinter import *
    import tkMessageBox
    import serial
    
    #------------------------------------------------------------------------------------
    #Serial:
    ser = serial.Serial('COM3', 9600)
    #------------------------------------------------------------------------------------
    
    
    #------------------------------------------------------------------------------------
    #Define function:
    def on_led():
        ser.write('a')
              
    def off_led():
        ser.write('b')
    #------------------------------------------------------------------------------------
    
    #------------------------------------------------------------------------------------
    #Setup:
    master = Tk()
    master.title("CHUONG TRINH")
    #------------------------------------------------------------------------------------
    
    #------------------------------------------------------------------------------------
    #Creater Button:
    Button(master, text='TAT DEN', command=off_led).grid(row=3, column=0, pady=50,padx=50)
    Button(master, text='MO DEN', command=on_led).grid(row=3, column=1, pady=10,padx=50)
    #------------------------------------------------------------------------------------
    
    #------------------------------------------------------------------------------------
    #Loop:
    mainloop( )
    #------------------------------------------------------------------------------------
    
    đây là giao diện của nó, basic:


    2015-02-28_0-42-10.

    Các bạn có thể trang trí cho đẹp nhé, tùy vào mỗi người mà cần thêm label, button, check box, radio button...

    Và để giao tiếp được với launpad ta phải mở cổng. khi ta cắm kit launpad vào PC thì sẽ tạo ra một cổng com ảo, COM1, COM2, COM3, COM4 gì đấy tùy máy tính.
    Và của mình là COM3:

    đoạn code này ta mở cổng com 3, tốc độ = 9600:
    Mã:
    ser = serial.Serial('COM3', 9600)
    2.Chương trình trên kit launpad:
    ở đây mình sử dụng Msp430g2553.
    và phần mềm energia để code trên kit launpad MSP430G2553
    Mã:
    //chuong trinh test kit launpad va Gui Python:
    #define led_red RED_LED
    //------------------------------------------------------
    
    void setup() {
      Serial.begin(9600); // set the baud rate
      pinMode(led_red,OUTPUT);
    }
    
    
    void loop() {
      char inByte;
      if(Serial.available()){ // only send data back if data has been sent
        char inByte = Serial.read(); // read the incoming data
        Serial.println(inByte); // send the data back in a new line so that it is not all one long line
        if(inByte == 'a'){
            digitalWrite(led_red,HIGH);
            delay(500);
        }
        else if(inByte == 'b'){
            digitalWrite(led_red,LOW);
            delay(500);
        }
      }
      delay(100); // delay for 1/10 of a second
    }
    
    
    Chương trình bật tắt led P1.0 kit Launpad MSP430G2553.

    Chúc các bạn thành công!
     
  2. suriken0911

    suriken0911 Kỹ sư

    Tham gia ngày:
    13/9/13
    Bài viết:
    689
    Đã được thích:
    189
    Điểm thành tích:
    43
    Giới tính:
    Nam
    Nghề nghiệp:
    Sinh Viên- CTU
    Nơi ở:
    Cần Thơ
    đây là Video demo, các bạn xem nhé, chúc thành công!
    video test:
     
    dungvt thích bài này.
  3. dungvt

    dungvt VIP

    Tham gia ngày:
    15/4/13
    Bài viết:
    582
    Đã được thích:
    903
    Điểm thành tích:
    93
    Giới tính:
    Nam
    Nơi ở:
    HCM
    Rất thích tinh thần ham học và chia sẻ của bạn. Xin cảm ơn và mong bạn tiếp tục phát huy.
     
    suriken0911 thích bài này.
  4. suriken0911

    suriken0911 Kỹ sư

    Tham gia ngày:
    13/9/13
    Bài viết:
    689
    Đã được thích:
    189
    Điểm thành tích:
    43
    Giới tính:
    Nam
    Nghề nghiệp:
    Sinh Viên- CTU
    Nơi ở:
    Cần Thơ
    Hi cảm ơn nhé. Vì Energia chỉ hỗ trợ dòng msp430 với G2231, G2452, G2553, FR5739, F5529(16Mhz, 25Mhz), FR5969(V.2 and higher only). nên cũng hạn chế cho các bạn muốn làm với msp430 khác. nhưng được cái rẻ hơn board arduino.
    À tiện đây cho mình hỏi khi làm mạch rời con Mcu msp430g2553 chẳng hạn, mún giao tiếp uart như ứng dụng trên ta cần nối dây Tx, Rx bình thường hay sao mấy bạn??? ngoài chân reset ra có cần nối chân test, chân gì đặc biệt nựa không????
     
  5. tdm

    tdm Kỹ sư

    Tham gia ngày:
    1/9/12
    Bài viết:
    456
    Đã được thích:
    426
    Điểm thành tích:
    63
    Giới tính:
    Nam
    bạn có thể hướng dẫn chi tiết để được một giao diện như vậy được không. cảm ơn bạn.
     
    suriken0911 thích bài này.
  6. suriken0911

    suriken0911 Kỹ sư

    Tham gia ngày:
    13/9/13
    Bài viết:
    689
    Đã được thích:
    189
    Điểm thành tích:
    43
    Giới tính:
    Nam
    Nghề nghiệp:
    Sinh Viên- CTU
    Nơi ở:
    Cần Thơ
    à được thôi bạn à.
    Đầu Tiên Ta cần cài đặt phần mềm Python, chọn phiên bản 2.7.9 nhé theo link này:
    Download Python | Python.org

    để lập Trình được giao diện trong ngôn ngữ Python Trước hết ta cần có thư viện đồ họa, và trong Python chính là Pyserial. Và Ta dùng Tkinter để viết giao diện trên nền là phần mềm python 2.7.9:
    Link Pyserial: pyserial 2.7 : Python Package Index, chọn bản win32.
    Tkinter thì trong python 2.7.9 đã tích hợp sẵn rồi, khi bạn dùng chỉ cần import nó vào thôi.

    Bắt đầu tạo chương trình đầu tiên:
    Mở phần mềm IDLE (Python GUI) lên:
    tạo một file là Frame.py.
    để bạn viết Gui trong python thì bạn phải import Tkinter vào, tìm hiểu thêm bạn có thể lên mạng tìm nhé.
    code import:
    Mã:
    from Tkinter import *
    Hoặc là:
    Mã:
    import Tkinter
    Tiếp theo là Thân chương trình:
    code:
    Mã:
    master = Tk()
    master.title("CHUONG TRINH DAU TIEN")
    mainloop( )
    master = Tk() giống như tao ra một đối tượng vậy.
    master.title("<Text>") là tiêu đề của frame của bạn:
    mainloop là vòng lập main của bạn.

    Vậy là ta có chương trình hoàn chỉnh như sau:
    Mã:
    from Tkinter import *
    
    master  =  Tk()
    master.title("CHUONG TRINH DAU TIEN")
    mainloop()
    đây là giao diện là một frame đơn giản được tạo ra, giống như các ngôn ngữ khác như C#, visual basic,...
    1.

    Tiếp theo sẽ là phần tạo nội dung cho Frame của bạn, và phần giao tiếp với Kit launpad Qua Uart serial port.
     
    tdm thích bài này.
  7. suriken0911

    suriken0911 Kỹ sư

    Tham gia ngày:
    13/9/13
    Bài viết:
    689
    Đã được thích:
    189
    Điểm thành tích:
    43
    Giới tính:
    Nam
    Nghề nghiệp:
    Sinh Viên- CTU
    Nơi ở:
    Cần Thơ
    Tiếp Theo đây là phần Giao Tiếp 1 Master và n Slave. Cụ Thể:
    - Master là PC.
    - n Slave Ta Chọn một hoặc 2 Kit LaunPad.
    - Phần Mềm Energia.
    - Một Mạch Chuyển Usb To Rs485( Sử dụng FT232RL + MAX485, Có thể Mua Theo Link Sau:

    FT232RL-RS485 (USB to RS-485 Converter) - www.tme.vn - Linh kien dien tu, Kit Phat trien, M&aacute;y nap, Dụng cụ...

    - Một Mạch Điều Khiển bóng đèn 220Vac( Moc3021 + BTA12).
    - Phần Mềm Visual Basic 6.0 ( Có vẻ là hơi xưa xẫm nhỉ).
    - Phương Thức Giao Tiếp: Modbus.
    + Link Tải Phần Mềm Modbus Poll Các bạn có thể tải theo link:
    Modbus Master Simulator
    + Về giao thức Modbus, Các bạn có thể tham khảo tại link:
    Simply Modbus - Function Code 01 - Read Coil Status
    + Ở đây sử dụng giao thức Modbus RTU nhé các bạn.
    Vậy là khung nội dung đã xong. Mình sẽ đi vào chi tiết từng phần, mình đang dần hoàn thành và chia sẽ cho các bạn nhé..

    Chúc vui vẻ!
     
    phunghetdm thích bài này.
  8. dangsonbk

    dangsonbk I'm aimin' right at you! Staff Member

    Tham gia ngày:
    2/7/13
    Bài viết:
    515
    Đã được thích:
    649
    Điểm thành tích:
    93
    Giới tính:
    Nam
    Nghề nghiệp:
    freelancer
    Nơi ở:
    Hanoi, Vietnam
    Bác viết thế này bị nhầm lẫn giữa Pyserial và Tkinter rồi, Pyserial để giao tiếp với cổng Serial mà. :)
     
  9. suriken0911

    suriken0911 Kỹ sư

    Tham gia ngày:
    13/9/13
    Bài viết:
    689
    Đã được thích:
    189
    Điểm thành tích:
    43
    Giới tính:
    Nam
    Nghề nghiệp:
    Sinh Viên- CTU
    Nơi ở:
    Cần Thơ
    Hi anh, Pyserial nó chung lun nên em giới thiệu lun ạ!
     
  10. thanhduongvs

    thanhduongvs Học sinh trung cấp

    Tham gia ngày:
    10/4/15
    Bài viết:
    28
    Đã được thích:
    23
    Điểm thành tích:
    8
    Giới tính:
    Nam
    Python
     
    quachlenhhosuriken0911 thích bài này.

Chia sẻ trang này