wio:wiopico-en
Differences
This shows you the differences between two versions of the page.
— | wio:wiopico-en [2023/08/28 03:06] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== SIOpico ====== | ||
+ | [[: | ||
+ | * [[: | ||
+ | * [[: | ||
+ | * **[[: | ||
+ | * [[: | ||
+ | \\ | ||
+ | |< >| | ||
+ | | //**S**lave **I**/ | ||
+ | {{: | ||
+ | |||
+ | \\ | ||
+ | =====Introduction===== | ||
+ | The Raspberry Pi Pico can be used as WIOpi I2C slave for common tasks: | ||
+ | * 4 Servos or 32 NeoPixel | ||
+ | * 16 I/O (100ms scan) | ||
+ | * 2 four wire stepper on bank1 (ULN2003) | ||
+ | * up to 2 Charlieplexing signals on bank1 | ||
+ | The NeoPixel protocol engine needs all interrupts on the Pico. This is the reason that it is not possible to combine servos and neopixel simultaneous on the same Pico.\\ | ||
+ | |||
+ | |||
+ | |||
+ | \\ | ||
+ | =====SIOpico Firmware===== | ||
+ | The binary firmware can be downloaded here:\\ | ||
+ | https:// | ||
+ | ====Install==== | ||
+ | - Keep the Pico button pressed at connecting to USB. (**Important: | ||
+ | - The Pico will behave like a removable drive. | ||
+ | - Copy the [[https:// | ||
+ | - Ready. | ||
+ | |||
+ | |||
+ | ====Pins==== | ||
+ | ^ Configuration ^^ | ||
+ | | Servo | GP0 (pin 1) connected to GND | | ||
+ | | NeoPixel | GP0 (pin 1) open and connected to LED strip: Needs a 10k pullup. | | ||
+ | | I2C Slave address | GP1 and GP2 | | ||
+ | \\ | ||
+ | ^ I2C Slave Address ^^^ | ||
+ | | GP1 (SW1-1) | GP2 (SW1-2) | Address | | ||
+ | | off | off | 124 0x7C | | ||
+ | | on | off | 125 0x7D | | ||
+ | | off | on | 126 0x7E | | ||
+ | | on | on | 127 0x7F | | ||
+ | |||
+ | |||
+ | \\ | ||
+ | ^ I/O Banks ^^^^^ | ||
+ | | GP28 Value | Config | Bank 1 | Bank 2 | SW1 | | ||
+ | | < 200 | 0 | Input | Output | 1=0 2=0 3=0 4=0 | | ||
+ | | > 4000 | 1 | Input | Input | 1=1 2=0 3=0 4=0 | | ||
+ | | < 3000 | 2 | Output | Output | 1=0 2=1 3=0 4=0 | | ||
+ | | < 2000 | 3 | Output | Input | 1=0 2=0 3=1 4=0 | | ||
+ | | < 1500 | 5 | Multiplexing | Input | 1=0 2=0 3=1 4=1 | | ||
+ | | < 1000 | 4 | Stepper | Input | 1=0 2=0 3=0 4=1 | | ||
+ | < | ||
+ | 3V3 *------*--[10k]--*--[10k]--*--[10k]--*--[10k]---* GND | ||
+ | | | ||
+ | SW1 / | ||
+ | 1 | ||
+ | GP28 *------*---------*---------*---------*--[100k]--* GND | ||
+ | </ | ||
+ | The GP28 value can be checked in the [[# | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | ^ I2C ^^ | ||
+ | | SDA | GP4 (pin 6) | | ||
+ | | SCL | GP5 (pin 7) | | ||
+ | Max. I2C speed: 100kHz -> Default.\\ | ||
+ | |||
+ | \\ | ||
+ | ^ NeoPixel ^^ | ||
+ | | Data | GP0 (pin 1) | | ||
+ | |||
+ | \\ | ||
+ | ^ Servo ^^ | ||
+ | | PWM | GP6 (pin 9) | | ||
+ | | PWM | GP7 (pin 10) | | ||
+ | | PWM | GP8 (pin 11) | | ||
+ | | PWM | GP9 (pin 12) | | ||
+ | Via parameters in the signal and value in the object switches can be the jumping back of barriers and shape signals simulated.\\ | ||
+ | The setting is made using hex values. The entry is made as a decimal number.\\ | ||
+ | |||
+ | Example:\\ | ||
+ | Number = 4\\ | ||
+ | Step = 1\\ | ||
+ | Hex 0x14 = Dezimal 20 | ||
+ | |||
+ | \\ | ||
+ | ^ Stepper ^^^ | ||
+ | | IN1 | GP10 | GP14 | | ||
+ | | IN2 | GP11 | GP15 | | ||
+ | | IN3 | GP12 | GP16 | | ||
+ | | IN4 | GP13 | GP17 | | ||
+ | |||
+ | \\ | ||
+ | ^ I/O ^^ | ||
+ | | Bank 1 | GP10...GP17: | ||
+ | | Bank 2 | GP18...GP27 and GP3: needs 10k pullup. (8 I/Os) - Adress: | ||
+ | |||
+ | |||
+ | \\ | ||
+ | =====NeoPixel Addressing===== | ||
+ | | Node ID | WIOpi node ID | | ||
+ | | Address | Pixel number | | ||
+ | | Port | I2C slave: 124...127 | | ||
+ | |||
+ | * [[: | ||
+ | |||
+ | \\ | ||
+ | =====Charlieplexing Signal Support===== | ||
+ | A Rocrail signal with control aspects and port type multiplex, uses 4 pins starting with the port offset.\\ | ||
+ | The refresh rate is about 250µs.\\ | ||
+ | Aspect values are used from the details tab. 24bits are used, the upper 12bits are for blinking.\\ | ||
+ | Example: LED 1 and 2 on and LED 2 blinking: 0x002003 -> Aspect value = 8195 \\ | ||
+ | |||
+ | //A second signal can be defined in Rocrail with address + 100 to combine it with the main signal.//\\ | ||
+ | |||
+ | * __**[[arduino: | ||
+ | |||
+ | |||
+ | |||
+ | ====Test Signal==== | ||
+ | Diagram:\\ | ||
+ | {{: | ||
+ | \\ | ||
+ | Signal setup for WIOpi 98 and slave 126:\\ | ||
+ | {{: | ||
+ | \\ | ||
+ | =====PINOUT===== | ||
+ | {{: | ||
+ | |||
+ | \\ | ||
+ | =====Arduino IDE Monitor===== | ||
+ | Type ?< | ||
+ | < | ||
+ | SIOpico (c)Rocrail Oct 20 2021 10:47:03 | ||
+ | I2C:126 (pixel=0 servo=20003F70 IO=FF 00 servo=00 GP28=4083 CNF=0 IO1=input IO2=output) | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | =====Links===== | ||
+ | * https:// | ||
+ | |||
+ | \\ | ||
+ | =====SIOpico-01 PCB===== | ||
+ | ====Patch==== | ||
+ | The ADC GP28 needs a 100k pull down resistor which is not on the PCB.\\ | ||
+ | The easiest way is to mount the resistor directly on the Pico board on pin 34 and 38:\\ | ||
+ | {{: | ||
+ | In this way the ADC is also stable if the Pico is not mounted on the PCB; The configuration remains 0 as default.\\ | ||
+ | |||
+ | \\ | ||
+ | =====Hardware===== | ||
+ | | {{ : | ||
+ | | {{ : | ||
+ | | {{ : | ||
+ | |||