GoPlus2 Module and Core2 for AWS

  • Have you tried setting the correct servo port and selecting the correct GOplus?
    The Core2 uses a goplus2

  • @felmue I have the servo in the port with a small 2, the LED between the servos is green, I've measured 5V between G and V but when I connect a oscilloscope beween S and G there's no trace of PWM.

    I'm using GoPlus2 (big label on the side) and program is very simple:

    MD5 is as follows (can't attach)

    {"components":[{"id":"_coretwoscreen","createTime":1637687096589,"name":"screen","x":0,"y":0,"width":320,"height":240,"backgroundColor":"#000000","backgroundImage":"","type":"screen"},{"id":"____buttonA","createTime":1637687096589,"name":"ButtonA","buttonIndex":0,"x":35,"y":216,"width":64,"height":24,"text":"ButtonA","visibility":false,"type":"button"},{"id":"____buttonB","createTime":1637687096589,"name":"ButtonB","buttonIndex":1,"x":125,"y":216,"width":64,"height":24,"text":"ButtonB","visibility":false,"type":"button"},{"id":"___buttonC","createTime":1637687096589,"name":"ButtonC","buttonIndex":2,"x":215,"y":216,"width":64,"height":24,"text":"ButtonC","visibility":false,"type":"button"},{"id":"vQLJe4OCV%u2m-f","createTime":1637687307599,"isCoreTwo":true,"isPaper":false,"name":"label1","x":129,"y":42,"color":"#ffffff","text":"Text","font":"FONT_MONT_24","rotation":0,"type":"label","layer":8}],"type":"core2","versions":"Beta","units":[],"hats":[],"blockly":"<variables><variable id="L_m|(4}/9eWO:%!NisHe">i</variable></variables><block type="basic_on_setup" id="setup_block" deletable="false" x="70" y="30"><next><block type="go_plus2_set_servo_angle" id="m}D:c{KG33R]}RXg1/V\"><field name=\"list\">S2</field><value name=\"angle\"><shadow type=\"math_number\" id=\"QsGvi0lK/)FFALXIgOSL\"><field name=\"NUM\">0</field></shadow></value><next><block type=\"variables_set\" id=\"QZp~!Wkrc;aad.O7:mD"><field name="VAR" id="L_m|(4}/9eWO:%!NisHe">i</field><value name="VALUE"><block type="math_number" id=")Fa9}swif6+wjRJ]zZYg"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="lDZ^V=;B;ktf51})gG,Q"><field name="MODE">WHILE</field><value name="BOOL"><block type="logic_boolean" id="#e+UDjF=ZP*_zKi|A1=3"><field name="BOOL">TRUE</field></block></value><statement name="DO"><block type="math_change" id="|S}G[^R}eHN.HYtHq[PZ"><field name="VAR" id="L_m|(4}/9eWO:%!NisHe">i</field><value name="DELTA"><shadow type="math_number" id="V0Fr*{8Z(!@2BAW2T7:"><field name="NUM">1</field></shadow></value><next><block type="label_set_text" id="mJLH;9Yi#NH=3Fox_c#\"><field name=\"COMPONENT\">label1</field><value name=\"TEXT\"><shadow type=\"text\" id=\"g45]+A0%b)o%xK1=NsPX\"><field name=\"TEXT\">Hello M5</field></shadow><block type=\"convent_str\" id=\"]uOw~L$C7g1h(|:j^vV|\"><value name=\"VALUE\"><block type=\"variables_get\" id=\"h2=+o(mniB8nLZx9Fmr?\"><field name=\"VAR\" id=\"L_m|(4}/9eWO:%!NisHe\">i</field></block></value></block></value><next><block type=\"timer_delay_ms\" id=\"7*S;$=2$ElNesD2!Ng?8\"><value name=\"DELAY\"><shadow type=\"math_number\" id=\"DNPc@Zz]lRaKD5tCPwW"><field name="NUM">500</field></shadow></value><next><block type="go_plus2_set_servo_angle" id="+(McF$E6N3Xp!P4LQZQ\"><field name=\"list\">S2</field><value name=\"angle\"><shadow type=\"math_number\" id=\"{^B~OEG$3uVL{6Q?hA"><field name="NUM">0</field></shadow><block type="variables_get" id="}!?c}vLh:jNJMG_DzWx7"><field name="VAR" id="L_m|(4}/9eWO:%!NisHe">i</field></block></value><next><block type="controls_if" id="kl1FQ4?cRAS_n[%z6M(x"><value name="IF0"><block type="logic_compare" id=".CHpi]qAHlMRug5/kIXZ"><field name="OP">EQ</field><value name="A"><block type="variables_get" id="VE}}%{K640JGp~8o|ycr"><field name="VAR" id="L_m|(4}/9eWO:%!NisHe">i</field></block></value><value name="B"><block type="math_number" id="v7n}ps)KNXK(6in~6op!"><field name="NUM">180</field></block></value></block></value><statement name="DO0"><block type="variables_set" id="WobrJJD*K?SIveZ9SVWM"><field name="VAR" id="L_m|(4}/9eWO:%!NisHe">i</field><value name="VALUE"><block type="math_number" id="kov:[v~_vn=Kj7imf7;3"><field name="NUM">0</field></block></value><next><block type="timer_delay_ms" id="lG5Q^c;@:H=;`},HDqs="><value name="DELAY"><shadow type="math_number" id="FUtp2)JEwql6hgOs1{(."><field name="NUM">1000</field></shadow></value></block></next></block></statement></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block>","Blockly.Remotes":[],"Blockly.RemotePlus":[{"id":"__title","blockId":"","createTime":1637920356349,"name":"M5RemoteTitle","dragAndDrop":false,"resizable":false,"options":{"minWidth":1,"minHeight":1,"maxWidth":6,"maxHeight":10,"defaultWidth":2,"defaultHeight":1},"w":2,"h":1,"bgColor":"#0080FF","color":"#fff","fontsize":"M","label":"M5Remote","type":"title","x":0,"y":0}],"modules":[]}

  • @ajb2k3 Tested all 4 ports, no PWM signal on any of them. All of them have 5V power.

  • Hello @ciconde

    I've tried your code with UIFlow 1.8.7 and my M5Core2 (firmware 1.8.7) and M5GoPlus2 and it works as expected.

    Did you make sure your M5Core2 and M5GoPlus2 are firmly stacked together? Sometimes the modul's pins are a tad short and maybe not all of them make proper contact. The only other thing at this point I can think of is defective hardware.


    P.S. I had to rebuild your code from the picture as the 'file' you posted couldn't be read by UIFlow properly.

  • Hello @ciconde

    ok, I think I found the real reason it might or might not work. The M5GoPlus2 uses the same I2C address (0x38) as the touch screen in the M5Core2.

    That also explains as to why for me when I use servo output 1 the touch screen stops working. See thread here.

    In other words the M5GoPlus2 module is not really compatible with the M5Core2.


  • @felmue @m5stack Is this issue a compatibility problem without solution? This is big as nothing in the GoPlus2 product points it's compatible only with some of the cores...

    Shall I assume I don't have any solution?

    @m5stack can I change GoPlus2 address to avoid this problem?

  • Hello @ciconde

    I don't know for sure, but I don't think you can change the I2C address of the GoPlus2. We had this discussion before in this thread. It seem like the GoPlus2 firmware is not re-programmable and there are no provisions (like dip switches) to change the I2C address.

    BTW: I've read through the touch IC datasheet, but I have not found anything which would allow to change its I2C address.

    BTW: I think M5Stack knows about this issue (same I2C address) as for M5Core2 there is no GoPlus2 Arduino example in github (only for M5Stack devices).


  • @felmue M5stack store just confirmed the incompatibility:

    In the GoPlus2 product page:

  • Hello @ciconde

    ok, thank you for letting us know.

    Where exactly did you find the GoPlus2 product page which lists this crucial information, e.g. Compatible With? I don't see this information neither here nor here. What am I missing?


  • @ciconde I have an M5Stack Core2 AWS working with the GoPlus2. I'm using Arduino not the UIflow. The issue I worked around was that the Wire Bus there are two I2C buses on the Core2. The demo code is set for Wire.begin() which is the wrong bus for the Core2. I changed the code in my copy of GoPlus2.cpp which was on GitHub and changed all references of Wire to Wire1 although to make it easy to swap it back I made a #define WIRE Wire1 and replaced all the Wire.function with WIRE.function. For example WIRE.begin() or WIRE.write(angle).
    I've tested this with 9 volts into the GoPlus2, running two different 180 degree servos.

  • Hello @Hyperspherical

    just curious. Are you using the touch screen in your project? If so, does it still work?


  • @felmue There's no exact information on compatibility in your links.

    I found problems, then contacted directly M5 and they explained that Core2 and GoPlus2 are not compatible in a direct message.

    Hope this thread helps next people.

    BTW, I bought a new Core Gray device (Core1, not Core 2) but still GoPlus2 is not recognized.
    I'm starting to think I'll never make it work... :'(