Introduction:
There have been questions and comments at Camp Petoi regarding comparisons between the NyBoard V1 and the BiBoard V0_1 or V0_2. The context is "Which is better?" but I think the real question is "Which is better for you right now?". I'd like give my answer to that latter question, based on what I've learned from working first with my Nybble (NyBoard of course) and then by upgrading my Bittle from a NyBoard to a BiBoard V0_2.
Let's start with some specifications...
The NyBoard uses an 8-bit Atmel ATMega328 single chip microcontroller that operates with a single core at up to 20 MHz (up to 20 MIPS), same as the Arduino Uno. An int type consumes 2 bytes to be memory efficient but with a limited range. It has only 32 KB of flash memory, used for storing program code, and only 2 KB of SRAM, used for storing variables. The NyBoard is a microcontroller with modest processing power where every byte of memory is precious.
The BiBoard uses a 32-bit Espressif ESP32-WROOM-32D "system on a chip" (SoC) microcontroller that operates with two cores at up to 240 MHz (up to 400 MIPS). An int type consumes 4 bytes which is less memory efficient but with a wider range. Furthermore, it is an actual "system" with more features (like built in Bluetooth and WiFi) that further consume memory. Still, the specific chip (ESP32-DOWD) in the BiBoard has available16 MB of flash memory of which about 4.5 MB can be configured for storing program code AND this chip has approximately 320 KB SRAM available for storing variables. The BiBoard is a microcontroller with strong processing power where every byte of memory is (relatively) cheap.
and then some observations...
The NyBoard is an Arduino Uno compatible which means that the wealth of information on the Arduino Uno will likely directly apply. This makes the NyBoard a great introduction to microcontroller driven robotics. It is plenty capable for the current features we see in the Petoi robots. However, the amount of memory space for code and for variables is, by comparison, limited. This makes compiling programs faster but puts constraints on what additional features can be added. Petoi has done amazing work making the OpenCat source code very memory efficient but we are almost out of memory at compile time. Expansion of robotic capabilities is therefore more difficult with the NyBoard.
The BiBoard is based on a very different architecture so it is not an Arduino Uno compatible. Furthermore, the Arduino IDE is not natively compatible with ESP32 boards. Fortunately, as explained on the Petoi website (see https://docs.petoi.com/arduino-ide/upload-sketch-for-biboard ), you can make that IDE compatible with the BiBoard. In my experience, information on the ESP32 is harder to find and harder to understand when you find it. That makes the BiBoard more suitable for the hobbyist who has some prior experience with Arduino compatible boards before learning how the ESP32 differs. Such "system on a chip" (SoC) boards are more complex so their programs are larger and take longer to compile. The payback you get with the BiBoard is plenty of memory, much more processing power and the OpenCat32 source code that allows easier expansion of robotic capabilities by both the Petoi team and individual Petoi Campers.
with different levels of control you can have over the Petoi robots...
The lowest level of control requires the no programming skill, because it uses the Petoi App for Android or iOS. This great for play with either board.
The next level of control requires some programming skill through the use of the "block-based" programming environment by Mind+ (See here and here). The program is composed in the Mind+ graphical user interface on a computer and then serial commands are sent to the robot when the program runs. With this control, there is still little difference between the NyBoard and the BiBoard.
Still higher control is possible with some coding skill using the Python language. This involves writing code in Python on a computer that then also sends serial commands to the robot. With this control as well, there is still little difference between the NyBoard and the BiBoard.
At the highest level of control, you need coding skills in the C++ language using e.g. the Arduino IDE. Here, you are modifying a local copy of the OpenCat or OpenCat32 source code. With this level of control, the BiBoard has the advantage due to the memory limitations of the NyBoard.
which brings me to these conclusions...
If you mostly want to play with a cool robot then a Bittle with either board is good.
If you are just learning to program and you want to use either "block-based" or Python programming then a Bittle with either board would be good.
If you are just learning to program and you want use the C++ language but stay in the Arduino compatible realm then it might be best to use the Bittle with the NyBoard.
If you already have some C++ Arduino coding experience and you want to move to the wider world of C++ with the ESP32, the Bittle with BiBoard is where it's at.
Hope this helps!
References:
1. https://en.wikipedia.org/wiki/ATmega328
3. https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32c3/hw-reference/chip-series-comparison.html
4. https://www.petoi.com/blogs/blog/petoi-robotics-c-python-curriculums-coming-in-aug
Thanks Yous
thanks
Very clear!