====== Intro ====== The r0ket can easily be extended by pluggable m0duls. See [[m0duls]] for existing m0duls. ====== Hardware ====== Please keep in mind that __power__ is a very __limited resource__ on the r0ket. The more a m0dul consumes the less fun you have! ===== Interface ===== A m0dul can be connected to the r0ket via the m0dulbus. The connectors are in 2.54mm/100mil spacing, prepopulated with female sockets. If available, a __stackthrough connector__ should be used to interface with the m0dulbus. The hackerbus is intended for tinkering, a m0dul should use the __m0dulbus only__. Stackthrough connectors kits (2x 2x06) will be on sale at the campsite! The //m0dul A// and //m0dul B// connectors are rotated 180 degrees to each other. If your m0dul is symmetric/has no orientation requirements, it can be plugged both ways. Keep in mind though that the chip select pins on //A// and //B// differ (that should be configurable via defines in your software). ^ m0dul A ^ m0dul B ^ | SS0 | SS3 | | SS1 | SS4 | | SS2 | SS5 | Links: [[https://github.com/r0ket/r0ket/tree/master/hardware/m0dul|Eagle]] Almost any m0duls can be combined, if you offer the possibility to change the adress (e.g. with solder bridges). Have a look at already existing [[m0duls|m0duls]] to find out which standard addresses are still free/little used - enter your own [[m0duls#registry|address]]! Please be aware that __above__ the __m0dulbus__ connectors the __LCD__ and __button__ is located - this area should __not be covered__ by your m0dul. Go for the sides and below the connectors :) As the m0dulbus connectors are __not reverse polarity protected__, you should __document__ (eg marking your connector with a 1) how your m0dul should be plugged onto the r0ket. ==== Dual M0duls ==== A dual m0dul uses both m0dul connectors on the badge. This gives you maximum mechanical stability and a balanced weight distribution. As the connector on both sides are rotated by 180 degrees you can mount the m0dul 180 degrees rotated. {{:m0dul-dual.brd.png?direct&200|}} ==== Single M0duls ==== A single m0dul only uses one m0dul connector. These m0duls go to the side of the badge. By rotating the m0dul you can chose to either mount it on the left or the right side of the r0ket. {{:m0dul-single.brd.png?direct&200|}} ==== M0dulbus ==== Connector: 2x06 female socket (2.54mm/100mil) {{:r0ket-m0dulbus.png?400&direct| }} ^ Pin ^ Description ^ | +3V3_EXP | Fixed 3.3V | | VCC | Battery voltage (4.5-3.5V) | | GND | Ground | | SCL, SDA | I2C bus | | MISO, MOSI, SCK | SPI bus | | SSx | Chip select for SPI or general purpose IO | | BUSINT | Active LOW open-drain interrupt | ====== Further reading ====== * [[build]] explains how to set up your build-environment and compile and deploy code for [[r0ket]] * You can either write your own firmware, or, if your code is smaller than 1 kB, a [[l0dable]] which can be dynamically loaded into the default firmware.