Making Omega2 talks with SAMD21 (Arduino Zero)



  • @Suman-kumar-Jha As you know, there are tree (3) connections between the on board Omega2(+) and the on board ATmega328P IC (the "Arduino") via a bidirectional 3.3V to 5V logic level shifter on the Arduino Dock 2:

    1. UART (serial) connection
    2. I2C bus
    3. ICSP programmer - using a bit banged SPI bus (SCK, MOSI, MISO and Reset) of Omega

    The Arduino Dock 2 (a more or less UNO compatible board) has got the usual Arduino headers.


    Unfortunately I don't have any Arduino Zero so theoretically...

    The Arduino Zero also has got the usual Arduino headers.
    The level shifter not needed for your project because both the Omega2 and the Zero run at 3.3V.

    Making Omega2 talks with SAMD21 (Arduino Zero)

    1. If you only make some "simple talk" between the two boards then you should use the UART connection. Simply connect Omega2's TX1, RX1, GND to Zero's Rx (D0), Tx (D1), GND respectively and run some communication program on both sides.
      Done.

    2. Omega2 as an I2C Master and the Zero as an I2C Slave - the hardwer side is simple (SCL, SDA, GND) - the software side is complicated.

    3. Programming Zero (uploading sketches to the SAMD21) with Omega2 - I think it's too complex programming task (for us.;)
      See also:
      Genuino Zero
      Getting started with the Arduino/Genuino Zero


    Do you really want to build some custom bootloader for Arduino Zero?

    Good luck!



  • For my project arduino uno does not fit, because of low RAM and ROM. So i am interested to interface Omega2 with SAMD21 (Arduino zero board) as it comes with 256kb ROM vs 32 kb. I don't understand why company are making linux SBC with arduino uno compatible. We can't make any bigger project, or utilize properly linux SBC.

    UART , I2C i already tested between omega and SAMD21 its working. But intention is make it working with arduino Bridge library (Through which i call linux function like "curl" in my arduino program) . Where bridge is using UART interface only. But i am not getting what configuration need to do linux side, so that arduino bridge can work.

    So if you can help me to make Arduino Bridge library working even with arduino uno and omega. It will be great help. Rest for SAMD21 I can find out some solution.

    I think now you can understand my problem statement
    Thanks, please response soon



  • @Suman-kumar-Jha I think the title of your post is fairly misleading.

    Making Omega2 talks with SAMD21 (Arduino Zero)
    I had gone through arduino Omega dock and how to setup that
    ... to do same with SAMD21 MCU
    ... ... to make Arduino Bridge library working

    So - in truth - you want that a SAMD21 MCU (ie. an Arduino Zero) "talks" (can communicate) with a web server.

    I think now you can understand my problem statement

    Not entirely. Now you only told me another small part of your project.

    Hope this helps:
    Arduino yun bridge Tutorial
    Enable Arduino Yun bridge on Linkit 7688 Duo



  • @György-Farkas said in Making Omega2 talks with SAMD21 (Arduino Zero):

    Arduino yun bridge Tutorial
    Enable Arduino Yun bridge on Linkit 7688 Duo

    I have omega2 and tried your suggestion. I got this error. I guess yunbridge is not installed.

    root@Omega-CF2D:~# uci set yunbridge.config.disabled='0'
    uci: Entry not found
    root@Omega-CF2D:~#

    What can be the reason for above?

    Is Omega2 comes with light version of Omega OS. I saw lot of tutorial of omega2 but my omegsa2 OS console seems different. Only 3 apps preinstalled.

    0_1563732746356_Screenshot (10).png

    There is no setting option on console?



  • @Suman-kumar-Jha
    Probably you have got an Omega2+.
    What firmware version are you using?
    Do you have some Onion Dock?



  • I think i have omega2 itself.
    0_1563738018430_Omega2.jpg

    Are you asking this

    0_1563738064155_3f6ad371-1632-4b08-9665-e1d17860bbda-image.png

    I am having arduino dock.



  • @Suman-kumar-Jha
    No, I'm asking your Omega2's firmware version,.
    Useful commands: oupgrade -v or onion os version .
    For example my firmvare version is: v0.3.2 b226

    root@Omega-5BE1:~# oupgrade -v
    > Device Firmware Version: 0.3.2 b226
    
    root@Omega-5BE1:~# onion os version
    === Version Info ===
    Omega firmware: v0.3.2 b226
    onion-os - 1.0.6-1
    


  • Yes i got it.

    === Version Info ===
    Omega firmware: v0.3.2 b226
    onion-os - 1.0.6-1
    root@Omega-CF2D:~#



  • Mine is also same
    0_1563739228704_4be81840-623d-4fc9-82b0-a29823aec136-image.png



  • @Suman-kumar-Jha
    Please enable / uncomment the fifth (5th) line in the '/etc/opkg/distfeeds.conf' file.
    Please run these commands:
    opkg update
    opkg install python-light
    opkg install yunbridge

    uci set yunbridge.config.disabled='0'
    uci commit yunbridge

    reboot

    # Omega2+  FW v0.3.2 b226
    
    root@Omega-5BE1:/# cat /etc/opkg/distfeeds.conf
    #src/gz openwrt_core http://downloads.openwrt.org/releases/18.06-SNAPSHOT/targets/ramips/mt76x8/packages
    #src/gz openwrt_base http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/mipsel_24kc/base
    #src/gz openwrt_luci http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/mipsel_24kc/luci
    #src/gz openwrt_onion http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/mipsel_24kc/onion
    src/gz openwrt_packages http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/mipsel_24kc/packages
    #src/gz openwrt_routing http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/mipsel_24kc/routing
    #src/gz openwrt_telephony http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/mipsel_24kc/telephony
    src/gz omega2_core http://repo.onioniot.com/omega2/packages/core
    src/gz omega2_base http://repo.onioniot.com/omega2/packages/base
    src/gz omega2_packages http://repo.onioniot.com/omega2/packages/packages
    src/gz omega2_routing http://repo.onioniot.com/omega2/packages/routing
    src/gz omega2_onion http://repo.onioniot.com/omega2/packages/onion
    
    root@Omega-5BE1:/# opkg update
    
    root@Omega-5BE1:/# opkg install python-light
    Installing python-light (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-light_2.7.15-4_mipsel_24kc.ipk
    Installing python-base (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-base_2.7.15-4_mipsel_24kc.ipk
    Installing libffi (3.2.1-3) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/libffi_3.2.1-3_mipsel_24kc.ipk
    Configuring python-base.
    Configuring libffi.
    Configuring python-light.
    
    root@Omega-5BE1:/# opkg install yunbridge
    Installing yunbridge (160-f2042052115e71ad2c91f77e78d21db8275fcdd6) to root...
    Downloading http://downloads.openwrt.org/releases/18.06-SNAPSHOT/packages/mipsel_24kc/packages/yunbridge_160-f2042052115e71ad2c91f77e78d21db8275fcdd6_mipsel_24kc.ipk
    Installing python-ctypes (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-ctypes_2.7.15-4_mipsel_24kc.ipk
    Installing python-pydoc (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-pydoc_2.7.15-4_mipsel_24kc.ipk
    Installing python-multiprocessing (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-multiprocessing_2.7.15-4_mipsel_24kc.ipk
    Installing python-logging (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-logging_2.7.15-4_mipsel_24kc.ipk
    Installing python-codecs (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-codecs_2.7.15-4_mipsel_24kc.ipk
    Installing libsqlite3 (3260000-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/libsqlite3_3260000-4_mipsel_24kc.ipk
    Installing python-sqlite3 (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-sqlite3_2.7.15-4_mipsel_24kc.ipk
    Installing libgdbm (1.11-1) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/libgdbm_1.11-1_mipsel_24kc.ipk
    Installing python-gdbm (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-gdbm_2.7.15-4_mipsel_24kc.ipk
    Installing python-email (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-email_2.7.15-4_mipsel_24kc.ipk
    Installing python-distutils (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-distutils_2.7.15-4_mipsel_24kc.ipk
    Installing python-openssl (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-openssl_2.7.15-4_mipsel_24kc.ipk
    Installing python-xml (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-xml_2.7.15-4_mipsel_24kc.ipk
    Installing python-compiler (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-compiler_2.7.15-4_mipsel_24kc.ipk
    Installing libxml2 (2.9.9-1) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/libxml2_2.9.9-1_mipsel_24kc.ipk
    Installing libdb47 (4.7.25.4.NC-5) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/libdb47_4.7.25.4.NC-5_mipsel_24kc.ipk
    Installing python-db (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-db_2.7.15-4_mipsel_24kc.ipk
    Installing python-decimal (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-decimal_2.7.15-4_mipsel_24kc.ipk
    Installing python-unittest (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-unittest_2.7.15-4_mipsel_24kc.ipk
    Installing python-ncurses (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python-ncurses_2.7.15-4_mipsel_24kc.ipk
    Installing python (2.7.15-4) to root...
    Downloading http://repo.onioniot.com/omega2/packages/packages/python_2.7.15-4_mipsel_24kc.ipk
    Configuring python-codecs.
    Configuring libxml2.
    Configuring libdb47.
    Configuring python-db.
    Configuring python-decimal.
    Configuring python-distutils.
    Configuring python-pydoc.
    Configuring python-ctypes.
    Configuring python-multiprocessing.
    Configuring python-logging.
    Configuring libsqlite3.
    Configuring python-sqlite3.
    Configuring libgdbm.
    Configuring python-gdbm.
    Configuring python-email.
    Configuring python-openssl.
    Configuring python-xml.
    Configuring python-compiler.
    Configuring python-unittest.
    Configuring python-ncurses.
    Configuring python.
    Configuring yunbridge.
    
    root@Omega-5BE1:/# uci set yunbridge.config.disabled='0'
    root@Omega-5BE1:/# uci commit yunbridge
    
    root@Omega-5BE1:/# uci show yunbridge
    yunbridge.config=bridge
    yunbridge.config.socket_timeout='5'
    yunbridge.config.secure_rest_api='false'
    yunbridge.config.disabled='0'
    
    root@Omega-5BE1:/# reboot
    
    

    Good luck!



  • Thanks, something better now.
    In the processes of doing, i found my omega2 not responding properly.
    so i followed this "https://docs.onion.io/omega2-docs/manual-firmware-installation.html"
    and flashed omega2 with b227 firmware.

    After doing all the steps successfully, and booting back i installed python and yunbridge as you described all good done.

    After that i found new small problem. My laptop and omega2 is on same wifi network, but "omega-CF2D.local" not working which was previously working.

    0_1563789653022_ea788899-dd00-4827-aad7-e5064070687b-image.png

    and also on arduino i can't see the omega2 IP under IDE port option. Which was coming earlier.

    what can be the problem, i am not able to test yunbridge.



  • @Suman-kumar-Jha If I understand well now you have a new (a pre) project - you want to try your original project using an "Arduino UNO" (ie. an Arduino Dock R2) instead of a Zero and an Omega2 instead of an Omega2+.

    something better now

    What did you do previously? Did you change some settings? What was good and what was wrong?


    You thought a manual firmware upgrade to b227 helps but you have new problems.

    i am not able to test yunbridge

    You should make a clean system (Factory Restore) with a long OMEGA_RESET button press or with these command:
    firstboot -y
    reboot
    and repeat the Initial Setup process again.

    If your system will be OK (hostname, Omega-CF2D.local, IP address, Arduino IDE settings, etc.) then install python and yunbridge.
    (Formerly I supposed that python-light is enough but I was wrong.)

    Before you enable yunbridge with uci set yunbridge.config.disabled='0' you should look through each related file.
    I thought it's an obvious step because the Linkit Smart 7688 is slightly different from Omega2+ and the Linkit Smart 7688 Duo (or the Arduino Yún) differs from the Arduino Dock R2 & Omega2+ combo.
    Please let us know what settings should be modify according to you.



  • Sorry my mistake, let me clear.
    My project is on omega2+ and SAMD21 only, but as my local distributor was not having stock Omega2+ so i purchased Omega2 only. I guess apart from memory size there no other difference between Omega2 and Omega2+. Right ?

    Till now i tried your suggestion on Omega2 itself.

    And regarding arduino, as you said you don't have Arduino Zero. So i messaged you that if you can help me to bring yunbridge working on arduino uno then i will try to find some solution by myself for Arduino zero.

    Is my problem statement clear now?

    I have one question. I had sent you before my omega2 console photo. why its seems a lot different from the tutorial which i followed. There is no features, "settings" option is not there. Am i running right firmware and hardware ? Please let me know.

    You should make a clean system (Factory Restore) with a long OMEGA_RESET button press or with these command:
    firstboot -y
    reboot
    and repeat the Initial Setup process again.
    Thanks, but I had tried this before putting message to you

    Before you enable yunbridge with uci set yunbridge.config.disabled='0' you should look through each related file. Which files plz can you explain

    I thought it's an obvious step because the Linkit Smart 7688 is slightly different from Omega2+ and the Linkit Smart 7688 Duo (or the Arduino yun) differs from the Arduino Dock R2 & Omega2+ combo.

    Can you explain what is the difference, in hardware perspective i found same (Omega2+ and Linkit Smart 7688).



  • Hi György Farkas
    Please response



  • Hi
    Are you there, I am waiting for the response.
    Kindly response anyone



  • @Suman-kumar-Jha I've lost the thread.

    You installed the 'yunbridge' package and wrote:
    Thanks, something better now.

    I questioned:
    What did you do previously? Did you change some settings? What was good and what was wrong?

    No answer.

    You upgraded to b227 manually and wrote:
    After that i found new small problem.

    I wrote
    You should make a clean system (Factory Restore) ... and repeat the Initial Setup process again.
    ...
    If your system will be OK...

    You wrote:
    Thanks, but I had tried this before putting message to you

    Does it mean that your test arrangement (the whole HW, each SW and Omega2's firmware,) worked well before you installed and enabled 'yunbridge' again?



  • *After doing all the steps successfully, and booting back i installed python and yunbridge as you described all good done.

    After that i found new small problem. My laptop and omega2 is on same wifi network, but "omega-CF2D.local" not working which was previously working.*

    Above was my statement. For me YUN bridge never worked till now. And about above problem, i figured out what was the reason. Actually after i flashed firmware i forgot to reinstall omega arduino dock package.

    Then i re-installed omega dock on arduino ide. Now omega-CF2D.local is working in browser and also arduino ide is detecting Omega2.

    Coming to the topic, YUN bridge. You said (Formerly I supposed that python-light is enough but I was wrong.) What does mean, python light will not work? Should i install full python?

    Also while trying YUN Bridge Console read, i felt omega dock is not communicating with Omega2.
    on putty ssh
    I am getting always
    root@Omega-CF2D:~# telnet localhost 6571
    telnet: can't connect to remote host (127.0.0.1): Connection refused

    On which UART, Omega2 is interfaced with dock ?
    Also on Omega2 side what is default baudrate for YUN bridge?

    I had used this firmware

    *#include <Bridge.h>
    #include <Console.h>

    SerialBridgeClass myBridge(Serial);

    String name;

    void setup() {
    // Initialize Console and wait for port to open:
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);
    myBridge.begin();
    ConsoleClass(myBridge);
    Console.begin();
    // Wait for Console port to connect
    while (!Console);
    digitalWrite(13, LOW);
    Console.println("Hi, what's your name?");
    }

    void loop() {
    if (Console.available() > 0) {
    char c = Console.read(); // read the next char received
    // look for the newline character, this is the last character in the string
    if (c == '\n') {
    //print text with the name received
    Console.print("Hi ");
    Console.print(name);
    Console.println("! Nice to meet you!");
    Console.println();
    // Ask again for name and clear the old name
    Console.println("Hi, what's your name?");
    name = ""; // clear the name string
    } else { // if the buffer is empty Cosole.read() returns -1
    name += c; // append the read char from Console to the name string
    }
    } else {
    delay(100);
    }
    }*

    please response soon?



  • Hi György Farkas
    Will Omega2 will support Arduino YUN official firmware ?



  • Hi György Farkas
    Please response



  • @Suman-kumar-Jha I don't have an Arduino Yún. Sadly I don't know its official firmware. So I don't know that Omega2 is or isn't able to support the official firmware of Arduino Yún.



Looks like your connection to Community was lost, please wait while we try to reconnect.