Navigation

    MakerGram Logo

    MakerGram

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Users
    • Groups

    What's your favorite embedded/prototyping development board?

    Development Boards
    9
    11
    855
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • MakerGram
      MakerGram last edited by

      Hey Maker,

      Since we have many makers, embedded developers and engineers in our community, we thought we will have a discussion about Embedded and Prototyping development board

      • What's your favourite Embedded/Prototyping development board?

      • What are the features that make it as your favourite?

      • Also what do you think about an ideal Embedded/Prototyping development board?

      We look forward to your opinion, experience. Stay safe and healthy.

      Note: We have some giveaway prizes for the selected and most upvoted replies! 😋 🤘

      S 1 Reply Last reply Reply Quote 3
      • kowshik1729
        kowshik1729 last edited by kowshik1729

        1. Personally I always prefer ESP32 for my embedded prototype development.

        2. That's because, it has inbuilt Wifi, BLE and classic Bluetooth along with multiple I2C peripheral with many more features. It is far better than arduino for prototyping purposes. It has high clock, higher pin count. I like this module not only as an evaluation board perspective but also in the easiness of designing PCB's with this SoC. I say it is one of the best developed SoC's available in the market. It is lot easier and faster to get the products into market with this SoC.

        3. I don't think so there is an ideal Embedded development board. Every development board has it's own pros and cons. But,

          1. For beginners - Arduino, ESP32, Raspberry Pi can be good development boards
          2. For Firmware development enthusiasts - NXP FRDMKL25Z Freedom board, STM32 Nucleo Board (There are many more but I just got these to my head)
          

        All these points are just made from my perspective. Feel free to add up or correct my points...!!

        1 Reply Last reply Reply Quote 6
        • salmanfaris
          salmanfaris last edited by salmanfaris

          Maker Perspective

          For Beginners/ Aspiring Makers Arduino UNO is my recommendation, very straight forward and very easy to get started.

          Arduino-Uno-Rev3-2.jpg

          Tech Specifications

          • Powerd by ATmega328P
          • 14 Digital I/O Pin, which 6 provide PWM output
          • 6 Analog Input Pins
          • 16 MHz Clock
          • 32 KB (ATmega328P) Flash Memory
          • 2 KB SRAM
          • 1KB EEPROM

          The Arduino Uno is an open-source microcontroller board based on the Microchip ATmega328P microcontroller and developed by Arduino.cc. The board is equipped with sets of digital and analogue input/output pins that may be interfaced to various expansion boards and other circuits.

          alt text

          The main thing I loved Arduino is the community and peripherals That supported, also the Shields. these are boards that can be plugged on top of the Arduino PCB extending its capabilities. The different shields follow the same philosophy as the original toolkit: they are easy to mount and cheap to produce.

          alt text

          Another one is the IDE, The Arduino Integrated Development Environment is a cross-platform application that is written in functions from C and C++. It is used to write and upload programs to Arduino compatible boards, but also, with the help of 3rd party cores, other vendor development boards.

          The Original Arduino Uno cost around $21, but you can also get clones even cheaper, but I recommend to buy original to support there mission and vision.

          Website: https://www.arduino.cc/


          There are some recommendations if you're into hackathons or quick prototype/POC.

          ESP32/ESP8266

          Others who have experience with the Arduino ecosystem, I suggest the Esperssif ESP8266 or ESP32 Low-cost WiFi and BLE* development platform, which is highly supported by the Arduino ecosystem. That means you can reuse many of the Arduino functions and libraries out of the box.

          esp32-vs-esp8266-devlopment-boards.jpg


          Particle Photon

          Capture.PNG

          The Photon is a $19 tiny Wi-Fi IoT device for creating connected projects and products for the Internet of Things. It's easy to use, it's powerful, and it's connected to the cloud. The board is powered by a Cypress Wi-Fi chip alongside a powerful STM32 ARM Cortex M3 microcontroller.

          It's very easy to quickstart, also super easy to connect with particle cloud if you project involve Cloud and Connectivity.

          Website: https://www.particle.io/


          If you need more computing and processing power you can check the Raspberry Pi and BeagleBoard Single Board Computers

          Raspberry Pi

          The Raspberry Pi is a series of small single-board computers developed in the United Kingdom by the Raspberry Pi Foundation to promote the teaching of basic computer science in schools and in developing countries Since the aim is to teach kids about physical computing and computer science, the documentation and getting started is very straight forward and simple.

          There are different models of Raspberry Pi SBC(Single Board Computer) and the latest one is Raspberry Pi 4 Model B which cost starts from $35. There is also lighter version called PiZero which cost around $5

          Capture.PNG

          Website: https://www.raspberrypi.org/


          BeagleBoard

          The BeagleBoard is a low-power open-source single-board computer produced by Texas Instruments in association with Digi-Key and Newark element14. The BeagleBoard was also designed with open source software development in mind and as a way of demonstrating the Texas Instrument's OMAP3530 system-on-a-chip.

          bbw.jpg

          If you are a beginner and want to get started the embedded Linux development, then you need to checkout beagleboard series single-board computer.

          Website: https://beagleboard.org/


          The list is not over yet, I'll share more thought on the thread as a followup.
          😀 👍

          1 Reply Last reply Reply Quote 7
          • S
            stephenlstrange last edited by

            ESP32 By far.

            1. It has 2 cores, so its perfect for RTOS.
            2. a lot of options for peripheral interfaces.
            3. WiFi that works like a charm.
            4. BLE not so good but what about the mesh?
            5. ESP NOW so you dont depend on boring IEEE standards, and actually have flexibility for specific applications
            6. TOUCH PINS !!!!!!!
            7. plenty of memory (not a lot but for a uc its very good).
            8. The community and devops behind always amaze me.
            9. IDF so you don't have to use THE LAME (arduino).
            10. Composite video (thanks bitluni) .
            11. Internal Hall sensor and Temperature Sensor.
            12. ULP COP.
            13. Ducking Ethernet !!

            And the list go on...

            1 Reply Last reply Reply Quote 3
            • S
              sonal antony @MakerGram last edited by

              @MakerGram
              Personally.. For me Arduino Uno is my favorite board considering its simplicity, ease of use and most importantly the best board to with if you are just starting out and the environment is still new to you
              Also another huge bonus I would say is that there is a huge community with more than enough expertise to guide you and help you if needed.
              And one more thing is the IDE is simple yet versatile and is easily understandable

              1 Reply Last reply Reply Quote 7
              • kowshik1729
                kowshik1729 last edited by

                @stephenlstrange I have worked on some applications with BLE. Yeah, it's true, BLE of ESP32 kinda sucks, it's still in development in some issues. Right now ESP32 is supporting Mesh topology too. Just if you're curious, watch this Mesh example video

                S 1 Reply Last reply Reply Quote 3
                • S
                  stephenlstrange @kowshik1729 last edited by

                  @kowshik1729 Wow that looks very nice indeed, i do have like 50 or 60 development boards of esp32 i'm gonna try this myself...

                  1 Reply Last reply Reply Quote 1
                  • A
                    Anirudh manoj last edited by Anirudh manoj

                    I like Arduino nano, because it's size makes fit in any projects beautifully and most of all, it is as easy as any other Arduino. The Arduino IDE is very simple and support all of its boards. For any beginner who has projects with 8-bit needs, Arduino nano can give its best..
                    😀

                    1 Reply Last reply Reply Quote 5
                    • rafitc99
                      rafitc99 last edited by

                      My favourite prototyping development board is Arduino Uno and Nodemcu #ArduinoUyir🔥 Because with these 2 board we can do most projects. Single Analog pin is the only problem with Nodemcu. That can be resolved by any other basic Arduino family development board. Both these two boards I fall in love❤ with hardware. Nodemcu's WiFi+Uno's digital/analog pins. Also using these two a begginer can learn almost everything in hardware.

                      1 Reply Last reply Reply Quote 5
                      • Nandu
                        Nandu last edited by Nandu

                        One of my favourite development board is arduino.I am not specifying any model because it varies upon the projects which we are doing as well as users who handles it.For beginners Arduino boards are easy to understand as well as perfect to develop skill in their making.
                        Some factors which make arduino a beginner-friendly board from others are

                        • Provides easiest debugging environment.

                        • These boards will be helpfull for a beginner as well as a professional inorder develop their skill.(If you know how to design an arduino board eventhough its not a microcontroller you can develop a new board by yourself)

                        • You can find enumerous libraries and IC's build for the same.

                        • Runs on low voltage,less external circuits required for many projects,led indication(which makes a beginners' tasks and learning easy)

                        • Community support and its fame(Almost every hardware makers will have a previous experience with this board so any doubts or questions can be easily clarified for the beginners)

                        • Prototyping language is not that much tough(C/C++) and also this IDE can be done in every platforms like Mac,Linux,Windows.

                        • Size-according to your project or tasks you can use different models.

                        I dont think there will be an ideal development board like everyone said there will be pros and cons for every boards.And also there is a main factor which made me to say like this and that is I have only used some of them like arduino,esp,pi🙃🙃

                        1 Reply Last reply Reply Quote 4
                        • First post
                          Last post

                        Recent Posts

                        • @salmanfaris Actually I'm not sure what was that Core 0 register dump:
                          But I parsed the JSON. Refer Here for cJSON example. But while working this one, faced another problem. HTTP response includes the whole headers, status code, and body. JSON parser only work if the whole response in the form of JSON. So, Initially stored all responses into a char buffer and cleaned all headers. By using if(response[i] == '{' ) and some flags.

                          • read more
                        • @rafitc99 How did you solved?

                          • read more
                        • @salmanfaris Yes. I fixed it. But no idea about the reason for this error.

                          • read more
                        • @rafitc99 Are you able to fix this issue!

                          • read more
                        • I'm trying to parse Json using cJson Library
                          But getting error Core 0 register dump: and the microcontroller is resetting.
                          I'm using ESP8266 and its on SDK for writing firmware. (ESP-IDF)

                          Below I'm adding complete error log and code.

                          In below code this part is causing for this error and reset

                          json = cJSON_Parse(version); out = cJSON_Print(json); cJSON_Delete(json); printf("%s\n", out); free(out); I (10824) example: ... socket send success I (10828) example: ... set socket receiving timeout success I (11234) example: JSon Parser calling Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled. Core 0 register dump: PC : 0x4000bf80 PS : 0x00000030 A0 : 0x4022f684 A1 : 0x3fff70e0 0x4022f684: _puts_r at /home/dongheng/workspace/espressif/newlib_xtensa-2.2.0-bin/newlib_xtensa-2.2.0/xtensa-lx106-elf/newlib/libc/stdio/../../../.././newlib/libc/stdio/puts.c:90 A2 : 0x00000000 A3 : 0xfffffffc A4 : 0x000000ff A5 : 0x0000ff00 A6 : 0x00ff0000 A7 : 0xff000000 A8 : 0x401078a0 A9 : 0x0000010c A10 : 0x402559f0 A11 : 0x50545448 A12 : 0x00000000 A13 : 0x40106458 A14 : 0x00000000 A15 : 0x3ffeaaf8 SAR : 0x0000001d EXCCAUSE: 0x0000001c Backtrace: 0x4000bf80:0x3fff70e0 0x4022f684:0x3fff70e0 0x4022f724:0x3fff7110 0x4022dc31:0x3fff7120 0x4022f684: _puts_r at /home/dongheng/workspace/espressif/newlib_xtensa-2.2.0-bin/newlib_xtensa-2.2.0/xtensa-lx106-elf/newlib/libc/stdio/../../../.././newlib/libc/stdio/puts.c:90 0x4022f724: puts at /home/dongheng/workspace/espressif/newlib_xtensa-2.2.0-bin/newlib_xtensa-2.2.0/xtensa-lx106-elf/newlib/libc/stdio/../../../.././newlib/libc/stdio/puts.c:139 0x4022dc31: http_get_task at /Users/rafi/Desktop/hawk/ESP8266_RTOS_SDK/examples/protocols/http_request/main/http_request_example_main.c:208 @?Z-nP?M 'γ? %[ )Q ?O??T5??)?))??e5?? ?L?C? I?TZ ??TR?enB?[ ??Q ?ؚ?P9?)?N9?Ɇ )dг 5?P NRA?)ڻ^?)?N9?B??JA? %Y.??+????D W? ??ZQH???~?N??))GD?@ %Y.?^Z1O????Eؓ? PF???J[ !d?TP?HP'i 3mʉOC??JC?%YB7օ+k?))GD?@5 %Y J+?1mG?A??JA? %? %^u@? 5%ʃ?E???J M % ƣ??[?P?TQ+E???J % ??C?T?nV??@ -??\)DV?Q?NX???? %[ -Z?IP?L ?E?)??JCB??q! 1iGq?P#?? %??MC??JA@!%Y%.?M%,?i !XG?)!Eؑ? h? %^u??? 1?Ls?Y?P??Q?A??J ? #??C?5dԵ1?LT?P?????????m \?]eFL?))E???J ?D????5l?V?1NT? PE??M????@P?\9'?? +??+)GD?@?F@J??I?7?n 9)5NT?,R?e7??E@@)IJ?+ YЛ? ?EBH??A?Z5dֵ?LT??G?1?1??mP#?EFB?CH?)!Eؑ? `n #???7nʋ?1DT? ? XU?MTՋ9E??5????@ )R}?OC??JC%YY?V?P%?1?LL[ !?ֳ\ZQ?N?I (306) system_api: Base MAC address is not set, read default base MAC address from EFUSE I (312) system_api: Base MAC address is not /* HTTP GET Example using plain POSIX sockets This example code is in the Public Domain (or CC0 licensed, at your option.) Unless required by applicable law or agreed to in writing, this software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/event_groups.h" #include "esp_wifi.h" #include "esp_event_loop.h" #include "esp_log.h" #include "nvs_flash.h" #include <netdb.h> #include <sys/socket.h> #include "cJSON.h" /* The examples use simple WiFi configuration that you can set via 'make menuconfig'. If you'd rather not, just change the below entries to strings with the config you want - ie #define EXAMPLE_WIFI_SSID "mywifissid" */ #define EXAMPLE_WIFI_SSID CONFIG_WIFI_SSID #define EXAMPLE_WIFI_PASS CONFIG_WIFI_PASSWORD /* FreeRTOS event group to signal when we are connected & ready to make a request */ static EventGroupHandle_t wifi_event_group; /* The event group allows multiple bits for each event, but we only care about one event - are we connected to the AP with an IP? */ const int CONNECTED_BIT = BIT0; /* Constants that aren't configurable in menuconfig */ #define WEB_SERVER "hawk-ota.herokuapp.com" #define WEB_PORT 80 #define WEB_URL "http://hawk-ota.herokuapp.com/api/get-json" static const char *TAG = "example"; static const char *REQUEST = "GET " WEB_URL " HTTP/1.0\r\n" "Host: "WEB_SERVER"\r\n" "User-Agent: esp-idf/1.0 esp32\r\n" "\r\n"; char version[50]; char *out; cJSON *json; /* void Parse_Json(char *text) { if (!json) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); } else { out = cJSON_Print(json); cJSON_Delete(json); ESP_LOGI(TAG,"\n here"); puts(out); free(out); } }*/ static esp_err_t event_handler(void *ctx, system_event_t *event) { /* For accessing reason codes in case of disconnection */ system_event_info_t *info = &event->event_info; switch(event->event_id) { case SYSTEM_EVENT_STA_START: esp_wifi_connect(); break; case SYSTEM_EVENT_STA_GOT_IP: xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); break; case SYSTEM_EVENT_STA_DISCONNECTED: ESP_LOGE(TAG, "Disconnect reason : %d", info->disconnected.reason); if (info->disconnected.reason == WIFI_REASON_BASIC_RATE_NOT_SUPPORT) { /*Switch to 802.11 bgn mode */ esp_wifi_set_protocol(ESP_IF_WIFI_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N); } esp_wifi_connect(); xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); break; default: break; } return ESP_OK; } static void initialise_wifi(void) { tcpip_adapter_init(); wifi_event_group = xEventGroupCreate(); ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) ); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) ); wifi_config_t wifi_config = { .sta = { .ssid = EXAMPLE_WIFI_SSID, .password = EXAMPLE_WIFI_PASS, }, }; ESP_LOGI(TAG, "Setting WiFi configuration SSID %s...", wifi_config.sta.ssid); ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); ESP_ERROR_CHECK( esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) ); ESP_ERROR_CHECK( esp_wifi_start() ); } static void http_get_task(void *pvParameters) { const struct addrinfo hints = { .ai_family = AF_INET, .ai_socktype = SOCK_STREAM, }; struct addrinfo *res; struct in_addr *addr; int s, r, j = 0; char recv_buf[64]; while(1) { /* Wait for the callback to set the CONNECTED_BIT in the event group. */ xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY); ESP_LOGI(TAG, "Connected to AP"); int err = getaddrinfo(WEB_SERVER, "80", &hints, &res); if(err != 0 || res == NULL) { ESP_LOGE(TAG, "DNS lookup failed err=%d res=%p", err, res); vTaskDelay(1000 / portTICK_PERIOD_MS); continue; } /* Code to print the resolved IP. Note: inet_ntoa is non-reentrant, look at ipaddr_ntoa_r for "real" code */ addr = &((struct sockaddr_in *)res->ai_addr)->sin_addr; ESP_LOGI(TAG, "DNS lookup succeeded. IP=%s", inet_ntoa(*addr)); s = socket(res->ai_family, res->ai_socktype, 0); if(s < 0) { ESP_LOGE(TAG, "... Failed to allocate socket."); freeaddrinfo(res); vTaskDelay(1000 / portTICK_PERIOD_MS); continue; } ESP_LOGI(TAG, "... allocated socket"); if(connect(s, res->ai_addr, res->ai_addrlen) != 0) { ESP_LOGE(TAG, "... socket connect failed errno=%d", errno); close(s); freeaddrinfo(res); vTaskDelay(4000 / portTICK_PERIOD_MS); continue; } ESP_LOGI(TAG, "... connected"); freeaddrinfo(res); if (write(s, REQUEST, strlen(REQUEST)) < 0) { ESP_LOGE(TAG, "... socket send failed"); close(s); vTaskDelay(4000 / portTICK_PERIOD_MS); continue; } ESP_LOGI(TAG, "... socket send success"); struct timeval receiving_timeout; receiving_timeout.tv_sec = 5; receiving_timeout.tv_usec = 0; if (setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &receiving_timeout, sizeof(receiving_timeout)) < 0) { ESP_LOGE(TAG, "... failed to set socket receiving timeout"); close(s); vTaskDelay(4000 / portTICK_PERIOD_MS); continue; } ESP_LOGI(TAG, "... set socket receiving timeout success"); /* Read HTTP response */ do { bzero(recv_buf, sizeof(recv_buf)); r = read(s, recv_buf, sizeof(recv_buf)-1); for(int i = 0; i < r; i++) { //putchar(recv_buf[i]); version[j++] = recv_buf[i]; } } while(r > 0); version[j++] = '\0'; ESP_LOGI(TAG, "JSon Parser calling"); json = cJSON_Parse(version); out = cJSON_Print(json); cJSON_Delete(json); printf("%s\n", out); free(out); j=0; ESP_LOGI(TAG, "... done reading from socket. Last read return=%d errno=%d\r\n", r, errno); close(s); for(int countdown = 10; countdown >= 0; countdown--) { ESP_LOGI(TAG, "%d... ", countdown); vTaskDelay(1000 / portTICK_PERIOD_MS); } ESP_LOGI(TAG, "Starting again!"); } } void app_main() { ESP_ERROR_CHECK( nvs_flash_init() ); initialise_wifi(); xTaskCreate(&http_get_task, "http_get_task", 16384, NULL, 5, NULL); } ///Users/rafi/desktop/hawk/ESP8266_RTOS_SDK/examples/protocols/http_request

                          • read more
                        By MakerGram | A XiStart Initiative | Built with ♥ NodeBB
                        Copyright © 2020 MakerGram, All rights reserved.
                        Privacy Policy | Terms & Conditions | Disclaimer | Code of Conduct