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 KY019 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 KY019 BRICK jest pierwszym z AKTORÓW i ma jedną właściwość odczytu/zapisu:
Przełącznik (prawda/fałsz)
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.
- KY-019 Przekaźnik (1)
- ATTINY85 20PU (1)
- Dwustronna płyta prototypowa 1" (1)
- Kolektor męski 90º (3P, 3P)
- Przewód przyłączeniowy (~7)
- Lut i żelazo (1)
Krok 2: Przygotuj ATTINY85
UWAGA: Jeśli zamierzasz mieć integrację Crouton, skorzystaj z biblioteki stąd i użyj przykładu zainstalowanego "attiny_ky019".
Potrzebny jest AttinyCore od Boards Manager. Wypal bootloader "EEPROM Retained", "8mHZ Internal" (wszystkie konfiguracje pokazane powyżej).
Repozytorium kodu można znaleźć tutaj.
ZIP biblioteki można znaleźć tutaj.
Instrukcje dotyczące „Importowania biblioteki ZIP” znajdują się tutaj.
Po zainstalowaniu biblioteki możesz otworzyć przykład "attiny_ky019".
Aby wgrać oprogramowanie układowe do ATTINY85, możesz znaleźć więcej informacji 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. wszyscy aktorzy przekaźnika mogą mieć ten sam adres, o ile masz tylko jednego aktora przekaźnika na MCU/węźle.
Krok 3: Złóż obwód
- Z przodu włóż komponenty ATTINY85 (1), męskie złącza 3P 90deg (2)(3) i przylutuj z tyłu.
- Z tyłu prześledź żółty przewód od ŻÓŁTEGO1 do ŻÓŁTEGO2 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ź 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.
Przekaźnik można teraz podłączyć bezpośrednio za pomocą swoich 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: wysyła polecenia I2C z UNO do ATTINY, który otwiera lub zamyka przekaźnik.
Wcześniej zbudowaliśmy I2C SHIELD dla Arduino.
Jeśli zamiast tego chcesz to zrobić:
- Podłącz 5.0V na UNO do VCC na BRICK.
- 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.
Przeprowadzenie testu
- Podłącz UNO do swojego Dev PC za pomocą USB.
- Prześlij kod do UNO.
- Otwórz konsolę Arduino. Wybierz 9600 bodów (zrestartuj UNO i ponownie otwórz konsolę, jeśli musisz).
- Adres urządzenia podrzędnego zostanie wydrukowany na konsoli.
- Kiedy, wpisz w polu wysyłania 2 1 (czyli 12 2 1), a przekaźnik się włączy.
- Gdy, wpisz w polu wysyłania 2 0 (czyli 12 2 0), a przekaźnik się wyłączy.
Polecenia adhoc I2C BRICK dla urządzeń podrzędnych z mastera UNO
#włączać |
stały bajt _liczba_znaków = 32; |
char _otrzymane_znaki[_liczba_znaków]; // tablica do przechowywania otrzymanych danych |
wartość logiczna _ma_nowe_dane = fałsz; |
voidsetup() { |
Serial.początek(9600); |
Serial.println(); |
Serial.println("ASYMILACJA AKTORA IOT/EDYTOR CZUJNIKA EEPROM"); |
Serial.println("zapewnij zaznaczenie nowej linii w oknie konsoli"); |
Serial.println(); |
Serial.println("ADRES 1 POTWIERDŹ POTWIERDZENIE METADANYCH NIE DOTYCZY (DLA M2M)"); |
Serial.println("POLECENIE AKTORA DLA ADRESU 2"); |
Serial.println(); |
Serial.println("ADRESY W BUS:"); |
scan_i2c_addresses(); |
Serial.println(); |
Serial.println(""); |
} |
voidscan_i2c_addresses(){ |
int liczba_urządzeń = 0; |
for (adres bajtu = 8; adres < 127; adres++) |
{ |
Wire.beginTransmisja(adres); |
błąd const byte = Wire.endTransmission(); |
jeśli (błąd == 0) |
{ |
Serial.println(adres); |
} |
} |
} |
voidloop() { |
recv_with_end_marker(); |
wyślij_do_i2c(); |
} |
voidrecv_with_end_marker() { |
bajt statyczny ndx = 0; |
char end_marker = '\n'; |
char rc; |
while (Serial.available() >0 && _has_new_data == false) { |
rc = Serial.odczyt(); |
if (rc != end_marker) { |
_otrzymane_znaki[ndx] = rc; |
ndx++; |
if (ndx >= _liczba_znaków) { |
ndx = _liczba_znaków - 1; |
} |
} |
w przeciwnym razie { |
_otrzymane_znaki[ndx] = '\0'; // zakończ ciąg |
ndx = 0; |
_ma_nowe_dane = prawda; |
} |
} |
} |
voidsend_to_i2c() { |
char param_buf[16]; |
const String odebrany_string = String(_otrzymane_znaki); |
jeśli (_has_new_data == prawda) { |
int idx1 = odebrany_ciąg.indexOf(''); |
Adres ciągu = odebrany_ciąg.substring(0, idx1); |
int adres_int = adres.toInt(); |
if (adres_int < 8 || adres_int >127){ |
Serial.println("NIEPRAWIDŁOWE WPROWADZENIE ADRESU:"); |
Serial.println(adres); |
powrót; |
} |
int idx2 = odebrany_ciąg.indexOf('', idx1+1); |
Kod ciągu; |
jeśli (idx2 == -1){ |
kod = odebrany_ciąg.podciąg(idx1+1); |
}w przeciwnym razie{ |
kod = odebrany_ciąg.podciąg(idx1+1, idx2+1); |
} |
int kod_int = kod.toInt(); |
if (kod_int < 0 || code_int >5){ |
Serial.println("WPROWADZONY NIEPRAWIDŁOWY KOD:"); |
Serial.println(kod); |
powrót; |
} |
bool has_parameter = idx2 > -1; |
parametr ciągu; |
jeśli (ma_parametr){ |
parametr = odebrany_ciąg.substring(idx2 + 1, idx2 + 17); // maks. 16 znaków |
if (parametr.długość() < 1){ |
Serial.println("MIN. DŁUGOŚĆ PARTAMENTU 1"); |
_ma_nowe_dane = fałsz; |
powrót; |
} |
}w przeciwnym razie{ |
jeśli (kod_int >1){ |
Serial.println("WYMAGANY PARAMETR!"); |
_ma_nowe_dane = fałsz; |
powrót; |
} |
} |
Serial.println(); |
Serial.print("input orig = "); |
Serial.println(otrzymany_ciąg); |
Serial.print("adres = "); |
Serial.println(adres); |
Serial.print("kod = "); |
Serial.println(kod); |
Serial.print("parametr = "); |
Serial.println(parametr); |
// WYŚLIJ PRZEZ I2C |
Wire.beginTransmission(adres_int); |
Wire.write(kod_int); |
jeśli (ma_parametr){ |
parametr.przycinanie(); |
strcpy(param_buf, parametr.c_str()); |
Wire.write(param_buf); |
} |
Wire.endTransmission(); |
Serial.println(); |
Serial.println("WYSŁANE PRZEZ I2C!"); |
Serial.println(); |
Serial.println(""); |
_ma_nowe_dane = fałsz; |
} |
} |
zobacz rawuno_i2c_command_input.ino hostowane z ❤ przez GitHub
Krok 5: Kolejne kroki
Kontynuacja ASIMILATE ACTOR: KY019, która używa tej cegły, ma automatyczną konfigurację dla Croutona za pomocą metadanych już zainstalowanych w ATTINY85 tutaj. Pakiet JSON wysłany do Croutona jest wysyłany za pośrednictwem najnowszego oprogramowania układowego dla ICOS10. Możesz zrobić dowód koncepcji na zwykłym ESP8266, jeśli kompilacja to na razie za dużo.
Szkic UNO używany w testowaniu ma funkcję zapisywania nowego adresu urządzenia podrzędnego w pamięci EEPROM na ATTINY85, jeśli wystąpi konflikt na docelowej magistrali I2C.
Dodano kilka schematów, ale są różne sposoby okablowania obwodu odpływowego w zależności od tego, co chcesz osiągnąć, więc zostawię to dla Ciebie:)
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 - ASYMILACJA AKTORA: KY019: 4 kroki
IOT123 - ASYMILATE AKTOR: KY019: Jest z sygnałem sterującym 5 V TIL, który może sterować sygnałem DC / AC. Ta konstrukcja jest oparta na cegle I2C KY019. Jeśli potrzebujesz 2 kanałów, polecam zamienić tego aktora na KOSTKĘ PRZEKAŹNIKA 2CH. ASYMILATE AKTORZY/CZUJNIKI to aktorzy otoczenia/senso
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