Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124


Perspektif, Protokol & Prototipe
Sudah menjadi rahasia umum bahwa bahan bakar fosil hampir habis di Bumi. Akibatnya, semakin banyak orang yang bergegas mencari sumber energi alternatif dan metode untuk memproduksinya. Mengemudi mobil listrik mungkin merupakan salah satu cara untuk mengurangi penggunaan bahan bakar fosil dan juga mengurangi jumlah CO2 yang dilepaskan ke atmosfer.
Mengapa tidak lebih banyak orang mengendarai mobil listrik, mengingat betapa bergunanya mereka? Dua frasa: harga dan pengisian. Saat ini, kendaraan listrik (EV) terlalu mahal untuk masyarakat umum, dan menemukan stasiun pengisian yang baik tidak mudah. Sementara kami tidak dapat memperbaiki masalah pertama, kami dapat membantu Anda dalam membangun stasiun pengisian EV rumah sementara kota pintar mengejar.
Perspektif Mobil Listrik
Ya, salah satu hambatan utama meluasnya penggunaan kendaraan listrik adalah harganya. Sebuah kendaraan listrik yang khas, seperti Nissan Leaf, harganya bisa sama dengan SUV mewah atau sedan keluarga. Baterai memainkan peran utama dalam menentukan daya tahan sebuah mobil listrik. biaya. Meskipun “tangki bahan bakar” besar harganya mahal, semakin lama kendaraan listrik Anda dapat berjalan dengan sekali pengisian daya, semakin besar baterainya. Jadi, mengingat tidak semua orang mampu membelinya, apakah kendaraan bertenaga baterai memiliki masa depan yang cerah?
Lihatlah statistik ini.

Seperti dapat dilihat, selama lima tahun terakhir, kapasitas baterai meningkat lebih dari tiga kali lipat sementara harga per kilowatt turun lebih dari 50%. Negara-negara seperti Belanda, yang telah berjanji untuk sepenuhnya menghilangkan mesin bensin pada tahun 2025-35, menunjukkan bahwa tren ini akan terus berlanjut.
Buka Protokol Titik Pengisian

Stasiun pengisian juga telah berkembang seiring dengan pesatnya perkembangan kendaraan listrik. Di kota-kota besar, Anda dapat menemukan setidaknya beberapa stasiun pengisian EV publik. Stasiun pengisian daya hanya memakan sedikit ruang dan biasanya tidak memerlukan kasir atau staf pemeliharaan.
Sebagian besar waktu, Anda dapat membeli listrik mobil melalui aplikasi seluler tertentu. Ini akan menyalakan stopkontak yang akan memberi daya pada kendaraan listrik Anda. Namun, bagaimana stopkontak mengetahui kapan dan kendaraan listrik mana yang perlu diisi?
Ada persyaratan mendesak untuk protokol komunikasi standar karena meningkatnya jumlah pemasok sistem pengawasan dan konstruktor stasiun pengisian. Open Charge Alliance (OCA) telah memutuskan untuk mengembangkan Open Charge Point Protocol (OCPP), protokol komunikasi standar. Ini akan memungkinkan berbagai pengguna untuk menghubungkan sistem mereka melalui protokol komunikasi standar.
Bagaimana Cara Kerja OCPP?
Sebelum kita mengetahui cara kerja OCPP, mari kita lihat komponen utamanya.
Hasilnya, semua titik pengisian daya dikelola oleh sistem pusat. Titik tersebut mengirimkan data ke pusat saat dihidupkan atau dimatikan, atau saat ada parameter yang diubah. Untuk menghidupkan salah satu stasiun pengisian daya, pemilik mobil menggunakan aplikasi seluler untuk mengirim sinyal ke pusat. Titik muatan menerima perintah pengguna dengan cara ini dari sistem pusat.
Versi 1.0, 1.5, dan 1.6 protokol saat ini tersedia, sedangkan versi 2.0 masih dalam tahap draf. Dua format data didukung oleh Versi 1.x: JSON dan SOAP. Anda dapat menemukan OCPP-1.x-S atau OCPP -1.x-J, tergantung formatnya. Ada 28 operasi dalam Protokol OCPP Versi 1.6, dengan stasiun pengisian memulai 10 dan sistem pusat memulai 18 di antaranya. Dokumentasi berisi semua perintah ini.
Hanya format JSON yang akan didukung oleh OCPP Versi 2.0. SOAP terlalu redundan karena mentransmisikan data menggunakan XML. Karena SPBU terhubung ke Internet melalui penyedia seluler, ini sangat penting.
Titik Pengisian EV DIY
Kami ingin mencoba membuat stasiun pengisian DIY untuk mobil listrik karena kami adalah insinyur dan peneliti.
Menulis Protokol Uji
Sebelum memulai fase pengujian, kami perlu membuat protokol pengujian. Hal ini diperlukan untuk menentukan tindakan mana yang akan diuji dan pesan OCPP mana yang harus diantisipasi setelah setiap peristiwa ini. Kami akan dapat melihat bagaimana stasiun pengisian daya yang lengkap akan berinteraksi dengan pengguna akhir sebagai akibat dari ini.
Tindakan
// https://github.com/elifTech/cpd-ocpp/blob/pi/examples/centralSystem.js
cSystem.onRequest = async function (client, command) {
const connection = client.connection;
console.info(`New command from ${connection.url}`);
switch (true) {
case command instanceof OCPPCommands.BootNotification:
client.info = {
connectors: [],
...command
};
return {
status: BootNotificationConst.STATUS_ACCEPTED,
currentTime: new Date().toISOString(),
interval: 60
};
case command instanceof OCPPCommands.Authorize:
return {
idTagInfo: {
status: AuthorizeConst.STATUS_ACCEPTED
}
};
case command instanceof OCPPCommands.StartTransaction:
return {
transactionId: 1,
idTagInfo: {
status: StartTransactionConst.STATUS_ACCEPTED
}
};
case command instanceof OCPPCommands.StopTransaction:
return {
transactionId: 1,
idTagInfo: {
status: StartTransactionConst.STATUS_ACCEPTED
}
};
case command instanceof OCPPCommands.Heartbeat:
return {
currentTime: new Date().toISOString()
};
case command instanceof OCPPCommands.StatusNotification:
const connectorIndex = client.info.connectors.findIndex(item => command.connectorId === item.connectorId);
if (connectorIndex === -1) {
client.info.connectors.push({
...command
});
} else {
client.info.connectors[connectorIndex] = {
...command
};
}
await cSystem.onStatusUpdate();
return {};
default:
throw new OCPPError(ERROR_NOTIMPLEMENTED, 'Unknown command');
}
};
cSystem.toggleChargePoint = async (client, connectorId) => {
const connector = client.info.connectors.find(item => connectorId.toString() === item.connectorId.toString());
if (!connector) {
return null;
}
if (connector.status !== StatusNotificationConst.STATUS_AVAILABLE) {
let command = new OCPPCommands.RemoteStopTransaction({
transactionId: connectorId
});
await client.connection.send(command);
return;
}
let command = new OCPPCommands.RemoteStartTransaction({
connectorId: connectorId,
idTag: '' + connectorId
});
await client.connection.send(command);
};
// https://github.com/elifTech/cpd-ocpp/blob/pi/examples/chargingPoint.js
const client = new ChargePoint({
centralSystemUrl: `https://ocpp-example.herokuapp.com/webServices/ocpp/CP${Math.floor(Math.random() * 9999)}`,
connectors: [
connector1,
connector2
]
});
try {
await client.connect();
client.onRequest = async (command) => {
switch (true) {
case command instanceof OCPPCommands.RemoteStartTransaction:
setTimeout(() => startTransaction(command), 1);
return {
status: RemoteStartTransactionConst.STATUS_ACCEPTED
};
case command instanceof OCPPCommands.RemoteStopTransaction:
setTimeout(() => stopTransaction(command), 1);
return {
status: RemoteStartTransactionConst.STATUS_ACCEPTED
};
}
};
const boot = new OCPPCommands.BootNotification({
chargePointVendor: 'BrandX',
chargeBoxSerialNumber: 'SR' + Math.round(Math.random() * 100000),
chargePointSerialNumber: '123',
chargePointModel: '12'
});
let answer = await client.send(boot);
await client.sendCurrentStatus();
} catch (err) {
console.error('--- Err', err);
}
async function startTransaction({ connectorId }) {
const idTag = 'test';
const authCommand = new OCPPCommands.Authorize({
idTag
});
await client.send(authCommand);
const statusCommand = new OCPPCommands.StatusNotification({
connectorId,
errorCode: StatusNotificationConst.ERRORCODE_NOERROR,
status: StatusNotificationConst.STATUS_CHARGING
});
await client.send(statusCommand);
const startCommand = new OCPPCommands.StartTransaction({
connectorId,
idTag,
meterStart: 0,
timestamp: new Date().toISOString(),
});
await client.send(startCommand);
connectorId === 1 ? pin17.reset() : pin27.reset();
}
async function stopTransaction({ transactionId }) {
const statusCommand = new OCPPCommands.StatusNotification({
connectorId: transactionId,
errorCode: StatusNotificationConst.ERRORCODE_NOERROR,
status: StatusNotificationConst.STATUS_AVAILABLE
});
await client.send(statusCommand);
const startCommand = new OCPPCommands.StopTransaction({
transactionId,
meterStop: 1,
timestamp: new Date().toISOString(),
});
await client.send(startCommand);
transactionId === 1 ? pin17.set() : pin27.set();
}


Merancang Perangkat Keras yang Tepat

Setelah melakukan perintah ini dan membuat UI web, kita dapat mulai membuat peralatan untuk titik pengisian Do-It-Yourself kita. Kami telah membuat model ini dari bagian-bagian sederhana, jadi Anda pasti dapat membuatnya sendiri.
Untuk membuat prototipe titik pengisian daya, Anda memerlukan komponen berikut:
Tidak perlu menyolder!
Mari gabungkan semua bagian untuk membuat model yang tepat sekarang. Gambarkan skema produk Anda yang disederhanakan: Hal pertama yang pertama.

Modul relai kemudian harus dihubungkan ke Raspberry PI 3 melalui port GPIO bawaan. Sesuai dengan diagram, kami akan menghubungkan Raspberry 3.3V, GPIO 17 dan GPIO 27, dan membumikannya. Modul relai Anda harus dapat untuk dipicu pada 3.3V (port Raspberry tidak dapat digunakan untuk memicu model yang diaktifkan pada 12V).
Pin GPIO17 dan GPIO27 dapat ditemukan dengan melihat tata letak Raspberry PI GPIO di bawah.

Nyalakan Raspberry PI Anda dan verifikasi modul relai:
Pasang soket pengisi daya eksternal, kabel daya, dan bagian dalam menggunakan sekrup, lem termal, dan pengikat ritsleting yang baik.

Sekarang, mari kita sambungkan beberapa kabel daya. Menggunakan konduktor WAGO adalah metode yang paling nyaman. Selain itu, kami menyarankan untuk mengeritingkan kabel menggunakan konektor yang sesuai. Kabelnya akan terlihat seperti ini:

Sebelum menyalakan komponen tegangan tinggi, pastikan untuk menguji kabel. Menggunakan multimeter dan mengganti suplai tegangan rendah (seperti baterai 1.5V atau 12V DC) untuk 220V adalah yang kami sarankan.

Anda sekarang siap untuk menyiapkan stasiun pengisian daya mobil EV Anda sendiri dan menginstal perangkat lunaknya!
Kesimpulan
Untuk menyebarkan popularitas kendaraan listrik, orang-orang di seluruh dunia membuat langkah kecil. Menurut perkiraan dari Bloomberg New Energy Finance, kendaraan listrik akan mencapai sebanyak 35% dari semua penjualan mobil baru di seluruh dunia pada tahun 2040. mahal, memiliki kendaraan bertenaga baterai tidak sesulit yang Anda bayangkan. Anda dapat melihat sendiri bahwa membangun stasiun pengisian rumah untuk mobil listrik benar-benar dapat dilakukan. Anda dapat mencobanya!
Talk with our support