SharkDuino+
Easy and powerful embedded system
Campioni disponibili in pochi giorni, produzione di massa (100/200pz) in quaranta giorni.
Samples available in a few days, mass production (100/200pcs) in forty days.
Nel mio lavoro devo spesso implementare applicazioni veramente diverse fra loro che spaziano dalle scienze naturali alla tecnologia.
Si puó andare dalla classica applicazione di imaging per il controllo qualitá, alla decodifica di segnali analogici derivanti da uno strumento per la fisica o al controllo di un posizionatore a 4 assi.
Realizzare le diverse applicazioni senza ogni volta dover reinventare qualcosa é impresa ardua.
Il desiderio era quello di avere un hardware molto flessibile in grado di poter sopportare le specifiche che ogni applicazione impone e che costasse poco!
Del resto negli ultimi 10/15 anni lo sviluppo della telefonia cellulare, l'Internet Of Things e soprattutto l'accesso alla produzione elettronica Cinese ha contribuito a creare la credenza che con poco si puó fare molto e che quindi l'hardware deve costare poco.... da qui ne consegue che un cliente puó scandalizzarsi alla richiesta di 200/300 euro per una scheda a microcontrollore pensando che il suo super potente telefono magari costa meno .... questione di numeri di produzione ...
Sul mercato sono disponibili una grande quantitá di computer e piccoli sistemi a microcontrollore su singola scheda, ma ognuno di questi prodotti, almeno per la mia esperienza, ha problematiche diverse.
- Arduino (ho usato Arduino Due) é una scheda veramente molto semplice da utilizzare, sopratutto grazie al suo SW, ma se é richiesto un minimo di potenza di calcolo o memoria si va in crisi facilmente.
- Si puó utilizzare in alternativa un Raspberry o un Beaglebone, entrambi hanno degli ottimi core con molta memoria. Purtroppo peró una gran parte di queste risorse sono necessarie al sistema operativo (derivato da linux) che se da un lato permette di implementare funzioni di alto livello allo stesso tempo presenta ostacoli spesso insormontabili a meno di non essere dei maghi del kernel. Anche l'accesso all'I/O é spesso molto penalizzato con efficienze molto basse anche 10/20 volte meno il clock del CORE. Inoltre queste macchine hanno tempi di boot veramente inaccettabili per molte applicazioni ed anche il consumo di energia puó essere un problema. Non ultimo molti clienti non amano sviluppare un prodotto che é basato su un hardware che é veramente poco garantito nel tempo.
- Infine ci sono le schede basate su archittettura iNTEL (o compatibile) con sistema operativo Windows, queste sono sicuramente le piú potenti, e le piú facili per sviluppare applicazioni di alto livello. Purtroppo anche queste presentano diversi problemi:
- Spesso non hanno I/O dedicato ed occorre acquistare schede aggiuntive da inserire su un loro bus (PC104), altrimenti offrono soltanto canali USB, Ethernet e seriali.
- Hanno costi importanti, sopratutto se ci si deve realizzare piccole serie.
- Dissipazione di almeno 10W, veramente difficili da utilizzare dove l'energia é limitata.
- Costo aggiuntivo da dover sopportare per la licenza del sistema operativo (Windows)
Creare un scheda idonea per ogni problema é impossibile, con questo progetto ho semplicemente integrato molte funzioni e periferiche che utilizzo piú spesso
in modo da avere il minor numero possibile di collegamenti esterni.
Diciamo che per il mio caso copre la gran parte delle applicazioni che devo implementare.
Con questa scheda puoi:
- Catturare facilmente immagini a bassa od alta risoluzione anche ad alta velocitá, senza problemi di memoria per il suo trattamento (128MB) e per il suo salvataggio su SD (5MB/s). Per questo puoi utilizzare specifiche camere prodotte o usarne di commerciali.
- Puó leggere simultaneamente quattro encoder incrementali per una facile gestione di motori brushless o passo-passo.
- Puoi campionare, registrare e trattare segnali analogici a 16 bit con una velocitá di 1MHz e se il segnale é basso di livello cé un PGA programmabile che ti permette di controllare l'amplificazione, il tutto fino ad 8 canali.
- Puoi generare segnali analogici su quattro canali D/A a 16bit fino 250KHz
- Hai ha disposizione un sensore inerziale (IMU 9 assi) ed un sensore ambientale per temperatura, umiditá relativa e pressione atmosferica.
- Hai un canale USB doppio, uno crea una porta seriale virtuale utilizzata per l'aggiornamento della FLASH, debug e monitor, l'altro permette di trasferire dati al PC a 6.5MByte/s
- Oltre 32 bit di porte parallele bidirezionali con pin di segnale a piú funzioni, con seriali, SPI e I2C ed infine 16 uscite PWM a 12 bit per LED,SERVOS e motori in continua.
- Sono presenti 3 zoccoli per accogliere le tre piú diffuse interfaccie wireless: ESP8266 per il WiFi, HC-06 per il BlueTooth e RF-COM per una seriale trasparente a 2.4GHz
- L'FPGA presente puó essere auto-riprogrammata ed é cosí possibile cambiare completamente la sua architettura per poter implementare funzioni píu complesse o dedicate.
L'ambiente software é stato creato ad hoc (otStudio), cercando di avere un impatto ridotto nella stesura delle applicazioni integrando una gran quantitá di librerie
e cercando di avere il controllo dell'hardware della macchina in modo facile. L'utente puó creare nuove librerie ed aggiungerle facilmente al programma di compilazione e editing.
Sia per il software che per l'hardware mi sono ispirato ad Arduino. L'hardware si presenta in modo assai simile con quattro connettori compatibili ma con molte piú funzioni disponibili.
Anche per il software ho seguito la stessa traccia cercando di stare il piú possibile lontano dalla complessitá dell'hardware. Si puó scrivere in C++/C ed eseguire immediatamente il codice o aggiornare la FLASH presente.
Infatti durante lo sviluppo si puó caricare il codice compilato direttamente in RAM. Essendo questo processo molto piú veloce della scrittura della FLASH ci permette di avere tempi sviluppo minori.
La scheda si basa su un DSP della Analog Device il BF514, un core che ha una frequenza base di 400MHz ma sopporta molte bene l'over clock fino a 600MHz.
Questo core é molto efficiente, ha una architettura di Harward con doppia ALU a 40 bit ed 8 ALU ad 8bit che gli fanno raggiungere facilmente gli 800 MMACS.
Inoltre questo core ha le interfacce di I/O che possono funzionare in DMA svincolandolo completamente da funzioni di I/O veloci o lente che siano.
Internamente al core é presente una memoria da singolo clock da 116 Kbyte. Sul bus esterno a 16 bit troviamo invece una SDRAM da 128 MByte che funziona a 133MHz.
2 Mbyte di FLASH é invece riservata all boot.
Sempre sul bus del core é presente anche una FPGA per implementare funzioni in hardware ed un canale veloce USB 2, mentre un secondo canale USB é riservato
al boot od al caricamento della FLASH.
La scheda puó essere alimenta da una sorgente esterna a 5V ma anche dalla USB stessa e non supera un 1W di dissipazione (@400MHz).
Queste le principali caratteristiche:
In my work, I often have to implement truly different applications that range from natural sciences to technology.
You can go from the classic imaging application for quality control, to the decoding of analog signals deriving from a physics instrument or from the control of a 4-axis positioner.
Realizing the different applications without having to reinvent something every time is a difficult task.
The desire is to have a very flexible hardware able to withstand the specifications that each application imposes and must cost even little!
Moreover, in the last 10/15 years the development of cellular telephony, the Internet of Things and above all access to Chinese electronic production has contributed to creating the belief that little can be done with much and that therefore the hardware must be cheap .... hence it follows that a customer can be shocked at the request of 200/300 euros for a microcontroller card thinking that his super powerful phone maybe it costs less .... question of production numbers ...
A large number of computers and small microcontroller systems are available on the market, but each of these products, at least in my experience, has different problems.
- Arduino (I used Arduino Due) is a very simple board to use, above all thanks to its SW, but if a minimum of computing power or memory can easily fail.
- You can alternatively use a Raspberry or a Beaglebone, both of which have excellent cores with a lot of memory. Unfortunately, however, a large part of these resources are necessary for the operating system (derived from linux) which, on the one hand, allows you to implement high-level functions at the same time it often presents insurmountable obstacles unless you are a kernel wizard. Access to I/O is also often penalized with very low efficiencies, even 10/20 times less than the CORE clock. In addition, these machines have really unacceptable boot times for many applications and power consumption can also be a problem. Last but not least many customers do not like to develop a product that is based on hardware that is very little guaranteed over time.
- Finally there are the cards based on iNTEL (or compatible) architecture with Windows operating system, these are certainly the most powerful, and the easiest to develop high level applications. Unfortunately, these also present several problems:
- Often they do not have dedicated I/O and it is necessary to purchase additional cards to be inserted on their bus (PC104), otherwise they only offer USB, Ethernet and serial channels.
- They have important costs, especially if you have to make small series.
- Dissipation of at least 10W, really difficult to use where energy is limited.
- Additional cost to be incurred for operating system license (Windows)
Creating a suitable card for every problem is impossible, with this project I simply integrated many functions and peripherals that I use most often in order to have as few external connections as possible.
Let's say that for my case it covers most of the applications that I have to implement.
With this board you can:
- Easily capture low or high resolution images even at high speed, without memory problems for its treatment (128MB) and for its saving on SD (5MB/s). For this you can use specific cameras produced or use commercial ones.
- It can read four incremental encoders simultaneously for easy management of brushless or stepper motors.
- You can sample, record and process 16-bit analog signals with a speed of 1MHz and if the signal is low level there is a programmable PGA that allows you to control the amplification, all up to 8 channels.
- You can generate analog signals on four 16bit D/A channels up to 250KHz
- You have an inertial sensor (9-axis IMU) and an environmental sensor for temperature, relative humidity and atmospheric pressure.
- You have a double USB channel, one creates a virtual serial port used for updating the FLASH, debug and monitor, the other allows you to transfer data to the PC at 6.5MByte/s
- Over 32 bits of bidirectional parallel ports with multi-function signal pins, with serial, SPI and I2C and finally 16 12-bit PWM outputs for LEDs, SERVOS and DC motors.
- There are 3 sockets to accommodate the three most popular wireless interfaces: ESP8266 for WiFi, HC-06 for BlueTooth and RF-COM for a transparent 2.4GHz serial
- The present FPGA can be self-reprogrammed and it is thus possible to completely change its architecture in order to implement more complex or dedicated functions.
The software environment was created ad hoc (otStudio), trying to have a reduced impact in the drafting of the applications by integrating a large amount of libraries
and trying to control the hardware of the machine in an easy way.
The user can create new libraries and easily add them to the compilation and editing program.
For both software and hardware I was inspired by Arduino. The hardware looks very similar with four compatible connectors but with many more functions available.
Also for the software I followed the same track trying to stay as far as possible from the complexity of the hardware. You can write in C++/C and immediately execute the code or update the FLASH present.
In fact, during development you can load the compiled code directly into RAM. Being this process much faster than writing the FLASH allows us to have shorter development times.
The board is based on a DSP of the Analog Device the BF514, a core that has a base frequency of 400MHz but withstands the over clock up to 600MHz very well.
This core is very efficient, it has a Harward architecture with double 40-bit ALU and 8 8-bit ALU that make it easily reach 800 MMACS.
Furthermore, this core has the I/O interfaces that can work in DMA completely freeing it from fast or slow I/O functions.
Inside the core there is a single clock memory of 116 Kbyte. On the external 16 bit bus we find instead a 128 MByte SDRAM that works at 133MHz.
2 Mbyte of FLASH is instead reserved for boot.
Also on the core bus there is also an FPGA to implement hardware functions and a fast USB 2 channel, while a second USB channel is reserved on boot or on loading the FLASH.
The card can be powered by an external 5V source but also by the USB itself and does not exceed 1W of dissipation (@ 400MHz).
These are the main features:
MODEL | LITE | BASE | ENV | FULL | |
CPU | ADSP-BF514 | Y | Y | Y | Y |
CORE Frequency | 400MHz | Y | Y | Y | Y |
RAM | 116 Kbyte @ 400MHz | Y | Y | Y | Y |
SDRAM | 128 Mbyte, 16 bit @ 133MHz | N | Y | Y | Y |
FLASH | 2 MByte | Y | Y | Y | Y |
EEPROM | 128 KByte | Y | Y | Y | Y |
USB 2 | Dual channel as Virtual Com and High Speed channel on DSP bus | Y | Y | Y | Y |
Serial Port | 2 x asynchronous high speed serial ports (LVTTL) tested up to 921600 baud | Y | Y | Y | Y |
SPI Port | High speed (100MHz) synchronous serial port, 3 bit (MISO, MOSI, SCLK) | Y | Y | Y | Y |
TWI Port | 100KHz to 5MHz | Y | Y | Y | Y |
A/D Converter | 16 bit 8 Channel 1MHz with PGA | Y | Y | Y | Y |
D/A Converter | 16 bit 4 Channel 250KHz | N | Y | Y | Y |
IMU | 9-Axis Gyroscope + Accelerometer + Magnetometer | N | N | Y | Y |
Environment U. | BME280 sensors for pressure, humidity, and temperature | N | N | Y | Y |
Real Time Clock | Require an 3V external battery | Y | Y | Y | Y |
TFT Interface | On SPI bus | Y | Y | Y | Y |
Touch controller | XPT2046 on TFT module | N | N | N | Y |
TFT Display | 2.4" 240x320 common TJCTM24024-SPI | N | N | N | Y |
Secure Digital | 4 bit in DMA, FAT32 compatible, with an average speed of 5MB/s | Y | Y | Y | Y |
Power source | +5VDC on Y20 2mm connector or by USB 2 connector | Y | Y | Y | Y |
Power Supply | 5VDC ±5% 200mA without any optional expansion module | Y | Y | Y | Y |
Operating temperature | –30°C to +70°C | Y | Y | Y | Y |
POWER CONSUPTION VS CORE FREQUENCY | ||
FREQUENCY (MHz) | CURRENT (mA) | |
50 | 32 | |
100 | 35 | |
200 | 39 | |
400 | 57 | |
600 | 73 | |
700 | 78 | |
800 | 83 | |
Operating frequencies over 400MHz is not guaranteed. |
Useful link and downloads:
CAD FILES:
DOCUMENTS:
VIDEO:
Project Gallery
Currently Sharkduino+ is produced in small series and these are indicative prices for single units:
Attualmente Sharkduino+ é prodotto in piccola serie e questi sono dei prezzi indicativi per singole unitá:
SharkDuino+ FULL (Include cables, otStudio, etc.) 290 euro
DC-Motor driver 2 axys 120 euro
Servos and Brushed Motor 45 euro
Combo-Power-DSP 180 euro
GRAB-S 16bit 100Ms/s ADC sampler 290 euro
Monochrome camera 720x480 6x6um 120 euro
Monochrome camera 640x480 10x10um High speed 360 euro
Multimedia interface 60 euro
Neura - Additional DSP core 120 euro
For shipping costs or other details, ask info@officinaturini.com
Each product has technical support for 30 days via email included.
The warranty on each product is 24 months.
Keep me informed of SharkDuino+ developments: