M5Stack Unitv Kendryte K210 Ai Vision Processing Camera Module Image Recognition
Rs. 2,478.00 Rs. 2,825.00
- Brand: https://m5stack.com/products/stickv, https://docs.m5stack.com/#/
- Product Code: AI-DEV
- SKU -
- Availability: 2-3 Days
- Price in reward points: 27
- For Bulk Order 9962060070
Quick support on WhatsApp (+919962060070) only between morning 11am-4pm, no call will be answered
M5Stack recently launched the new AIoT(AI+IoT) Camera powered by Kendryte K210 -an edge computing system-on-chip(SoC) with dual-core 64bit RISC-V CPU and advanced neural network processor.
M5StickV AI Camera possesses machine vision capabilities, equips OmniVision OV7740 image sensor, adopts OmniPixel®3-HS technology, provides optimum low light sensitivity, supports various vision identification capabilities. (e.g. Real-time acquisition of the size, type and coordinates of the detected target ) In addition to an OV7740 sensor, M5StickV features more hardware resources such as a speaker with built-in I2S Class-D DAC, IPS screen, 6-axis IMU, 200mAh Li-po battery, and more.
It is able to perform convolutional neural network calculations at low power consumption, so M5StickV will be a good zero-threshold machine vision embedded solution. It is in support with MicroPython, which makes your code to be more concise when you use M5stick-V for programming.
SPECIFICATION | |
Resources Parameter | KPU Parameter |
Kendryte | K210Dual core 64-bit RISC-V RV64IMAFDC (RV64GC) CPU / 400Mhz(Normal) |
SRAM | 8Mbit |
Flash | 16M |
Power input | 5V @ 500mA |
Size of neural network | 5.5MiB - 5.9MiB |
Port | TypeC x 1, GROVE(I2C+I/0+UART) x 1 |
RGB | LED RGBW x 1 |
Button | Custom button x 2 |
IPS screen | 1.14 TFT, 135*240, ST7789 |
Camera | OV7740 |
FOV | 55deg |
PMU | AXP192 |
Battery | 200mAh |
External storage | TF Card/Micro SD |
MEMS | MPU6886 |
OVERVIEW:
-Dual-Core 64-bit RISC-V RV64IMAFDC (RV64GC) CPU / 400Mhz(Normal)
-Dual Independent Double Precision FPU
-Neural Network Processor(KPU) / 0.8Tops
-Field-Programmable IO Array (FPIOA)
-Dual hardware 512-point 16bit Complex FFT
-SPI, I2C, UART, I2S, RTC, PWM, Timer Support
-AES, SHA256 Accelerator
-Direct Memory Access Controller (DMAC)
-Micropython Support
-Firmware encryption support
-Case Material: PC + ABS
PACKAGE INCLUDES:
1 PCS x M5Stack Unit V Ai Vision Processing Camera Module Image Recognition
1 PCS x USB Type-C(100cm)
https://m5stack.com/products/stickv
https://docs.m5stack.com/#/en/core/m5stickv?id=easyloader
https://maixpy.sipeed.com/en/
https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_quick_start
https://github.com/sipeed/MaixPy/tree/master/projects/maixpy_m5stickv
https://docs.m5stack.com/#/en/related_documents/M5StickV-Maixpy
https://docs.m5stack.com/#/en/related_documents/v-training
//SOURCE CODE TAKEN BELOW LINK
//https://github.com/m5stack/M5-ProductExampleCodes/blob/master/App/UnitV/track_ball/track_ball.ino
#include <M5StickC.h>
HardwareSerial VSerial(1);
typedef struct
{
int16_t dx;
uint32_t area;
}v_response_t;
uint8_t I2CWrite1Byte(uint8_t Addr, uint8_t Data)
{
Wire.beginTransmission(0x38);
Wire.write(Addr);
Wire.write(Data);
return Wire.endTransmission();
}
uint8_t I2CWritebuff(uint8_t Addr, uint8_t *Data, uint16_t Length)
{
Wire.beginTransmission(0x38);
Wire.write(Addr);
for (int i = 0; i < Length; i++)
{
Wire.write(Data[i]);
}
return Wire.endTransmission();
}
uint8_t Setspeed(int16_t Vtx, int16_t Vty, int16_t Wt)
{
int16_t speed_buff[4] = {0};
int8_t speed_sendbuff[4] = {0};
Wt = (Wt > 100) ? 100 : Wt;
Wt = (Wt < -100) ? -100 : Wt;
Vtx = (Vtx > 100) ? 100 : Vtx;
Vtx = (Vtx < -100) ? -100 : Vtx;
Vty = (Vty > 100) ? 100 : Vty;
Vty = (Vty < -100) ? -100 : Vty;
Vtx = (Wt != 0) ? Vtx * (100 - abs(Wt)) / 100 : Vtx;
Vty = (Wt != 0) ? Vty * (100 - abs(Wt)) / 100 : Vty;
speed_buff[0] = Vty - Vtx - Wt;
speed_buff[1] = Vty + Vtx + Wt;
speed_buff[3] = Vty - Vtx + Wt;
speed_buff[2] = Vty + Vtx - Wt;
for (int i = 0; i < 4; i++)
{
speed_buff[i] = (speed_buff[i] > 100) ? 100 : speed_buff[i];
speed_buff[i] = (speed_buff[i] < -100) ? -100 : speed_buff[i];
speed_sendbuff[i] = speed_buff[i];
}
return I2CWritebuff(0x00, (uint8_t *)speed_sendbuff, 4);
}
void setup()
{
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(RED);
VSerial.begin(115200, SERIAL_8N1, 33, 32);
Wire.begin(0, 26);
}
enum
{
kNoTarget = 0,
kLeft,
kRight,
kStraight,
kTooClose
};
const uint16_t kThreshold = 20; // If target is in range ±kThreshold, the car will go straight
v_response_t v_data; // Data read back from V
uint8_t state = 0; // Car's movement status
void loop()
{
VSerial.write(0xAF);
if(VSerial.available())
{
uint8_t buffer[5];
VSerial.readBytes(buffer, 5);
v_data.dx = (buffer[0] << 8) | buffer[1];
v_data.area = (buffer[2] << 16) | (buffer[3] << 8) | buffer[4];
if(v_data.dx > -120 && v_data.dx < 120)
{
if(v_data.area > 10000)
{
state = kTooClose; // Stop
}
else if(v_data.dx > -kThreshold && v_data.dx < kThreshold)
{
state = kStraight; // Go straight
}
else if(v_data.dx <= -kThreshold)
{
state = kLeft; // Go left
}
else if(v_data.dx >= kThreshold)
{
state = kRight; // Go right
}
else
{
state = kNoTarget; // Rotate
}
M5.Lcd.fillScreen(GREEN);
}
else
{
state = kNoTarget; // Rotate
M5.Lcd.fillScreen(RED);
}
Serial.printf("%d, %d, %d\n", v_data.dx, v_data.area, state);
}
//The speed and time here may need to be modified according to the actual situation
switch(state)
{
case kNoTarget:
Setspeed(0, 0, 20); //Duty ratio ±100
delay(20);
Setspeed(0, 0, 0);
break;
case kLeft:
Setspeed(-20, 0, 0);
delay(20);
Setspeed(0, 0, 0);
break;
case kRight:
Setspeed(20, 0, 0);
delay(20);
Setspeed(0, 0, 0);
break;
case kStraight:
Setspeed(0, 20, 0);
delay(20);
Setspeed(0, 0, 0);
break;
case kTooClose:
Setspeed(0, 0, 0);
break;
}
}
15 days