/pico_sign_sipf_xmodem

horizontal scrolled LCD signboard where image can be updated via LTE

Primary LanguageCMIT LicenseMIT

pico_sign_sipf_xmodem

README (日本語)

system overview

fig.1: horizontal scrolled image output on 480x1920 display at 20Hz where image can be updated via LTE

(picture on loading derived from http://panoroman.nao3.net/72/img_0485/)

what is this ?

building hardware (breadboard-based)

breadboard build

fig.2: experimental setup on breadboard

build software

  • prepare environment

    • some linux based distros (tested under native ubuntu 20.04 LTS and WSL2 ubuntu 20.04 LTS)
    • sudo apt install git gcc make cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential golang
  • compile uf2 binary

    • you'll get sw/build/app/pico_sign_board.uf2 after compilation
$ git clone --recursive git@github.com:homelith/pico_sign_sipf_xmodem.git
$ cd pico_sign_sipf_xmodem/sw
$ make
  • convert source image
    • prepare width 60px x height 1280px image as ${FILENAME}.png
    • confirm generated binary has exactly 153600 bytes of size
$ cd pico_sign_sipf_xmodem/sw/tools/png2array
$ make
$ ./png2array -m rgb565 -f bin ${FILENAME}.png > ${FILENAME}.bin

run on device

  • download uf2 on Raspberry Pi Pico

    • power on Pico with BOOTSEL button pressed to make Pico run on USB mass storage device mode
    • place pico_sign_board.uf2 file on Pico-emulated USB storage root directory
    • you will see "Pico Bitbang DVI" sample images scrolled horizontally
  • update signboard image

    • assume SCM-LTEM1NRF module associated with a Mono Platform project and websocket service adapter on your SAKURA Cloud account.
    • From project tab, upload ${FILENAME}.bin to associated project (fig.3)
    • From service adapter tab, issue "send message to device" command (fig.4)
      • parameters : tags;{any 8bit hex value}, type;variable length string, value;${FILENAME}.bin
    • Pico polls any new messages on every 3 minites by default or you can trigger it immediately by pressing tactile switch to drive Pico GP6 pin to GND.
    • Once Pico found new messages with ${FILENAME}.bin, xmodem downloader will be initiated and the image will be updated consequently.
  • update signboard scroll speed

    • default scroll speed 16 pixel/frame can be update via Mono Platform message struct
    • assume SCM-LTEM1NRF module associated with a Mono Platform project and websocket service adapter on your SAKURA Cloud account.
    • From service adapter tab, issue "send message to device" command.
      • parameters : tags;{any 8bit hex value}, type; int16 value, value; from -32768 to 32767
    • Pico polls any new messages on every 3 minites by default or you can trigger it immediately by pressing tactile switch to drive Pico GP6 pin to GND.
    • Once Pico found new messages with int16 value, scroll speed will be updated to {int16 value} pixel / frame.

Mono Platform control panel project tab

fig.3: upload sign_board.bin on SAKURA Mono Platform project tab

Mono Platform control panel service adapter tab

fig.4: sending message on SAKURA Mono Platform service adapter tab, notifying device filename to be downloaded