PCF8574: អំពី I2C I / O Exander សម្រាប់ Arduino

PCF8574 TI CHIP

អ្នកប្រាកដជាធ្លាប់លឺពីព្រះគម្ពីរមរមន អាយស៊ីស៊ីភីអេហ្វ ៨៥៧៤ដែលជាបន្ទះឈីបដែលអាចត្រូវបានទិញដាច់ដោយឡែកឬបានតំឡើងរួចហើយនៅលើម៉ូឌុលដូចផ្សេងទៀត សមាសធាតុអេឡិចត្រូនិច ដើម្បីសម្រួលដល់ការធ្វើសមាហរណកម្មរបស់អ្នកជាមួយក្តារអារីដូណូរបស់អ្នក។ ក្នុងករណីនេះវាគឺជាផ្នែកបន្ថែមនៃធាតុចូលនិងលទ្ធផលសម្រាប់ ឡានក្រុង I2C.

អ្នកប្រហែលជាគិតថា Arduino មានរបស់វារួចហើយ ឡានក្រុង I2C រួមបញ្ចូលគ្នាហើយវាជាការពិត។ ប៉ុន្តែ PCF8574 អាចជួយពង្រីករថយន្ដក្រុងនេះហួសពីដែនកំណត់នៃក្រុមប្រឹក្សាអភិវឌ្ឍន៍របស់អ្នកដែលអាចជាជំនួយដ៏អស្ចារ្យដល់អ្នកផលិតមួយចំនួនដែលត្រូវការច្រើនជាងអ្វីដែល Arduino ផ្តល់។

តើឡានក្រុង I2C គឺជាអ្វី?

Arduino UNO មុខងារមីលីលី

ឈ្មោះ I2C មកពី សៀគ្វីរួមបញ្ចូលគ្នា ឬសៀគ្វីរួមបញ្ចូលគ្នា។ កំណែ ១.០ របស់វាត្រូវបានបង្កើតឡើងក្នុងឆ្នាំ ១៩៩២ ដោយហ្វីលីព។ បន្ទាប់មកវិនាទីទី ២ នឹងមកដល់ក្នុងឆ្នាំ ២០០០ ហើយសព្វថ្ងៃនេះវាបានក្លាយជាស្តង់ដារមួយ (១០០ គីត / វិនាទីទោះបីជាវាអនុញ្ញាតរហូតដល់ ៣,៤ Mbit / s) នៅពេលដែលប៉ាតង់បានផុតកំណត់ក្នុងឆ្នាំ ២០០៦ ហើយអាចប្រើប្រាស់ដោយសេរី។

នាពេលបច្ចុប្បន្ននេះវាត្រូវបានគេប្រើយ៉ាងទូលំទូលាយនៅក្នុងឧស្សាហកម្ម សម្រាប់ការទំនាក់ទំនងនិងត្រូវបានកោតសរសើរយ៉ាងខ្លាំងពីអ្នកផលិតសម្រាប់គម្រោងរបស់ពួកគេក្នុងការប្រាស្រ័យទាក់ទងជាមួយឧបករណ៍ត្រួតពិនិត្យមីក្រូនិងគ្រឿងបន្លាស់ផ្សេងៗដែលរួមបញ្ចូលគ្នានៅក្នុងអាយឌីស៊ីតែមួយ។

El I2C គឺជាឡានក្រុង ល្បីពីការទំនាក់ទំនងសៀរៀល។ វាប្រើពិធីសារទំនាក់ទំនងសមកាលកម្មដែលមានតែបណ្តាញចំនួន ២ ប៉ុណ្ណោះ (មានប៉ុស្តិ៍ទី ៣ ប៉ុន្តែវាត្រូវបានភ្ជាប់ជាមួយឯកសារយោងឬ GND) តាមពិតវាត្រូវបានគេស្គាល់ថាជា TWI (ចំណុចប្រទាក់ខ្សែពីរ)៖

  • មួយសម្រាប់នាឡិកា (អេសអិល) ។
  • ផ្សេងទៀតសម្រាប់ទិន្នន័យ (SDA) ។
ទាំងពីរគឺជាការតភ្ជាប់បើក CMOS បង្ហូរហើយទាមទារឱ្យមានប្រដាប់ទប់ទាញ។ លើសពីនេះទៅទៀតប្រសិនបើឧបករណ៍មួយបញ្ជូនលេខ ០ និងលេខ ១ ផ្សេងទៀតអាចនឹងមានបញ្ហាដូច្នេះនោះជាមូលហេតុដែលខ្សែត្រូវបានកំណត់ត្រឹម ១ (កម្រិតខ្ពស់) ហើយឧបករណ៍តែងតែបញ្ជូនលេខ ០ (កម្រិតទាប) ។

នោះមានន័យថាឯកសារ ម្ចាស់និងខ្ញុំបម្រើ ពួកគេបញ្ជូនទិន្នន័យតាមខ្សែកាបឬបទតែមួយដែលត្រូវបានគ្រប់គ្រងដោយអ្នកទីមួយដែលបង្កើតសញ្ញានាឡិកា។ ឧបករណ៍គ្រឿងកុំព្យូទ័រនីមួយៗដែលភ្ជាប់ទៅនឹងរថយន្ដក្រុងអាយ។ ស៊ី។ ស៊ីនឹងមានអាស័យដ្ឋានពិសេសមួយដែលត្រូវបានកំណត់ដើម្បីដឹកនាំការបញ្ជូន។ ប៉ុន្តែវាមិនចាំបាច់ទេដែលគ្រូតែងតែដូចគ្នា (គ្រូច្រើន) វាតែងតែជាអ្នកដែលផ្ទេរការផ្ទេរ។

ដូចដែលខ្ញុំបានពន្យល់រួចហើយនៅក្នុងអត្ថបទលើ Arduino I2C ខ្ញុំបានយោងពីមុនក្រុមប្រឹក្សានីមួយៗមានការតភ្ជាប់ I2C ទាំងនេះនៅកន្លែងផ្សេងៗគ្នា។ វាគឺជាអ្វីដែលអ្នកត្រូវចងចាំដើម្បីអាចប្រើវាបានត្រឹមត្រូវនៅក្នុងកំណែនីមួយៗនៃចាន:

  • Arduino UNO៖ អេឌីអេសស្ថិតនៅក្នុងអេ ៤ និងអេសខេខេនៅអេ ៥
  • អាណូឌូណូណាណូ៖ ដូចគ្នានឹងលេខមុនដែរ។
  • អារីដូណូមីនីគាំទ្រ: ដូចគ្នា។
  • Arduino មេហ្គា៖ អេឌីអេសស្ថិតនៅលើម្ជុលលេខ ២០ និងអេសខេខេនៅថ្ងៃទី ២១ ។
  • ព័ត៌មានបន្ថែមអំពីចាន។

អ្នកដឹងរួចហើយថាអ្នកអាចប្រើ I2C សម្រាប់ការបង្ហាញប្រភេទរូបភាពរបស់អ្នកបានយ៉ាងងាយស្រួលចាប់តាំងពី បណ្ណាល័យ Wire.h ជាមួយមុខងារផ្សេងៗសម្រាប់ការទំនាក់ទំនងសៀរៀល៖

  • ចាប់ផ្តើម (): ចាប់ផ្តើមបណ្ណាល័យលួសហើយបញ្ជាក់ថាតើវាជាម្ចាស់ឬទាសករ
  • requestFrom (): ប្រើដោយមេដើម្បីស្នើសុំទិន្នន័យពីទាសករ។
  • ការបញ្ជូនដំបូង (): ចាប់ផ្តើមបញ្ជូនជាមួយទាសករ។
  • ការបញ្ជូនបន្ត (): ការបញ្ជូនចុងក្រោយ។
  • សរសេរ ()- សរសេរទិន្នន័យពីទាសករក្នុងការឆ្លើយតបទៅនឹងការស្នើសុំពីមេឬអ្នកអាចតម្រង់ជួរបញ្ជូនមេ។
  • មាន ()៖ នឹងត្រឡប់ចំនួនបៃដើម្បីអាន។
  • អាន (): អានបៃដែលបញ្ជូនពីទាសករទៅចៅហ្វាយនាយឬច្រាសមកវិញ។
  • onReceive (): ហៅថាមុខងារនៅពេលទាសករទទួលការបញ្ជូនពីមេ។
  • onRequest (): ហៅមុខងារនៅពេលទាសករស្នើសុំទិន្នន័យពីមេ។

para ព័ត៌មានបន្ថែម អំពីកម្មវិធី Arduino និងមុខងារដែលអ្នកអាចទាញយកបាន ឯកសារបង្រៀនជា PDF.

តើ PCF8574 គឺជាអ្វី?

ម៉ូឌុល PCF8574

PCF8574 គឺជាក ធាតុបញ្ចូលនិងលទ្ធផលឌីជីថលរថយន្តក្រុងអាយ។ ស៊ី។ អាយ។ ស៊ី។ វាអាចត្រូវបានផលិតដោយក្រុមហ៊ុនផលិតផ្សេងៗបន្ថែមពីលើវាមាននៅក្នុងអាយស៊ីអេសនិងម៉ូឌុល។ ក្នុងករណីណាក៏ដោយវាពិតជាមានភាពជាក់ស្តែងណាស់ក្នុងការភ្ជាប់វាទៅនឹងក្តារអាឌុយណូរបស់អ្នកហើយមានសមត្ថភាពគ្រប់គ្រងឧបករណ៍ច្រើនជាងឧបករណ៍មេ។

El កុំព្យូទ័រ PCF8574 គឺសាមញ្ញ, ចាប់តាំងពីវារួមបញ្ចូលទាំងការ 8 ស្រល់ ទិសដៅខ្លះ (P0-P7 ដែលបន្ទះឈីបដើម្បីទំនាក់ទំនងត្រូវបានភ្ជាប់) ហើយម្យ៉ាងវិញទៀតអ្នកមានអេសអេសអេសអេសអេសនិងអេសអេសដែលអ្នកត្រូវតែភ្ជាប់ទៅនឹងក្តារអារីដូក៏ដូចជា VCC និង GND ដើម្បីផ្តល់ថាមពលដល់ម៉ូឌុលនេះផងដែរ។ ហើយកុំភ្លេចម្ជុលដែលមានអាស័យដ្ឋានទាំងបីគឺ A0, A1, A2 ដើម្បីជ្រើសរើសឧបករណ៍មួយណាដែលការប្រាស្រ័យទាក់ទងត្រូវបានតម្រង់ទៅ ...

កុំព្យូទ័រ PCF8574

ម្ចាស់។ លក្ខណៈពិសេសផ្សេងទៀត ដែលអ្នកគួរតែដឹងៈ

  • ការតភ្ជាប់របស់វាដែលជាការបង្ហូរបើកចំហអាចជា ត្រូវបានប្រើទាំងជាធាតុចូលនិងលទ្ធផល.
  • La ចរន្តខ្ពស់បំផុត វាគឺ 25mA នៅពេលវាដើរតួជាទិន្នផល (លិចនៅពេលចរន្តហូរឆ្ពោះទៅរក PCF8574) និង 300 µA (ប្រភពលំហូរបច្ចុប្បន្នពី PCF8574) ។
  • La ភាពតានតឹង ការផ្គត់ផ្គង់ថាមពលគឺ ២,៥ និង ៦ ស៊ី។ ការប្រើប្រាស់ដែលទទួលបានគឺទាបណាស់មានតែ ១០ អា។
  • លទ្ធផលទាំងអស់ មានឆ្នុកដើម្បីរក្សារដ្ឋដោយមិនចាំបាច់ធ្វើសកម្មភាពខាងក្រៅ។ អ្នកត្រូវតែធ្វើសកម្មភាពនៅពេលអ្នកចង់ផ្លាស់ប្តូររដ្ឋ។
  • អ្នកអាចទទួលបាន ៨ ទិសដៅដែលអាចធ្វើបាន, នោះគឺមានឧបករណ៍រហូតដល់ទៅ ៨ សម្រាប់ទំនាក់ទំនងជាមួយឬប្រើម៉ូឌុលចំនួន ៨ ដើម្បីពង្រីកវាដល់ទៅ ៦៤ ឧបករណ៍។ អាសយដ្ឋាន (ម្ជុល A8, A8, A64) នឹងមានៈ
    • ០០០: អាសយដ្ឋាន ០x២០
    • ០០០: អាសយដ្ឋាន ០x២០
    • ០០០: អាសយដ្ឋាន ០x២០
    • ០០០: អាសយដ្ឋាន ០x២០
    • ០០០: អាសយដ្ឋាន ០x២០
    • ០០០: អាសយដ្ឋាន ០x២០
    • ០០០: អាសយដ្ឋាន ០x២០
    • ០០០: អាសយដ្ឋាន ០x២០
  • សារភាព ការរំខាន (អ៊ិនធី) ដោយខ្សែពិសេសដើម្បីរកទិន្នន័យដោយមិនចាំបាច់ត្រួតពិនិត្យជានិច្ច។

ការរួមបញ្ចូលជាមួយ Arduino

រូបថតអេក្រង់របស់អារីដូណូអាយឌីអ៊ី

ការតភ្ជាប់ជាមួយ Arduino គឺសាមញ្ញណាស់អ្នកគ្រាន់តែភ្ជាប់ Vcc ជាមួយម្ជុល 5v នៃក្តារ Arduino ហើយ GND ជាមួយ GND របស់ Arduino ។ ម៉្យាងទៀតម្ជុលនៃម៉ូឌុល PCF8574 SDA និង SCL អាចមាន ភ្ជាប់ជាមួយម្ជុល ១៤ (អេ ៥ អេស។ អេស។ អិល) និង ១៥ (អេ ៤ អេឌីអេអេអេ) ។ មានតែវាទេដែលនឹងចាប់ផ្តើមដំណើរការជាក់ស្តែងអ្នកអាចប្រើ Px ដើម្បីភ្ជាប់ឧបករណ៍ដែលអ្នកចង់ទំនាក់ទំនង ...

បន្ទាប់មកវានឹងបាត់ ចាប់ផ្តើមជាមួយគំនូរព្រាងឧទាហរណ៍ នៅ Arduino IDE ។ អ្នកអាចធ្វើវាដោយមិនចាំបាច់ប្រើបណ្ណាល័យបន្ថែមដូចជា ...

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   for (short channel = 0; channel < 8; channel++)
   {
      // Escribir dato en cada uno de los 8 canales
      Wire.beginTransmission(address);
      Wire.write(~(1 << channel));
      Wire.endTransmission();
      
      // Lee dato del canal
      delay(500);
   }
}

ជាការបញ្ចូល៖

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   short channel = 1;
   byte value = 0;
 
   // Leer el dato del canal
   Wire.requestFrom(pcfAddress, 1 << channel);
   if (Wire.available())
   {
      value = Wire.read();
   }
   Wire.endTransmission();
 
   // Mostrar el valor leido por el monitor serie
   Serial.println(value);
}

ឬក៏ ប្រើបណ្ណាល័យដូចជា PCF8574 ដែលអ្នកអាចធ្វើបាន ទាញយកនៅទីនេះ និងប្រើលេខកូដស្រដៀងនឹងនេះពីឧទាហរណ៍ដែលភ្ជាប់ជាមួយបណ្ណាល័យនេះ៖

#include <Wire.h>
#include "PCF8574.h"
 
PCF8574 expander;
 
void setup() 
{
  Serial.begin(9600);
  
  expander.begin(0x20);
  
  /* Setup some PCF8574 pins for demo */
  expander.pinMode(0, OUTPUT);
  expander.pinMode(1, OUTPUT);
  expander.pinMode(2, OUTPUT);
  expander.pinMode(3, INPUT_PULLUP);
 
  /* Blink hardware LED for debug */
  digitalWrite(13, HIGH);  
  
  /* Toggle PCF8574 output 0 for demo */
  expander.toggle();
  
  /* Blink hardware LED for debug */
  digitalWrite(13, LOW);
}
 
 
 
void loop() 
{
}


ខ្លឹមសារនៃអត្ថបទប្រកាន់ខ្ជាប់នូវគោលការណ៍របស់យើង ក្រមសីលធម៌វិចារណកថា។ ដើម្បីរាយការណ៍ការចុចកំហុស នៅទីនេះ.

ធ្វើជាយោបល់ដំបូង

ទុកឱ្យយោបល់របស់អ្នក

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានបោះពុម្ភ។ អ្នកគួរតែអនុវត្តតាម *

*

*

  1. ទទួលខុសត្រូវចំពោះទិន្នន័យ: មីហ្គែល - ហ្គែលហ្គេតថន
  2. គោលបំណងនៃទិន្នន័យ៖ គ្រប់គ្រង SPAM ការគ្រប់គ្រងមតិយោបល់។
  3. ភាពស្របច្បាប់៖ ការយល់ព្រមរបស់អ្នក
  4. ការប្រាស្រ័យទាក់ទងទិន្នន័យ៖ ទិន្នន័យនឹងមិនត្រូវបានទាក់ទងទៅភាគីទីបីឡើយលើកលែងតែកាតព្វកិច្ចផ្នែកច្បាប់។
  5. ការផ្ទុកទិន្នន័យ៖ មូលដ្ឋានទិន្នន័យដែលរៀបចំដោយបណ្តាញ Occentus (EU)
  6. សិទ្ធិ៖ នៅពេលណាដែលអ្នកអាចដាក់កម្រិតទាញយកមកវិញនិងលុបព័ត៌មានរបស់អ្នក។