AmiiboLink / AmiLoop

Posted on
Page
of 2
Prev
/ 2
  • Ah! No wonder I thought the battery went flat so fast. Thanks for the piezo hint (I tried playing a beep when the button was pressed but I reset the pin after the button is depressed).

  • Wow, it's surprising about the piezo - my understanding was that they didn't actually draw much power at a voltage... that they were more like capacitors where the change of voltage took power.

    Maybe something is shorted on your device? I guess there may also be a resonant frequency where the piezo actually makes a decent amount of noise.

    So just to be clear, you actually bought https://www.aliexpress.com/item/10050057­26070115.html and that's what is in the picture above? Looks like a total bargain.

  • So just to be clear, you actually bought https://www.aliexpress.com/item/10050057­26070115.html and that's what is in the picture above?

    Yes, exactly. Getting two with untracked shipping would be $9.75 total including VAT and shipping for me. I actually got three with tracked shipping so it was $5.6 a piece :-)

    Yes 32mA looks like short, maybe the battery cannot give much more than that, not sure what the wiring can be to work like that.

  • not sure what the wiring can be to work like that

    it is GND -> some transistor/FET marked Y2, switched by pin D14 -> one side of piezo -> 12ohm piezo/speaker -> 10ohm resistor -> VCC

    so 22 ohm in total between VCC and GND when D14 is low (more precisely 22 ohm between VCC and top of the FET)

    That is a bit strange because I=U/R = 3/22 ~= 136mA but I guess that battery cannot give more so the rest is internal resistance of battery

    EDIT: attached picture - red are both sides of the speaker, R is 10 ohm resistor, V is VCC, G is GND


    1 Attachment

    • speaker.PNG
  • So it is not piezo but something called magnetic buzzer, matches this picture and description https://www.aliexpress.com/item/16495709­62.html

    EDIT: or this https://www.quartz1.com/price/techdata/V­S5030B.pdf

  • I tried to replace this magnetic buzzer by piezo but it does not work, it makes no sound, found explanation here https://www.murata.com/en-eu/support/faq­s/sound/sounder/char/sch0007 - "You cannot produce a sound from a piezoelectric sounder by simply replacing an electromagnetic buzzer with a piezoelectric sounder in this circuit."

    I also found another buzzer from similar cheap tracker tag and that one is 15ohm and is much louder. sadly it is also quite a bit bigger so won't fit inside. It looks like this one https://www.aliexpress.com/i/10050050472­43506.html

    Anyway the one on the board posted by parasquid is still not that bad, the other boards have the 10 ohm resistor replaced by higher values and those are more quiet. Also I don't see diode there.

    As for the SPI flash pinout on the cheap NFCBoxLink ones I got last time - it really matches USON-8 package - VCC,GND,/WP,/HOLD pins are all in correct place and VCC, GND are connected. It is same SPI flash package as used on Raspberry Pico board - found 2MB chips here https://www.aliexpress.com/item/10050043­79141351.html - will try to kill at least one NFCBoxLink board by adding it via reflowing by hot air. It is not that much useful there, I know, but still :-)

  • found 2MB chips here https://www.aliexpress.com/item/10050043­79141351.html - will try to kill at least one NFCBoxLink board by adding it via reflowing by hot air. It is not that much useful there, I know, but still :-)

    So I got couple of those W25Q16JVUXIQ USON-8 2x3mm flash chips from that aliexpress shop and tried one with this Amiibo board and it works :-)

    >var sf=new SPI(); // SPI flash
    =SPI: {  }
    >var FCS=D19;FCS.write(1);
    =undefined
    >sf.setup({sck:D12,mosi:D11,miso:D18,mod­e:3});
    =undefined
    >sf.send([0xab],FCS);
    =new Uint8Array(1)
    >print(sf.send([0x9f,0,0,0],FCS))
    new Uint8Array([255, 239, 64, 21])
    =undefined
    

    Got flash ID from the chip - 239, 64, 21 = 2MB winbond flash :-)

    Photos here https://ibb.co/album/yhhkwZ, left = modified board with W25Q16JVUXIQ added (I also previously removed buzzer, was trying to add piezo or something else), right another original board with no modification

    Still, it is probably not that much useful, but I simply wanted to try :-)
    It was first test of hot air gun I got recently https://www.aliexpress.com/item/40005252­51154.html
    Never did this before. It worked 3rd time. First it looked OK but I got no response over SPI, on 2nd try it got worse and moved in wrong way, third time I added more flux realigned and it works now :-) I did not add pull up resistors to WP and HOLD but seems to work without it (did not try writing yet).

    EDIT: and BTW the shop lowered the price even more https://www.aliexpress.com/item/10050055­71264919.html I see it as US $2.70 including VAT. Ordered another two pieces with $2.77 aliexpress saver shipping so it was total US $8.17 including shipping for two = about $4 for one :-) let's see if I really get it with this untracked shipping.

  • Nice work! I bought some in April and got fake ones..... Will check for a dealer that ships to Germany.

  • and got fake ones.

    Oh, bad luck. All I got were good nrf52832, no issues at all.
    First I ordered
    https://www.aliexpress.com/item/10050058­45252482.html , https://www.aliexpress.com/item/10050058­29460356.html and
    https://www.aliexpress.com/item/10050058­20599424.html one was different board than the other two, these were relatively expensive - about $9 including shipping. Then I got few more of this third variant with empty SPI flash pads - current link in previous post, these were cheaper.

    Now I have 3 flashed with Espruino, each board different variant, and also got couple of spare unused ones of the third variant - could send you some to Germany if you don't find good seller. Only one variant has buzzer that is actually audible from a distance, the rest is very quiet so the buzzer is mostly worthless - maybe good as a feedback that you clicked the button but the microswitch click is good enough for that too. Or maybe as a feedback that NFC communication started but when using the phone it already vibrates for that.

  • @fanoush - just send you a privat message.

  • I did not add pull up resistors to WP and HOLD but seems to work without it (did not try writing yet).

    Just a followup - I found out that I bought W25Q16JVUXIQ where the last Q means it is permanently in Quad SPI mode after reset and this mode cannot be cleared. However normal SPI commands still work in this mode so it is OK, the only difference is that /WP and /HOLD pins are data pins and its classic functionality is disabled which is actually good for me as those pins are floating (in theory it is even possible to wire them from unpopulated pull up resistor pads to some nrf pins to have quad mode working but it is not worth it)

    So everything should work as floating WP or HOLD would not interfere with writes however I could not make writes work with software SPI! All other SPI commands worked - getting ids , putting in and out of sleep, reading unique 64bit id, reading all 3 status registers, write enable (0x6) (the WE bit in status register is set), even the writing or erase command (0x2, 0x20) would clear the WE bit in status register but the data did not change. Checked various flash protection bits and everything was disabled as it should be by default according to datasheet but still nothing.

    So I built 2MB SPI flash storage area into the firmware by adding

      'NFC': { 'pin_a':'D9', 'pin_b':'D10' },
      'SPIFLASH' : {
                'pin_cs' : 'D19',
                'pin_sck' : 'D12',
                'pin_mosi' : 'D11',
                'pin_miso' : 'D18',
                'size' : 2048*1024, # 2MB
                'memmap_base' : 0x60000000,
      }
    

    and the espruino code did not work too

    >var f=require("Flash")
    =function () { [native code] }
    >f.getFree()
    =[
      { addr: 364544, length: 4096 },
      { addr: 1610612736, length: 2097152 }
     ]
    >f.read(8,0x60000000)
    =new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255])
    >f.write([1,2,3,4,5,6,7,8],0x60000000)
    FW addr 0x00000000 fail
    Status 0
    =undefined
    >f.write([1,2,3,4,5,6,7,8],0x60010000)
    FW addr 0x00010000 fail
    Status 0
    =undefined
    >f.write([1,2,3,4,5,6,7,8],0x60100000)
    FW addr 0x00100000 fail
    Status 0
    =undefined
    >f.read(8,0x60000000)
    =new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255])
    

    So I enabled hardware SPI in the build and tried that

    var sf=SPI1;//new SPI();
    var FCS=D19;FCS.write(1);
    sf.setup({sck:D12,mosi:D11,miso:D18,baud­:80000000,mode:3}); 
    

    and suddenly everything worked. The very same lines now started to work, I even saw for the first time the busy bit set in status register when erasing

    >sf.send([0x6],FCS);sf.send([0x20,0,0,0]­,FCS);sf.send([0x5,0,0,0],FCS)
    =new Uint8Array([255, 3, 3, 3])
    >sf.send([0x5,0,0,0,0,0,0,0,0,0,0,0],FCS­)
    =new Uint8Array([255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
    >sf.send([0x6],FCS);sf.send([0x2,0,0,0,1­,2,3,4,5,6,7,8,9,10],FCS);sf.send([0x5,0­,0,0],FCS)
    =new Uint8Array([255, 0, 0, 0])
    >sf.send([0x3,0,0,0,0,0,0,0,0,0,0,0],FCS­)
    =new Uint8Array([0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8])
    

    And what is interesting is that since then also the software serial and the builtin espruino flash storage started to work - I could erase again and write different data and it all works now.

    So not sure what really happened. Did not try removing battery yet if it breaks again, will try.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

AmiiboLink / AmiLoop

Posted by Avatar for DanTheMan827 @DanTheMan827

Actions