A beágyazott rendszereknél a CAN protokoll implementálására több lehetőség is van, a korábbi cikkünkben az MCP 2515 céláramkör mellett tettük le a voksot.
Az "Arduino MCP2515 CAN interface library" github oldalán elérhető az a "zip" file, amelynek a letöltésével és telepítésével az Arduino IDE fejlesztőkörnyezet "kibővül", lehetőségünk nyílik arra, hogy írjunk/olvassunk a CAN buszon (1. ábra).
1. ábra Példák a telepítés után
Ahhoz, hogy az Arduino Uno elérhető legyen a fejlesztőkörnyezet számára, be kell állítani a panel típusát, illetve meg kell adni a portszámot is.
2. ábra Az "Arduino Uno" panel kiválasztása
A fejlesztés során a "COM4" port került kiválasztásra.
3. ábra A port kiválasztása
Az adott Arduino Uno felprogramozásakor a panel tápfeszültségellátását meg kell szüntetni, hiszen a programozás során az Arduino panel az USB kábelen megkapja a működéséhez szükséges feszültséget.
A CAN forgalom monitorozásra kerül, az eredmények az Arduino IDE keretkörnyezetben lévő Serial Monitoron kerülnek megjelenítésre. A korábban bemutatott fizikai környezetet a 4. ábra szerint kell módosítani.
Azaz, a programozáskor az adott panel nem kap tápfeszültséget, a négy CAN-ECU helyett csak kettő üzemel, és a két működő CAN-ECU (Arduino Uno és CAN Shield) közül az egyik az USB kábelen kap tápfeszültséget, hiszen ezen a panelen nézzük a forgalmat az USB-n keresztül.
4. ábra Fizikai környezet a két CAN-ECU számára
A következő két "C" kód segítségével kerül megvalósításra a CAN kommunikáció. Találni fogunk a két programban makrókat, függvényeket, amelyeket nem mi írtunk, ezek az "mcp2515.h" file-ban találhatók meg.
Ezeknek a makróknak, illetve függvényeknek a leírása az "mcp2515" céláramkör github oldalán megtalálhatók az "Initialization" menüpont alatt.
Például, ahhoz, hogy adatokat tudjunk küldeni a CAN buszon, szükséges ismerni a CAN frame felépítését, és az "mcp 2515" függvényeit. A CAN frame elkészítéséhez a github-on megtalálható az a struktúra (can_frame), amelynek alkalmazásával a frame könnyen összeállítható.
#include <SPI.h>
#include <mcp2515.h>
#define pin 10
int rndNumber;
struct can_frame WE;
MCP2515 mcp2515(pin);
void setup()
{
SPI.begin();
mcp2515.reset();
mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ);
mcp2515.setNormalMode();
}
void loop()
{
rndNumber = random(1, 100);
WE.can_id = 0x12;
WE.can_dlc = 8;
WE.data[0] = rndNumber;
WE.data[1] = 0x12;
WE.data[2] = 0x34;
WE.data[3] = 0x56;
WE.data[4] = 0x78;
WE.data[5] = 0x65;
WE.data[6] = 0x43;
WE.data[7] = 0x21;
mcp2515.sendMessage(&WE);
delay(2000);
}
Ezt a kódot fordítsuk le és töltsük le az egyik Arduino Uno panelre.
Fontos, hogy a programozás megkezdése előtt a tápkábelt húzzuk ki a panelből, hiszen a programozás az USB porton keresztük történik, amelyen keresztül a tápellátás is biztosított.
#include <SPI.h>
#include <mcp2515.h>
#define pin 10
int rcvNumber;
struct can_frame WE;
MCP2515 mcp2515(pin);
void setup()
{
Serial.begin(9600);
Serial.println("CAN BUS - WebElektronika");
SPI.begin();
mcp2515.reset();
mcp2515.setBitrate(CAN_500KBPS, MCP_8MHZ);
mcp2515.setNormalMode();
}
void loop()
{
if(mcp2515.readMessage(&WE) == MCP2515::ERROR_OK)
{
rcvNumber = WE.data[0];
Serial.print("Az átküldött véletlenszám: ");
Serial.println(rcvNumber);
Serial.print(WE.data[1]);
Serial.println("");
}
}
A két Ardunio Uno felprogramozása után (programozás során a tápcsatlakozót vegyük le) indítsuk el az Arduino IDE keretkörnyezetében található "Soros monitor"-t, amely az "Eszközök/Soros monitor" alatt található meg (Ctr + Shift + M). A mérési eredmények az 5. ábrán láthatók.
Tehát az egyik Arduino Uno panel egy tápegységről/adapterről kapja a működéséhez szükséges tápfeszültséget, a másik Arduino Uno pedig USB kábelről, és erről az Arduino Uno-ról történik a CAN forgalom monitorozása is.
5. ábra Eredmények
A Soros Monitoron látható a forgalom.
Az nmap (grafikus megjelenítésnél a ZenMap) használata az IT biztonság, illetve az üzemeltetés területén dolgozó szakembereknél szinte elkerülhetetlen. Az ingyenes szoftver segítségével tesztelhetők a számítógépeink, a számítógéphálózatunk, vizsgálha. . . .
A Python programozási nyelv nagyon elterjedt a fejlesztők körében. Használják beágyazott rendszereknél, webes alkalmazásoknál, IT biztonság különböző területein, stb. Látható, hogy nagyon széles a felhasználási területe ennek a nyelvnek, ideje volt m. . . .
Bemutatjuk most a saját (!) Wifi-s hálózatunk tesztelésének az alapjait. Megnézzük, hogy hogyan lehet biztonságos jelszót választani. Feltörhetetlen rendszer nem létezik, de megismerve a tesztelés folyamatát, válaszokat kaphatunk arra vonatkozólag, h. . . .