Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
35f9ace
Update README.md
BornaBiro Jul 2, 2024
e02f71b
Update library.properties
BornaBiro Jul 2, 2024
d184353
Update esp32SpiAt.cpp
BornaBiro Jul 2, 2024
c9e0d44
Example folder structure has changed.
BornaBiro Jul 2, 2024
23834d8
SHTC3 added, added automatic full update after partial update, debug …
BornaBiro Jul 3, 2024
1daf272
Update Inkplate_6_Motion_SHTC3.ino
BornaBiro Jul 3, 2024
0732739
Added APDS9960 support and examples, fixed SHTC3.
BornaBiro Jul 4, 2024
7645b00
Added support for LSM6DS3, swapped axes to accommodate LSM6DS3 positi…
BornaBiro Jul 4, 2024
aa287e7
SdFat added and kinda works.
BornaBiro Jul 8, 2024
e7b84ca
Added fully microSD support, added peripheral disable and enable, add…
BornaBiro Jul 9, 2024
f9319a7
Added RAM backup example in the Deep Sleep Example.
BornaBiro Jul 10, 2024
16227cc
Deep sleep example fix.
BornaBiro Jul 10, 2024
e51ff5a
Added WiFi example
rsoric Jul 22, 2024
c2ff37b
Fixed typo
rsoric Jul 22, 2024
1a97d78
Added support for 4 bit partial update (ebook reader like partial upd…
BornaBiro Jul 23, 2024
4c0e611
More partial update waveform tweaks.
BornaBiro Jul 25, 2024
5195e70
Added some sensor examples
rsoric Jul 26, 2024
047b59b
Updated interrupts example for gesture sensor
rsoric Jul 26, 2024
1ccdfcd
drawBitmap4Bit() added back to the library.
BornaBiro Jul 26, 2024
cd27e40
Merge branch 'dev' of https://github.com/SolderedElectronics/Inkplate…
BornaBiro Jul 26, 2024
dabf0e2
Partial update 4 bit fixes.
BornaBiro Aug 6, 2024
27fa34f
Optimized driver for Inkplate 6 Motion.
BornaBiro Aug 7, 2024
79e589f
Added optimized 1 bit update, fixed bug in pixelsUpdate() method, add…
BornaBiro Aug 8, 2024
0556fef
Small timing fiexes, typos, ESP32 WiFi extern removal.
BornaBiro Aug 8, 2024
673d1e3
Clean-up all files, fixed timings, doxy.
BornaBiro Sep 17, 2024
bc819e7
More doxy and Inkplate name change.
BornaBiro Sep 18, 2024
0c7fb4d
More doxy!
BornaBiro Sep 18, 2024
4d2de57
Even more doxy!
BornaBiro Sep 18, 2024
91c722b
Headers added, filenames changed.
BornaBiro Sep 23, 2024
9a84a82
Added timings into waveforms, fixed compile fail. ToDo: add HQ wavefr…
BornaBiro Sep 23, 2024
fd1d1fd
Github is kinda broken, it added this files separately.
BornaBiro Sep 23, 2024
82a30dc
Added examples for waveform select, waveform select in the driver.
BornaBiro Sep 24, 2024
3296216
Folder name changed, fixed waveform bug (LUT calculation).
BornaBiro Sep 25, 2024
4479a3a
One ore waveform calculation fix, removed debug messages.
BornaBiro Sep 25, 2024
b8c09f4
Merge branch 'dev' into inkplate6motion4BitPartial
BornaBiro Sep 25, 2024
2b855c1
Merge pull request #1 from SolderedElectronics/inkplate6motion4BitPar…
BornaBiro Sep 25, 2024
45d4025
Added dev codes for JPG and BMP support.
BornaBiro Sep 26, 2024
4944cdd
Fixed JPG decoder crash?
BornaBiro Sep 30, 2024
21eb526
Fixed JPG and PNG decoder test codes.
BornaBiro Oct 1, 2024
27edc18
Removed debug code.
BornaBiro Oct 1, 2024
0030eae
Added BMP example, fixed JPG example.
BornaBiro Oct 1, 2024
4c7018b
Added Win file for bitmap decoder.
BornaBiro Oct 2, 2024
2b3c98e
Implementing writing pixels to the framebuffer.
BornaBiro Oct 3, 2024
a5528b3
16 bit and 24 bit done (needs testing).
BornaBiro Oct 8, 2024
6a0abe7
More test images, done 1bit, 4bit, 8bit mode. To-do: 32bit?
BornaBiro Oct 9, 2024
52be88d
More fixes on BMP and PNG.
BornaBiro Oct 9, 2024
bb1cfd3
More JPG and PNG fixes.
BornaBiro Oct 9, 2024
63f8850
Finished BMP library. To-Do: Implement in the library.
BornaBiro Oct 10, 2024
afb89fc
Removed comments.
BornaBiro Oct 10, 2024
f5bd7b3
Start implementing image decoder.
BornaBiro Oct 22, 2024
3e15667
Implemented BMP decoder in library. Still no correct image on the scr…
BornaBiro Oct 23, 2024
01e17c7
Added board check in ImageDecoder, added universal sessionHandler, fi…
BornaBiro Oct 24, 2024
8b0c43c
More optimizations, added JPG decoder but image is broken (has vertic…
BornaBiro Oct 24, 2024
5e7f859
Fixed JPG Decoder, added PNG decoder, tested PNG decoder.
BornaBiro Oct 25, 2024
193810c
Fixed PNG, added universal functions for decoders, removed pngle modi…
BornaBiro Oct 28, 2024
2fa2310
PNG fixes, more typos.
BornaBiro Oct 28, 2024
ded6f11
Started doxy.
BornaBiro Oct 28, 2024
c984048
Added null ptr checks, added doxy added headers into files.
BornaBiro Oct 29, 2024
23a134f
Load image from the buffer done, added examples.
BornaBiro Oct 29, 2024
35a515f
Examples for the Images from SD and from the buffer.
BornaBiro Oct 30, 2024
28770ca
Added test images.
BornaBiro Oct 30, 2024
320ade6
Merge pull request #2 from SolderedElectronics/imageSupport
BornaBiro Oct 30, 2024
9e0a75a
Implemented drawImageFromWeb and connected to draw()
rsoric Oct 30, 2024
245f408
Fixed example
rsoric Oct 31, 2024
2dca059
Merge pull request #3 from SolderedElectronics/imageSupportWeb
BornaBiro Nov 6, 2024
2ac00ba
Update Inkplate_6_Motion_WiFI_Command_Sender.ino
BornaBiro Nov 6, 2024
f39bd25
Merge pull request #4 from SolderedElectronics/imageSupportWeb
BornaBiro Nov 6, 2024
4e65f7d
saving progress
rsoric Nov 27, 2024
d930fcd
Saving progress
rsoric Nov 27, 2024
de9916c
Saving progress, almost done
rsoric Nov 28, 2024
926dd82
Update InkplateTest.cpp
rsoric Nov 29, 2024
efb169f
Saving progress on factory programming
rsoric Dec 3, 2024
c253ec6
Saving progress
rsoric Dec 5, 2024
8bbcfbc
Saving progress
rsoric Dec 8, 2024
b839a81
Added dither development code.
BornaBiro Dec 9, 2024
a6b1cea
Dither test code structured, fixed 1 bit mode (constrained pixel color).
BornaBiro Dec 9, 2024
bde94b7
Added everything to class, added multiple row buffering.
BornaBiro Dec 11, 2024
bdc17ea
Fixed dithering.
BornaBiro Dec 11, 2024
fe2bbc9
Dither fixed.
BornaBiro Dec 12, 2024
9ac3eb2
Update Inkplate_6_Motion_VCOM_Set.ino
rsoric Dec 16, 2024
d49cbe2
Sync.
BornaBiro Dec 17, 2024
d67b3c5
Added DMA transfers.
BornaBiro Dec 18, 2024
174fc9b
Added doxygen, removed unnecessary code.
BornaBiro Dec 18, 2024
4b5a3e5
Fully supported dithering.
BornaBiro Dec 19, 2024
d12a6a4
Fixed battery measurement issue.
BornaBiro Jan 7, 2025
b58d8e4
Merge pull request #6 from SolderedElectronics/ditherSupport
BornaBiro Jan 7, 2025
65060ef
Added image, added C code for imgToHex, library.properies update, tes…
BornaBiro Jan 7, 2025
80a04ff
Saving progress
rsoric Jan 13, 2025
3999038
Updated factory programming
rsoric Jan 15, 2025
f3d8539
Merge branch 'dev' into factoryProgramming
rsoric Jan 15, 2025
f674ae7
Merge pull request #7 from SolderedElectronics/factoryProgramming
rsoric Jan 15, 2025
371be9d
Merge pull request #8 from SolderedElectronics/imagesFromWebFixes
rsoric Jan 15, 2025
3485b77
Starting to add examples
rsoric Jan 15, 2025
d303a5c
Update Inkplate_6_Motion_WiFi_Simple.ino
rsoric Jan 15, 2025
bbe4e0d
Adding examples, fixing compile issues
rsoric Jan 16, 2025
e361d4c
Saving progress on examples
rsoric Jan 16, 2025
eb8d383
Added examples
rsoric Jan 16, 2025
5998154
Saving progress on examples
rsoric Jan 17, 2025
1879f0b
Finished examples
rsoric Jan 20, 2025
4b62968
Finished examples
rsoric Jan 20, 2025
59c0d11
Adding compile tests
rsoric Jan 20, 2025
e19c472
Committing clang-format changes
Jan 20, 2025
e36bacf
Update README.md
rsoric Jan 20, 2025
11c8430
Merge branch 'dev' of https://github.com/SolderedElectronics/Inkplate…
rsoric Jan 20, 2025
c8b700e
Committing clang-format changes
Jan 20, 2025
b1ccf08
Update compile.yml
rsoric Jan 20, 2025
44a3ba4
Merge branch 'dev' of https://github.com/SolderedElectronics/Inkplate…
rsoric Jan 20, 2025
c2eab8f
Update compile.yml
rsoric Jan 20, 2025
207bd64
Update compile.yml
rsoric Jan 20, 2025
108453e
Update compile.yml
rsoric Jan 20, 2025
a8908f7
Update compile.yml
rsoric Jan 20, 2025
cebd0a0
Update compile.yml
rsoric Jan 20, 2025
20ce6ab
Update compile.yml
rsoric Jan 20, 2025
da02b05
Update compile.yml
rsoric Jan 20, 2025
82b2e71
Update compile.yml
rsoric Jan 20, 2025
9b24dc1
Update compile.yml
rsoric Jan 20, 2025
34f5d02
Updated compile.yml
rsoric Jan 20, 2025
cf06fab
Updated readme and compile tests
rsoric Jan 20, 2025
e9823ae
Update library.properties
rsoric Jan 22, 2025
626c053
Changed folder for examples
rsoric Jan 22, 2025
bde112d
Create arduino_lint.yml
rsoric Jan 22, 2025
3e284c9
Fixed Arudino Lint
rsoric Jan 22, 2025
63f8d65
Merge branch 'dev' of https://github.com/SolderedElectronics/Inkplate…
rsoric Jan 22, 2025
2eefc9f
Merge branch 'main' into dev
rsoric Jan 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 16 additions & 0 deletions .github/workflows/arduino_lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Arduino Library Manager Compatibility

on: [push]

jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout dev branch
uses: actions/checkout@v3
- uses: arduino/arduino-lint-action@v1
with:
compliance: specification
project-type: library
library-manager: update
recursive: true
54 changes: 54 additions & 0 deletions .github/workflows/compile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Compile Examples

on:
push:
branches:
- dev

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
include:
- board:
fqbn: Inkplate_Motion:stm32:Inkplate6Motion
additional-sketch-paths: |
- examples

steps:
# Ensure Bash for compatibility
- name: Ensure Bash Shell
run: sudo ln -sf /bin/bash /bin/sh

# Checkout code
- name: Checkout
uses: actions/checkout@v3

# -----------------------------------
# Cache the Arduino packages folder
# -----------------------------------
- name: Cache Arduino dependencies
uses: actions/cache@v3
with:
path: ~/.arduino15
key: ${{ runner.os }}-arduino15-${{ hashFiles('**/*.ino', 'library.properties', 'library.json') }}
restore-keys: |
${{ runner.os }}-arduino15-

# Compile all examples
- name: Compile examples
uses: arduino/compile-sketches@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
platforms: |
- source-url: https://github.com/SolderedElectronics/Dasduino-Board-Definitions-for-Arduino-IDE/raw/master/package_Dasduino_Boards_index.json
name: Inkplate_Motion:stm32

fqbn: ${{ matrix.board.fqbn }}
libraries: |
- source-path: ./
- name: ArduinoJson
sketch-paths: |
${{ matrix.additional-sketch-paths }}
22 changes: 22 additions & 0 deletions .github/workflows/format.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Run clang-format Linter

on: [push]

jobs:
format:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: DoozyX/clang-format-lint-action@v0.18.2
with:
source: "./src"
exclude: "./src/libs"
extensions: "h,cpp,c,ino"
clangFormatVersion: 12
inplace: True
- uses: EndBug/add-and-commit@v4
with:
author_name: Clang Robot
author_email: robot@example.com
message: "Committing clang-format changes"
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.vscode/
build/
Build/
examples/.DS_Store
.DS_Store
100 changes: 78 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,100 @@
# Inkplate Motion Arduino Library

<p align="center">
<img src="https://raw.githubusercontent.com/SolderedElectronics/Inkplate-Motion-Arduino-Library/main/extras/images/Inkplate6Motion.jpg">
<img src="https://raw.githubusercontent.com/SolderedElectronics/Inkplate-Motion-Arduino-Library/main/extras/images/Inkplate6Motion.jpg" alt="Inkplate Motion">
</p>

All in one and ready to use Inkplate Motion Arduino Library. Use e-paper with one of the quickest refresh updates with user-frendly Arduino IDE. Draw text, shapes or image with just few lines on code!
All-in-one, ready-to-use **Inkplate Motion Arduino Library**! This library is specifically for our Inkplate MOTION series of development boards. Unlike the original Inkplate boards (which are based on ESP32), **Inkplate MOTION is based on STM32**.

# ⚠️This library is still in the development!⚠️
Enjoy fast e-paper refresh rates in a user-friendly Arduino IDE. Draw text, shapes, and images; fetch data via Wi-Fi; and use any number of peripherals with just a few lines of code! ⚡

## Getting started
1. Install Inkplate Motion Board Definition though [Dasduino Board Definition](https://github.com/SolderedElectronics/Dasduino-Board-Definitions-for-Arduino-IDE). Select Inklplate Motion board.
2. If you aren't using macOS install CH340 drivers (in case you don't have them yet) - instructions [here](https://soldered.com/learn/ch340-driver-installation-croduino-basic3-nova2/)
3. Get the STM32CubeProgrammer from [STMicroelectronics](https://www.st.com/en/development-tools/stm32cubeprog.html). It's needed to for programming Inkplate Motion STM32 MCU.
4. Get the library by downloading it from here or by using ~Arduino Library Manager~
5. Open Inkplate Motion example and run them on Inkplate Motion!
---

ℹ**NOTE**ℹ
In order to be able to upload the program to the Inkplate Motion with the USB, put Inkplate Motion in programming mode by pressing PROGRAMMING BUTTON. If you have Inkplate with the case, open the case, you will find the tool for pressing programming button with case closed.
## ⚠️ Note: This library is brand new!

## Code examples
There are many examples in the library that you demonstrate how to use any of the Inkplate functionality. Use Basic folder to get familiar with principles of using the Inkplate, such as modes (BW and Gray), how to write graphics and text. In Advanced folder, you'll learn how to make HTTP/HTTPS requests, utilise low power, use SD card, read RTC, etc. Finally, get easily started on some projects. Examples and projects are added regularly by us or from community contributions. There is also a diagnostics folder with all tools for more advanced users (such as VCOM programming, waveform selection, etc).
As we roll out our first Inkplate MOTION board, Inkplate 6 MOTION, this is the first time this library is available to the public. In the spirit of our open-source approach, **we welcome your feedback and contributions**. Please feel free to open a GitHub issue in this repository if you need more info on how to implement a feature or if you spot a software bug. 🐛

## Battery power
---

Inkplate boards has two options for powering it. First one is obvious - USB port at side of the board. Just plug any micro USB cable and you are good to go. Second option is battery. Supported batteries are standard Li-Ion/Li-Poly batteries with 3.7V nominal voltage. Connector for the battery is standard 2.00mm pitch JST connector. The onboard charger will charge the battery with 500mA when USB is plugged at the same time. You can use battery of any size or capacity if you don't have a enclosure (but mind the current capability of the baterry since Inkplate Motion can draw quite bit of current while refreshing the screen). If you are using our enclosure, battery size shouldn't exceed 90mm x 40mm (3.5 x 1.57 inch) and 5mm (0.19 inch) in height. [This battery](https://soldered.com/product/li-ion-battery-1200mah-3-7v/) is good fit for the Inkplate. Also, Inkplate's hardware is specially optimized for low power consumption in deep sleep mode, making it extremely suitable for battery applications.
## Documentation

For the full Inkplate documentation, getting started guides, FAQs, and other resources, please visit [docs.inkplate.com](https://docs.inkplate.com).

> ℹ **NOTE**
> As of now, the documentation is still a work in progress, but it will be available soon at the above link.

---

## Getting Started 🚀

1. **Install the Inkplate Motion Board Definition**
Use the [Dasduino Board Definition](https://github.com/SolderedElectronics/Dasduino-Board-Definitions-for-Arduino-IDE). Select the Inkplate Motion board from the boards menu in the Arduino IDE.

2. **Install CH340 Drivers (Windows Only)**
If you’re on Windows and haven’t already done so, install the CH340 drivers. Follow the instructions [here](https://soldered.com/learn/ch340-driver-installation-croduino-basic3-nova2/).

3. **Install the STM32CubeProgrammer**
Download it from [STMicroelectronics](https://www.st.com/en/development-tools/stm32cubeprog.html). It’s needed for programming the Inkplate Motion’s STM32 MCU.

4. **Get the Library**
You can download the Inkplate Motion Arduino Library from this repository or install it directly from the Arduino Library Manager.

5. **Open and Upload Examples**
Open any of the Inkplate Motion example sketches from the Arduino IDE and upload them to your Inkplate Motion board!

> ℹ **NOTE**
> To upload code via USB, put Inkplate Motion in programming mode by pressing the **PROGRAMMING BUTTON**. If you have a board with a case, you can use the provided tool to press the programming button without fully opening the enclosure.

---

## Code Examples 🖥️

The example sketches in this library showcase various features of the Inkplate 6 MOTION. They are organized into categories:

- **Basic**
Demonstrates drawing simple graphics (text, shapes) in black and white or grayscale, and refreshing the screen with fast updates.

- **Advanced**
Explores deeper features like low-power deep sleep, built-in RTC, SD card reader, Wi-Fi, and onboard peripherals and sensors.

- **Diagnostics**
Contains test sketches, VCOM setting adjustments, and other diagnostic tools for troubleshooting.

---

## Battery Power 🔋

Inkplate boards support two power options:

1. **USB Port**
Simply plug in any micro USB cable to power the board.

2. **Battery**
Use a standard Li-Ion/Li-Poly 3.7V battery with a 2.00 mm pitch JST connector. The onboard charger will charge the battery at 500 mA whenever USB power is connected. You can use any size or capacity battery as long as current requirements are met. However, if you're using our enclosure, the battery should not exceed **90 mm x 40 mm (3.5 x 1.57 inches)** and **5 mm (0.19 inches)** in height.
[This battery](https://soldered.com/product/li-ion-battery-1200mah-3-7v/) is a good fit for Inkplate 6 Motion. The board is optimized for low power consumption in deep sleep mode, making it suitable for battery-powered applications.

### ⚠️ WARNING
Please check the polarity on the battery JST connector! Some batteries that can be purchased from the web have reversed polarity that can damage Inkplate board! You are safe if you are using the pouch battery from [soldered.com](https://soldered.com/categories/power-sources-batteries/batteries/lithium-batteries/) or Inkplate with the built-in battery .
Please check the polarity of the battery JST connector! Some off-the-shelf batteries have reversed polarity, which can damage the Inkplate board. If you use batteries from [soldered.com](https://soldered.com/categories/power-sources-batteries/batteries/lithium-batteries/) or official Inkplate batteries, you’re safe.

> ℹ **NOTE**
> A CR2032 coin cell is only for RTC backup. It **cannot** power the Inkplate.

### ℹ NOTE
CR2032 battery is only for RTC backup. Inkplate cannot be powered with it.
---

## License
This repo uses the source code from another repositories. All their license files are located in "licences" folder.

This repository uses source code from other projects. All relevant license files are located in the `licenses` folder.

---

## ESP32 WiFi Coprocessor
To be able to connect to the WiFi, Inkplate Motion uses ESP32-C3 MCu with SPI AT Commands Firmare on it. ESP32 firmware will be already flashed for you. But, if for some reason ESP32 if corrupted, or you overwritten the AT SPI firmware, you can find it in extras folder. Firmware can be flashed using [CONNECT Programmer](https://soldered.com/product/connect-programmer/) and esptool.

To enable Wi-Fi connectivity, Inkplate Motion uses an **ESP32-C3 MCU** running an SPI AT Commands Firmware. This firmware is pre-flashed on your Inkplate Motion. If you ever overwrite or corrupt the AT SPI firmware, you can find a backup in the `extras` folder. You can flash it using the [CONNECT Programmer](https://soldered.com/product/connect-programmer/) and `esptool`.

---

## Where to get the Inkplate Motion?
You can get it by supporting by backing this project on the [Crowdsupply](https://www.crowdsupply.com/soldered/inkplate-6-motion).

You can get Inkplate Motion by supporting us on [Crowd Supply](https://www.crowdsupply.com/soldered/inkplate-6-motion). 🙌

For all questions and issues please reach us via [e-mail](mailto:hello@soldered.com) or our [contact form](https://soldered.com/contact/).
For any questions or issues, please reach out via [email](mailto:hello@soldered.com) or our [contact form](https://soldered.com/contact/).
Loading
Loading