Mengirimkan I2C dengan andal melalui kabel Cat5


8

Saya sedang mempertimbangkan untuk menerapkan sistem otomasi rumah di sekitar Raspberry Pi saya, tetapi saya menemukan harga dan kebutuhan ruang untuk memasukkan Pi di setiap tempat, terlalu banyak kontrol yang diperlukan tetapi kabel Cat5e yang diperlukan untuk desain ini sudah dipasang selama renovasi. Saya memiliki beberapa PCF8574, PCF8591 dan SSR yang tergeletak di sekitar, jadi apakah mungkin untuk mengendarainya menggunakan kabel Cat5e?

Semua kabel Cat5e saya sudah terhubung dengan pin TIA / EIA 568B. Mereka adalah bagian dari pemasangan kabel struktural saya dan tidak dilindungi, sehingga diperlukan tegangan saluran yang lebih tinggi. Saya berpikir mengirim daya dan jalur I2C melalui kabel, dengan pinout ini:

Pin 1 (Pair 1): SCL+
Pin 2 (Pair 1): SCL-
Pin 3 (Pair 2): SDA+
Pin 4 (Pair 3): +12V
Pin 5 (Pair 3): +12V
Pin 6 (Pair 2): SDA-
Pin 7 (Pair 4): GND
Pin 8 (Pair 4): GND

Pengaturan pin daya sama dengan kabel 100BASE-TX PoE sehingga peringkat daya akan sama juga, dan penggunaan pensinyalan diferensial dua arah ditemukan dalam 1000BASE-T yang membutuhkan Cat5e.

Garis I2C SCL dan SDA asli diturunkan menjadi dua pasangan diferensial dua arah pada level TTL (saluran terbuka tidak disimpan pada kabel, tetapi dipulihkan pada perangkat pemutusan garis / pemindah level yang saya rancang)

Ada saran tentang itu? Juga, chip mana yang harus saya gunakan untuk mengubah jalur I2C ke pensinyalan diferensial? Tolong sarankan chip dengan opsi lubang melalui DIP kepada saya. Saya tidak tahu bagaimana menangani hal-hal SMT.

EDIT

Saya menemukan chip ini, SN65LBC180, apakah itu pilihan yang baik? Bagaimana cara menghubungkannya ke unit dua arah? Bagaimana menggeser level (ini adalah bagian BiCMOS yang membutuhkan level TTL tetapi Pi drive pada level CMOS 3.3v) dan membuatnya open-drain-compatible?

EDIT 2

Komentator menyarankan RS-485 yang tampaknya dapat diterima oleh saya, tetapi masih dua pasangan diferensial harus dua arah dan hanya dua pasangan diferensial dua arah saja. Saya menggunakan kembali kabel Ethernet yang ada.

EDIT 3

Karena seseorang membawanya, saya tidak bisa menggunakan CAN. Tidak ada cara saya bisa memasukkan CAN ke RPi tanpa mengorbankan apa pun (SPI ditempati oleh layar sentuh, jadi tidak ada konverter SPI ke CAN)

Saya menyadari keterbatasan I2C PHY jadi saya pada dasarnya mencoba menyesuaikan 1000BASE-T PHY untuk itu - pensinyalan diferensial dua arah untuk sinyal SCL dan SDA, tetapi di atas itu menjalankan protokol I2C.

EDIT 4

Sebuah chip baru datang kepada saya: NXP P82B96 yang membagi I2C menjadi 4 jalur searah, yang pada gilirannya dapat digunakan untuk memberi makan ke SN65LBC180 melalui isolasi-opto (hanya sisi-Pi) untuk membentuk pensinyalan jarak jauh siap 8-pin. Sekarang saya hanya perlu mencari cara untuk mendapatkan daya melalui kabel, atau bagaimana menentukan apakah bus mengirim dan membuat pasangan bidirectional.

EDIT 5

Dari saran jawaban, saya pikir saya perlu mengubah sedikit kekuatan pinout:

Pin 1 (Pair 1): SCL+
Pin 2 (Pair 1): SCL-
Pin 3 (Pair 2): SDA+
Pin 4 (Pair 3): +5V
Pin 5 (Pair 3): GND
Pin 6 (Pair 2): SDA-
Pin 7 (Pair 4): GND
Pin 8 (Pair 4): +12V

Tegangan sinyal diferensial I2C adalah TTL. + 5V lebih dari pasangan 3 berasal dari Pi, tidak dibuat-buat tetapi menyatu. Pasangan + 12V over 4 mungkin tidak ada hanya digunakan untuk menggerakkan beberapa perangkat berdaya tinggi. Jika perlu, perangkat dapat menggunakan catu dayanya sendiri dan membiarkan kedua relnya tidak tersambung atau menyuplai tegangan yang lebih tinggi tetapi menggunakan rel 5V.

GAGAL BAHWA

Pinout masih merupakan desain asli saya, yang kompatibel dengan 802.1af.


4
Kenapa tidak RS-485? Standar industri, andal.
Kamil

Pi tidak memiliki RS485 dan saya ingin rangkaian interfacing sesederhana mungkin. Saya juga membutuhkan PCF8574 yang, dari percobaan saya, dapat menggerakkan SSR saya secara andal dengan tegangan suplai 5V.
Maxthon Chan

Sementara RS-485 itu sendiri adalah dua arah, itu tidak melakukan dua arah di sisi satu ujung.
Ignacio Vazquez-Abrams

5
Jika Anda benar-benar ingin melakukan apa yang Anda katakan akan Anda lakukan semula, mengapa Anda bahkan datang ke sini dan menanyakannya?
Matt Young

2
@maxthonchan Kabel ethernet Cat5 dapat dengan aman menangani 360mA di 50V ( en.wikipedia.org/wiki/Power_over_Ethernet#Power_capacity_limits ). Anda dapat dengan mudah mendapatkan relay solid state yang menarik <10mA pada 3-32V pada sisi input, sangat baik dalam spesifikasi aman.
Hibah

Jawaban:


18

Mencoba melakukan dengan IIC adalah ide yang buruk. IIC benar-benar dimaksudkan untuk komunikasi antar chip pada satu papan. Karena arus maksimum yang diperlukan untuk menarik garis rendah terbatas, saluran tersebut memiliki impedansi yang relatif tinggi (beberapa kΩ). Ini berarti mereka dapat mengambil suara dengan mudah, yang merupakan masalah serius ketika berjalan di kabel unshielded di dinding mungkin tepat di sebelah kabel listrik AC.

Saya akan menggunakan CAN untuk ini. BISA menggunakan pasangan bengkok tunggal yang ditarik bersama-sama dengan hanya 60 Ω pada satu titik, dan sinyal diferensial. Itu berarti sebagian besar noise mode umum yang tak terhindarkan yang akan diambil karena kopling kapasitif dapat dibatalkan oleh penerima. BISA berjalan pada 500 kbits / s dapat mencakup sesuatu ukuran rumah biasa.

Banyak mikrokontroler tersedia saat ini dengan CAN built in. Anda biasanya memerlukan chip tranceiver fisik yang terpisah (seperti MCP2551 yang umum), tetapi beberapa lapisan protokol yang paling rendah diimplementasikan dalam silikon di perangkat CAN. Firmware berinteraksi dengan bus CAN di tingkat pengiriman dan penerimaan paket lengkap. Deteksi tabrakan dan coba lagi, pembuatan checksum, detail pensinyalan paket bus, validasi checksum yang diterima, dan penyesuaian clock drift semuanya ditangani untuk Anda.

Jangan tertipu RS-485. Itu peninggalan dari zaman dulu. Ini juga menggunakan sinyal diferensial tunggal seperti CAN, sehingga juga memiliki kekebalan noise yang baik. Namun, orang biasanya jatuh cinta pada RS-485 karena terlihat "lebih sederhana". Ini hanya karena mereka tidak melihat keseluruhan sistem. Pertama, ini tidak terlalu rumit secara elektrik. Anda masih memerlukan beberapa jenis transciever untuk mengemudi dan menerima sinyal diferensial. Apakah Anda memiliki transceiver RS-485 yang terhubung ke UART mikrokontroler, atau MCP2551 yang terhubung ke perangkat CAN cukup tidak relevan dalam hal kompleksitas biaya dan perangkat keras. Perbedaan besar adalah bahwa RS-485 membuat Anda berada pada level byte mentah (melalui UART). Ini berarti untuk mengimplementasikan sistem yang bermakna dan kuat, Anda harus menemukan protokol Anda sendiri untuk menangani deteksi tabrakan, putuskan bagaimana menangani retries, paketisasi, pembuatan dan pemeriksaan checksum, kontrol aliran, dll. Anda dapat menggunakan arsitektur master tunggal, tetapi mendapatkan detail dengan benar jauh lebih rumit daripada yang orang pikir belum menganalisis semuanya dengan cermat. Dengan CAN Anda hanya mengirim dan menerima paket, dan perangkat kerasnya mengurus detailnya.


Saya tidak punya BISA dibangun untuk RPi, saya tidak punya antarmuka BISA, saya tidak mampu membelinya dan saya tidak bisa memasukkannya ke dalam perumahan yang ada. Jadi, TIDAK BISA. Saya mengonversi IIC ke sana kemari dari sinyal diferensial untuk menghindari jebakan crosstalk dan resistansi itu sendiri. Konversi dan perangkat IIC berbagi satu papan tunggal.
Maxthon Chan

@ Max: Mikrokontroler dengan CAN akan lebih murah, lebih kecil, dan lebih hemat daya daripada RPi. Jika sebagian besar node ini adalah sensor dan sejenisnya, sebuah RPi masih berlebihan
Olin Lathrop

UC tidak memiliki daya komputasi yang memadai untuk menjalankan sisi lain dari sistem. Meskipun saya memiliki layar sentuh pada sistem yang hanya untuk keadaan darurat, semua perintah dikirim melalui jaringan rumah ke Pi melalui HTTP (dengan UI yang digerakkan AJAX yang sangat mewah), dan Pi menangani semua otentikasi dan hal-hal lain.
Maxthon Chan

3
@ MaxthonChan Anda bisa mendapatkan IC pengontrol murah yang mengonversi CAN ke SPI dan / atau I2C ke antarmuka dengan RasPI Anda. Contoh dari Microchip .
Peter

Jika itu saran Anda, maka tolong katakan padaku bagaimana saya bisa mengendarai SSR saya? Saat ini saya punya satu papan menerima dengan chip interfacing diff, 7805 dan PCF8574, dan drive hingga 8 SSR. (dan biasanya saya punya dua atau tiga)
Maxthon Chan

7

I2C bukan cara untuk pergi. DAPAT biaya transranie masing-masing satu dolar, dan Anda dapat menggunakannya sebagai transkart uart dan menulis protokol Anda sendiri sehingga Anda tidak memerlukan mikro kaleng kompatibel Anda tidak ingin menggunakan tumpukan kaleng penuh.

Saya selalu merasa sedikit tidak nyaman ketika saya melihat konduktor Cat5 berjalan secara paralel untuk arus lebih. Itu mengganggu saya karena jika satu konduktor rusak yang lain akan membawa arus sistem penuh. Peringkat cat5 saat ini sangat konservatif sehingga kemungkinan kebakaran cukup rendah tapi saya tidak suka kemungkinan itu.

Cara aman untuk melakukannya adalah memiliki polyfuse di kedua rel daya dan bergabung dengan pangkalan di suplai, dan hubungkan setiap perangkat ke satu dan hanya satu set daya / arde. Dengan cara itu jika satu kabel gagal, perangkat yang menggunakan saluran itu kehilangan daya, bukannya satu saluran dipaksa untuk membawa kekuatan dua.

Banyak orang suka menempatkan daya dan ground pada kedua pasangan bengkok untuk alasan EMI daripada memiliki satu pasangan daya dan satu pasangan ground. Jika Anda memiliki dua pasangan daya / pembumian, saluran listrik akan lebih dekat ke pentanahan, dan bidang akan dibatalkan, mengurangi gelombang radio yang dikirim atau diterima dari saluran listrik. Tidak perlu, tapi bagus jika ada banyak suara listrik yang bersenandung.

12V menurut saya terlalu rendah untuk distribusi daya ketika 24v masih cukup aman dan jauh lebih efisien.


Solusi saya entah bagaimana didasarkan pada itu. Saya menggunakan chip NXP splitter untuk membagi bus I2C menjadi sepasang Tx / Rx (baik SDA dan SCL) dan multiplexing mereka sebagai UART menggunakan chip antarmuka CAN. Ini memberi saya dua pasang bengkok yang membawa jalur I2C SDA dan SCL, disambungkan ke pin T5 / EIA568B Cat5e 1/2 dan 3/6.
Maxthon Chan

Itu juga harus bekerja, satu-satunya masalah adalah Anda membutuhkan chip NXP Anda, dua can trancievers, dan chip I / O i2c Anda yang sebenarnya. Itu lima chip per papan, dan terakhir saya memeriksa chip NXP lebih mahal daripada di atmega328, tetapi itu mungkin telah berubah. Ini akan bekerja dan pemrogramannya akan sederhana karena i2c, tetapi menggunakan UART lebih dari CAN lebih murah untuk pekerjaan yang lebih sedikit.
EternityForest

Papan antarmuka sisi Pi memiliki 7 chip - buffer / splitter NXP I2C, dua CAN PHY dan empat optoisolator. Sisi perangkat adalah modul 4-chip - buffer / splitter NXP I2C, dua CAN PHY dan PCF8574 / 8591.
Maxthon Chan

Saya menemukan optocoupler 4-channel yang akan mengurangi sirkuit sisi-Pi menjadi modul 4-chip.
Maxthon Chan

Memikirkan kembali pin daya, saya tetap berpegang pada desain asli saya, menggunakan pasangan daya dan pasangan tanah. Itu kompatibel dengan 802.3af meskipun saya mendefinisikan kembali pin sinyal ke SCL dan SDA.
Maxthon Chan

3

Jika otomasi hanyalah menghidupkan dan mematikan rumah, saya akan menyederhanakan ini dengan:

  • Menyimpan semua "otak" di satu tempat. Gunakan I2C I / O ekspander jika diperlukan, tetapi simpan semuanya dengan raspberry pi. Anda juga akan memerlukan perangkat keras yang sesuai untuk memastikan Anda tidak berusaha mendapatkan terlalu banyak arus dari pin GPIO pi.
  • Gunakan kabel ethernet untuk sekadar mengarahkan relay. Anda dapat membuat papan Anda sendiri, atau mendapatkan relay solid state 120 / 240V yang dapat dipasang di panel yang akan dipasang di kotak listrik. Kabel dalam kabel ethernet Cat5 dapat menangani hingga 50V pada masing-masing 320mA, yang lebih dari cukup untuk menggerakkan relay. Bahkan, Anda bisa mengemudikan 7 relay dari satu kabel (ditambah satu kabel untuk ground). Atau tinggalkan satu kabel untuk output 12V yang tidak disambung, sehingga Anda dapat menginstal sakelar manual juga. Jika benar-benar berjalan lama, Anda mungkin harus memperhitungkan penurunan voltase, tetapi Anda bisa mendapatkan relay yang akan beralih pada 3-32V. 12V harus lebih dari cukup, bahkan dengan penurunan tegangan.
  • Anda juga ingin berkonsultasi dengan kode bangunan lokal untuk saran tentang mencampur kabel tegangan tinggi dan rendah di kotak yang sama.
  • Sakelar sederhana juga dapat dilakukan melalui kabel ethernet, lagi hingga 7 per kabel, dan cukup kabel ke input pi. Penurunan tegangan mungkin menjadi masalah bagi kabel yang sangat panjang.
  • Anda mungkin juga ingin menggunakan optoisolator untuk melindungi pi dari kerusakan.
  • Untuk beberapa perangkat yang membutuhkan lebih dari relai (seperti panel kontrol) gunakan kabel ethernet sebagai ethernet sebenarnya. Seharusnya tidak menjadi biaya besar jika tidak banyak perangkat ini. Mereka bisa berupa pi lain, atau mikrokontroler dengan ethernet.

Saya tidak yakin dengan apa kebutuhan pengguna akhir saya nantinya. Dia murung dan berubah pikiran sangat cepat. Saya harus dapat merespons dengan cukup cepat. Itulah sebabnya semacam protokol dasar (I2C di sini) digunakan melalui kabel.
Maxthon Chan

2

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

EUREKA! Menemukannya! (belum diuji, akan mengujinya akhir pekan ini)

Chip antarmuka adalah NXP P82B96 I2C buffer / splitter dan 2 TI SN65HVD251P CAN bus antarmuka chip. Pada dasarnya, saya menjalankan I2C di CAN PHY.

P82B96 memahami protokol I2C dan menangani arbitrasi bus untuk saya, dan memberi saya pin Tx dan Rx terpisah yang dapat diikat bersama. Saya memberi makan mereka ke SN65HVD251P CAN transceiver dan itu memberi saya pasangan diferensial dua arah untuk mengirim lebih dari kabel.

Power pin datang langsung, tanpa gangguan dari rail 5V Pi saya. (Saya tidak akan menggunakan tegangan dan daya sinyal 12V untuk sementara waktu)


Maaf tapi tidak. Apa yang akan memungkinkan Anda lakukan adalah menghubungkan dua unit I2C pada jarak yang cukup jauh dari satu sama lain. Itu tidak akan memungkinkan Anda terhubung lebih dari 2.
WhatRoughBeast

@WhatRoughBeast Saya telah melihat bahwa pada dokumentasi NXP dan mengatakan bahwa ini adalah solusi yang layak (dan entah bagaimana membuat jalan ke AN mereka) tetapi bagi saya, point-to-point tidak apa-apa karena desain saya sendiri meminta satu sepasang unit konversi per segmen Cat5e.
Maxthon Chan

CAN adalah kabel-atau dan dua arah seperti i2c. Saya tidak melihat alasan bahwa ini seharusnya tidak berfungsi dengan banyak perangkat yang Anda inginkan di bus. Saya telah melihat notr aplikasi yang ia sebutkan. Tampaknya menggambarkan bus, bukan titik ke titik.
EternityForest

@WhatRoughBeast - CAN adalah multidrop, saya belum melihat terlalu dekat pada apa yang OP lakukan, tetapi seharusnya secara teori dimungkinkan.
Connor Wolf

1

Terlepas dari manfaat IIC di tingkat chip, implementasi yang Anda usulkan akan sangat sulit. Masalahnya adalah arbitrase bus. Meskipun beberapa unit dapat diparalelkan menggunakan, misalnya, RS485, pertanyaan besarnya adalah:

Bagaimana setiap unit tahu apakah ia dapat mengendalikan bus untuk mengirim data?

Di IIC, dengan saluran sinyal saluran terbuka, transfer dua arah mudah - tetapi dengan bus tristate Anda memerlukan beberapa cara untuk memastikan bahwa hanya satu unit yang mencoba mengemudikan bus pada satu waktu. Ini akan sulit. Anda dapat melakukannya, terutama jika Anda membuat master tunggal dan mengharuskan semua budak memiliki batasan waktu yang kaku untuk mengirim data, dan mereka hanya mengirim data jika diminta oleh master, tetapi ini akan membutuhkan upaya yang cukup besar dari pihak Anda dalam mendesain papan antarmuka untuk master dan slave.

Untuk driver / penerima fisik, RS485 akan membantu Anda, dan ada banyak chip antarmuka yang tersedia. Hanya Google.


1

Saya tidak tahu apakah Anda tertarik dengan solusi premade sebagai lawan membangun sirkuit Anda sendiri, tapi saya pikir saya akan menunjukkan bahwa Pololu menjual papan Extender Diferensial Jarak Jauh I²C yang dibuat oleh SJTbits, yang tampaknya melakukan persis persis apa yang kamu cari. (Pengungkapan penuh: Saya bekerja untuk Pololu.)

Bahkan jika Anda tidak ingin menggunakannya secara langsung, mungkin melihat rangkaian yang digunakannya mungkin memberi Anda beberapa ide. Anda bisa melihat skema di lembar data; menggunakan NXP PCA9600D buffer, driver garis diferensial TI AM26LS31CDR, dan penerima saluran diferensial TI AM26LS32ACDR.


Ini tidak berhasil untuk saya. Saya perlu mengirim sinyal bus dan daya melalui kabel.
Maxthon Chan

1

Saya tahu ini agak lama dan solusi tampaknya telah diselesaikan di suatu tempat di antara balasan, tapi saya punya saran untuk ditawarkan. Ada perangkat seperti PCA9614 / 5/6 dari NXP yang saya lihat sekarang sebagai solusi untuk bus I2C jarak jauh yang lebih kuat (PCA9614 2-kanal multipoint Fast-mode Plus diferensial I2C-bus buffer) . Pada dasarnya memang benar bahwa itu menjadi sesuatu selain I2C sejati, tetapi di ujung bus itu tidak terlihat oleh perangkat. Keluarga khusus ini menerjemahkan sinyal menjadi 2 pasangan diferensial dua arah, dan ada juga perangkat serupa yang telah disebutkan dalam komentar, yang menerjemahkan ke 4 pasangan diferensial searah. Menerjemahkan menjadi hanya 2 pasang memungkinkan Anda menggunakan kabel CAT dan masih memiliki 2 pasang untuk daya / pentanahan.


0

Jempolan! Saat ini saya sedang berusaha untuk memecahkan masalah yang hampir sama. Saya juga mencoba menggunakan I2C over cat5 untuk otomatisasi rumah dengan pinout khusus saya. Alasannya adalah biaya, saya ingin ini sangat hemat biaya dan komponen I2C masih setidaknya 5 kali lebih murah daripada attiny13 uC (AFAIU uC diperlukan untuk CAN dan RS485).

1) Saat ini saya hanya dalam proses uji coba untuk bagian pertama dari suatu sistem dan sekarang saya berhasil dengan kabel panjang 15m dengan 5V dan koneksi SCL & SDA langsung! Saya menggunakan PCF8574 dan 2 relay untuk memicu lampu kamar saya. Pinout adalah

1
2 INT
3 +5V
4 SCL
5 SDA
6 GND
7
8

2) Saya mengerti bahwa itu tidak akan memberikan beberapa relay lagi atau tambahan 10 meter ... Penurunan tegangan sangat signifikan (dari 5,5 ke 4,7). Jadi untuk masalah drop tegangan saya akan menempatkan 12V pada saluran dan menambahkan regulator tegangan 5V di papan untuk menjaga tegangan baik di mana-mana terlepas dari seluruh penurunan garis. Saya akan menempatkan catu daya tambahan selama saluran masa depan.

3) Sinyal itu sendiri dapat ditingkatkan menggunakan P82B96 atau P82B715 murah tanpa membelah garis diferensial. NXP sendiri menggunakan Cat5 dalam beberapa presentasi tetapi saya tidak dapat menemukan pinout mereka. Bagian penting di sini adalah bahwa mereka jelas menggunakan jalur sinyal dalam pasangan yang berbeda ... misalnya satu pasangan adalah GND + SDA yang lain adalah VCC + SCL.

4) Poin menarik lainnya - buffer ini dapat dengan mudah menaikkan amplitudo hingga 12V untuk meningkatkan resistansi noise. Jadi, saya mungkin akan mencoba untuk menempatkan 12V pada garis sinyal juga dan itu akan memungkinkan untuk menempatkan pullup secara benar dari kawat 12V ... Tapi itu akan memaksa saya meletakkan sesuatu seperti P82B96 pada setiap perangkat.

Seperti yang Anda perhatikan, saya juga menggunakan jalur interupsi terpisah ... Master saat ini berada di papan Arduino yang terhubung ke PC. Perangkat lunak master utama akan menggunakan PC 24x7, jadi Arduino hanya menerjemahkan sinyal dan menangani interupsi. Saya dapat mengirim konfigurasi khusus untuk penanganan interupsi onboard, misalnya untuk menangani sakelar sakelar yang nyaman melalui interupsi ... Itu memungkinkan saya lupa tentang keterlambatan saat mengaktifkan lampu secara manual. Penanganan interupsi adalah keuntungan tambahan dari i2c.

Jadi ide saya adalah bahwa I2C cukup sederhana untuk diterapkan di <= 100m pemasangan kabel apartemen kota. Alih-alih pergi ke sinyal diferensial saya berharap saya akan dapat mengurangi frekuensi tambahan sebagai gantinya.

Saya suka ide Anda untuk meletakkan 5V dan 12V karena ini mengurangi kebutuhan regulator dan mengurangi biaya ... seluruh ide multi-wire bus untuk mengurangi biaya titik akhir, saya juga akan mempertimbangkan ini untuk pinout baru :)


1
Ini lebih merupakan komentar panjang tentang pertanyaan daripada jawaban, karena situasi Anda tidak sama dengan OP: perangkat keras utama yang berbeda, skema pensinyalan berbeda. Tapi itu berhubungan cukup erat sehingga aku akan membiarkannya.
Dave Tweed
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.