Stap 1: Sluit de Lightning-Detector aan WeatherPi
De volledige Instructable voor het bouwen van WeatherPi, een zonne-aangedreven Raspberry Pi gebaseerd weerstation, met inbegrip van de lijst van onderdelen en volledige bedrading lijst is hier.
Aangezien we onze andere MOD-1016 AS3935 breakout board links op het bord WeatherPiArduino voorlopig, besloten we om toe te voegen een extra MOD-1016 AS3935.
Aangezien de MOD-1016 heeft een vaste I2C adres (0x03), kon niet verbinden we het tot dezelfde I2C bus zoals het WeatherPiArduino-bestuur is op. Dus, gebruik de I2C Multiplexer bestuur, we zetten de tweede MO-1016 bus 2.
Wij zijn altijd actief in conflicten met de adressering op de I2C-apparaat. Want er geen normen zijn, soms meerdere apparaten zullen hebben hetzelfde adres, zoals 0x03, en u bent gewoon pech in rijklare beiden op dezelfde I2C bus zonder een heleboel jimmy tuigage.
4 kanaal Multiplexed I2C Breakout Board
Als u dit probleem kunt u adresseren (specifiek het conflict tussen een INA3221 en de vochtigheid binnen Sensor, evenals het hebben van twee identieke bliksem sensoren - zie hieronder) we toegevoegd een I2C Bus Multiplexer aan het ontwerp waardoor we hebben veel meer I2C-apparaten op de bus, ongeacht adresconflicten. Hieronder is onze huidige lijst met I2C apparaten in WeatherPi.
Module | Adres | I2C Mux Bus # |
---|---|---|
BMP180-Luchtdruk | 0x77 | Bus 0 |
Real Time klok DS3231 | 0x68 | Bus 0 |
ATC EEPROM | 0x56 (of 0x57) | Bus 0 |
ADS1015 Analoog naar Digitaal Converter | 0x49 | Bus 0 |
FRAM niet-vluchtig opslag | 0x50 | Bus 0 |
ADS1015 op SunAirPlus | 0x48 | Bus 1 |
INA3221 3 Channel spanning/stroom Monitor op SunAirPlus | 0x40 | Bus 1 |
Ingesloten avonturen bliksem Detector | 0x03 | Bus 0 |
Ingesloten avonturen bliksem Detector | 0x03 | Bus 2 |
AM2315 Temp/Buitenvochtigheid | 0x5C | Bus 1 |
Grove I2C 4 kanaal I2C Bus Mux | 0x73 | Op alle bussen |
HTU21D-F vochtigheid Sensor | 0x40 | Bus 0 |
Merk op dat een aantal apparaten hetzelfde adres moeten. Dit probleem wordt opgelost met behulp van de Grove I2C Mux Breakout Board.
Bedrading van de lijst
Dit zijn gewoon de toevoegingen aan de lijst van de bedrading voor de AS3935 Breakout Board aangesloten op Bus2 van de I2C Mux en geplaatst in de 3D afgedrukt pyloon. De lijst van de volledige bedrading voor WeatherPi is op de Instructable.
Grove I2C Mux Board (GI2CM) | ||
---|---|---|
JP5 - I2C Bus2 | Externe AS3935 Breakout Board (ASBB) | |
GI2CM JP5/Pin 3: VDU2 | 3,3 v van Pi/schroef-Connector | 3,3 v van Pi/schroef-Connector |
GI2CM JP5/Pin 2: GND | ASBB: GND | GND voor ASBB Board |
GI2CM JP5/Pin 5: SC2 | ASBB: SCL | SCL voor ASBB Board |
GI2CM JP5/Pin 4: SD2 | ASBB: SDA | SDA voor ASBB Board |
Externe AS3935 Breakout Board (ASBB) | ||
---|---|---|
Externe AS3935 Breakout Board (ASBB) | JP5 - I2C Bus2 | |
ASBB: VCC | 3,3 v van Pi/schroef-Connector | 3,3 v van Pi/schroef-Connector |
ASBB: GND | GI2CM JP5/Pin 2: GND | GND voor ASBB Board |
ASBB: SCL | GI2CM JP5/Pin 5: SC2 | SCL voor ASBB Board |
ASBB: SDA | GI2CM JP5/Pin 4: SD2 | SDA voor ASBB Board |
ASBB: IRQ | PiA + GPIO/Pin 15: GPIO 22 | IRQ-regel voor Raspberry Pi |
Hier is wat de I2C-bus ziet eruit als op de Raspberry Pi. Dit is de output van de voorbeeldcode met de I2C 4 kanaal Mux (dus er zijn 4 onafhankelijke bussen weergegeven voor de I2C-bus).
Merk op dat WeatherPi Bus 0, Bus 1 en 2 van de Bus gebruikt.
Bus 2 wordt alleen gebruikt voor de verbinding met de externe detector MOD-1016 AS9535 Lightning. Uitvoeren van de test software voor de I2C Mux Breakout Board geeft de volgende resultaten:
Test SDL_Pi_TCA9545 Version 1.0 - SwitchDoc Labs Sample uses 0x73 Program Started at:2015-05-19 02:45:59 -----------BUS 0------------------- addr = 0x73 returndata = 0x81 tca9545 control register B3-B0 = 0x1 ignore Interrupts if INT3' - INT0' not connected tca9545 control register Interrupts = 0x8 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: 03 -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- 49 -- -- -- -- -- -- 50: 50 -- -- -- -- -- 56 -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- 73 -- -- -- 77 ----------------------------------- -----------BUS 1------------------- addr = 0x73 returndata = 0xa2 tca9545 control register B3-B0 = 0x2 ignore Interrupts if INT3' - INT0' not connected tca9545 control register Interrupts = 0xa 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- 73 -- -- -- -- ----------------------------------- -----------BUS 2------------------- addr = 0x73 returndata = 0x84 tca9545 control register B3-B0 = 0x4 ignore Interrupts if INT3' - INT0' not connected tca9545 control register Interrupts = 0x8 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: 03 -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- 73 -- -- -- -- -----------------------------------