Mục lục:

IOT123 - I2C HEARTBEAT BRICK: 6 bước
IOT123 - I2C HEARTBEAT BRICK: 6 bước

Video: IOT123 - I2C HEARTBEAT BRICK: 6 bước

Video: IOT123 - I2C HEARTBEAT BRICK: 6 bước
Video: Zaful Bikini HAUL 2018 | TRY ON | Valerie pac 2024, Tháng mười một
Anonim
IOT123 - GẠCH TIM MẠCH I2C
IOT123 - GẠCH TIM MẠCH I2C
IOT123 - GẠCH ĐÁNH RĂNG TRÁI TIM I2C
IOT123 - GẠCH ĐÁNH RĂNG TRÁI TIM I2C
IOT123 - GẠCH TIM MẠCH I2C
IOT123 - GẠCH TIM MẠCH I2C

IOT123 BRICKS là các đơn vị mô-đun DIY có thể kết hợp với các GẠCH IOT123 khác, để thêm chức năng cho một nút hoặc thiết bị đeo được. Chúng được dựa trên các tấm ván hình vuông inch, hai mặt với kết nối với nhau thông qua các lỗ.

Một số GẠCH này dự kiến sẽ nằm trên nhiều nút (MCU chính - ESP8266 hoặc ATTINY84) trên một trang web. MCU không cần biết trước về mục đích của cảm biến hoặc nhu cầu phần mềm. Nó quét các nút I2C sau đó yêu cầu kết xuất thuộc tính (dữ liệu cảm biến) từ mỗi nô lệ. Các GẠCH này cung cấp 5.0V, 3.3V và một dòng AUX khác có thể tùy chỉnh.

I2C HEARTBEAT BRICK này cho biết nô lệ ATTINY còn sống hay không, cũng là lưu lượng I2C và có một thuộc tính:

TRẠNG THÁI ("SỐNG")

PB1 (màu trắng) cho biết sức khỏe ATTINY.

PB3 (màu vàng) chuyển đổi với các yêu cầu I2C từ thiết bị chính.

PB4 (màu cam) chuyển đổi với I2C nhận từ chủ.

Các lỗ thông gần với ATTINY85 đã không được sử dụng, để kích hoạt một bộ lập trình chân pogo trong khi DIP8 được hàn vào PCB. Một phần trừu tượng hơn nữa, đóng gói GẠCH trong các hình trụ nhỏ cắm vào trung tâm D1M WIFI BLOCK, bơm các giá trị đến máy chủ MQTT, đang được phát triển.

Bước 1: Vật liệu và công cụ

Vật liệu và Công cụ
Vật liệu và Công cụ
Vật liệu và Công cụ
Vật liệu và Công cụ
Vật liệu và Công cụ
Vật liệu và Công cụ
Vật liệu và Công cụ
Vật liệu và Công cụ

Có đầy đủ Bill of Material and Sourcing list.

  1. Giấy PCB (7 x 7 lỗ)
  2. LEDS (Đỏ, Xanh lục, Xanh lam)
  3. Điện trở (3 tắt 1K)
  4. ATTINY85 20PU (1)
  5. Protoboard 1 "hai mặt (1)
  6. Tiêu đề nam 90º (3P, 3P)
  7. Tiêu đề nam (2P, 2P)
  8. Jumper Shunt (1)
  9. Dây móc (~ 7)
  10. Hàn và sắt (1)

Bước 2: Chuẩn bị ATTINY85

Chuẩn bị ATTINY85
Chuẩn bị ATTINY85
Chuẩn bị ATTINY85
Chuẩn bị ATTINY85
Chuẩn bị ATTINY85
Chuẩn bị ATTINY85
Chuẩn bị ATTINY85
Chuẩn bị ATTINY85

LƯU Ý: Nếu có ý định tích hợp Crouton, vui lòng sử dụng thư viện từ đây và sử dụng ví dụ được cài đặt "attiny_heartbeat"

AttinyCore từ Trình quản lý hội đồng là cần thiết. Ghi bộ nạp khởi động "EEPROM Retained", "8mHZ Internal" (tất cả cấu hình hiển thị ở trên).

Kho mã có thể được tìm thấy ở đây.

Bạn có thể tìm thấy mã ZIP của thư viện tại đây.

Hướng dẫn "Nhập thư viện ZIP" tại đây.

Sau khi thư viện được cài đặt, bạn có thể mở ví dụ "attiny_heartbeat".

Để tải chương trình cơ sở lên ATTINY85, bạn có thể tìm thêm thông tin chi tiết trong các hướng dẫn sau:

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

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

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

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

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

Tốt nhất hãy kiểm tra qua breadboard trước khi tiếp tục.

Nếu bạn hiện có ASSIMILATE SENSORS, hãy đảm bảo địa chỉ phụ khác trên tổ hợp SENSOR / MCU Host, ví dụ: tất cả các tác nhân Chuyển tiếp có thể có cùng một địa chỉ miễn là bạn chỉ có một tác nhân Chuyển tiếp trên MCU / nút.

Bước 3: Lắp ráp các chỉ số

Lắp ráp các chỉ số
Lắp ráp các chỉ số
Lắp ráp các chỉ số
Lắp ráp các chỉ số
Lắp ráp các chỉ số
Lắp ráp các chỉ số

Các chỉ số có nghĩa là hoàn toàn có thể tùy chỉnh. Đó là các tín hiệu sự kiện từ mạch chính được coi là Heartbeats. Đối với bản dựng này, chúng tôi sẽ sử dụng các chỉ báo LED; bản dựng của bạn có thể sử dụng rơ le (vâng, VCC bị hỏng) hoặc một chỉ báo dựa trên tín hiệu / hình ảnh khác. Các giá trị điện trở sẽ phụ thuộc vào sở thích cá nhân về mức độ sáng bạn muốn chúng.

  1. Ở trên cùng, lắp một đèn LED màu xanh lam vào RED1 (+) và BLACK1 (G), và hàn ở phía dưới.
  2. Ở phía dưới, uốn cong chì từ RED1 để nó chạm vào miếng đồng trên SILVER8 và cắt.
  3. Ở phía dưới, cắt chì từ vật hàn BLACK1 ở trên.
  4. Ở trên cùng, lắp một đèn LED màu xanh lục vào RED2 (+) và BLACK2 (G), và hàn ở dưới cùng.
  5. Ở phía dưới, uốn cong chì từ RED2 để nó chạm vào miếng đồng trên SILVER9 và cắt.
  6. Ở phía dưới, cắt chì từ vật hàn BLACK2 ở trên.
  7. Ở phía trên, lắp một đèn LED màu đỏ vào RED3 (+) và BLACK3 (G), và hàn ở phía dưới.
  8. Ở phía dưới, uốn cong chì từ RED3 để nó chạm vào miếng đồng trên SILVER10 và cắt.
  9. Ở phía dưới, cắt chì từ vật hàn BLACK3 ở trên.
  10. Ở phía trên, lắp một điện trở 1K vào các lỗ thông qua SILVER1 và SILVER4.
  11. Ở phía dưới, vạch, cắt và hàn chì từ SILVER1 lên BLACK1.
  12. Ở phía trên, lắp một điện trở 1K vào các lỗ thông qua SILVER2 và SILVER4.
  13. Ở phía dưới, vạch, cắt và hàn chì từ SILVER2 lên BLACK2.
  14. Ở phía trên, lắp một điện trở 1K vào các lỗ thông qua SILVER3 và SILVER4.
  15. Ở phía dưới, vạch, cắt và hàn chì từ SILVER3 lên BLACK3.
  16. Ở phía dưới, hàn dây trên SILVER4 và cắt ở độ dài khoảng 5mm.
  17. Ở phía dưới, hàn một dây đen lên SILVER4.
  18. Ở phía dưới, hàn một dây màu trắng vào SILVER5, đảm bảo tính liên tục của dây dẫn từ RED1.
  19. Ở phía dưới, hàn một dây màu vàng vào SILVER6, đảm bảo tính liên tục của dây dẫn từ RED2.
  20. Ở phía dưới, hàn một dây màu cam vào SILVER7, đảm bảo tính liên tục của dây dẫn từ RED3.

Bước 4: Lắp ráp mạch chính

Lắp ráp mạch chính
Lắp ráp mạch chính
Lắp ráp mạch chính
Lắp ráp mạch chính
Lắp ráp mạch chính
Lắp ráp mạch chính

Cuộc họp:

  1. Ở mặt trước, lắp các thành phần ATTINY85 (1), tiêu đề nam 3P 90deg (2) (3), tiêu đề nam 3P (4) (5) và hàn ở mặt sau.
  2. Ở phía sau, vạch một dây màu vàng từ YELLOW1 đến YELLOW2 và hàn.
  3. Ở phía sau, vạch một dây màu cam từ ORANGE1 đến ORANGE2 và hàn.
  4. Ở phía sau, vạch một dây màu xanh lam từ BLUE1 đến BLUE2 và hàn.
  5. Ở phía sau, vạch một dây màu xanh lá cây từ GREEN1 đến GREEN2 và hàn.
  6. Ở phía sau, vạch một dây màu trắng từ WHITE1 đến WHITE2 và hàn.
  7. Ở phía sau, vạch một dây đen từ BLACK1 đến BLACK2 và hàn.
  8. Ở phía sau, vạch một dây đen từ BLACK3 đến BLACK4 và hàn.
  9. Ở phía sau, vạch một dây màu đỏ từ RED1 đến RED2 và hàn.
  10. Ở phía sau, vạch một dây trần từ RED3 đến RED4 và hàn.
  11. Ở phía sau, vạch một dây trần từ SILVER1 đến SILVER2 và hàn.
  12. Thêm một jumper trên đường 5V hoặc 3V3.

Nếu sử dụng các Chỉ báo ở trên (tham khảo sơ đồ sơ đồ chân):

  1. Ở phía sau, hàn dây màu trắng vào PB1.
  2. Ở phía sau, hàn dây màu vàng vào PB3.
  3. Ở phía sau, hàn dây màu cam vào PB4.
  4. Ở phía sau, hàn dây đen vào GND.

Bước 5: Kiểm tra

Thử nghiệm
Thử nghiệm
Thử nghiệm
Thử nghiệm
Thử nghiệm
Thử nghiệm
Thử nghiệm
Thử nghiệm

Một số GẠCH này dự kiến sẽ nằm trên nhiều nút (MCU - ESP8266 hoặc ATTINY84) trong một môi trường. Đây là một bài kiểm tra đơn vị: gửi các lệnh I2C từ UNO đến ATTINY để bật tắt đèn LED Nhận. Đèn LED ATTINY ALIVE vẫn sáng.

Trước đây chúng tôi đã xây dựng I2C SHIELD cho Arduino.

Nếu bạn muốn breadboard nó thay vào đó:

  1. Kết nối 5.0V trên UNO với VCC trên BRICK.
  2. Kết nối GND trên UNO với GND trên BRICK.
  3. Kết nối A5 trên UNO với SCL trên BRICK.
  4. Kết nối A4 trên UNO với SDA trên BRICK.
  5. Kết nối một điện trở kéo lên 4K7 từ SDA đến VCC.
  6. Kết nối một điện trở kéo lên 4K7 từ SCL đến VCC.

Đang chạy thử nghiệm

  1. Kết nối UNO của bạn với PC Dev của bạn bằng USB.
  2. Tải mã lên UNO.
  3. Mở Bảng điều khiển Arduino.
  4. Chọn 9600 baud (khởi động lại UNO và mở lại bảng điều khiển nếu bạn phải làm như vậy).
  5. Địa chỉ của nô lệ sẽ được in ra bảng điều khiển.
  6. Khi nào, hãy nhập vào hộp gửi 2 1 (so 16 2 1) và đèn LED Nhận sẽ bật.
  7. Khi nào, hãy nhập vào hộp gửi 2 0 (so 16 2 0) và đèn LED Nhận sẽ tắt.

Các lệnh adhoc I2C BRICK cho các nô lệ từ UNO chính

#bao gồm
const byte _num_chars = 32;
char _reiled_chars [_num_chars]; // một mảng để lưu trữ dữ liệu đã nhận
boolean _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("ASSIMILATE IOT ACTOR / SENSOR EEPROM EDITOR");
Serial.println ("đảm bảo chọn dòng mới trong cửa sổ giao diện điều khiển");
Serial.println ();
Serial.println ("ĐỊA CHỈ 1 XÁC NHẬN METADATA N / A (CHO M2M)");
Serial.println ("ĐỊA CHỈ 2 ACTOR LỆNH");
Serial.println ();
Serial.println ("CÁC ĐỊA CHỈ TRÊN XE BUÝT:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
for (địa chỉ byte = 8; địa chỉ <127; địa chỉ ++)
{
Wire.beginTransmission (địa chỉ);
const byte error = Wire.endTransmission ();
nếu (lỗi == 0)
{
Serial.println (địa chỉ);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
byte tĩnh ndx = 0;
char end_marker = '\ n';
char rc;
while (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
nếu (rc! = end_marker) {
_receive_chars [ndx] = rc;
ndx ++;
if (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
khác {
_reiled_chars [ndx] = '\ 0'; // kết thúc chuỗi
ndx = 0;
_has_new_data = true;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String accept_string = String (_receive_chars);
if (_has_new_data == true) {
int idx1 = got_string.indexOf ('');
Địa chỉ chuỗi = got_string.substring (0, idx1);
int address_int = address.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("ĐẦU VÀO ĐỊA CHỈ KHÔNG HỢP LỆ:");
Serial.println (địa chỉ);
trở lại;
}
int idx2 = got_string.indexOf ('', idx1 + 1);
Mã chuỗi;
if (idx2 == -1) {
code = got_string.substring (idx1 + 1);
}khác{
code = got_string.substring (idx1 + 1, idx2 + 1);
}
int code_int = code.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("ĐẦU VÀO MÃ KHÔNG HỢP LỆ:");
Serial.println (mã);
trở lại;
}
bool has_parameter = idx2> -1;
Tham số chuỗi;
if (has_parameter) {
tham số = accept_string.substring (idx2 + 1, idx2 + 17); // tối đa 16 ký tự
if (tham số.length () <1) {
Serial.println ("PARTAMETER MIN. LENGTH 1");
_has_new_data = false;
trở lại;
}
}khác{
if (code_int> 1) {
Serial.println ("BẮT BUỘC THAM SỐ!");
_has_new_data = false;
trở lại;
}
}
Serial.println ();
Serial.print ("đầu vào orig =");
Serial.println (chuỗi_nhận_được);
Serial.print ("address =");
Serial.println (địa chỉ);
Serial.print ("code =");
Serial.println (mã);
Serial.print ("tham số =");
Serial.println (tham số);
// GỬI QUA I2C
Wire.beginTransmission (address_int);
Wire.write (mã_int);
if (has_parameter) {
tham số.trim ();
strcpy (param_buf, tham số.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println ("SENT VIA I2C!");
Serial.println ();
Serial.println ("");
_has_new_data = false;
}
}

xem rawuno_i2c_command_input.ino được lưu trữ với ❤ bởi GitHub

Bước 6: Các bước tiếp theo

Bước tiếp theo
Bước tiếp theo
Bước tiếp theo
Bước tiếp theo

ASSIMILATE ACTOR: HEARTBEAT tiếp theo sử dụng khối hình này có cấu hình tự động cho Crouton thông qua siêu dữ liệu đã được cài đặt trong ATTINY85 tại đây. Gói JSON được gửi đến Crouton được gửi qua phần sụn mới nhất cho ICOS10. Bạn có thể thực hiện Proof-of-concept trên một ESP8266 thông thường, nếu bản dựng hiện tại là quá nhiều.

Bản phác thảo UNO được sử dụng trong Thử nghiệm có chức năng lưu địa chỉ phụ mới vào EEPROM trên ATTINY85, nếu bạn có xung đột trên bus I2C mục tiêu của mình.

Đề xuất: