Spisu treści:

IOT123 - I2C MQ2 CEGŁA: 5 kroków
IOT123 - I2C MQ2 CEGŁA: 5 kroków

Wideo: IOT123 - I2C MQ2 CEGŁA: 5 kroków

Wideo: IOT123 - I2C MQ2 CEGŁA: 5 kroków
Wideo: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Listopad
Anonim
IOT123 - I2C MQ2 CEGŁA
IOT123 - I2C MQ2 CEGŁA
IOT123 - I2C MQ2 CEGŁA
IOT123 - I2C MQ2 CEGŁA
IOT123 - I2C MQ2 CEGŁA
IOT123 - I2C MQ2 CEGŁA
IOT123 - I2C MQ2 CEGŁA
IOT123 - I2C MQ2 CEGŁA

KLOCKI IOT123 to modułowe jednostki DIY, które można łączyć z innymi KLOCKAMI IOT123, aby dodać funkcjonalność do węzła lub urządzenia do noszenia. Oparte są na calowych kwadratowych, dwustronnych płytach prototypowych z połączonymi ze sobą otworami przelotowymi.

Oczekuje się, że wiele z tych KLOCKÓW będzie znajdować się w wielu węzłach (główne MCU - ESP8266 lub ATTINY84) w witrynie. MCU nie wymaga wcześniejszej wiedzy na temat przeznaczenia czujników ani potrzeb oprogramowania. Skanuje w poszukiwaniu węzłów I2C, a następnie żąda zrzutu właściwości (danych z czujnika) od każdego urządzenia podrzędnego. Te cegiełki dostarczają 5,0 V, 3,3 V i inną linię AUX, którą można dostosować.

Ten I2C MQ2 BRICK zrzuca 3 właściwości:

LPG (części na milion), CO (PPM), DYM (PPM)

Ten czujnik zapewnił interesujący scenariusz: potrzebuje co najmniej 2 minut (do 5 minut) na rozgrzanie, a następnie wymaga kalibracji przez 20 sekund przed użyciem. Ponieważ MCU hosta zajmuje się tylko pobieraniem par nazwa/wartość (i komunikatu o kontynuacji), wprowadziliśmy właściwość „PREPARE”. Ponieważ jego komunikat kontynuacji to „1” (więcej w przyszłości), MCU hosta będzie odpytywać BRICK, dopóki nie będzie gotowy. Zaleca się również "wypalenie" MQ2 przed użyciem, tj. pozostawienie podłączonego do obwodu 5 V na 24 godziny.

Klocki czujników typu Keyes zostaną pobrane jako pierwsze, ponieważ zawierają witaminy (potrzebne dodatkowe składniki) i są stosunkowo tanie (kupiłem 37 za 10AUD). Inne płytki/obwody zostaną wprowadzone do I2C BRICKS.

Otwory przelotowe przylegające do ATTINY85 pozostały niewykorzystane, aby umożliwić programowanie pinów pogo podczas lutowania DIP8 do płytki drukowanej.

Opracowywana jest kolejna abstrakcja, pakowanie CEGŁY w małe cylindry, które podłącza się do koncentratora D1M WIFI BLOCK, pompując wartości do serwera MQTT.

Krok 1: Materiały i narzędzia

Materiały i narzędzia
Materiały i narzędzia
Materiały i narzędzia
Materiały i narzędzia
Materiały i narzędzia
Materiały i narzędzia

Istnieje pełna lista Bill of Material and Sourcing.

  1. Klocek czujnika MQ2 (1)
  2. ATTINY85 20PU (1)
  3. Dwustronna płyta prototypowa 1" (1)
  4. Kolektor męski 90º (3P, 3P)
  5. Męski nagłówek (2P, 2P)
  6. Bocznik zworki (1)
  7. Przewód przyłączeniowy (~7)
  8. Lut i żelazo (1)

Krok 2: Przygotuj ATTINY85

Przygotuj ATTINY85
Przygotuj ATTINY85
Przygotuj ATTINY85
Przygotuj ATTINY85
Przygotuj ATTINY85
Przygotuj ATTINY85
Przygotuj ATTINY85
Przygotuj ATTINY85

Potrzebny jest AttinyCore od Boards Manager. Wypal bootloader "EEPROM Retained", "8mHZ Internal" (wszystkie konfiguracje pokazane powyżej).

Użyj dołączonego źródła; skompilować i zaprogramować na ATtiny85.

GIST jest tutaj:

gist.github.com/IOT-123/4c501046d365d01a60…

Więcej szczegółów znajdziesz w tych instrukcjach:

www.instructables.com/id/Programming-the-A…

www.instructables.com/id/How-to-Program-AT…

www.instructables.com/id/How-to-program-th…

www.instructables.com/id/Programming-the-A…

www.instructables.com/id/Programming-an-At…

Najlepiej przetestować za pomocą płytki prototypowej przed kontynuowaniem.

Jeśli masz istniejące ASSIMILATE SENSORS, upewnij się, że adres slave jest inny w kombinacji hosta CZUJNIK/MCU, tj. wszystkie czujniki temperatury mogą mieć ten sam adres, o ile masz tylko jeden czujnik temperatury na MCU/węźle.

Krok 3: Złóż obwód

Złóż obwód
Złóż obwód
Złóż obwód
Złóż obwód
Złóż obwód
Złóż obwód
  1. Z przodu włóż komponenty ATTINY85 (1), złącza męskie 3P 90deg (2)(3), złącza męskie 2P (4)(5) i przylutuj z tyłu.
  2. Z tyłu prześledź pomarańczowy przewód od ORANGE1 do ORANGE2 i przylutuj.
  3. Z tyłu prześledź niebieski przewód od BLUE1 do BLUE2 i przylutuj.
  4. Z tyłu prześledź zielony przewód od ZIELONEGO1 do ZIELONEGO2 i przylutuj.
  5. Z tyłu prześledź goły drut od SILVER1 do SILVER2 i lut.
  6. Z tyłu prześledź goły drut od SILVER3 do SILVER4 i lut.
  7. Z tyłu prześledź czarny przewód od BLACK1 do BLACK2 i przylutuj.
  8. Z tyłu prześledź czarny przewód od BLACK3 do BLACK4 i przylutuj.
  9. Z tyłu prześledź czerwony przewód od RED1 do RED2 i przylutuj.
  10. Z tyłu prześledź czerwony przewód od RED3 do RED4 i przylutuj.
  11. Z tyłu prześledź żółty przewód od ŻÓŁTEGO1 do ŻÓŁTEGO2 i przylutuj.

Czujnik można teraz podłączyć bezpośrednio za pomocą pinów do płytki drukowanej lub za pomocą przewodów do punktów pokazanych w umowie pinów.

Krok 4: Testowanie

Testowanie
Testowanie
Testowanie
Testowanie
Testowanie
Testowanie

Oczekuje się, że wiele z tych KLOCKÓW będzie znajdować się na wielu węzłach (MCU - ESP8266 lub ATTINY84) w środowisku. To jest test jednostkowy: sprawdza żądania/odpowiedzi UNO, aż wszystkie dane zostaną zrzucone, a następnie zaniedbuje urządzenie podrzędne I2C.

  1. Prześlij kod UNO do uprzęży testowej UNO. Upewnij się, że ADDRESS_SLAVE odpowiada adresowi I2C BRICKa.
  2. Podłącz 5.0V na UNO do VCC na BRICK.
  3. Upewnij się, że zworka dla tego styku jest założona.
  4. Podłącz GND na UNO do GND na BRICK.
  5. Podłącz A5 na UNO do SCL na BRICK.
  6. Podłącz A4 na UNO do SDA na BRICK.
  7. Podłącz rezystor podciągający 4K7 z SDA do VCC.
  8. Podłącz rezystor podciągający 4K7 z SCL do VCC.
  9. Podłącz UNO do swojego Dev PC za pomocą USB.
  10. Otwórz konsolę Arduino. Wybierz 9600 bodów (zrestartuj UNO i ponownie otwórz konsolę, jeśli musisz).
  11. Nazwy właściwości i wartości powinny zostać wydrukowane w konsoli, a następnie słowo uśpienia zostanie powtórzone.

Jeśli widzisz "setup", a następnie powtarzają się 3 linie śmieci, możesz mieć swoje linie SDA i SCL z powrotem do przodu.

Logowanie I2C Master z I2C slave z obsługą plotera/metadanych

#włączać
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _właściwość[2][24] = {"nazwa", "wartość"};
voidsetup() {
Wire.początek(); // dołącz do magistrali i2c (adres opcjonalny dla mastera)
Serial.początek(9600); // uruchom serial dla wyjścia
opóźnienie (1000);
jeśli (!_outputPlotterOnly){
Serial.println("ustawienia");
Serial.println();
}
}
voidloop() {
jeśli (_i2cNodeProcessed){
if (!_confirmedMetadata){// daj znać niewolnikowi, aby zaczął wysyłać dane z czujnika
opóźnienie(1);
Wire.beginTransmission(ADDRESS_SLAVE);
Drut.zapis(1);
Wire.endTransmission();
opóźnienie (100);
_potwierdzoneMetadane = prawda;
}
_i2cNodeProcessed = fałsz;
jeśli (!_outputPlotterOnly){
Serial.println();
}
powrót;
}
Wire.requestFrom(ADDRESS_SLAVE, 16);
_pakietSegment++;
pakiet znaków[16];
indeks = 0;
bool isContinueSegment = false;// continueSegment (3.) 1=więcej, 0=ostatni
while (Wire.available()) { // slave może wysłać mniej niż żądano
char c = Drut.odczyt();
pakiet[indeks] = int(c) > -1 ? c: '';// zastąp nieprawidłowe znaki spacjami
jeśli (_packetSegment == 3){
_packetSegment = 0;
isContinueSegment = prawda;
//Serial.println("--------------");
//Serial.println(int(c));
//Serial.println("--------------");
if (int(c) == 48 || int(c) == 86){// 0 na ostatniej własności
_i2cNodeProcessed = prawda;
// wyślij wartości do MQTT
przerwa;
}
}
indeks++;
}
jeśli (!isContinueSegment){
jeśli (!_outputPlotterOnly){
Serial.println(pakiet);
}
strcpy(_property[_packetSegment - 1], pakiet);// ustaw lokalną var z nazwą/wartością
}w przeciwnym razie{
if (_outputPlotterOnly && _confirmedMetadata){
jeśli (_i2cNodeProcessed){
Serial.println(_property[1]);
}w przeciwnym razie{
Serial.print(_property[1]);
Serial.print("");
}
}
}
}

wyświetl rawuno_i2c_generic_sensor_test_w_plotter_v2.ino hostowane z ❤ przez GitHub

Krok 5: Kolejne kroki

Podstawowy układ obwodu i warstwa I2C oprogramowania jest powiązana z wieloma różnymi czujnikami. Najważniejszą rzeczą, od której należy zacząć, jest umowa pakietowa między urządzeniem nadrzędnym i podrzędnym.

Utworzyłem/uruchomiłem spakowaną sieć czujników (drukowanych w 3D), które korzystają z tej struktury i będą się z nią łączyć w miarę publikowania części.

Ten BLOK jest używany przez MQ2 ASSIMILATE SENSOR.

Zalecana: