<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Inference speed comparison using convolutions in neural networks on various SoC hardware platforms using MicroPython</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Kristian Dokic</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hrvoje Mikolcevic</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bojan Radisic</string-name>
          <email>bradisic@vup.hr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Polytechnic in Pozega</institution>
          ,
          <addr-line>Vukovarska 17, Pozega</addr-line>
          ,
          <country country="HR">Croatia</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Tehnical school</institution>
          ,
          <addr-line>Ratarnicka 1, Pozega</addr-line>
          ,
          <country country="HR">Croatia</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In recent years we have witnessed the rapid development of machine learning algorithms, and the same can be said for IoT. Developments in both fields have also influenced the growth of machine learning algorithms in IoT devices. The authors of a series of papers cite several reasons to argue this trend. This paper explores the possibility of using the Python programming language in different versions to create, train, and implement convolutional neural networks on two SoCs based on different architectures (ARM and RISC-V). The influence of the number of filters in the convolutional layer on the inference speed is also investigated. The number of filters has a different effect on inference speed depending on the existence of additional components that accelerate individual operations of convolutional neural networks (convolution, batch normalization, activation, and pooling operations).</p>
      </abstract>
      <kwd-group>
        <kwd>1 MicroPython</kwd>
        <kwd>SoC</kwd>
        <kwd>CNN</kwd>
        <kwd>Convolution Neural Network</kwd>
        <kwd>RISC-V</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>In the last few years, the terms Internet of
Things and Machine learning have been
increasingly mentioned in the field of
information and communication technologies.
Definitions of both terms are given below.
Internet of things is “a system of interrelated
computing devices, mechanical and digital
machines, objects, animals or people that are
provided with unique identifiers (UIDs) and the
ability to transfer data over a network without
requiring human-to-human or
human-tocomputer interaction” [1]. Machine learning “is
the study of computer algorithms that improve
automatically through experience” [2].</p>
      <p>Powerful computers are most often required
to implement machine learning, and IoT
devices are often low in processing power.
Several authors have stated that there are few
advantages of transferring part of machine
learning data processing from large and cloud
computers to IoT devices. Zhang et al. state that
these are energy savings, network traffic
reduction, privacy problems and delays in data
transmission [3]. Sakr et al. also cites similar
benefits of moving computation toward the
edge, such as lower energy consumption, lower
response latency, higher security, lower
bandwidth occupancy and expected privacy [4].</p>
      <p>Since Python is a programming language
most often used for machine learning and very
rarely for the development of IoT devices, in
this paper, the aim was to compare two different
SoCs' performance using Python and
MicroPython in the development of machine
learning models and IoT devices. The C/C++
programming language is most often used to
develop IoT devices, but if a version of Python
were used for this task, all phases of a machine
learning model development for IoT devices
would be significantly accelerated and
simplified.</p>
      <p>Two development boards that hit the market
a year ago based on different architectures were
used in this paper, and their inference
performance was tested with a different number
of filters in the first layer of the convolutional
neural network used to detect handwritten
digits. Easy use of convolutional neural
networks on microcontrollers has been possible
in the last year or two, so there is not much
information about microcontrollers'
performance on these tasks. A convolution
neural network is a deep neural network class
usually used for image processing,
classification, and other similar tasks.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Literature review</title>
      <p>The first part of this section provides an
overview of papers in which the authors used
MicroPython to solve various problems. The
second part provides an analysis of the used
hardware platforms.
2.1.</p>
    </sec>
    <sec id="sec-3">
      <title>MicroPython</title>
      <p>MicroPython is a programming language
partially compatible with Python 3. It is
optimized to run on microcontrollers, and it
includes various modules for low-level
hardware access. It was released in 2014. and it
is ported on various platforms (ARM
CortexM, RISC-V, ESP32, ESP8266, PIC, STM32)
[5] [6]. It is also available on BBC micro:bit
development board [7] [8]. Finally, a new
Raspberry product Raspberry Pi Pico can be
used with MicroPython [9]. It is evident that
MicroPython has become quite popular in a
short time, and it has been ported to various
platforms without the significant influence of
large companies.</p>
      <p>
        MicroPython is used in various IoT projects.
Regnath et al. used MicroPython on ESP32
platform to test their approach to verify data
integrity and consensus on a blockchain used on
IoT platforms [
        <xref ref-type="bibr" rid="ref1">10</xref>
        ]. Cardenas et al. used
MicroPython in Low-Cost and Low-Power
Messaging System. Their solution was based on
ESP32 and LoRa Wireless Technology [
        <xref ref-type="bibr" rid="ref2">11</xref>
        ].
Tzounis et al., in their review of the IoT
platform in agriculture, also mention
MicroPython as a programming language for
the LoPy development platform based on
ESP32 SoC [
        <xref ref-type="bibr" rid="ref3">12</xref>
        ]. LoPy development board and
MicroPython have been used by Sayed et al. in
their multi-sensing platform for the ORCA Hub
integrated with Robot Operating System [
        <xref ref-type="bibr" rid="ref4">13</xref>
        ].
Kodali et al. used MicroPython to develop a
low-cost ambient monitor device based on
ESP8266 SoC. They used a DHT22
temperature and humidity sensor and OLED
128x64 display [
        <xref ref-type="bibr" rid="ref5">14</xref>
        ].
      </p>
      <p>
        Khamphroo et al. introduced a mobile
educational robot based on MicroPython. The
development's primary goal is to create a robot
that will be easy to use for beginners.
STM32L432KC ARM Cortex-M4 168 MHz
was used in the presented project [
        <xref ref-type="bibr" rid="ref6">15</xref>
        ] [
        <xref ref-type="bibr" rid="ref7">16</xref>
        ].
Tariq et al. used MicroPython for noise filtering
on an STM32F10RB platform to implement an
early warning seismic event detection
algorithm [
        <xref ref-type="bibr" rid="ref8">17</xref>
        ]. Zhang et al. used MicroPython
in their quadruped robot project that deals with
the twisting trunk's effect on the tumble
stability from an energy viewpoint. Their
development board was based on STM32F405
[
        <xref ref-type="bibr" rid="ref9">18</xref>
        ]. Wie et al. used MicroPython in their
wearable bio-signal processing system. Devices
were based on the STM32F722 microcontroller
[
        <xref ref-type="bibr" rid="ref10">19</xref>
        ]. Ibba et al. developed an impedance
analyzer for fruit quality monitoring based on
the STM32L486 microcontroller. They also
used MicroPython for microcontroller
programming [
        <xref ref-type="bibr" rid="ref11">20</xref>
        ]. Crepaldi et al. developed
the body channel communication system used
for landmark identification. They used
MicroPython and STM32L486 microcontroller
[
        <xref ref-type="bibr" rid="ref12">21</xref>
        ].
      </p>
      <p>
        Bahmanian et al. used MicroPython in their
wide-band frequency synthesizer that can lock
on any of the optical reference harmonics
between 2 GHz and 20 GHz. They used the
FE310 microcontroller based on RISC-V to
control the DA converters [
        <xref ref-type="bibr" rid="ref13">22</xref>
        ].
      </p>
      <p>
        At the end of the MicroPython part, we
should mention the Arduino IDE, which is
undoubtedly more popular than MicroPython,
but it also has some drawbacks. Kodali et al.
compared these two platforms by a series of
features. They state that the difference is in the
language type since MicroPython is a scripting
language, while Arduino C code needs to be
compiled. According to them, MicroPython is
simpler, and the development is 5-10 times
faster because there is no compiling. The syntax
is cleaner, and the code is more readable in
MicroPython [
        <xref ref-type="bibr" rid="ref5">14</xref>
        ]. Tanganelli et al. have
reviewed the available platforms for rapid
prototyping of IoT solutions from a developer
perspective. In addition to the Arduino IDE and
MicroPython, they listed several other
platforms and development tools: FreeRTOS,
mbedOS, Zephyr, Contiki OS, RIOT OS and
2.2.
edge
Zerynth. They also cite perhaps the biggest
drawback of the MicroPython, which is the
significantly smaller number of development
boards that support it. The Arduino can be used
on over 1000 development boards, while the
MicroPython is supported by twenty. Their
paper is from 2019, and the situation may have
changed somewhat [
        <xref ref-type="bibr" rid="ref14">23</xref>
        ].
      </p>
    </sec>
    <sec id="sec-4">
      <title>MicroPython hardware on</title>
      <p>In the previously presented paper review,
MicroPython-enabled platforms are grouped
into three individual sections. The first section
contains papers that use ESP32 and ESP8266
SoC. These are Espressif Inc. products based on
Tensilica LX106 and LX6 processors. The
second section lists papers that use different
SoCs from STMicroelectronics, while the third
section includes paper that uses SoCs based on
the RISC-V architecture.</p>
      <p>
        The official GitHub page of the
MicroPython project lists development boards
that come with MicroPython installed. There
are currently 35 development boards on the list,
primarily based on the STM32F family of
microcontrollers [
        <xref ref-type="bibr" rid="ref15">24</xref>
        ].
      </p>
    </sec>
    <sec id="sec-5">
      <title>3. Method</title>
      <p>The first part of this section gives the
characteristics of the used development boards
and microcontrollers with MicroPython
installed. The second part of the section
describes creating a model of a convolutional
neural network and converting the model into
formats that can be used on SoC with
MicroPython.</p>
    </sec>
    <sec id="sec-6">
      <title>3.1. Used hardware supported by</title>
    </sec>
    <sec id="sec-7">
      <title>MicroPython</title>
      <p>The paper analyzes two development boards
based on different architectures. The
development board in Figure 1 is an OpenMV
Cam H7 Plus and is based on the STM32H743II
ARM Cortex M7 processor. The development
board's price was € 99.00, but only one
STM32H743II processor costs € 11.61. Their
characteristics are listed in Table 1.</p>
      <p>Table 1</p>
      <sec id="sec-7-1">
        <title>Microprocessor’s characteristics</title>
        <p>STM32H743I
I</p>
        <sec id="sec-7-1-1">
          <title>Producer Bit Width CPU clock RAM</title>
          <p>FLASH
STM
32 bit
480 MHz
1+32 MB
2+32 MB</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>3.2. CNN model development and deployment</title>
      <p>The MNIST database of handwritten digits
has been used for training in this paper. This
database consists of sixty thousand grayscale
images of handwritten digits between 0 and 9.
The image's size is 28x28 pixels that are
reduced to 14x14-pixel size. One simple
convolution neural network has been developed
to resolve this classification problem, and it can
be seen in Figure 3.</p>
      <p>This neural network is quite simple and
consists of a single convolutional layer with a
3x3 pixel filter. The number of filters is a
variable changed during testing to notice the
impact of that variable on the inference speed.
Adam is used as an optimizer and ReLU as an
activation function. The model code can be
found on the GitHub address:
https://github.com/kristian1971/MicroPythonR
ACE.</p>
      <p>The model was trained for only 12 epochs,
and after that, it was converted to TensorFlow
Lite (tflite) format. A total of 10 training
processes were conducted, and the variable that
was changed was the number of filters in the
convolutional layer. After each training, the
model in tflite format is saved. The same model
was used on both development boards.</p>
      <p>The OpenMV Cam H7 Plus development
board's integrated development environment
can be downloaded for free from the
manufacturer's website and is called the
OpenMV IDE. A free Integrated development
environment based on the OpenMV IDE, called
the MaixPy IDE, is available for the Sipeed
Maixduino development board. Both are based
on MicroPython. However, the use of the
convolutional neural network model is
somewhat different on boards. The OpenMV
IDE and the associated development board
allow easy transfer of the model in tflite format
with a simple drag-and-drop method because
the OpenMV Cam H7 Plus development board
in the Windows environment is presented as a
USB memory stick.</p>
      <p>In contrast, for the Sipeed Maixduino
development board, model preparation is more
complicated. NNCase is used for the
conversion, which is also free, and after the
conversion, a model in kfpkg format is
obtained. The file in the specified kfpkg format
is transferred to the development board using
the KFlash tool. Figure 4 shows the process of
training, conversion and transfer of the model
to both development boards.</p>
      <p>OpenMV
Cam H7 Plus</p>
      <sec id="sec-8-1">
        <title>GOOCGRLEEACTOIOLANBAONRDATTORARIYN-INMGODEL</title>
        <p>tflite model
OPENMVIDE- MODELDEPLOYMENT
development board is lifted from LOW to
HIGH. After the inference process, the state of
that same pin is lowered from HIGH to LOW.
The commands for the OPENMV IDE are as
follows:
pin1.value(1)
out = net.classify(graytmp)
pin1.value(0)</p>
        <p>The commands for the MaixPy IDE are as
follows:
led_r.value(1)
fmap=kpu.forward(task,img2)
led_r.value(0)
The described method is used to measure the
propagation time of data through a
convolutional neural network. Figure 6 shows
the measurement procedure on the
oscilloscope.</p>
      </sec>
    </sec>
    <sec id="sec-9">
      <title>4. Testing and measurement</title>
      <p>The first column of both tables contains the
number of filters in the convolution layer. In the
second column, the accuracy is obtained in the
model creation phase, and in the third column
are the tflite file sizes. The first three columns
are the same for both development boards.
Table 3</p>
      <sec id="sec-9-1">
        <title>OpenMV Cam H7 Plus data</title>
        <p>ACCURACY Tflite t
1 0.8969 8 kB 0,22 ms
2 0,9220 16 kB 0,33 ms
3 0.9479 24 kB 0,42 ms
4 0.9330 31 kB 0,52 ms
5 0,9520 39 kB 0,63 ms
6 0.9637 47 kB 0,74 ms
7 0,9623 54 kB 0,85 ms
8 0.9624 62 kB 0,97 ms
9 0,9632 70 kB 1,08 ms
10 0,9620 78 kB 1,20 ms
The fourth columns show the neural
network inference speed, and these values are
significantly less for the OpenMV Cam H7 Plus
development board. Figure 7 shows a graph of
speed for both development boards.</p>
        <p>3
)s2.5
m
(n 2
ito1.5
a
ga 1
p
ro0.5
p
0
1
2
3
4
5
6
7
8</p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>5. Discussion and conclusion</title>
      <p>The paper compares the convolutional
neural network inference speed of two various
developmental boards. One development board
is based on the STM32H743II ARM Cortex M7
processor, while the other is based on the
Kendryte K210 RISC-V processor. The same
neural network model was used in both cases,
and MicroPython was used for the model
implementation on development boards.
TensorFlow 2.x and Keras were used to develop
and train the model.</p>
      <p>It can be observed that the inference speed
under the given conditions is significantly
lower on the STM32H743II ARM Cortex M7
processor. However, we must emphasize that
the convolutional neural network used is simple
and that the input image is 14x14 pixels in size.</p>
      <p>A detail that should also be emphasized is
the influence of the number of used filters on
the inference speed. With only one filter in the
convolutional layer, the development board
based on the ARM processor was 6x faster,
while when using ten filters, this difference
dropped to only 2x. The increase in the number
of filters reduces the difference in inference
speed between boards. It is possible that at
some point, the development board based on
the RISC-V processor would be faster.</p>
      <p>
        The cause of this slight slope curve for the
RISC-V processor in Figure 8 is a Neural
Network processor in K210 with built-in
convolution, batch normalization, activation,
and pooling operations. This is sparsely
described in the documentation [
        <xref ref-type="bibr" rid="ref16">25</xref>
        ].
      </p>
      <p>In future research, the number of filters and
other parameters should be further increased,
and the influence of filter size should be
studied. In this paper, a 3x3 filter has been used,
and the documentation for the K210 states that
the Neural Network processor speeds up the
data propagation through a convolutional
neural network for 3x3 filters.
6. References
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]</p>
      <p>A. S. Gillis, »internet of things (IoT),«
TechTarget, [Mrežno]. Available:
https://internetofthingsagenda.techtarge
t.com/definition/Internet-of-ThingsIoT. [Pokušaj pristupa 12 January
2021].</p>
      <p>T. M. Mitchell, Machine Learning, New
York: McGraw-hill, 1997.</p>
      <p>Y. Zhang, N. Suda, L. Lai i V. Chandra,
Hello Edge: Keyword Spotting on
Microcontrollers, 2018.</p>
      <p>F. Sakr, F. Bellotti, R. Berta i A. De
Gloria, »Machine Learning on
Mainstream Microcontrollers,«
Sensors, svez. 20, 2020.</p>
      <p>J. Beningo, »Prototype to production:
MicroPython under the hood,«
Aspeccore Inc., 11 July 2016. [Mrežno].
Available:
https://www.edn.com/prototype-toproduction-micropython-under-thehood/. [Pokušaj pristupa 13 December
2020].</p>
      <sec id="sec-10-1">
        <title>George Robotics</title>
        <p>»MicroPython,« George
Limited, [Mrežno].
https://micropython.org/.
pristupa 12 December 2020].</p>
      </sec>
      <sec id="sec-10-2">
        <title>Limited, Robotics Available: [Pokušaj</title>
        <p>S. Sentance, J. Waite, L. Yeomans i E.
MacLeod, »Teaching with physical
computing devices: the BBC micro: bit
initiative,« u Proceedings of the 12th
Workshop on Primary and Secondary
Computing Education, 2017.</p>
        <p>M. Cápay i N. Klimová, »Engage Your
Students via Physical Computing!,« u
2019 IEEE Global Engineering
Education Conference (EDUCON),
2019.</p>
        <p>J. Adams, »Meet Raspberry Silicon:
Raspberry Pi Pico now on sale at $4,«
RASPBERRY PI FOUNDATION, 21
January 2021. [Mrežno]. Available:
https://www.raspberrypi.org/blog/raspb
erry-pi-silicon-pico-now-on-sale/.
[Pokušaj pristupa 22 Februray 2021].
Design Engineering Technical
Conferences and Computers and
Information in Engineering Conference,
2018.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E. Regnath i S.</given-names>
            <surname>Steinhorst</surname>
          </string-name>
          , »
          <article-title>LeapChain: efficient blockchain verification for embedded IoT</article-title>
          ,«
          <source>u Proceedings of the International Conference on ComputerAided Design</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [11]
          <string-name>
            <surname>A. M. Cardenas</surname>
            ,
            <given-names>M. K. N.</given-names>
          </string-name>
          <string-name>
            <surname>Pinto</surname>
            , E. Pietrosemoli,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Zennaro</surname>
            ,
            <given-names>M. Rainone i P.</given-names>
          </string-name>
          <string-name>
            <surname>Manzoni</surname>
          </string-name>
          , »
          <article-title>A low-cost and lowpower messaging system based on the LoRa wireless technology</article-title>
          ,
          <source>« Mobile Networks and Applications</source>
          , p.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Tzounis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Katsoulas</surname>
          </string-name>
          , T. Bartzanas i
          <string-name>
            <given-names>C.</given-names>
            <surname>Kittas</surname>
          </string-name>
          , »
          <article-title>Internet of Things in agriculture, recent advances and future challenges</article-title>
          ,« Biosystems Engineering, svez.
          <volume>164</volume>
          , p.
          <fpage>31</fpage>
          -
          <lpage>48</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M. E.</given-names>
            <surname>Sayed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Nemitz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Aracri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. C.</given-names>
            <surname>McConnell</surname>
          </string-name>
          ,
          <string-name>
            <surname>R. M. McKenzie</surname>
            i
            <given-names>A. A.</given-names>
          </string-name>
          <string-name>
            <surname>Stokes</surname>
          </string-name>
          , »
          <article-title>The limpet: A ROS-enabled multi-sensing platform for the ORCA hub</article-title>
          ,« Sensors, svez.
          <volume>18</volume>
          , p.
          <fpage>3487</fpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [14]
          <string-name>
            <surname>R. K. Kodali i K. S. Mahesh</surname>
          </string-name>
          , »
          <article-title>Low cost ambient monitoring using ESP8266,« u 2016 2nd</article-title>
          <source>International Conference on Contemporary Computing and Informatics (IC3I)</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Khamphroo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Kwankeo</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          <article-title>Kaemarungsi i K. Fukawa, »Integrating MicroPython-based educational mobile robot with wireless network</article-title>
          ,
          <source>« u 2017 9th International Conference on Information Technology and Electrical Engineering (ICITEE)</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>M.</given-names>
            <surname>Khamphroo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Kwankeo</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          <article-title>Kaemarungsi i K. Fukawa, »MicroPython-based educational mobile robot for computer coding learning</article-title>
          ,
          <source>« u 2017 8th International Conference of Information and Communication Technology for Embedded Systems (IC-ICTES)</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>H.</given-names>
            <surname>Tariq</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Touati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A. E</given-names>
            <surname>Al-Hitmi</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          <article-title>Crescini i A. Ben Mnaouer, »A realtime early warning seismic event detection algorithm using smart geospatial bi-axial inclinometer nodes for Industry 4</article-title>
          .0 applications,«
          <source>Applied Sciences, svez. 9</source>
          , p.
          <fpage>3650</fpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>C.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X. Chai i J. S.</given-names>
            <surname>Dai</surname>
          </string-name>
          , »
          <article-title>Preventing Tumbling With a Twisting Trunk for the Quadruped Robot: Origaker I,« u ASME 2018 International</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Wei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Cao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. Hargrove i J.</given-names>
            <surname>Gu</surname>
          </string-name>
          , »
          <article-title>A Wearable Bio-signal Processing System with Ultra-low-power SoC and Collaborative Neural Network Classifier for Low Dimensional Data Communication,« u 2020 42nd Annual International Conference of the IEEE Engineering in Medicine</article-title>
          &amp; Biology
          <string-name>
            <surname>Society</surname>
          </string-name>
          (EMBC),
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>P.</given-names>
            <surname>Ibba</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Crepaldi</surname>
          </string-name>
          , G. Cantarella,
          <string-name>
            <given-names>G.</given-names>
            <surname>Zini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Barcellona</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Petrelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. D.</given-names>
            <surname>Abera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Shkodra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. Petti i P.</given-names>
            <surname>Lugli</surname>
          </string-name>
          , »
          <article-title>Fruitmeter: An ad5933-based portable impedance analyzer for fruit quality characterization,« u 2020</article-title>
          <source>IEEE International Symposium on Circuits and Systems (ISCAS)</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Crepaldi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Barcellona</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Zini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ansaldo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. M.</given-names>
            <surname>Ros</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sanginario</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Cuccu</surname>
          </string-name>
          ,
          <string-name>
            <surname>D. De Marchi</surname>
            i
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Brayda</surname>
          </string-name>
          , »
          <article-title>Live wire-a low-complexity body channel communication system for landmark identification</article-title>
          ,
          <source>« IEEE Transactions on Emerging Topics in Computing</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>M.</given-names>
            <surname>Bahmanian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Fard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. Koppelmann i J. C.</given-names>
            <surname>Scheytt</surname>
          </string-name>
          , »
          <article-title>Wide-Band Frequency Synthesizer with Ultra-Low Phase Noise Using an Optical Clock Source</article-title>
          ,« u 2020 IEEE/MTT-S
          <source>International Microwave Symposium (IMS)</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>G.</given-names>
            <surname>Tanganelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. Vallati i E.</given-names>
            <surname>Mingozzi</surname>
          </string-name>
          , »
          <article-title>Rapid Prototyping of IoT Solutions: A Developer's Perspective,«</article-title>
          <source>IEEE Internet Computing, svez. 23</source>
          , p.
          <fpage>43</fpage>
          -
          <lpage>52</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>M.</given-names>
            <surname>Sielenkemper</surname>
          </string-name>
          , »Boards Summary,« GitHub, 20
          <string-name>
            <surname>Octobar</surname>
          </string-name>
          <year>2019</year>
          . [Mrežno]. Available: https://github.com/micropython/microp ython/wiki/Boards-Summary.
          <source>[Pokušaj pristupa 27 Februray</source>
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Sipeed</surname>
          </string-name>
          ,
          <article-title>"K210,"</article-title>
          <string-name>
            <surname>Sipeed</surname>
          </string-name>
          , [Online]. Available: https://maixduino.sipeed.com/en/hardw are/k210.html.
          <source>[Accessed 13 January</source>
          <year>2021</year>
          ].
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>