I Wanted To Love This -- But It Has Problems - HELP!!!
For Soldered Inkplate 6COLOR with enclosure & battery
I'm totally willing to edit this review if this product becomes usable -- which it is not as of June 6th, 2023. Let me elaborate:
Here's things that went just fine:
1.) Flashing the firmware - no problem, however the documentation reccos an older image that what is available on micropython.org (Ref: https://github.com/SolderedElectronics/Inkplate-micropython says use esp32spiram-20220117-v1.18.bin, but there is also a newer v1.20 -- Also, for completeness I've also tried ESP32Generic, which made no difference.)
2.) Getting WEBRPL (the command prompt for micropython loaded and running) - This requires connecting via the proper port, in windows its one of the COM ports at a rate of 115200, 8bit, NoParity, 1 stop bit, no flow control.
3.) Copying over the files needed to the device - this was achieved by using pyboard - python pyboard.py --device COM7 -f cp < filenames > : (You may have to do this more than once after the initial flash to get this to work properly.)
All well and good, right? Nope.
Lets try mounting a microSD card, which is needed since the library/module that soldered inkplate uses requires it.
From the WEBREPL prompt: (After doing a soft-reboot by sending Ctrl+D)
MPY: soft reboot
MicroPython v1.19.1-332-g09879f99c on 2022-08-26; ESP32 module with ESP32
Type "help()" for more information.
import machine
sd=machine.SDCard()
sd.info()
Generates the error: sdmmc_io_reset: unexpected return: 0x108
The expected response for this should be something like: (1977614336, 512)
Okay, lets try to do a basic mount:
import os
import machine
sd=machine.SDCard()
os.mount(sd, '/sd')
Generates the error: -259, ESP_ERR_INVALID_STATE
Oh, so maybe I have the pinouts wrong -- so lets look at how soldered_inkplate6.py does it:
(after importing the same as above)
os.mount(SDCard(slot=3, miso=Pin(12), mosi=Pin(13), sck=Pin(14), cs=Pin(15)), "/sd") <-- taken directly from the source
Generates the error: sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
Oh, lets try an alternate method where you just specify the Pin number without using Pin():
os.mount(SDCard(slot=3, miso=12, mosi=13, sck=14, cs=15), "/sd")
Generates the error: sdspi_host: Bus already initialized. Call `sdspi_host_init_dev` to attach an sdspi device to an initialized bus.
Okay, lets deinitialize the bus then before calling the mount command using sd.deinit()
Generates the error: -259, ESP_ERR_INVALID_STATE
(Just in case you were wondering, machine.SDCard only has the attributes of -- 'deinit', 'info', 'ioctl', 'readblocks', 'writeblocks' to do things)
This is all using a brand-name microSD card that is mountable under other operating systems. The partition size tried was 32GB, and then 8GB formatted with FAT32. There's absolutely zero reason this should fail on this board.
So now, I'm stuck with three displays that I can't do anything with until the SD Card mounting issue is solved. HELP PLEASE, I've done my research to the best of my limited ability and I'm not turning up how to solve this.
Response from Soldered Electronics | Aug. 13, 2023
Hi Tomothy,
Sorry to hear you're experiencing these issues and of course we'd be happy to help you get things working.
We reccomend using the version of micropython which comes with the repository, as the whole library was developed on that version and due to possible changes we can't garauntee that it will be fully compatible with newer versions.
The code you wrote to initialise the SD card seems to me to not follow the example which we wrote for the SD card. Please have a look at examples/Soldered_Inkplate6/exampleSd.py.
Here, you can see that to access the SD card you use the Inkplate class. Here's all the code which you need to draw an image titled "1.bmp" from the SD card (in grayscale):
display = Inkplate(Inkplate.INKPLATE_2BIT)
display.begin()
# SD Card must be initialised with this function
display.initSDCard()
# Draw the image titled "1.bmp"
display.drawImageFile(0, 0, "sd/1.bmp")
display.display()
The drawing of the image to the image buffer may take a while because it's in micropython (Arduino is much faster for this) but it shouldn't throw an error and it should draw the image. I've personally tested this recently.
Please give it a try using these functions, if it doesn't work, try uploading exampleSd.py to your Inkplate just like how we show in the README (follow all the steps precisely) - if that doesn't work, there is something wrong and we'll look into it. For now, give this a try and let us know of the results. You can contact us back via: https://soldered.com/contact/
-Rob from tech support