#240

Поділитися
Вставка
  • Опубліковано 16 лис 2018
  • Python seems to be the fastest growing programming language. It is also widely used to program Raspberry Pis, and it is on the verge to become available on our small microcontrollers. Has the time come to leave the Arduino IDE and go on? Time for a closer look.
    Topics covered:
    - Language (Micropython/ Adafruit CircuitPython vs C++
    - Parts of the Hardware and programming interface (SAMD21/SAMD51)
    - Libraries
    - Documentation and Community
    If you want to stay, but comfortable: • #264 PlatformIO for Ar...
    Supporting Material and Blog Page: www.sensorsiot.org
    Github: www.github.com/sensorsiot
    My Patreon Page: / andreasspiess
    My Bitcoin address: 19FSmqbBzb5zsYB1d8Bq4KbxVmezToDNTV
    If you want to support the channel, please use the links below to start your shopping. No additional charges for you, but I get a commission (of your purchases the next 24 hours) to buy new stuff for the channel
    For Banggood bit.ly/2jAQEf4
    For AliExpress: bit.ly/2B0yTLL
    For ebay.com: ebay.to/2DuYXBp
    profile.php?...
    / spiessa
    www.instructables.com/member/...
    Please do not try to Email me or invite me on LinkedIn. These communication channels are reserved for my primary job
  • Наука та технологія

КОМЕНТАРІ • 1,8 тис.

  • @AndreasSpiess
    @AndreasSpiess  5 років тому +402

    I am overwhelmed by the number of comments! Thank you very much. I am extremely proud of how many professional programmers are watching this channel and the quality of the discussions. I will not be able to answer all comments, but I read all of them because it is a very good input for the future of this channel. I think I learned more about your thinking in this video than anytime before. This video was triggered by my decision to learn Python on the Raspberry because it is widely used. Then, I thought, let's check if this is also usable on my MCUs. And then I thought I share my findings...

    • @DCFusor
      @DCFusor 5 років тому +25

      You're doing great, Andreas. I'm able to recommend your stuff to both experienced and beginners, and they all like it too. And no matter what, we all fall on some spectrum that's different depending on topic. For example, I had little clue how to get going with the ESP32, but you came along and made it super easy - "taking that hit for the team", for which, much thanks. Even for an "expert", it's nice to have someone go over the ground and find the pitfalls and tricks - which save even highly experienced (but in slightly different specialties) people lots and lots of time. The stuff in your mailbags saves me from having to buy all the same stuff and try it myself, for example - now I can go right to the answers. Please keep up the good work!

    • @UpcycleElectronics
      @UpcycleElectronics 5 років тому +8

      Kudos on the comments section here. There sure are a lot of really interesting people and points made. I think I'm learning almost as much here as in the video ;)

    • @AndreasSpiess
      @AndreasSpiess  5 років тому +6

      @Upcycle: I hope, here you learn more ;-)

    • @TheBodgybrothers
      @TheBodgybrothers 5 років тому +3

      I think I'm more impressed they put a python interpreter on a micro controller than actually being able to code python on a micro. I certainly wouldn't but the fact you can is pretty amazing. The efficiency would be terrible especially in battery operated devices!

    • @DavidGlaude
      @DavidGlaude 5 років тому +3

      Thank you to you Andreas.
      I am a non professional programmer, but my education was in programming.
      But thanks to maker and professional like you, I can have fun in the physical world.
      20(?) years ago, I skipped the PIC programming (despite reading books about it and knowledge of assembly). 10(?) years ago I skipped the Arduino despite knowing C. 3 years I started with Pi, mostly in Python. Then thanks to Adafruit, I discovered Micro Python on the ESP8266 and that is where I started to see their move to making Circuit Python.
      Having the same language both on SBC and microprocessor is really great for me. Even if that language require space for indentation and n type declaration.

  • @arduinoversusevil2025
    @arduinoversusevil2025 5 років тому +72

    Excellent! Thanks for dispelling my trepidation. Until now I thought: "feather? meh, it's not arduino."

    • @dd0356
      @dd0356 5 років тому +1

      hello! greetings from india, i write my comment only to appreciate your thoughts, on the metal making videos on bofors and many other things about my country ;-)

    • @AndreasSpiess
      @AndreasSpiess  5 років тому +12

      You are always welcome. Had to use Google translate for these highbrow words ,-)

    • @Samuel-km5yf
      @Samuel-km5yf 4 роки тому +9

      Andreas Spiess - At least AvE wasn’t speaking in his native tongue. Google translate can’t help you with the lowbrow dialect. AvE is a lingual genius when he’s narrating his videos 👨‍🎓

    • @ihavecojones
      @ihavecojones 3 роки тому

      I dunno AvE looking at the comparisons, when he said you cannot imput compands in arduino by pressing enter, yes you can just use the Parse instruction.
      Python doesn't jave curly brackets and loops. Well i think it's good to have a visual que oit there.
      The code is written directly on the microcontroller. Why would I want that?

    • @ihavecojones
      @ihavecojones 3 роки тому

      As you said In one of your videos.
      Embrace the suck! Don't do something just because it's easyer.
      I mean, does it do the same thing? Maybe.
      Is it easyer? Well to someone completly oblivious of programing all of em are gonna be difficult. Why not go with something with more structure.

  • @aucklandtechs9806
    @aucklandtechs9806 2 роки тому +2

    I love your stuff. It's like choosing a whole art gallery first, and then finding the painting - Not like other videos that take you through a look at each painting first, and then finding out you're in the wrong art gallery.

  • @Dave_Rice
    @Dave_Rice 5 років тому +1

    Your videos are always very informative and entertaining. But this video really helped me understand Python and it's variants. Great work! I'll be very interested in seeing additional videos on the topic. Thanks!!

  • @Yaxqb
    @Yaxqb 5 років тому +12

    You got me at the file system and REPL. My goodness, I had forgotten unix philosophy "everything is a file" on embedded. This is great! It lowers the bar considerably if people can use whatever editor they like, without any compilers and such. This is going to be the new thing

    • @suruzuddin
      @suruzuddin 4 роки тому +1

      You view it as file, does not make it file. This where abstraction starts :D

    • @Rizon1985
      @Rizon1985 4 роки тому

      IDE's are your friend and not your enemy. Using print() isn't debugging. Having to type everything instead of auto-completion is a waste of productivity. Having a compiler warn you about dangerous mistakes before uploading/execution can prevent costly mistakes. A file structure is much easier than having a bunch of text files open.
      Maybe it looks like you are in control because you can see the files. In truth everything important is abstracted away from you and you don't have access to it or can see what is happening.

  • @idogendel
    @idogendel 5 років тому +80

    When several tools can do a job, it's obviously wise to pick the one you're most comfortable with. Still, whenever I touch python on a microcontroller I cannot help but feel dirty, it's like keeping an entire PC only for checking the time on the little clock at the corner of the monitor :)

    • @mipmipmipmipmip
      @mipmipmipmipmip 5 років тому +2

      Ecosystem is also important.

    • @idogendel
      @idogendel 5 років тому

      True, I just included that factor in "the one you're most comfortable with" :)

    • @dasworkshop4967
      @dasworkshop4967 4 роки тому +3

      I'm the same way with the RPi. I can't stand the entire framework to be honest, I don't want a little computer to try and act like a big one, and almost none of my projects require a display anything like a desktop monitor. I went the whole hog approach too, I have the Western Digital PiDrive, wireless and Bluetooth dongles, I just grew to loathe the whole concept.

    • @idogendel
      @idogendel 4 роки тому +3

      @@dasworkshop4967 The Pi has its uses, it's when people confuse it with Arduino that the troubles begin :-) But I got disappointed with it too, when I saw how easily it can fail because of the SD card, and how non-trivial, non-standard it is to use a proper hard drive to boot (even with the most recent solutions)

    • @candidmoe8741
      @candidmoe8741 4 роки тому +1

      You don't have to live in pain, you know?

  • @deviagemarcada
    @deviagemarcada 4 роки тому +2

    CONGRATS, I'VE BEEN WATCHING YOUR VIDEOS... IT'S AMAZING HOW TECHNICAL AND SIMPLE IT IS... I HOPE THAT YOU CONTINUE DOING A GOOD JOB HERE.

  • @quoit99training83
    @quoit99training83 5 років тому +1

    About time! :) it will be good series to follow along. Thank you Andreas!

  • @toastrecon
    @toastrecon 5 років тому +6

    So great! I'm excited to learn more about this. My guess on the pronunciation of "Mu" would be that they're looking to have it be like the greek letter "μ", for "micro". Maybe then you'd just pronounce it however that worked in whatever language you spoke. I've heard it pronounced "mew" (rhymes with "you"). Thanks again for making these.

  • @atinotevuelveaimportar5905
    @atinotevuelveaimportar5905 5 років тому +931

    When adafruit stops charging 50$ for 5$ hardware I’ll consider getting smth from them.

    • @Ed19601
      @Ed19601 5 років тому +86

      The argument is always: "yes but that way you support development of the Arduino"
      As if that still needs developing

    • @atinotevuelveaimportar5905
      @atinotevuelveaimportar5905 5 років тому +163

      Ed19601 Don’t get me
      wrong, I understand that they don’t work for free. And I gladly pay for good services. But a recent example: 64x64 p3 RGB led matrix. Raw chinese crap: 19 USD. Adafruit 75 USD.
      What can I say.
      Its the difference between a cool DIY project and No F****** way

    • @Ed19601
      @Ed19601 5 років тому +46

      @@atinotevuelveaimportar5905 oh I fully understand and ofcourse no one works for free but like you I know many examples of say established peripheral modules that require no development that are much much more expensive than at say a Chinese website and then I am not even counting the shipping cost. I'd happily buy a feather from them but not a UNO, or a neopixel ring or a DHTxx.
      If I had to buy everything at adafruit I wouldn't have this hobby

    • @rjmunt
      @rjmunt 5 років тому +91

      I occasionally buy stuff from adafruit to support their development.
      They've created libraries and tutorials that have really helped me out.

    • @damny0utoobe
      @damny0utoobe 5 років тому +22

      Adafruit releases board files which you can use to mass produce boards. And that will be even cheaper than the Chinese derivatives

  • @outofthebots3122
    @outofthebots3122 5 років тому +11

    Something that may interest hard core C programmers is that you can have best of both worlds. If you need a function to be fast you can write it in C then compile it into the firmware to be called by python. All the experienced Micro-Python users are C programmers that like the quick development cycle of python and the fact it require very little lines of code to achieve the same as C.

  • @chuckwilcox6997
    @chuckwilcox6997 5 років тому

    Brilliant work again! The Micropython/C++ was a question sitting in the background for me. I'll be watching the Video again, as I'm a Fortran77 generation person and take time to assimilate. Thank you for your time, hope to support your channel, definite Thumbs up from me :)

  • @DavyBot
    @DavyBot 5 років тому +5

    I've been using Espruino recently and while I know there's a lot of strong feelings about Javascript it actually works really well for IO-bound applications. Most of my own embedded projects rely more on IO than on raw processor speed and they usually interface with things over standard protocols like I2C/SPI/UART (which the interpreter has implemented really efficiently) so there's not much benefit to writing everything in C. But there is a lot of benefit in having an interpreter that's designed around an event loop which makes asynchronous IO easier to implement.

    • @gdwe1831
      @gdwe1831 2 роки тому

      What a time to be alive...JavaScript on a microcontroller, Can't wait for the new PHP microcontroller!

  • @hakanegne
    @hakanegne 5 років тому +197

    compiled codes works much more fast than interpereted codes. So Arduino much better than Micropython for realtime projects. and dont forget; you will write code 1 time but microcontroller will run it million times !

    • @mohammedyasarshaikh4501
      @mohammedyasarshaikh4501 4 роки тому +3

      Really? Really I don't have to go to Python with leaving C and Microcontroller ATMEGA 328P?

    • @markc9871
      @markc9871 4 роки тому +31

      The more python applications I see in real time application, the more I noticed the unacceptable slowness and and even lag. For some applications, I see some are using hybrid techniques mixing interpretive python and embedded 'C' code for performance. It reminds me of the evolution of MS Windows. Arduino seems coded tight and efficient. While Python, instead of making efficient, is loose and depends on faster and faster processors, and more memory. Just like Windows.

    • @johnschindler9641
      @johnschindler9641 4 роки тому +7

      I'm with you, at least for most of my apps. You compile once, and I agree the uploads can be lengthy especially with the 8266s but it's one time instead of interpreting every line every time. And, as near as I can tell, still no interrupts in Circuit Python.
      He's right about the strings. I do some communications with other processors using strings, and that could be better.

    • @AssTelescope
      @AssTelescope 4 роки тому +10

      Fast is a relative term. We’re talking nano second differences

    • @AssTelescope
      @AssTelescope 4 роки тому +4

      LowJack187 yeah those temperature reading are super important

  • @CrazyCoupleDIY
    @CrazyCoupleDIY 5 років тому +1

    Your videos are so informative and helpful.
    I will always give you a thumbs up

  • @MartinBgelund
    @MartinBgelund 5 років тому +55

    For me it's not a question of either/or. Both have their rights and advantages in specific situations. Generally I would use Interpreted languages on beefy platforms like RasPi and for rapid prototyping, and compiled languages on low power and small form factors.

    • @AndreasSpiess
      @AndreasSpiess  5 років тому +10

      I started with BASIC on a Z80. Which was not really beefy. And I was able to write database applications which were astonishing for people at this time. I think this was possible because we had some "high-level libraries" which were coded in assembler. For me, this was a perfect fit at this time.
      Maybe we will see a similar thing here: The logic in Python and some optimized libraries?

    • @MartinBgelund
      @MartinBgelund 5 років тому +5

      That's exactly where I started too! But you have to consider the hardware available at that time; beefy compared to what? Home Computers like the ZX81 (and clones) were the only thing available to mere computer mortals like myself at that time, so a Z80 processor (and similar) was the beefiest thing you had access to, since it was about the only thing you had access to.
      Now I can pick an ATTiny85, an ESP32, a RasPi, ODroid, and what-not, and still have money left to buy food the rest of the month :-) and these platforms represent a wide spectrum of beefiness.
      So to me, beefy vs not-beefy is for example RasPi vs ATTiny85.

    • @AndreasSpiess
      @AndreasSpiess  5 років тому +2

      I was referring to your comment, that interpreters need "beefy" platforms.

    • @MartinBgelund
      @MartinBgelund 5 років тому +3

      Sorry for going on and on about this topic, Andreas, but I'm really excited about this :-)
      Going back to the ZX81 example (since it had a Z80 processor), it had 1KB of RAM where you would have your program stored, and 8KB of ROM for the interpreter.
      See en.wikipedia.org/wiki/ZX81:
      "The ZX81 has a base configuration of 1 KB of on-board memory [...] and an 8 KB ROM providing a simple BASIC interpreter."
      So having 8 times the space for the interpreter, compared to space for your actual program in the standard configuration, suggests to me that interpreters *relatively speaking* require some sort of beefiness. Hence my comment about beefiness.

    • @highkicker11
      @highkicker11 5 років тому +2

      ​@@MartinBgelund​ , its also true that the more memory you want the more you pay for it. back then it was a higher price per kb then now. Heck, its still you get what you pay for. a higher-level interpreted language needs more mem so to use it will cost more to run it. it might even weigh more. nanograms then but he talking about space crafts every darn sliver counts. after all the person who developed micro-python works in the space industry.

  • @XTronical
    @XTronical 5 років тому +48

    I see contrasting comments here and from my personal experience I am not a python fan. But thank you very much for a very informative video and I have learnt several things about developing with it today. Like python or not your video was excellent.

    • @AndreasSpiess
      @AndreasSpiess  5 років тому +1

      Thank you for your feedback. That was my intention and the reason for the question mark at the end.

  • @mbirth
    @mbirth 5 років тому +89

    What most commenters here don't seem to get: MicroPython has nothing to do with the Python interpreter on your PC. It is a new implementation optimised for running on microprocessors. In the same way you could argue the Arduino framework is slowing things down and you would be better off programming the microprocessors directly in assembler. Also MicroPython is not slow at all and it brings means to even further optimise your programs by precompiling parts in different ways.
    And MicroPython already contains all means to develop programs. No need for any IDE, programmer or whatever. Connect it to your PC, a new drive will pop up and your code is in one or more text files on that drive. You can edit them with any text editor and once you save them and disconnect the board, your changed code is active. There's even a live REPL console to play with your modules and code. So much easier to work with.

    • @mohammedyasarshaikh4501
      @mohammedyasarshaikh4501 4 роки тому +8

      Thank you for your comment to give understanding

    • @michaels8297
      @michaels8297 3 роки тому +3

      Thank you for accompanying your opinion with an explanation

    • @radellaf
      @radellaf 3 роки тому +1

      Have to agree I'd never heard of MicroPython and assumed it was just "python". Still, don't think it's enough benefit, from what you've said, to switch from C. I like having an IDE, and uploading over a USB connection to the embedded system. All mine have USB since it's just too useful for debug vs JTAG or something simpler. I'll pay for the extra chip.

    • @YaFunklord
      @YaFunklord 3 роки тому +2

      But it has the same terrible whitespace-based syntax which makes it unusable.

    • @richsadowsky8580
      @richsadowsky8580 3 роки тому +1

      I could debate that it has "nothing to do with Python ...". I program in many languages and micro and circuitpython are very similar to Python 3.7 or above whether run in Docker, on a Mac, in the cloud... In fact I have some code that I lifted right out of code written for a different use case in real CPython 3.x. But I do understand your point that there is a big different in how the micropython approaches with its mpy files versus regular CPython's pyc files. To be clear to readers, CPython is the name of the programming language Python's default implementation written in C (thus the C in the name). It is not an abbreviation for circuitpython. Although I said I "could" debate, since I get what you are trying to say about the original writing of MicroPython from scratch for microcontrollers. Circuitpython is a branch of MicroPython which favors educational features over performance or efficiency. What a great time to be alive! So many cool ways to write code and make new products

  • @coldfinger459sub0
    @coldfinger459sub0 5 років тому

    Well explained great to see good examples and explanations of other platforms thank you

  • @gabriel1chan
    @gabriel1chan 4 роки тому

    Just the introduction, I have to give thumbs up. You are the only one who list out the content.

  • @InformatrIIcks
    @InformatrIIcks 5 років тому +72

    I'll say that if you're a beginer maker, go for Arduino. It will allow you to have a better understanding of how code works on the inside. Also, moving from C++ to Python is super easy. The other way around takes a lot of time and re-learning of basic concepts.

    • @gunawanoei1577
      @gunawanoei1577 5 років тому +3

      I agree, Learning C++ is harder than Python, and when we've mastered C++, moving to Python is less effort.

    • @abdulahad200
      @abdulahad200 4 роки тому +1

      relearning what "basic concepts" exactly?

    • @widya1836
      @widya1836 4 роки тому

      And the clones are very cheap

    • @laszlolebrun4114
      @laszlolebrun4114 4 роки тому

      @@piotrku_ not only processing intensive stuff, but also hardware close stuff, where it comes to define clearly the type of variables.

    • @sylviam6535
      @sylviam6535 2 роки тому

      Let’s be honest: Python is very popular because it’s easy.

  • @waltsteinchen
    @waltsteinchen 5 років тому +7

    Hi Andreas,
    Thanks a lot for this info, always good to have a summary of the state of new development environments and options!
    For me (have implemented ~a dozen projects successfully on ESP32 ) it's still way to early
    to switch to something different.
    For a project I plan to really use in my house automation, I do not buy one instance but at least 5 to be sure I have spare's for development defect's
    or longer term use, so at the end price of a single device sums up as a important factor.
    I really love the ESP32, it's dirty cheap and packed full of functions.
    Need a board with a color OLED or battery included ?... just pay a few $ more and it's yours...
    Beside that I do not really like the idea of additional 'complexity' on such boards and probably
    decreased speed, I would have to solve further things like OTA and UDP debugging which I use a lot and work
    perfect for me today. I agree that the language may be a little easier for beginners, but missing libraries will be a much bigger problems
    at the end.
    Regarding my environment I personally have replaced the Arduino IDE with Visual Micro (since I'm a hardcore developer and like the Visual Studio editor
    very much), use OTA for all of my projects and use BUILD workflows to automatically compile, check into a source control system and OTA a new version of my code, very handy!
    And even if ESP32
    might be supported at some day, for a real project you typically do not want to be in the front line of discovering their new bugs ;-)
    ~waltsteinchen

    • @AndreasSpiess
      @AndreasSpiess  5 років тому

      The "leading edge" argument is for sure true for Micropython. I used Visual Micro a long time ago. When I started with the ESP8266 they had no support. I still should have a license somewhere...

  • @PilotPlater
    @PilotPlater 5 років тому

    Appreciate this overview greatly, thanks!

  • @wallaceshackleton1889
    @wallaceshackleton1889 4 роки тому

    A nice explanation, I am bewildered by everything on a single board computers!

  • @akimboslice03
    @akimboslice03 5 років тому +12

    With RAM and speed being the largest issues, I won't be switching. I need RAM for passing and receiving strings from peripherals, and speed for interrupt handling and "real time" response

    • @hertzkot
      @hertzkot 4 роки тому

      8051 Assembly !

  • @bradzepfan
    @bradzepfan 5 років тому +3

    i am very excited to have found this! i recently got an Arduino, but was unhappy with having to learn C++ when all my other projects are python oriented. i will definitely be buying Adafruit!

  • @luismartindelcampo9510
    @luismartindelcampo9510 5 років тому

    Thanks for putting the effort to explain it on simple terms.

  • @jacekbijak4164
    @jacekbijak4164 5 років тому +2

    Great video and in right time for me because now I want to learn coding in python. Thanks again and keep up with your channel because is great and very useful and informative.

  • @justinmallaiz4549
    @justinmallaiz4549 5 років тому +3

    Coming from java and python side and new to working with C++.. I was amazed at how difficult working with strings in C is.. There’s also a lot more freedom in python when dealing with high level data structures.. hopefully micro python support will continue to grow

  • @ZaneDaMagicPufferDragon
    @ZaneDaMagicPufferDragon 5 років тому +3

    Wow!!! 😲 That looks like it is going to be really simple and straight forward unlike anything that Arduino has to offer, I cannot get my ESP8266’s & ESP32’s to work well with the Mac Arduino IDE… Thanks Andreas!!!

    • @AndreasSpiess
      @AndreasSpiess  5 років тому +3

      You are welcome! It should be possible to get Arduino running on a MAC. At least, a lot of people do that AFAIK.

    • @rchamer8409
      @rchamer8409 4 роки тому

      I found the problem I was having with my Mac was a driver problem. After installing the correct driver, my problems went away and everything started working correctly again. I’m not sure, but I think it might have occurred during one of the OS updates that made it not work correctly.

  • @awesomefacepalm
    @awesomefacepalm 5 років тому +2

    I agree with you totally on strings,
    I study computer engineering at uni and I'm in my first years, the string functions are really tricky compared to other functions.
    Especially in C when you have to define your own string type

  • @patricioborras3544
    @patricioborras3544 5 років тому +1

    Thanks for your analysis and explanation.

  • @happyzax
    @happyzax 5 років тому +4

    Thank you Andreas for making this video and exploring a new frontier in MCU programming. I've been enjoying MicroPython for over a year now and definitely prefer using the language for fun and serious projects alike. Mainly because I can UNDERSTAND what the code is doing and because an interactive environment is perfect for learning, testing and trying new things. This does not invalidate the need and usefulness of the Arduino platform. It's just a different way to get things done that will appeal to many people. There will be room for both choices for a long time.

    • @LimbaZero
      @LimbaZero 5 років тому

      Little question here. Can you debug code in realtime with this. I mean like ICD (In Circuit Debugger) where you set break points and step code. I started to use arduino for quick and dirty tests. I'm little angry that arduino didn't have ICD. I usually use C/C++ because I can debug it with ICD.

  • @sethrd999
    @sethrd999 5 років тому +5

    As per usual, thanks for showing the full story ( pro's and con's) and providing another great illustration. For the new comer to either electronics or embedded computing, Python ( either circuit or micro ) is a great place to start. Its syntax is close enough to feel comfortable later with c/c++ as per the IDE.

  • @utkarshshukla231
    @utkarshshukla231 4 роки тому

    This is such a nice vide . I was looking fir something like this from very long.. Now in love this channel.. great work ❣️

  • @thomasdavenport4371
    @thomasdavenport4371 4 роки тому

    Both useful and interesting. Thank you Andreas.

  • @stumpy1495
    @stumpy1495 5 років тому +46

    And so starts the decline of the microcontroller real-time aspects as a Windows style bloat of resources takes over. We'll soon need full blown Cortex M7s to just run a background process and handle a digital IO in real time.

    • @hertzkot
      @hertzkot 4 роки тому +2

      Haha, let's hope not!

    • @radellaf
      @radellaf 3 роки тому +6

      I mean, it's fine if people want to use it, but I think C will remain dominant for just that reason. I thought the ESP32 had a ton of extra resources, at the start of my latest project. Now, even with C++, I'm glad it has all the RAM, flash, and MHz that it does. Gotta say I am tired that nothing I want to connect is 3V, so the board is now full of 5V I/O converters. Ugh.

    • @matambale
      @matambale 2 роки тому +3

      Hit the bullseye with that, Stumpy. Python is ridiculous, slow bloat for a microcontroller - killing the whole point of a small, direct-to-hardware interface.

  • @Thor-zh7ve
    @Thor-zh7ve 5 років тому +15

    I did my final project for my bachelor in electrical engineering using ESP32 and micropython. It worked very well, and impressed the examiners.

    • @wildfox1994
      @wildfox1994 5 місяців тому

      I know I'm 5 years late but what did you do for the final project?

  • @killgrill6872
    @killgrill6872 5 років тому

    and again a very helpful video. Thank you :)

  • @tomwilliam5118
    @tomwilliam5118 3 роки тому +1

    Thank you for the video. I want to start making projects however the C++ programming was very complicated. I'm going to look into the Python programming in your examples that looks very straightforward. Hopefully I'll start making something and if I do I will share it with you

  • @texNoz
    @texNoz 4 роки тому +241

    I'm too old to change languages. However, I've used both and do have an opinion..
    When my wife gets home, I'll ask her what it is.

    • @kennethkustren9381
      @kennethkustren9381 4 роки тому +4

      I too,... am old.
      And MGTOW.
      AND WHITE.
      IN CANADA.
      WESTERN CANADA.
      SOOOO.... useless.

    • @robthom09
      @robthom09 4 роки тому +10

      My wife gives me my opinions too,, even so she still says that I am wrong. (lol)

    • @NeoMorphUK
      @NeoMorphUK 3 роки тому +2

      I had a huge, HUGE problem with learning too many languages and dialects and started to mix them up when coding. I started with Algol, COBOL, Basic, DBase and then it got worse with APL and Assembler languages. If you think C++ is cryptic then APL is total hieroglyphic. I think I was using 25-30 program languages a a programmer/analyst.

    • @jimmyfleebot
      @jimmyfleebot 3 роки тому +1

      @@NeoMorphUK you change jobs a lot or something?

    • @NeoMorphUK
      @NeoMorphUK 3 роки тому +2

      jimmytea1 nope... I worked in Systems Support and they had 3 people who could know as many languages as were in use across all the company.
      So if someone had problems with their systems (I’m talking mainframe, mini and a few early IBM PCs... I’m talking PCXT’s here) well then they came to us and we fixed it for them. So yeah, 3 people and we had to know languages for a National sized company... in the late 70’s.
      Then I got sacked because I had to keep getting up and walk or the pain in my joints drove me nuts... didn’t realise until years later it was because of Joint Hypermobility Syndrome (also known as Ehlers/Danlos Syndrome Hypermobility Type)... so I got sacked for being disabled.
      Then I joined a small software house... learned some more languages there... then fell down some stairs (again caused by the disability). After a leg op and recuperation I told them I was ready to come back... only to be told they had given my job away... even though they brought over a whole Vax network while I was at home recovering from a major leg operation... and the reason I fell down was because the bannister rail had come away from the wall. That Vax network FILLED my living room while I configured it. So yeah... I was mega peed off when I lost that job.
      Then I got a job with a security firm. Added another couple of languages learned there. Learned C++ there as the security hardware was coded lower level compared to all my earlier languages... that was the first time I began to have problems with cross language syntax though. Drive me nuts.
      So yeah.. Three companies, many languages... now learning languages is a chore compared to the early 80’s when I could learn a new one overnight.

  • @HSRMF
    @HSRMF 5 років тому +13

    00:59 ha ha ... nice picture explanation

  • @RonSheely
    @RonSheely 5 років тому

    Thank you. Excellent presentation.

  • @LAClucas1980
    @LAClucas1980 5 років тому

    Great video.. I am excited to learn more about using it. Time to start practical exemples... Bll motor control.. ADC reading...
    Greetings from Spain👍

  • @piconano
    @piconano 5 років тому +33

    I've never bought from Adafruit because of their outrageous shipping charges to Canada.
    They don't even want to be bothered sending stuff through USPS international.

    • @powil4ss
      @powil4ss 5 років тому +3

      canadian digikey is their official distributor in canada, they have most of the adafruit stuff

    • @Kimchi_Studios
      @Kimchi_Studios 5 років тому +1

      I'm not a fan of Adafruit in general but to their credit they have slightly improved their website.

    • @mannhansen9337
      @mannhansen9337 4 роки тому +3

      What about shipping to Norway ? Example: BME280 $US 20 + $ 15 shipping.
      For that price I can buy a weather station with rain gauge locally.

    • @Kimchi_Studios
      @Kimchi_Studios 4 роки тому +4

      ​@@mannhansen9337 You can program the standalone AVR chip that is on the arduino boards and it only costs $1 USD and you can program it in C and be super sexy...I hate arduino...

  • @gordonjohnson3265
    @gordonjohnson3265 5 років тому +77

    I'll stick to plain old embedded C, thanks. Python is much more interesting in other applications, not MCUs.

    • @ricardodealmeida5485
      @ricardodealmeida5485 3 роки тому +2

      Agreed

    • @davr9724
      @davr9724 3 роки тому

      Couldn't agree more

    • @radellaf
      @radellaf 3 роки тому +1

      Seriously. The only fault with C is a complete lack of buffer overflow protection. Python is something I want to learn for scripting on OS-X, but no interest in using anything but C or C++ for embedded. There's just no need, a lot of cost, and _at best_ marginal benefit.

    • @Mersal-uj5nh
      @Mersal-uj5nh 3 роки тому

      @@radellaf you can try java for buffer overflow protection and it is very similar to c/CPP syntax.

    • @DominicClifton
      @DominicClifton 3 роки тому +1

      how about a bit of Rust?

  • @Skyentific
    @Skyentific 5 років тому

    Very nice project! Thank you!

  • @michelebernasconi375
    @michelebernasconi375 5 років тому +1

    Great introduction Andreas! I am addicted to python since an year, and I am looking forward to test circuit python!

  • @Phoen1x883
    @Phoen1x883 5 років тому +340

    "I firmly believe there is no right or wrong programming language."
    Spoken like someone who has never used Perl.

    • @TheDatabaseDude
      @TheDatabaseDude 5 років тому +3

      Does this mean that you would put Pearl in the Wrong column?

    • @andycoombes
      @andycoombes 5 років тому +7

      @@TheDatabaseDude Pathologically Eclectic Rubbish Lister.

    • @TheDatabaseDude
      @TheDatabaseDude 5 років тому

      @@andycoombes Seems like 3 adjectives describing a noun - "Lister". What's a "Lister"?

    • @DennisJHarrisonJrHere
      @DennisJHarrisonJrHere 5 років тому +60

      Perl - The only language that looks the same before and after RSA encryption :)

    • @DaFetrow
      @DaFetrow 5 років тому +16

      Spoken like someone who has never used APL. When a language requires its own character set and allows characters to be combined into an overstruck new character; things can get ugly.....literally. (I admit I actually kind of like both Perl and APL in their domains so what do I know).

  • @AtomkeySinclair
    @AtomkeySinclair 5 років тому +4

    I expect Adafruit to continue strong development for circuit python. It is in their best interest and appeals to entry level makers and STEM students alike. And I think it is excellent for hobby projects and Halloween costumes etc. But when execution time is an issue or pointer usage is evident, the power that C++ gives is unparalleled me thinks. But this is also relative to the hardware that is being used. As that improves I expect the technology will plateau as normal, and a newer generation will emerge. We are extremely close to all-in-one single board units that lack nothing - speed, capacity, and scalability in all sectors of specification integration (all transport layers).

  • @georgelewisray
    @georgelewisray 5 років тому

    Interesting and Useful :: THANKS !! , lots of great comments/opinions.

  • @1DR31N
    @1DR31N 4 роки тому

    I just want to praise your work. Thank you for it.

  • @featherbrain7147
    @featherbrain7147 5 років тому +12

    Once you have your fully-developed Arduino C program, you compile it for the last time and then keep using it. You don't have to compile every time you run the program.

    • @9001greg
      @9001greg 5 років тому

      No different than micropython

    • @acmefixer1
      @acmefixer1 5 років тому +1

      Interpreters don't compile. Ever. They spit out tokens, which are then interpreted and run.

    • @candidmoe8741
      @candidmoe8741 4 роки тому

      You don't, the interpreter does.

    • @featherbrain7147
      @featherbrain7147 4 роки тому

      @@candidmoe8741 Well, I'm no expert but there seem to be experts who agree with me. The Arduino runs compiled code, not interpreted. And so is fast.

    • @candidmoe8741
      @candidmoe8741 4 роки тому

      @@featherbrain7147 Everyone agrees: compiled is faster. But MCU has cycles to spare and RAM to burn, so why suffer with a low level programming language? For non-time critical applications, development/debugging speed is more important than execution speed. Also, high level lang are easier to debug and maintain.

  • @mindaugasvaskevicius1818
    @mindaugasvaskevicius1818 5 років тому +83

    Arduino low level programing IDE? Flashing LED with 20MHz CPU clock and sending data via uart at low speeds Arduino may do the job. But try running multiple processes in parallel with out "do nothing"(delay) getting in your way when your design reaches real word applications. Try squeezing your design into something like attiny series mcu, where you do not have 20k byte ram or 64-256k flash. Microcontrollers are not microprocessors and they should not be treated as such. My skills as an electronics design engineer ware development in parallel with all of the Arduino hype, but thank God I was shown the difference between a proper design and Arduino shield - include project stuff. Arduino is good for getting attention and getting comfortable with handling electronics, but in my opinion a hobbyist, a maker should know how to use interrupts, how to run multiple processes in parallel, how to design a basic schematic. P.S. delay beyond 20 NOP commands should be frowned upon.

    • @boonedockjourneyman7979
      @boonedockjourneyman7979 5 років тому +3

      Mindaugas Vaskevicius - Excellent points. Especially for someone heading onto a real electronics future. But how about some examples of what you see as a better path? That would help dilute the channels endless drive for sponsorship.
      Pumping the most expensive closed ecosystem is what this video is about. Are their better options? You can't go back to my early days and run 8080As. So what else do you see?

    • @DanielTremblayVideo
      @DanielTremblayVideo 5 років тому +3

      I actually have some fun with esp32 arduino and FreeRTOS tasks... Kind of best of two words?

    • @DonchoGunchev
      @DonchoGunchev 5 років тому +5

      @@boonedockjourneyman7979 Raspberry PI Zero v1.3 is $5, Pi Zero W is $10. Both run full python2, full python3, real C/C++ and have good examples and documentation. I was playing with the camera (python3) and am impressed by the library and the documentation they have created.

    • @rowifi
      @rowifi 5 років тому +6

      Quite right. All the arduino and python does is make life easy for people to play. Using arduino means using a hidden layer of code that add a lot of wasted processing time. I grew up writing code in assembler and even coding using hex and the opcode manual. Today's programmers are so far removed from the true processing that they never learn the nuances of interrupt timings, bugs due to shared variables and so many other tricky subjects. Real world products and professional hardware coders do not use toys like arduino.

    • @dasy2k1
      @dasy2k1 4 роки тому +7

      I was taught microcontroller programming using pic 18f4520 in both microchip assembly and C
      For me python seems too high level for I bedded stuff especially if interpreted
      I'm also not keen on a language where whitespace matters so much!

  • @bluegizmo1983
    @bluegizmo1983 5 років тому

    Great video! May I make a suggestion though? If your gonna comment in the start of the video about "if you know python, you can skip small parts of the video", it would be a good idea to post a video timeline in the description so people know where exactly to skip to. Something like "0:00 to 0:30 - intro, 0:30 to 2:00 - python outline, 2:00 to 5:00 - arduino ide" etc...

  • @brentjohnson6654
    @brentjohnson6654 5 років тому +1

    Python is a favorite language of mine. I have used it for class platform scripting where I used to write programs to do initial setup of routers, network switches , etc.

  • @supercables251
    @supercables251 5 років тому +3

    I prefer the Arduino IDE. If i need to call functions over the serial port, i have a block of code that reads serial and executes the corresponding function. Most of my projects revolve around Neopixels and large flash usage, so i also need fast number crunching and minimal size. Plus with the Arduino Pro Mini at 2$ each, i can slap them in whatever embedded project i need.

  • @mrmarkom
    @mrmarkom 5 років тому +6

    As everything in life, there are advantages and disadvantages. As a software engineer I do agree that Python offers good advantage for beginners, being able to provide faster feedback. However interpreted language cannot be a better option for microcontroller. Once a person gets a solid understanding of the environment it will certainly be able to get more out of C/C++ than any interpreted language when developing for MCU.
    That being said, Python is great for beginners, education and many similar purposes.

    • @AndreasSpiess
      @AndreasSpiess  5 років тому

      I asked myself the question because I saw similar things happen many years ago when CPUs got faster and Assembler was replaced by C and other compilers.

    • @mattytrentini
      @mattytrentini 5 років тому +2

      There are many benefits to using an interpreted language on an MCU - for example the first time you interact with a peripheral and you can read/write using SPI *live* you will be blown away. It's just so more efficient than trying the 'write/compile/deploy/didin't work, repeat' cycle! :)
      I have a solid C/C++ background and rarely miss it using MicroPython...in fact it becomes an advantage when you want to optimise performance by writing a C module to be used in MicroPython.

    • @jetjaguarXP
      @jetjaguarXP 5 років тому

      Amen brother.

    • @andrelevesque6300
      @andrelevesque6300 5 років тому

      Marko? is "assembler" still being used in Microcontrollers by professional developers? and why would one choose assembler over C++ ? Thanks

  • @iz0cez
    @iz0cez 5 років тому

    Good comparison and interesting video. Thank you.

  • @paulhamilton3993
    @paulhamilton3993 5 років тому

    Andreas, THANK you AGAIN for a great Vid!!

  • @moukafaslouka4796
    @moukafaslouka4796 5 років тому +3

    How about multitasking in python? I have not seen an RTOS in python yet.

    • @ZsomborZsombibi
      @ZsomborZsombibi 5 років тому

      It's Zerynth in py for ESPs.
      In uPy, threads work on esp32. On esp8266, there's only asyncio.

  • @deadbird99
    @deadbird99 5 років тому +91

    I really like Adafruit and its products. Always a pleasure to use them. But there is a huge drawback that always kept me from buying them: their prices. Adafruit’s stuff is way, way too expensive. And shipping cost to Europe is completely nuts, knowing that sometimes UPS and such will sneak into you package to make you pay 2, 3 times the taxes. All in all, with 1 Adafruit board I often can buy ten from AliExpress. That’s the sad truth.

    • @AndreasSpiess
      @AndreasSpiess  5 років тому +9

      Fortunately, I was able to purchase these two boards locally. So I was glad to be able to support Adafruit once. Generally, you are absolutely right. Sparkfun uses a different shipping and their (shipping) prices were more reasonable recently.
      17% of my viewers live in the US. They get it cheaper, I think...

    • @Ralph_-_
      @Ralph_-_ 5 років тому +2

      Where in Europe do you live? Because Adafruit has a lot of local distributors. www.adafruit.com/distributors

    • @deadbird99
      @deadbird99 5 років тому +6

      I must admit that I haven't bought from Adafruit for year. Actually I think that my last order was is 2012, back then there were almost no local distributors. BTW I live in France. I'm going to take a look and see the options. But even with local shipping Adafruit stuff is still too expensive.

    • @deadbird99
      @deadbird99 5 років тому +11

      Here is a live example of what I have against Adafruit. I checked my nearest local distributor (I live near Bordeaux, France). I selected a random sensor, a BME280 humidity/pressure sensor, and searched for its analog on AliExpress. Here are the results:
      - Adafruit distributor: 24.5€, shipping not included (goo.gl/Z8uNSy)
      - AliExpress: 2.20€, shipping included (goo.gl/Q73CyJ)
      So yes, ten yeas later, the situation is still the same. I won't order anything from Adafruit unless I have absolutely no choice.
      And same goes for Sparkfun: goo.gl/h1tHcR . I didn't even bothered searching for it on AliExpress, but I think that for the same price, shipping included, you can have something like 100x more headers.

    • @Morbuto
      @Morbuto 5 років тому +6

      X99 the adafruit price is worth it in a commercial / research environment where the cost of wasting time on a reject / fake part, or not having good documentation, far outweighs the price difference. For hobby projects, the calculation is different.

  • @jimba6486
    @jimba6486 3 роки тому

    Thank you for content. I am always learning something new

  • @xenoskeras825
    @xenoskeras825 5 років тому

    Thanks for the info good sir!!

  • @nick5625
    @nick5625 5 років тому +30

    32 euros each + shipping

    • @AndreasSpiess
      @AndreasSpiess  5 років тому +3

      You are right. For me, it was the natural choice for a start because Adafruit does a lot for the Maker community and their implementation is more comfortable for a beginner. I for sure will test it on an ESP32

    • @leopaesen59
      @leopaesen59 5 років тому +1

      Complete open source and open hardware, code for circuit python sits on Github and you can etch your own boards from the eagle files, also on Github

    • @SeniorLifeDeveloper
      @SeniorLifeDeveloper 5 років тому

      $16.5 on ebay :)

  • @Johnny010
    @Johnny010 5 років тому +14

    I still find it odd that people have an aversion to abstraction.
    About 38 years ago, the BBC Micro computer (£300 -> About £700/$900 in today money) was made.
    It had: 2MHz CPU (single thread) and 128KB RAM. No internal flash/ROM.
    Now...you can get an ESP32 @ 240MHz (120x clock speed) with 512KB RAM (4x as much) internal flash/sketch space and also Wifi, BLE, SPI, I2C I2S and 3x UART built in....all for £5 (1/60th ish of the price) and fits on a 50p piece.
    I mean why would you want to sit and write an entire RESTful webservice pushing files to an SD card while using a GPS locator and a mobile App for BLE for an IoT device in assembly or eve C...taking months...when micropython could have it done in a few days?
    It will not be "as quick" or "using the hardware to it's full potential"...but my God, sometimes the abstraction means you can achieve a lot more in a shorter space of time.
    One day (I am a Java dev work wise) a language will come along that compiles down to C byte code (like Kotlin for Java) that may make the process quicker and easier...but for now, if you want to build something quickly and easily and still relatively cheap batch wise...assembly and C is not the way to go.
    Now of course, maybe once you have a working project in uPython, maybe try move it over to C/++/# to get the "speed gains" and a smaller cheaper MCU...but in the fast paced world...maybe just getting there first or proving "it works" is more important for the sake of "native assembly/C".

    • @_skyyskater
      @_skyyskater 4 роки тому

      Really well said. Python will be good for some projects and certainly for prototyping. The right tool for the right job.

    • @thegardenofeatin5965
      @thegardenofeatin5965 4 роки тому +2

      In the hobbyist/hacker/learning space, abstraction = obfuscation. There are some of us who want to understand how something works under the hood, and the push for higher level languages obscures that.
      Limor Fried has a particular talent for making it hard to actually learn something. You buy one of her sensor breakout boards, it comes with it's own little library and a big block of example code for you to copy/paste. No API or reference or even a bulleted list of all the functions in that library. Heaven help you use the standard libraries in Python or Wiring to connect to a straightforward I2C or SPI device, no, we have to have a library for every little piece of hardware no matter how single purpose.

    • @JohnDavidDunlap
      @JohnDavidDunlap 4 роки тому +1

      It's not as simple as "Are abstractions good or bad?" Abstractions can be the right tool for the job and they can be the wrong tool for the job. Necessary abstractions will make your project a success and unnecessary abstractions will make your project a failure. If you're approaching a project from the perspective of "I don't understand these details and I want someone to hide them from me" then you are, to be blunt, ignorant and unqualified to decide if those details are necessary or not. Good developers understand the low level details and choose the appropriate level of abstraction based on the project.

    • @Johnny010
      @Johnny010 4 роки тому +1

      ​@@JohnDavidDunlap
      ​I do agree. I probably should have added more context:
      "Using C means I can get right in to the guts of the machine".
      "Why not run an interpreter on an Arduino?......because its waste of recources. Arduino is elegant."
      "I really doubt that high level language can take over C where you can manipulate single bits of the registers."
      It is a tool for a job idea.
      Of course in development team, you have the in depth knowledge of the underlying lower level of apis, meaning a choice of using a framework is more easily done as the team understands the behaviour, advantages and disadvantages of the framework.
      I mean in my day to day job, I do mainly Spring Boot and ReactJS.
      Would I switch back to plain Java and plain HTML/CSS/JS?
      No.
      Have I had issues while developing because the framework "abstracted" away a little more than I expected?
      Yes.
      Spring with JPA and JMS can be a good old fight till you read a lot and read a lot of the source code and spend the time understanding how the APIs work.
      Would I go back to manually declaring transactions and creating sessions and queues after reading over JPA and JMS?
      No.
      I now understand how they work lower down and being able to annotate @Transactional(isolation=READ_COMMITED) is a lot less hassle than the old way and I am less likely to make mistakes writing the one line than writing 30 lines of my own transaction impl.
      My tests are cleaner and I have to write a lot less tests! I don't need to test code that has already been tested (their APIs).
      You are right though, I did seem to say "just abstract everything". Sorry. You win an up vote as I do agree fully.
      So future considerations:
      1. Libraries and frameworks can help to structure code and help avoid basic mistakes.
      2. They can take time to learn, but once learnt, you end up writing less code that can do a lot more.
      2. Pick the libraries and frameworks carefully. Some will be great for the job and have been well tested (code wise and the community) and some will not be tested as well or not at all.
      3. Learning the underlying concepts is fun and help solidify your understanding of how 'it all fits together' with or without frameworks and high-level libraries.
      d = dht.DHT11(machine.Pin(4))
      d.measure()
      t = d.temperature()
      h = d.humidity()
      Is a lot of abstraction and doesn't reveal a lot of how the MCU and the OneWire protocol work...so maybe look those up. You could even try write your own implementation of the OneWire protocol. Once happy and you think you get it, maybe just writing the above is more fun in future as it is cleaner looking and easier to manage.

  • @_XoGuSi_
    @_XoGuSi_ 5 років тому +1

    Cool idea. I will try it with the ESP32.
    Greetings from Uzwil ;)

  • @princemishkin1601
    @princemishkin1601 2 роки тому

    Wonderful explanation, thank you :)

  • @markhaus
    @markhaus 5 років тому +38

    It's really great for prototyping and tinkering quickly, but I would never use it for a real project with any level of permanence

    • @michaels8297
      @michaels8297 3 роки тому +1

      Why?

    • @ricardodealmeida5485
      @ricardodealmeida5485 3 роки тому

      I still enjoy using the Vanilla MicroChip PICS for projects. You can get much better performance, especially with power usage and ADC. Arduino and MuPython for quick prototyping is excellent

  • @danharold3087
    @danharold3087 5 років тому +4

    Andreas It does not have to be one or the other. Clearly it would make little sense to use a pi for a node that only reports simple data like temperature. A pi makes more sense if you are developing complex code, especially if you are writing object oriented code. The line between the two will vary based on budget and the programmers familiarity with each system.
    c++ is a kludged extension of c and as an OO language it is clumsy, python is the better choice for serious OO programming. Given that most hobby types make little use of OO in programming this is not an issue. Other than that both are procedural languages and have much in common. You can find several c++ to python translators online.

    • @AndreasSpiess
      @AndreasSpiess  5 років тому

      Thank you for your feedback! I also mentioned that I the structure of the two look similar for me.

  • @SHANUSHAH
    @SHANUSHAH 5 років тому

    Very informative , I was electronics engineer from the past when digital electronics was just new and then moved away from it and joined Media and Broadcast, I just retired from media broadcasting after 40 years , now I wanted to get back into the new microelectronics but was not sure where to start, I tried Arduino Uno and the Arduino IDE and that pointed me on thinking that I needed to learn a Language and I was thinking of C++ but watching your video has given me food for thought. Thank you Sir you have been inspirational.

    • @AndreasSpiess
      @AndreasSpiess  5 років тому

      There are quite a few in your situation which wrote they started with my videos. So enjoy your new (old) hobby. I am sure you will love the new possibilities!

  • @henrikworg350
    @henrikworg350 5 років тому

    Feather-Board arrived today ... thanks for this inspiration 👍👍👍

  • @IanTindale
    @IanTindale 5 років тому +3

    What there should have been half a decade ago is an on-board FORTH for arduino, popularly promoted and mass-maintained so that it would become THE definitive way of using an arduino for most beginners. FORTH on the actual controller would have been ideal for most people to do most things, most of the time.

    • @AndersJackson
      @AndersJackson 5 років тому +1

      FORTH is a nice language. It was also used in the BIOS for Sun computers. Less known fact. :-)
      And yes, it was created to control space cameras with smal machines with very limited memory. Where you could easily change some names (funktions) to use machine code if needed. Not much of a file system in them though.
      And today you could use µOCaml to get functional programming in an efficient and type secure way that none of the mentioned languages here could.

  • @jackpatteeuw9244
    @jackpatteeuw9244 5 років тому +8

    Very nice overview. And Yes, I immediately thought of BASIC ! "People of a certain age ..."

    • @manla8397
      @manla8397 5 років тому +1

      Jack Patteeuw
      10 I read your text
      20 I interpret the text in my brain
      30 my brain translates it into useful meanings
      40 cannot totally understand
      50 goto 10

    • @joed2392
      @joed2392 5 років тому

      And then diving into the deep end for speed, by learning 6502 MLX !! That's why the Apple has bite/byte in it !!!

    • @AndreasSpiess
      @AndreasSpiess  5 років тому

      Thank you!

    • @jackpatteeuw9244
      @jackpatteeuw9244 5 років тому

      @@AndreasSpiess - I also love your intro ! When I hear it is the "guy with the Swiss accent" I know I will be watching something educational and entertaining !

  • @ardxb123
    @ardxb123 4 роки тому

    As always very informative

  • @yekutielbenheshel354
    @yekutielbenheshel354 4 роки тому

    Excellent video. Thank you!

  • @NNNILabs
    @NNNILabs 5 років тому +92

    I'll just say that I prefer C++, it's like getting right into the guts of the machine. Python just seems like too much abstraction, we're spoiling future generations ;)

    • @4lpha0ne
      @4lpha0ne 5 років тому +11

      C could be more suited for this. It actually has been designed as a systems programming language. C++ adds a lot of high level stuff, which in the end costs performance and increases mem usage and code size.
      OTOH in the AUTOSAR context I've seen hundreds of lines of C++ code for a class boil down to:
      mov eax, ecx
      ret
      ;)

    • @Mooooov0815
      @Mooooov0815 4 роки тому +4

      I'm a heavy user of languages with a lot of abstractions like Python or Java. They are great if development speed is the important factor, not resource efficiency. Also, they are easier to maintain since developers aren't as hard to find as for other languages. C++ always seems like a good tradeoff between high efficiency and decent standard API. Sure, its not as fast as C, but its also not as awful of on experience to program

    • @abdulahad200
      @abdulahad200 4 роки тому +7

      C++ is an outdated 40 year old collection of ignorance. Even for desktop development it's crap and Rust is superior

    • @jeffwells641
      @jeffwells641 4 роки тому +11

      I prefer shovels. We're spoiling construction workers these days by letting them use backhoes.

    • @trickyrat483
      @trickyrat483 4 роки тому +18

      "C++, it's like getting right into the guts of the machine"
      The first few years of my career was in assembler.
      I don't know, you kids..

  • @dutchdykefinger
    @dutchdykefinger 5 років тому +3

    somehow i have a hunch python is just a bit too high-level, i'll have to see micropython on how it is though
    but if it's anything like regular python the lack of typecasting could really complicate things
    tbh i never really got the whole python hype, but i bit the bullet a while ago and decided to learn it (mostly for blender 3d)
    there wasn't much to learn i didn't get right away from other languages combined with looking at examples except the command names,
    gotta say i severely dislike the forced indenting coding style most of all (it kind of takes away the sport of obfuscated one liners too)
    i like my IF blocks to have () and { } and my commands to end with ;
    so aesthetically it looks wrong to me, never liked the : approach, i guess that's why switch/case always looked weird to me too,
    it didn't quite follow the same guidelines like most other commands.
    but the rest seems fine by me, easy enough to get into., and i had some working scrripts in no time.
    then again, C is fine too, right? i'd say any language is ok if you can make it work, but there aer undeniable merits to having it compiled to machine code.
    so i guess i'll be using 3 buck knock-off aliexpress arduino nano's for a while to come ;)

  • @mamunurrashid4628
    @mamunurrashid4628 4 роки тому

    Wow.... its great job . Thanks again sir.

  • @sortofsmarter
    @sortofsmarter 5 років тому

    I really like your video, I am struggling a little bit with learning C++ and I keep at it but its a little discouraging at times, maybe Python would be easier for me. I have met Lady Ada before and she is a amazing person who is very passionate about her company and the diy community. Great explanation thanks...

  • @rogerzimmermann8376
    @rogerzimmermann8376 5 років тому +4

    uPython? Might as well be Java. In the current u-controller realm, memory and clock cycles are precious. I've worked in environments where HW resources were extremely limited. I've worked in real-time processing environments where everything HAD to be completed within a 50msec (20x/sec) window. C/C++ are NOT that "high level" of languages - they are close to assembly language for a purpose. (Remember, C was written to write the UNIX OS more than a few years ago.) It all depends on the task being implemented and the resource load on the HW and that is the key determiner of language, OS, and HW selection. I can see uses.

    • @michdem100
      @michdem100 5 років тому

      Java would not be that bad of an idea. It is faster then python, simpler then C++ (not to mention C) and safer then both. You could even write in Kotlin for better readability without the variable nonsense.

  • @elchiqui10
    @elchiqui10 5 років тому +3

    Interpreted languages "hide" all errors until runtime. Compiled langages detect many errors during compilation phase (not all of them of course). For a critical system interpreted languages will require much more testing.

    • @AndersJackson
      @AndersJackson 5 років тому

      Even more important, the tyoe system in many languages make mixing types much harder. Like hard typed languages like ML and OCaml.
      Python is hard typed, but it only, as you say, check that in run time.
      And interpreting languages do take more time executing and usually use more memory. Not for the program, but for data when executing. (Yes, you can write programs that uses much more memory if you choose a bad algorithm)

    • @toastrecon
      @toastrecon 5 років тому +1

      Don't most modern Python IDEs already detect many errors/bugs that people would normally make? Code completion, spell check, indentation, syntax highlighting, etc... should capture most stuff, especially for beginners. Also, and I haven't tried this, but if it is faster to push updates to the device, maybe it would still be faster to use Python in this case because you only have to send the script and not the entire thing like you would with Arduino?

    • @AndersJackson
      @AndersJackson 5 років тому +1

      @@toastrecon no, they don't catch type errors. And no, writing 1KiByte och 100KiByte doesn't make a huge difference.

  • @kurtschatteman5193
    @kurtschatteman5193 5 років тому +2

    Useful AND interesting. I'm more a C++ (Assembly) kinda guy but I can see the merrits of using micropython if speed (or complexity) is not a concern or I just want to play around. Very useful ... thank you.

    • @GregoryPSmith
      @GregoryPSmith 5 років тому

      MicroPython's asm_thumb support is quite fun... You get to mix Python and a subset of ARM assembly in one place. :)
      In a completely inefficient manner (assembled on the fly in ram when the code is loaded) but 32-bit microcontrollers these days have plenty of resources for that.

  • @EmersonCapuano
    @EmersonCapuano 5 років тому

    Thanks to share this video Andreas.

  • @dmkays
    @dmkays 5 років тому +6

    I doubt we will ever see a Micro-COBOL board.

  • @immortalsofar5314
    @immortalsofar5314 5 років тому +5

    No, I'm going the opposite way and writing my own bootloader in assembler.

  • @Bernard-zb5sx
    @Bernard-zb5sx 4 роки тому

    Yes! your video presented enough novel information to distract me while holding my breath to eliminate my hiccups. Thank you. Also, good to learn about these modules. Thanks.

  • @alaskawoodman
    @alaskawoodman 5 років тому

    Andreas - thank you for another well done video. After reading a couple of hundred comments I would have to say you picked a topic that has some strong opinions. I believe your comment at the beginning of the video is spot on, no language is right in all instances. Speed of execution, cost of implementation, ease of development, ease of support all play a role in which hardware and language to use. That selection range can be difficult for people with less experience or who are wanting to put somethings together and make it work. Anyway, nicely done on the video and the selection of topic. How is the cat doing?

    • @AndreasSpiess
      @AndreasSpiess  5 років тому

      The cat is doing well. But she obviously was not interested in this topic as much as my viewers ;-)

  • @aguante0
    @aguante0 5 років тому +18

    It’s quite funny, at least, trying to force a high level language on a micro controller. It’s seems almost a marketing strategy in order to sell more uC to newbies, whom barely know what a voltage is.

    • @stewartrv
      @stewartrv 5 років тому +1

      Well it's really very good at fast prototyping a design and you can still redo the code in C++ after you've tried out all manner of ideas. They cycle time between changes in code is so much faster... It's exactly the same as what happened on PC's years ago, everybody said we should stick to using assembler and DOS or BIOS calls because of the speed advantage. They also said we don't need GUI's at all...

    • @aguante0
      @aguante0 5 років тому +1

      stewartrv i think comparing PC and uC is not the best approach. In micro controllers there aren’t so many ways to address a solution: tasks and time slicing, perhaps the main ones. I will better implement an OS and stick to C, than use python for direct hardware management.

    • @stewartrv
      @stewartrv 5 років тому +2

      I'm saying it's history repeating itself. :) We can of course install a realtime OS. But the uC of today have more power than the desktop systems I started using and they used a realtime multitasking microkernel OS. We can of course use RTOS but its way harder to get started with that and still the turn around between iterations of code, upload, test, debug and repeat are much longer. If you want to test an idea and pitch it to a customer python makes it quick, when you have a working prototype you can go back and make it bomb proof in C or whatever. It's not good for everything, but for some applications it works fine. Of course C and Assembler aren't good for everything either - then we have FPGA's and ASIC's etc.

    • @aguante0
      @aguante0 5 років тому +1

      @@stewartrv i completely see your point, and agree on most of it. My slightly different angle is that the history is been forced due to market interest, rather than user/product/developer advantages.

    • @stewartrv
      @stewartrv 5 років тому +2

      @@aguante0 That is true but it was market interest in the past too. Like Henry Ford said: "If I asked people what they really wanted they would have said faster horses" :D

  • @kippie80
    @kippie80 5 років тому +33

    Yah, nope. No Python for me on MCs. The tasks that need doing all to often need most CPU resources. Recent example ... ESP8266 as a fan controller ... With pwm feedback to interrupt driven line there is limit to how fast it can respond .... at arround 20khz by my measure. Try to get that with Python ... not a chance. Yah going to put hardware dividers in there to slow it down? ... now Python looks more like hassle very quickly.

    • @protonx80
      @protonx80 4 роки тому

      probably initial prototyping before optimizing it using c
      i think i did that using initially .. was it AVR or PIC using the basic .. ...

    • @TheChrisey
      @TheChrisey 4 роки тому +3

      The only reason for why they brought Python to MCs is to introduce them to noobs and sugar coat it in simplicity so they can sell more boards.

    • @pt17171
      @pt17171 4 роки тому +1

      @@TheChrisey There is an entire generation who only know Python and Javascript.

    • @TheChrisey
      @TheChrisey 4 роки тому +2

      @@pt17171 Sadly that's true, and yet they dare calling themselves programmers or developers

    • @TimlegoStudios
      @TimlegoStudios 4 роки тому +1

      @@TheChrisey Finally someone who thinks the same as I do. They're more like "problem solvers", and even that with a grain of salt. I started programming just now, at 13 years of age, my first language is Java, and I'm now coding in C++. Programmers should be able to code in C/C++, Assembler and Java. Then they are real programmers, not just doing what would you do with 40 lines of code in C++ and doing it in JavaScript with 1 line.

  • @biplabroy8991
    @biplabroy8991 5 років тому

    Thank you for this informative video

  • @electronics.unmessed
    @electronics.unmessed Рік тому +1

    👍👍 Very nice overview, thank you! It helps beginner and intermediate hobbyists to make an educated decision.

  • @NotMarkKnopfler
    @NotMarkKnopfler 5 років тому +5

    When I develop embedded applications I do NOT want multiple layers of software between my application and the hardware. If there are bugs, I want them to be MY bugs. That way, I can do something about it. I'm using the ATMEGA328P (Arduino) in money making commercial applications. I need to be able to rely on the software. That's why C and C++ will be here for a long time yet. It probably IS time to move away from the ATMEGA family. You can buy a 32 bit ARM M0 for a lot less money. But use a 'black box' language to develop my applications? No thanks.

    • @AndreasSpiess
      @AndreasSpiess  5 років тому +1

      Thank you for your opinion. If you browse through the comments you are not alone ;-)

    • @mattytrentini
      @mattytrentini 5 років тому

      Where's the black box? MicroPython is written in C, you can debug the code. :) Admittedly it is adding a layer but that layer allows you to develop faster with less code.

    • @HermanWillems
      @HermanWillems 5 років тому +1

      ARM Cortex M series are great microcontrollers. :) NXP got some nice stuff. I think PIC and AVR are both also heading those ways. CPU architecture is standardizing towards ARM currently. Even Microcontrollers now. Was a fun time back in the day with AVR and PIC though. Even more amazing is that currently with the Architecture standardizing Rust language cane easily become popular. It's an Amazing compiler and generates Safe code with no leaks.

    • @damny0utoobe
      @damny0utoobe 5 років тому +2

      Yes. Let's not write in C but debug MicroPython in C when it breaks.

  • @slavshuravesky3617
    @slavshuravesky3617 5 років тому +9

    I can get Arduino boards off of Aliexpress for a couple of bucks. Why would I pay 10 to 20 times as much for Adafruit running interpreted code. Yes, it may take a little longer for pushing changes during the development cycle, but I will take it any day for better performance on the finished product.

  • @acestudioscouk-Ace-G0ACE
    @acestudioscouk-Ace-G0ACE 3 роки тому

    Good for my learning curve, thanks!

  • @abrahammagnifico9538
    @abrahammagnifico9538 5 років тому +1

    love your channel, you're so professional

  • @Richardincancale
    @Richardincancale 5 років тому +13

    Beauty of C/C++ on Arduino is the ability to seamlessly descend into assembler and ISRs when needed. Can you perform 40,000 input and output samples/second on an 8 MHz $5 Arduino Uno clone with microPython ?

    • @AdaptivePhenix
      @AdaptivePhenix 5 років тому

      No problem with PropBasic on the Propeller. I am decoding and counting 2M quad counts/sec on a 80MHz Prop, using only one of the 8 processors ;)

    • @AndreasSpiess
      @AndreasSpiess  5 років тому

      @Richard: My point was: We have now very powerful chips at nearly no cost. Does this change anything on how we deal with them? But, of course, I do not have the answer. Just food for thought ;-)

    • @AdaptivePhenix
      @AdaptivePhenix 5 років тому +1

      @Carla Radames Well there's nothing wrong with my reading, nor my math. 40,000 I/O updates @ 8MHz would translate to 400,000 @ 80MHz.
      My number is 2,000,000 @ 80MHz but also involves quadrature decode logic. Sorry to spoil your condescending post.

    • @AdaptivePhenix
      @AdaptivePhenix 5 років тому

      @Carla Radames As I originally stated...using ONE of the 8 cores. These are 8 independent CPUs, they don't share processes unless you code them to do so. It's a shame that all you know about this amazing MCU is what you only just Googled. If you prefer working with interrupt nonsense then stick with conventional MCUs.

    • @dieSpinnt
      @dieSpinnt 5 років тому

      @@AdaptivePhenix Propeller P8X32A-M44 Mini for $24.99, not bad. STM32F103 Bluepill $1.80

  • @ChaplainDaveSparks
    @ChaplainDaveSparks 5 років тому +3

    No shout out for the venerable COBOL programming language? It was nearly extinct until Y2K when it had to be resurrected to modify the source code. (Ever seen COBOL source code? It's implementation of the iconic "Hello World" program took dozens of lines!)
    I learned C as my third programming language, after FORTRAN and BASIC. Python looks do-able, though.

    • @richard1113
      @richard1113 5 років тому

      COBOL was my 4th language, after BASIC, Assembly, Pascal

  • @cdxa5862
    @cdxa5862 5 років тому +2

    uPython looks pretty in case of proof of concept when you want to quickly check your program, without continuously rewriting code to MCU. But at the end in production implementation it will works as an operating system, that can give more potential problems, and ate MCU resources etc. It will be clever if be possible to develop and test in uPython and finally compile the whole program in legacy way, as a binary file, without interpreting inside MCU

  • @px1690
    @px1690 5 років тому +2

    hi Andreas,
    nice work as always a great joy to watch the show.
    I think that micropython will definately find it's way into the maker comunity.
    but I'm currently experimenting with microsoft visual studio code and the ESP32 with arduino libraries.
    for me really that is the next step up rather than the "ease of use" of python.
    The great thing with such a a setup is that addons like code outline and spellcheckers will help a lot avoiding the mistakes.
    for that I do not need a language that looks simpler but forces me to do C++ anyway for more complicated stuff..
    this way I just stick to one language :-) and use the help of modules.
    by the way there is a plugin for a "FileSystem on the SPI bus" so you can upload the binaries to the SPIFS (have not tried that one yet as setting up the Visual studio environment cost me a bit more time to understand it's complexity.
    however it is much more user friendly than eclipse !
    you might want to try it out on one of your next videos yourself.
    (for any links and helps feel free to reach out)
    kind regards and enjoy your sunday :-)

    • @AndreasSpiess
      @AndreasSpiess  5 років тому

      I recently used VS Code in a platformIO project. For the moment it is just one editor more. But maybe I am wrong.
      AFAIK the concept of Adafruit is not yet used in the ESP32 environment. This makes it a little more complicated (or the IDE/UI has to be better). I hope, Mycropython finds a way to emulate this behavior but maybe it really needs this native USB support.

    • @dd0356
      @dd0356 5 років тому

      @@AndreasSpiess there is a visual micro plugin for the full visual studio, www.visualmicro.com/ vscode is just another editor. vs is fully featured suite for professional developement and it has a free version also, for personal use.

    • @AndreasSpiess
      @AndreasSpiess  5 років тому

      @JK44V2 I used Visual Micro in the past but left it because of the lack of ESP8266 support then.

    • @dd0356
      @dd0356 5 років тому

      ​@@AndreasSpiess although i've not used it for a long time, but i think, visual micro automatically picks up default arduino directory and tool chain, provided arduino is configured correctly. there are 3 locations of arduino on windows, one is where arduino is installed, other one is in the Documents folder>Arduino and the third one is C:\Users\\AppData\Local\Arduino15. configuration file for arduino is probably located at C:\Users\\AppData\Local\Arduino15>preferences.txt problem occurs if there are several arduinos. in that case, we have to hunt for all the arduinos and locate the one which is being read by visual micro, kill it and reinstall. in fact, i just compiled a test project (from file>new visual micro project) and saved in Documents>Arduino folder and compiled for esp32. There is nothing special about the visual micro, it just uses the arduino but makes available the visual studio toolchain. i think there is a debugger also, but i have not used it. And if the project is saved in a place where arduino reads, like C:\Users\\Documents>Arduino following the convention that folder name and the ino file have the same name, same file can also be directly used from arduino ide itself without any modification. that is the beauty of it. Build targets like the esp boards or the stm32 bluepill can be selected from the vMicro menu from the menubar after the plugin is installed. another feature i like is that it can change the code in github without any additional human action.
      but i guess the problem is not with the visual micro, but it is a property of the pc. people of a certain cutoff age (like the bandpass filter, not the high pass or the low pass filter) appreciate this aspect of the PC. It was a thing several years back to "install" and "set-up" a software ;-)
      and some might say, arduino is not very much liked because of these things. arduino preferences files is already documented but on my PC it was read from location i mentioned and this is not even described on this page, www.arduino.cc/en/Hacking/Preferences