Talaan ng mga Nilalaman:
- Hakbang 1: Mga Materyales at Tool
- Hakbang 2: Assembly
- Hakbang 3: Code para sa UNO
- Hakbang 4: Susunod na Mga Hakbang
Video: IOT123 - I2C BRICK MASTER JIG: 4 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Habang binubuo ang ASSIMILATE SENSORS at ACTORS, pinapanatili kong madaling gamitin ang UNO para sa pagpapadala ng mga utos ng adhoc I2C sa mga prototype na binuo. Isa sa mga pakinabang ng I2C BRICKS ay ang standardized pinouts. Sa halip na gumamit ng mga wire ng tinapay sa bawat oras (tingnan ang Fritzings), isang matatag na lo-tech na kalasag ang ginagamit.
Hakbang 1: Mga Materyales at Tool
- 4cm x 6cm Uninersal PCB (1)
- Hookup wire (~ 6)
- 4K7 Resistors (2) 6
- Lalaking Header (12P, 8P)
- Babae Header (9P, o 3P, 3P)
- Panghinang at Bakal (1)
Hakbang 2: Assembly
Kung gagamit ka ng 2 off 3P na mga babaeng header sa halip na ang 1 off 9P na babaeng header, ang ASSIMILATE SENSOR / ACTORS ay magkakasya sa JIG nang hindi naalis ang mga ito.
Gamit ang mga kable, hubarin hanggang sa 10mm sa mga dulo at i-lata ang pinakadulo.
- Sa ilalim ng PCB, ipasok ang male header (1) (2) at maghinang sa itaas.
- Sa tuktok ng PCB, ipasok ang babaeng header (3) at maghinang sa ibaba.
- Sa tuktok, through-hole ang isang pulang kawad sa RED1 at RED2.
- Sa ibaba, through-hole wire mula sa RED1 patungong RED3.
- Sa ibaba, through-hole wire mula sa RED2 patungong RED5, at solder.
- Sa itaas, through-hole wire mula sa RED3 patungong RED4, at solder.
- Sa tuktok, through-hole ang isang pulang kawad sa RED6 at RED7.
- Sa ibaba, through-hole wire mula sa RED6 patungong RED8.
- Sa ibaba, through-hole wire mula sa RED7 patungong RED10, at solder.
- Sa itaas, through-hole wire mula sa RED8 patungong RED9, at solder.
- Sa tuktok, through-hole ang isang itim na kawad sa BLACK1 at BLACK2.
- Sa ibaba, through-hole wire mula BLACK1 hanggang BLACK3.
- Sa ibaba, through-hole wire mula BLACK2 hanggang BLACK5, at solder.
- Sa itaas, through-hole wire mula BLACK3 hanggang BLACK4, at solder.
- Sa tuktok, through-hole ang isang asul na kawad sa BLUE1 at BLUE2.
- Sa ibaba, through-hole wire mula BLUE1 hanggang BLUE3.
- Sa ibaba, through-hole wire mula BLUE2 patungong BLUE5, at solder.
- Sa itaas, through-hole wire mula BLUE3 hanggang BLUE4, at solder.
- Sa tuktok, through-hole ang isang berdeng kawad papunta sa GREEN1 at GREEN2.
- Sa ibaba, through-hole wire mula sa GREEN1 patungong GREEN3.
- Sa ibaba, through-hole wire mula sa GREEN2 patungong GREEN5, at solder.
- Sa itaas, through-hole wire mula sa GREEN3 patungong GREEN4, at solder.
- Sa tuktok, through-hole ang isang resistor ng 4K7 sa SILVER3 at SILVER4.
- Sa ibaba, through-hole wire mula sa SILVER3 patungong GREEN5, at solder.
- Sa ibaba, through-hole wire mula sa SILVER4 patungong RED10, at solder.
- Sa tuktok, through-hole ang isang resistor ng 4K7 sa SILVER1 at SILVER2.
- Sa ibaba, through-hole wire mula sa SILVER1 patungong BLUE5, at solder.
- Sa ibaba, through-hole wire mula sa SILVER2 patungong RED10, at solder.
Hakbang 3: Code para sa UNO
Ang sketch dito ay walang pasubali. Pinapayagan kang gamitin ang Console Input, upang ipadala sa UNO ang mga mensahe ng I2C sa I2C ATTINY85 BRICK.
Ang lahat ng mga tagubilin ay naka-print sa screen, kasama ang mga sinusuportahang pagpipilian.
Ang mga utos ng I2C BRICK adhoc para sa mga alipin mula sa UNO master
# isama |
Const byte _num_chars = 32; |
char _received_chars [_num_chars]; // isang array upang maiimbak ang natanggap na data |
boolean _has_new_data = false; |
voidsetup () { |
Serial.begin (9600); |
Serial.println (); |
Serial.println ("ASSIMILATE IOT ACTOR / SENSOR EEPROM EDITOR"); |
Serial.println ("tiyaking napili ang newline sa window ng console"); |
Serial.println (); |
Serial.println ("ADDRESS 1 CONFIRM METADATA RESEIPT N / A (FOR M2M)"); |
Serial.println ("ADDRESS 2 ACTOR CommAND"); |
Serial.println (); |
Serial.println ("ADDRESSES ON BUS:"); |
scan_i2c_addresses (); |
Serial.println (); |
Serial.println (""); |
} |
voidscan_i2c_addresses () { |
int aparato_count = 0; |
para sa (byte address = 8; address <127; address ++) |
{ |
Wire.beginTransmission (address); |
const byte error = Wire.endTransmission (); |
kung (error == 0) |
{ |
Serial.println (address); |
} |
} |
} |
voidloop () { |
recv_with_end_marker (); |
send_to_i2c (); |
} |
voidrecv_with_end_marker () { |
static byte ndx = 0; |
char end_marker = '\ n'; |
char rc; |
habang (Serial.available ()> 0 && _has_new_data == false) { |
rc = Serial.read (); |
kung (rc! = end_marker) { |
_received_chars [ndx] = rc; |
ndx ++; |
kung (ndx> = _num_chars) { |
ndx = _num_chars - 1; |
} |
} |
iba pa { |
_received_chars [ndx] = '\ 0'; // wakasan ang string |
ndx = 0; |
_has_new_data = totoo; |
} |
} |
} |
voidsend_to_i2c () { |
char param_buf [16]; |
Const String natanggap_string = String (_received_chars); |
kung (_has_new_data == totoo) { |
int idx1 = natanggap_string.indexOf ("); |
String address = natanggap_string.substring (0, idx1); |
int address_int = address.toInt (); |
kung (address_int <8 || address_int> 127) { |
Serial.println ("INVALID ADDRESS INPUT:"); |
Serial.println (address); |
bumalik; |
} |
int idx2 = natanggap_string.indexOf (", idx1 + 1); |
String code; |
kung (idx2 == -1) { |
code = ditampa_string.substring (idx1 + 1); |
} iba pa { |
code = ditampa_string.substring (idx1 + 1, idx2 + 1); |
} |
int code_int = code.toInt (); |
kung (code_int <0 || code_int> 5) { |
Serial.println ("INVALID CODE INPUT:"); |
Serial.println (code); |
bumalik; |
} |
bool has_parameter = idx2> -1; |
Parameter ng string; |
kung (has_parameter) { |
parameter = ditampa_string.substring (idx2 + 1, idx2 + 17); // 16 chars max |
kung (parameter.length () <1) { |
Serial.println ("PARTAMETER MIN. LENGTH 1"); |
_has_new_data = false; |
bumalik; |
} |
} iba pa { |
kung (code_int> 1) { |
Serial.println ("PARAMETER REQUIRED!"); |
_has_new_data = false; |
bumalik; |
} |
} |
Serial.println (); |
Serial.print ("input Orig ="); |
Serial.println (natanggap_string); |
Serial.print ("address ="); |
Serial.println (address); |
Serial.print ("code ="); |
Serial.println (code); |
Serial.print ("parameter ="); |
Serial.println (parameter); |
// SEND VIA I2C |
Wire.beginTransmission (address_int); |
Wire.write (code_int); |
kung (has_parameter) { |
parameter.trim (); |
strcpy (param_buf, parameter.c_str ()); |
Wire.write (param_buf); |
} |
Wire.endTransmission (); |
Serial.println (); |
Serial.println ("SENT VIA I2C!"); |
Serial.println (); |
Serial.println (""); |
_has_new_data = false; |
} |
} |
tingnan ang rawuno_i2c_command_input.ino na naka-host sa ❤ ng GitHub
Hakbang 4: Susunod na Mga Hakbang
Mula sa ipinakita na pagbuo, mayroong sapat na mga gumagalaw na bahagi para sa iyo upang makabuo ng iyong sariling ASSIMILATE IOT NETWORK.
Ang bawat isa sa mga indibidwal na pag-andar ng mga node (sensor at aktor) ay makokontrol sa isang desentralisadong pamamaraan, hindi nakasalalay sa MCU master na magkaroon ng anumang kaalaman sa mga sinusuportahang tampok.
Ang anumang app na kumokonekta sa MQTT broker ay maaaring makontrol / obserbahan ang bawat tampok ng IOT Node. Iyon ang M2M, mga web application, IFTTT at iba pa. Mas simple (o mas mayaman kung gusto mo) ang mga interface sa iyong mundo ng IOT.
Inirerekumendang:
IOT123 - ATTINY85 ONBOARD PROGRAMMING JIG: 3 Hakbang
IOT123 - ATTINY85 ONBOARD PROGRAMMING JIG: Sa mga disenyo ng BRICK, nabanggit ko ang mga through-hole na katabi ng ATTINY85 ay naiwang hindi nagamit, upang paganahin ang isang pogo pin programmer habang ang DIP8 ay solder sa PCB. Ito ang pogo pin programmer. Ito talaga ay isang lead ng adapter
IOT123 - LIR2032 BATTERY BRICK: 4 Hakbang
IOT123 - LIR2032 BATTERY BRICK: Ang IOT123 BRICKS ay mga modular unit ng DIY na maaaring mashed kasama ng iba pang IOT123 BRICKS, upang magdagdag ng pag-andar sa isang node o naisusuot. Nakabatay ang mga ito sa pulgadang parisukat, mga dobleng panig na mga protoboard na magkakaugnay sa pamamagitan ng mga butas. Bagaman ang nagtuturo
IOT123 - 3.3V POWER BRICK: 4 Hakbang
IOT123 - 3.3V POWER BRICK: Ang IOT123 BRICKS ay mga modular na yunit ng DIY na maaaring mashed sa iba pang mga IOT123 BRICKS, upang magdagdag ng pag-andar sa isang node o naisusuot. Nakabatay ang mga ito sa pulgadang parisukat, mga dobleng panig na mga protoboard na magkakaugnay sa pamamagitan ng mga butas. Bagaman ang nagtuturo
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: 4 Hakbang
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: UPDATE: Ang setup na ito ay higit na pang-akademiko o isang batayan para sa pagsubok ng software / power supply. Kahit na ang PB5 ay hindi pinagana bilang RESET, hindi nito binabasa ang mga halaga nang tumpak gamit ang analogRead: ang pangunahing kaso ng paggamit para sa mga pagbabasa ng sensor. Titingnan ba ang pag-setup ng ATTINY84
IOT123 - ATTINY85 SOFTWARE SERIAL JIG Assembly: 4 na Hakbang
IOT123 - ATTINY85 SOFTWARE SERIAL JIG Assembly: Gumagamit ako ng ATTINY85's para sa mga mashup na low-power sensor. Orihinal na naisip ko na walang paraan upang i-debug ang mga chips na ito gamit ang isang console at gumamit ng ilang magandang " doon. mga pamamaraan upang silip kung ano ang nangyayari run-time. Pagkatapos ay napunta ako sa SoftwareSeria