Comments (7)
Currently pursuing two possible ways of addressing this issue; hardware switches to allow configuration when the module is assembled, and a software + hardware approach where the pins can be switched using signals from GPIOs. The second would use up more pins of the Pico, but would result in much less hardware clutter and a much easier process for a DIY user.
from europi.
Further research shows only two common pin layouts exist for this OLED display, so a simpler approach is possible: A Hardware DIP switch and pull-up/down resistors.
The two potential pin layouts
Proposed hardware switching solution
In mode 1 (The Pi Hut), the DIP switch would be set to on/on/off/off
In mode 2 (CPC, AliExpress), it would be off/off/on/on
This would allow the two different OLED configurations to be used easily, with only a quick change of the switch positions during assembly to allow it to work.
Potential issues with solution
In theory, due to user error or misunderstanding, incorrect signals could be sent to the OLED, however this should not be an issue as the I2C bus runs on 3.3V, so even if the power rail were connected to a data pin, no damage should be caused and the issue could be fixed with a simple switch change.
Also, due to the nature of the two alternate configurations, no pin is ever 3.3V in one mode and GND in the other, so there is never a risk of shorting the power rails
from europi.
Illustration of proposed solution
DIP switch is situated underneath the OLED display to prevent accidental knocking of the switches during removal of the module, but switches would still be accessible with a pencil if required
from europi.
Another option I've seen modules use is jumpers and shunts to change hardware configuration. However, this probably wouldn't fit on the jack PCB and would have to be on the pico PBC.
Here's an example of a module I recently build that uses jumpers and shunts (regretfully I don't have the schematics). Check out page 65:
https://zlobmodular.com/wp-content/uploads/2021/01/svf_6612_builddocs-compressed.pdf
from europi.
Another option I've seen modules use is jumpers and shunts to change hardware configuration. However, this probably wouldn't fit on the jack PCB and would have to be on the pico PBC.
Yup, I did consider using shunts and in many ways it would have been a cleaner approach, however there just isn't room on either PCB. The jack PCB doesn't have the vertical space between boards for a full jumper + shunt, and the pico PCB doesn't have the room around the existing traces and components
from europi.
A sheepish reply to my above comment: There may in fact be a much simpler header and shunt solution which would fit, as the shunts are shorter than I previously calculated, allowing for them to be mounted on the jack PCB but facing towards the pico PCB.
As the pins alternate in a certain way between the two configurations, a solution with only an 8 way 2 row header and 4 shunts should be possible, taking up minimal space and being easy to set for the user:
This implementation would fit snugly between the two PCBs, and there is enough room for an explanatory silkscreen diagram next to the header.
from europi.
Implemented solution works on new PCBs, users can even make the bridge simply using solder, saving the cost of shunts/jumpers if appearance isn't the priority!
from europi.
Related Issues (20)
- [Bug Fix Tracking] Remove workaround for USB connection issue when possible HOT 2
- [Project Suggestion] Create custom firmware image that enables drag and drop setup HOT 6
- [Hardware Issue / Project Suggestion] Increase threshold for digital input HOT 4
- [Bug Report] PyPi contrib dist package missing version.py
- [Hardware Issue] Noise on knob values and analogue inputs HOT 24
- [Project Suggestion] Update calibration routine and implementation HOT 3
- ADC problem HOT 4
- [Question] limitations of Python script HOT 3
- [Documentation Suggestion] better menu doc to assist new users HOT 2
- [Bug Report] AnalogInput calibration improvement when using only two points HOT 4
- [Bug Report] Unable to calibrate HOT 2
- [Documentation Suggestion] Error in schematic.pdf HOT 1
- [Bug Report] Add newly introduced firmware files to setup.py modules list
- [Bug Report] HOT 2
- [Documentation Suggestion] Mistake in "Hardware Specifications"
- License is not fully signed
- Upgrade to support MicroPython 1.20.0 HOT 3
- Pico W? HOT 3
- Wrong I2C OLED Pinout
- Create a firmware library of reusable common functions HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from europi.