Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    lopy to raspberry pi 3 serial connection

    Scheduled Pinned Locked Moved LoPy
    raspberry pilopyserialurgent
    28 Posts 7 Posters 7.8k Views 7 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T Offline
      thomand1000 @hsn548
      last edited by

      @hsn548 Here is the code I used to get it working. Be sure to place the jumper cables in the right place. I had the cables in the wrong place at first. 1_1519046569556_IMG_3501.jpg 0_1519046569555_IMG_3500.jpg

      The following code works for me (i made a class for all the code on the RPI. Just import it and make a new PiGateway() and call its methods).

      RPi code:

      #run script as super user (e.g. $ sudo python3 sendlora.py)
      import serial, time

      class PiGateway:
      
          def __init__(self):
              self.ser = serial.Serial('/dev/serial0', 115200, timeout=10)
      
          def readFile(self, filename):
              f = open(filename,'r')
              content = f.read()
              f.close()
              return content
      
          def sendToLopy(self, device_id, data):
              n = 254
              id = "id=" + str(device_id)
              sendingDone = "sending done"
              #split data into 255 byte chunks for sending
              splitData = [data[i:i+n] for i in range(0, len(data), n)]
              #send device_id first. Wait one second between each packet to prevent collisions.
              self.ser.write(bytes(id, 'utf-8'))
              time.sleep(1)
              for dataChunk in splitData:
                  #send each chunjk of data
                  self.ser.write(bytes(dataChunk,'utf-8'))
                  time.sleep(1)
              #send a string notifying that the transmission is done
              self.ser.write(bytes(sendingDone, 'utf-8'))   
      
          def getFromLopy(self):
              while True:
                  if (self.ser.in_waiting > 0):
                      received = self.ser.read(self.ser.in_waiting).decode('utf-8')
                      return received
                  time.sleep(1)
      

      on the Lopy the code was the following:

      import machine, time, pycom
      pycom.heartbeat(False)
      pycom.rgbled(0x000000)
      uart1 = UART(1, 115300, bits=8, parity=None, stop=1)
      uart1.init(baudrate=115200, bits=8, parity=None, stop=1)
      
      while True:
          if uart1.any():
              receiving = uart1.read().decode('utf-8')
              #Do something with what you receive here
              #I used exec(receiving) -> entire code sent from Rpi to be executed on Lopy. It works
              time.sleep(5)
              #remember to break here sometime
          time.sleep(1)
      

      Good luck

      1 Reply Last reply Reply Quote 0
      • T Offline
        testos
        last edited by testos

        Hello,

        Sorry to ask, I'm novice in that field, coding is not an issue, but the electronic part is still a bit tricky for me....

        Is it required to have the expansion board to connect the lopy to the rpi ?

        In my case I have a pytrack + fipy and I was wondering if I can also send the gps and accelerometer data to a rapsberry Zero in a similar way ?

        Looking at the rpi-zero io pins I can see that there are RX/TX and GND pins : http://raspberry-projects.com/pi/pi-hardware/raspberry-pi-zero/rpi-zero-io-pins

        Similar as the fipy : https://docs.pycom.io/datasheets/development/fipy.html ( RX1 / TX1 / GND ), can I use those ?

        Thanks by advance.

        robert-hhR 1 Reply Last reply Reply Quote 0
        • robert-hhR Offline
          robert-hh @testos
          last edited by

          @testos If you look at the code and pictures below by @thomand1000, it is actually using UART1 with TX1, RX1 and GND connected to the rPi.

          T 1 Reply Last reply Reply Quote 0
          • T Offline
            testos @robert-hh
            last edited by

            @robert-hh THanks for your quick answerr, yes I agree, but on the first picture, it's not the expansion board that he use ?

            Br, Testos

            robert-hhR 1 Reply Last reply Reply Quote 0
            • robert-hhR Offline
              robert-hh @testos
              last edited by

              @testos Yes, that's right. The picture shown an expansion board. On the pytrack, P3 and P4 are not that easily accessible. The connector below the Lopy has P4, P8, P10 and P11 available. So you have to re-assign the UART pin when you init the UART with the pins parameter, like:

              from machine import UART
              uart1 = UART(1, 115200, pins=("P8", "P4")) # P8=Tx, P4=Rx
              
              T 1 Reply Last reply Reply Quote 0
              • T Offline
                testos @robert-hh
                last edited by

                @robert-hh Thanks for the guidance, I will give a try during my holiday next week.

                Just for clarification, the P3/P4 that you talk about are from the fipy ? and by doing the following ...

                from machine import UART
                uart1 = UART(1, 115200, pins=("P8", "P4")) # P8=Tx, P4=Rx
                

                ... it will re-assign them on the pytrack on the 2 pin P4/P8 on the External IO Header shown on the picture ?

                0_1546105950113_a1d4ef34-34e0-404c-8aab-7af1927ba2e1-image.png

                Thanks again for your time.

                C 1 Reply Last reply Reply Quote 0
                • C Offline
                  crumble @testos
                  last edited by

                  Please note that P8 (G15) is used by the SD-Card interface. So you can't use them at the same time.

                  robert-hhR T 2 Replies Last reply Reply Quote 0
                  • robert-hhR Offline
                    robert-hh @crumble
                    last edited by

                    @crumble But then still P10 and P11 are available.

                    1 Reply Last reply Reply Quote 0
                    • T Offline
                      testos @crumble
                      last edited by testos

                      Hello again,

                      @crumble, @robert-hh I can not use P11 (G22) instead of P8 ?

                      From the fipy documentation I can see that P11 is use by SPI ( MOSI ) but it's written :

                      Please note that the PIN assignments for UART1 (TX1/RX1), SPI (CLK, MOSI, MISO) and I2C (SDA, SCL) are defaults and can be changed in Software.

                      I can not just re-assign the mosi on a different pin ? I did not find yet doc on that.

                      Thanks

                      robert-hhR 1 Reply Last reply Reply Quote 0
                      • robert-hhR Offline
                        robert-hh @testos
                        last edited by

                        @testos As long as you do not use SPI this does not matter. And the SPI pins can be reassigned too. And P11 (External IO 8) seems not to be connected on pytrack. Using I diode tester, I cannot detect any connection. At P10 (external IO 7) seems to be used. At least is show something like a ESD diode behavior of an active chip pin.

                        1 Reply Last reply Reply Quote 0

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        • 1
                        • 2
                        • 2 / 2
                        • First post
                          Last post

                        Pycom on Twitter

                        Pycom