Spisu treści:
- Krok 1: Materiały i narzędzia
- Krok 2: Przygotuj ATTINY85
- Krok 3: Złóż obwód
- Krok 4: Testowanie
- Krok 5: Kolejne kroki
Wideo: IOT123 - I2C MQ2 CEGŁA: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
Istnieje pełna lista Bill of Material and Sourcing.
- Klocek czujnika MQ2 (1)
- ATTINY85 20PU (1)
- Dwustronna płyta prototypowa 1" (1)
- Kolektor męski 90º (3P, 3P)
- Męski nagłówek (2P, 2P)
- Bocznik zworki (1)
- Przewód przyłączeniowy (~7)
- Lut i żelazo (1)
Krok 2: 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 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.
- Z tyłu prześledź pomarańczowy przewód od ORANGE1 do ORANGE2 i przylutuj.
- Z tyłu prześledź niebieski przewód od BLUE1 do BLUE2 i przylutuj.
- Z tyłu prześledź zielony przewód od ZIELONEGO1 do ZIELONEGO2 i przylutuj.
- Z tyłu prześledź goły drut od SILVER1 do SILVER2 i lut.
- Z tyłu prześledź goły drut od SILVER3 do SILVER4 i lut.
- Z tyłu prześledź czarny przewód od BLACK1 do BLACK2 i przylutuj.
- Z tyłu prześledź czarny przewód od BLACK3 do BLACK4 i przylutuj.
- Z tyłu prześledź czerwony przewód od RED1 do RED2 i przylutuj.
- Z tyłu prześledź czerwony przewód od RED3 do RED4 i przylutuj.
- 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
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.
- Prześlij kod UNO do uprzęży testowej UNO. Upewnij się, że ADDRESS_SLAVE odpowiada adresowi I2C BRICKa.
- Podłącz 5.0V na UNO do VCC na BRICK.
- Upewnij się, że zworka dla tego styku jest założona.
- Podłącz GND na UNO do GND na BRICK.
- Podłącz A5 na UNO do SCL na BRICK.
- Podłącz A4 na UNO do SDA na BRICK.
- Podłącz rezystor podciągający 4K7 z SDA do VCC.
- Podłącz rezystor podciągający 4K7 z SCL do VCC.
- Podłącz UNO do swojego Dev PC za pomocą USB.
- Otwórz konsolę Arduino. Wybierz 9600 bodów (zrestartuj UNO i ponownie otwórz konsolę, jeśli musisz).
- 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:
Cegła na baterię do telefonu komórkowego: 6 kroków
Cegła na baterię do telefonu komórkowego: To fajny, prosty weekendowy projekt, który daje możliwość kontynuowania nauki lutowania na małych płytkach. Wykorzystuje tanie i łatwe do zdobycia części, dzięki czemu jest to świetny projekt dla początkujących dla każdego, kto zajmuje się projektami DIY
IOT123 - CZUJNIK ASYMILACJI: MQ2: 4 kroki
IOT123 - ASSIMILATE SENSOR: MQ2: ASIMILATE SENSORS to czujniki środowiska, które mają dodatkową warstwę abstrakcji sprzętu i oprogramowania, umożliwiając dodanie zupełnie nowych typów do ASSIMILATE SENSOR HUB, a odczyty mogą być pompowane do serwera MQTT bez dodawania kodu
IOT123 - CEGŁA AKUMULATORA LIR2032: 4 kroki
IOT123 - KLOCKI AKUMULATOROWE LIR2032: 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.Chociaż instrukcja
IOT123 - CEGŁA ZASILAJĄCA 3.3V: 4 kroki
IOT123 - KLOCKI ZASILAJĄCE 3.3V: 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.Chociaż instrukcja
IOT123 - 5PIN ATTINY85 NRF24L01 CEGŁA: 4 kroki
IOT123 - 5PIN ATTINY85 NRF24L01 CEGŁA: AKTUALIZACJA: Ta konfiguracja jest w dużej mierze akademicka lub stanowi podstawę do testowania oprogramowania/zasilania. Nawet gdy PB5 jest wyłączony jako RESET, nie odczytuje dokładnie wartości za pomocą analogRead: główny przypadek użycia dla odczytów czujnika. Przyjrzymy się konfiguracji ATTINY84