Merge pull request #336 from aceinnolab/hotfix/#335
fix issue with 12.48" rendering
This commit is contained in:
		
							
								
								
									
										9
									
								
								.github/workflows/test-on-rpi.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.github/workflows/test-on-rpi.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| name: Raspberry Pi build | name: Test on Raspberry Pi OS | ||||||
|  |  | ||||||
| on: | on: | ||||||
|   push: |   push: | ||||||
| @@ -29,7 +29,7 @@ jobs: | |||||||
|           TINDIE_USERNAME: ${{ secrets.TINDIE_USERNAME }} |           TINDIE_USERNAME: ${{ secrets.TINDIE_USERNAME }} | ||||||
|         with: |         with: | ||||||
|           # Set the base_image to the desired Raspberry Pi OS version |           # Set the base_image to the desired Raspberry Pi OS version | ||||||
|           base_image: https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2023-12-11/2023-12-11-raspios-bookworm-armhf-lite.img.xz |           base_image: https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2024-03-15/2024-03-15-raspios-bookworm-armhf-lite.img.xz | ||||||
|           image_additional_mb: 3072 # enlarge free space to 3GB |           image_additional_mb: 3072 # enlarge free space to 3GB | ||||||
|           optimize_image: true |           optimize_image: true | ||||||
|           # user: inky --> not supported? |           # user: inky --> not supported? | ||||||
| @@ -42,10 +42,9 @@ jobs: | |||||||
|             whoami |             whoami | ||||||
|             cd /home/inky |             cd /home/inky | ||||||
|             sudo apt-get update -y |             sudo apt-get update -y | ||||||
|              |             sudo apt-get install git zlib1g libjpeg-dev libatlas-base-dev rustc libopenjp2-7 python3-dev scons libssl-dev python3-venv python3-pip git libfreetype6-dev wkhtmltopdf libopenblas-dev -y | ||||||
|             sudo apt-get install zlib1g libjpeg-dev libatlas-base-dev rustc libopenjp2-7 python3-dev scons libssl-dev python3-venv python3-pip git libfreetype6-dev wkhtmltopdf libopenblas-dev -y |  | ||||||
|             echo $PWD && ls |             echo $PWD && ls | ||||||
|             git clone --branch main --single-branch https://github.com/aceinnolab/Inkycal |             git clone https://github.com/aceinnolab/Inkycal | ||||||
|             cd Inkycal |             cd Inkycal | ||||||
|             python3.11 -m venv venv |             python3.11 -m venv venv | ||||||
|             . venv/bin/activate |             . venv/bin/activate | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								.github/workflows/update-os.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/update-os.yml
									
									
									
									
										vendored
									
									
								
							| @@ -24,7 +24,7 @@ jobs: | |||||||
|           TINDIE_USERNAME: ${{ secrets.TINDIE_USERNAME }} |           TINDIE_USERNAME: ${{ secrets.TINDIE_USERNAME }} | ||||||
|         with: |         with: | ||||||
|           # Set the base_image to the desired Raspberry Pi OS version |           # Set the base_image to the desired Raspberry Pi OS version | ||||||
|           base_image: https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2023-12-11/2023-12-11-raspios-bookworm-armhf-lite.img.xz |           base_image: https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2024-03-15/2024-03-15-raspios-bookworm-armhf-lite.img.xz | ||||||
|           image_additional_mb: 3072 # enlarge free space to 3 GB |           image_additional_mb: 3072 # enlarge free space to 3 GB | ||||||
|           optimize_image: true |           optimize_image: true | ||||||
|           commands: | |           commands: | | ||||||
| @@ -40,7 +40,13 @@ jobs: | |||||||
|             sudo apt-get dist-upgrade -y |             sudo apt-get dist-upgrade -y | ||||||
|              |              | ||||||
|             sudo apt-get install -y python3-pip |             sudo apt-get install -y python3-pip | ||||||
|             sudo apt-get install zlib1g libjpeg-dev libatlas-base-dev rustc libopenjp2-7 python3-dev scons libssl-dev python3-venv python3-pip git libfreetype6-dev wkhtmltopdf libopenblas-dev libxml2-dev libxslt-dev python-dev-is-python3 -y |             sudo apt-get install git zlib1g libjpeg-dev libatlas-base-dev rustc libopenjp2-7 python3-dev scons libssl-dev python3-venv python3-pip git libfreetype6-dev wkhtmltopdf libopenblas-dev libxml2-dev libxslt-dev python-dev-is-python3 -y | ||||||
|  |             # #334 & #335 | ||||||
|  |             git clone https://github.com/WiringPi/WiringPi | ||||||
|  |             cd WiringPi | ||||||
|  |             ./build | ||||||
|  |             cd .. | ||||||
|  |              | ||||||
|             echo $PWD && ls |             echo $PWD && ls | ||||||
|             git clone https://github.com/aceinnolab/Inkycal |             git clone https://github.com/aceinnolab/Inkycal | ||||||
|             cd Inkycal |             cd Inkycal | ||||||
| @@ -61,10 +67,6 @@ jobs: | |||||||
|             sudo ./configure && sudo make && sudo make check && sudo make install |             sudo ./configure && sudo make && sudo make check && sudo make install | ||||||
|             cd .. |             cd .. | ||||||
|             echo $CWD |             echo $CWD | ||||||
|             wget https://project-downloads.drogon.net/wiringpi-latest.deb |  | ||||||
|             sudo dpkg -i wiringpi-latest.deb |  | ||||||
|             cd .. |  | ||||||
|             echo $CWD |  | ||||||
|  |  | ||||||
|             # increase swap-size |             # increase swap-size | ||||||
|             sudo dphys-swapfile swapoff |             sudo dphys-swapfile swapoff | ||||||
|   | |||||||
							
								
								
									
										26
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								README.md
									
									
									
									
									
								
							| @@ -18,7 +18,7 @@ | |||||||
|  |  | ||||||
| Inkycal is a software written in python for selected E-Paper displays. It converts these displays into useful | Inkycal is a software written in python for selected E-Paper displays. It converts these displays into useful | ||||||
| information dashboards. It's open-source, free for personal use, fully modular and user-friendly. Despite all this, | information dashboards. It's open-source, free for personal use, fully modular and user-friendly. Despite all this, | ||||||
| Inkycal can run well even on the Raspberry Pi Zero. Oh, and it's open for third-party modules! Hooray! | Inkycal can run well even on the Raspberry Pi Zero W. Oh, and it's open for third-party modules! Hooray! | ||||||
|  |  | ||||||
| ## ⚠️ Warning: long installation time expected! | ## ⚠️ Warning: long installation time expected! | ||||||
|  |  | ||||||
| @@ -56,7 +56,7 @@ Watch the one-minute video on getting started with Inkycal: | |||||||
| ## Hardware guide | ## Hardware guide | ||||||
|  |  | ||||||
| Before you can start, please ensure you have one of the supported displays and of the supported Raspberry | Before you can start, please ensure you have one of the supported displays and of the supported Raspberry | ||||||
| Pi: `|4|3A|3B|3B+|2B|0W|0WH|02W|`. We personally recommend the Raspberry Pi Zero W as this is relatively cheaper, uses | Pi: `|4|3A|3B|3B+|2B|ZeroW|ZeroWH|Zero2W|`. We personally recommend the Raspberry Pi Zero W as this is relatively cheaper, uses | ||||||
| less power and is perfect to fit in a small photo frame once you have assembled everything. | less power and is perfect to fit in a small photo frame once you have assembled everything. | ||||||
|  |  | ||||||
| **Serial** displays are usually cheaper, but slower. Their main advantage is ease of use, like being able to communicate | **Serial** displays are usually cheaper, but slower. Their main advantage is ease of use, like being able to communicate | ||||||
| @@ -92,11 +92,6 @@ display!** | |||||||
| | MicroSD card                                                                    | Sandisk                 |  Search for `MicroSD card 8GB` on amazon or similar                                                                                                                                                                                                                                                                                         | | | MicroSD card                                                                    | Sandisk                 |  Search for `MicroSD card 8GB` on amazon or similar                                                                                                                                                                                                                                                                                         | | ||||||
|  |  | ||||||
| ## Configuring the Raspberry Pi | ## Configuring the Raspberry Pi | ||||||
|  |  | ||||||
| ⚠️ Warning: You cannot use the latest version of Raspberry Pi OS as a kernel upgrade has caused many projects to fail. |  | ||||||
| Please only use the version mentioned below. |  | ||||||
| Download this specific version |  | ||||||
| of [Raspberry Pi OS (11-12-2023)](https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2023-12-11/2023-12-11-raspios-bookworm-armhf-lite.img.xz) |  | ||||||
| Flash Raspberry Pi OS on your microSD card (min. 4GB) with [Raspberry Pi Imager](https://rptl.io/imager). | Flash Raspberry Pi OS on your microSD card (min. 4GB) with [Raspberry Pi Imager](https://rptl.io/imager). | ||||||
| Use the following settings: | Use the following settings: | ||||||
|  |  | ||||||
| @@ -138,8 +133,6 @@ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz | |||||||
| tar zxvf bcm2835-1.71.tar.gz  | tar zxvf bcm2835-1.71.tar.gz  | ||||||
| cd bcm2835-1.71/ | cd bcm2835-1.71/ | ||||||
| sudo ./configure && sudo make && sudo make check && sudo make install | sudo ./configure && sudo make && sudo make check && sudo make install | ||||||
| wget https://project-downloads.drogon.net/wiringpi-latest.deb |  | ||||||
| sudo dpkg -i wiringpi-latest.deb |  | ||||||
|  |  | ||||||
| # If you are using the Raspberry Pi Zero models, you may need to increase the swapfile size to be able to install Inkycal: | # If you are using the Raspberry Pi Zero models, you may need to increase the swapfile size to be able to install Inkycal: | ||||||
| sudo dphys-swapfile swapoff | sudo dphys-swapfile swapoff | ||||||
| @@ -175,10 +168,16 @@ This will help keep this project growing and cover the ongoing expenses too! Win | |||||||
| Run the following steps to install Inkycal. Do **not** use sudo for this, except where explicitly specified. | Run the following steps to install Inkycal. Do **not** use sudo for this, except where explicitly specified. | ||||||
|  |  | ||||||
| ```bash | ```bash | ||||||
| # the next line is for the Raspberry Pi only | # Raspberry Pi specific section start | ||||||
| sudo apt-get install zlib1g libjpeg-dev libatlas-base-dev rustc libopenjp2-7 python-dev-is-python3 scons libssl-dev python3-venv python3-pip git libfreetype6-dev wkhtmltopdf libopenblas-dev | sudo apt-get install git zlib1g libjpeg-dev libatlas-base-dev rustc libopenjp2-7 python-dev-is-python3 scons libssl-dev python3-venv python3-pip git libfreetype6-dev wkhtmltopdf libopenblas-dev | ||||||
|  | git clone https://github.com/WiringPi/WiringPi | ||||||
|  | cd WiringPi | ||||||
|  | ./build | ||||||
|  | cd .. | ||||||
|  | # Raspberry Pi specific section end | ||||||
|  |  | ||||||
| cd $HOME | cd $HOME | ||||||
| git clone --branch main --single-branch https://github.com/aceinnolab/Inkycal | git clone https://github.com/aceinnolab/Inkycal | ||||||
| cd Inkycal | cd Inkycal | ||||||
| python3 -m venv venv | python3 -m venv venv | ||||||
| source venv/bin/activate | source venv/bin/activate | ||||||
| @@ -186,7 +185,8 @@ python -m pip install --upgrade pip | |||||||
| pip install wheel | pip install wheel | ||||||
| pip install -e ./ | pip install -e ./ | ||||||
|  |  | ||||||
| # If you are running on the Raspberry Pi, please install the following too to allow rendering on the display |  | ||||||
|  | # only for Raspberry Pi: | ||||||
| pip install RPi.GPIO==0.7.1 spidev==3.5 gpiozero==2.0 | pip install RPi.GPIO==0.7.1 spidev==3.5 gpiozero==2.0 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -31,6 +31,8 @@ import os | |||||||
| import time | import time | ||||||
| from ctypes import * | from ctypes import * | ||||||
|  |  | ||||||
|  | import RPi.GPIO as GPIO | ||||||
|  |  | ||||||
| EPD_SCK_PIN = 11 | EPD_SCK_PIN = 11 | ||||||
| EPD_MOSI_PIN = 10 | EPD_MOSI_PIN = 10 | ||||||
|  |  | ||||||
| @@ -71,11 +73,11 @@ if spi is None: | |||||||
|  |  | ||||||
|  |  | ||||||
| def digital_write(pin, value): | def digital_write(pin, value): | ||||||
|     spi.DEV_Digital_Write(pin, value) |     GPIO.output(pin, value) | ||||||
|  |  | ||||||
|  |  | ||||||
| def digital_read(pin): | def digital_read(pin): | ||||||
|     return spi.DEV_Digital_Read(pin) |     return GPIO.input(pin) | ||||||
|  |  | ||||||
|  |  | ||||||
| def spi_writebyte(value): | def spi_writebyte(value): | ||||||
| @@ -87,15 +89,68 @@ def delay_ms(delaytime): | |||||||
|  |  | ||||||
|  |  | ||||||
| def module_init(): | def module_init(): | ||||||
|  |     GPIO.setmode(GPIO.BCM) | ||||||
|  |     GPIO.setwarnings(False) | ||||||
|  |     GPIO.setup(EPD_SCK_PIN, GPIO.OUT) | ||||||
|  |     GPIO.setup(EPD_MOSI_PIN, GPIO.OUT) | ||||||
|  |  | ||||||
|  |     logging.debug("python call bcm2835 Lib") | ||||||
|  |  | ||||||
|  |     GPIO.setup(EPD_M2S2_RST_PIN, GPIO.OUT) | ||||||
|  |     GPIO.setup(EPD_M1S1_RST_PIN, GPIO.OUT) | ||||||
|  |     GPIO.setup(EPD_M2S2_DC_PIN, GPIO.OUT) | ||||||
|  |     GPIO.setup(EPD_M1S1_DC_PIN, GPIO.OUT) | ||||||
|  |     GPIO.setup(EPD_S1_CS_PIN, GPIO.OUT) | ||||||
|  |     GPIO.setup(EPD_S2_CS_PIN, GPIO.OUT) | ||||||
|  |     GPIO.setup(EPD_M1_CS_PIN, GPIO.OUT) | ||||||
|  |     GPIO.setup(EPD_M2_CS_PIN, GPIO.OUT) | ||||||
|  |  | ||||||
|  |     GPIO.setup(EPD_S1_BUSY_PIN, GPIO.IN) | ||||||
|  |     GPIO.setup(EPD_S2_BUSY_PIN, GPIO.IN) | ||||||
|  |     GPIO.setup(EPD_M1_BUSY_PIN, GPIO.IN) | ||||||
|  |     GPIO.setup(EPD_M2_BUSY_PIN, GPIO.IN) | ||||||
|  |  | ||||||
|  |     digital_write(EPD_M1_CS_PIN, 1) | ||||||
|  |     digital_write(EPD_S1_CS_PIN, 1) | ||||||
|  |     digital_write(EPD_M2_CS_PIN, 1) | ||||||
|  |     digital_write(EPD_S2_CS_PIN, 1) | ||||||
|  |  | ||||||
|  |     digital_write(EPD_M2S2_RST_PIN, 0) | ||||||
|  |     digital_write(EPD_M1S1_RST_PIN, 0) | ||||||
|  |     digital_write(EPD_M2S2_DC_PIN, 1) | ||||||
|  |     digital_write(EPD_M1S1_DC_PIN, 1) | ||||||
|  |  | ||||||
|     spi.DEV_ModuleInit() |     spi.DEV_ModuleInit() | ||||||
|  |  | ||||||
|  |  | ||||||
| def module_exit(): | def module_exit(): | ||||||
|     spi.DEV_ModuleExit() |     digital_write(EPD_M2S2_RST_PIN, 0) | ||||||
|  |     digital_write(EPD_M1S1_RST_PIN, 0) | ||||||
|  |     digital_write(EPD_M2S2_DC_PIN, 0) | ||||||
|  |     digital_write(EPD_M1S1_DC_PIN, 0) | ||||||
|  |     digital_write(EPD_S1_CS_PIN, 1) | ||||||
|  |     digital_write(EPD_S2_CS_PIN, 1) | ||||||
|  |     digital_write(EPD_M1_CS_PIN, 1) | ||||||
|  |     digital_write(EPD_M2_CS_PIN, 1) | ||||||
|  |  | ||||||
|  |  | ||||||
| def spi_readbyte(Reg): | def spi_readbyte(Reg): | ||||||
|     return spi.DEV_SPI_ReadByte(Reg) |     GPIO.setup(EPD_MOSI_PIN, GPIO.IN) | ||||||
|  |     j = 0 | ||||||
|  |     # time.sleep(0.01) | ||||||
|  |     for i in range(0, 8): | ||||||
|  |         GPIO.output(EPD_SCK_PIN, GPIO.LOW) | ||||||
|  |         # time.sleep(0.01)  | ||||||
|  |         j = j << 1 | ||||||
|  |         if (GPIO.input(EPD_MOSI_PIN) == GPIO.HIGH): | ||||||
|  |             j |= 0x01 | ||||||
|  |         else: | ||||||
|  |             j &= 0xfe | ||||||
|  |             # time.sleep(0.01) | ||||||
|  |         GPIO.output(EPD_SCK_PIN, GPIO.HIGH) | ||||||
|  |         # time.sleep(0.01)   | ||||||
|  |     GPIO.setup(EPD_MOSI_PIN, GPIO.OUT) | ||||||
|  |     return j | ||||||
|  |  | ||||||
|  |  | ||||||
| def delay_ms(delaytime): | def delay_ms(delaytime): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user