#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.8K

  • @AndreasSpiess
    @AndreasSpiess  5 ปีที่แล้ว +401

    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 ปีที่แล้ว +71

    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.

  • @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!!

  • @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.

  • @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.

  • @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.

  • @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.

  • @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.

  • @atinotevuelveaimportar5905
    @atinotevuelveaimportar5905 5 ปีที่แล้ว +930

    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

  • @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.

  • @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

  • @idogendel
    @idogendel 5 ปีที่แล้ว +79

    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 3 ปีที่แล้ว +1

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

  • @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...

  • @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!

  • @coldfinger459sub0
    @coldfinger459sub0 5 ปีที่แล้ว

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

  • @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

  • @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.

  • @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

  • @wallaceshackleton1889
    @wallaceshackleton1889 4 ปีที่แล้ว

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

  • @CrazyCoupleDIY
    @CrazyCoupleDIY 5 ปีที่แล้ว +1

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

  • @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 !

  • @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.

  • @patricioborras3544
    @patricioborras3544 5 ปีที่แล้ว +1

    Thanks for your analysis and explanation.

  • @quoit99training83
    @quoit99training83 5 ปีที่แล้ว +1

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

  • @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!

  • @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 2 ปีที่แล้ว +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

  • @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👍

  • @luismartindelcampo9510
    @luismartindelcampo9510 5 ปีที่แล้ว

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

  • @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.

  • @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 !

    • @woolychewbakker5277
      @woolychewbakker5277 4 ปีที่แล้ว +30

      Absolutely agree that Arduino is the solution for high speed Realtime. I have a nano controlling diesel injector firing.

    • @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

  • @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 :)

  • @PilotPlater
    @PilotPlater 5 ปีที่แล้ว

    Appreciate this overview greatly, thanks!

  • @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 4 หลายเดือนก่อน

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

  • @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.

  • @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.

  • @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.

  • @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 3 ปีที่แล้ว

      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.

  • @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.

  • @RonSheely
    @RonSheely 5 ปีที่แล้ว

    Thank you. Excellent presentation.

  • @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...

  • @HSRMF
    @HSRMF 5 ปีที่แล้ว +13

    00:59 ha ha ... nice picture explanation

  • @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.

  • @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.

  • @gabriel1chan
    @gabriel1chan 4 ปีที่แล้ว

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

  • @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 4 ปีที่แล้ว +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...

  • @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.

  • @michelebernasconi375
    @michelebernasconi375 5 ปีที่แล้ว +1

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

  • @henrikworg350
    @henrikworg350 5 ปีที่แล้ว

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

  • @deadbird99
    @deadbird99 5 ปีที่แล้ว +90

    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 ปีที่แล้ว +8

      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.

  • @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.

  • @Salfke
    @Salfke 5 ปีที่แล้ว +1

    Hi, thanks for this great video.
    The speed of the code upload is a big issue. Mostly it takes approx. 1 minute to compile and upload a esp sketch with the arduino ide. Very annoying when you are debugging. I think i'll order some micropython boards now i've seen this video

  • @xenoskeras825
    @xenoskeras825 5 ปีที่แล้ว

    Thanks for the info good sir!!

  • @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.

  • @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 4 ปีที่แล้ว +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 4 ปีที่แล้ว +3

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

    • @DonchoGunchev
      @DonchoGunchev 4 ปีที่แล้ว +4

      @@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 4 ปีที่แล้ว +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!

  • @iz0cez
    @iz0cez 5 ปีที่แล้ว

    Good comparison and interesting video. Thank you.

  • @biplabroy8991
    @biplabroy8991 5 ปีที่แล้ว

    Thank you for this informative video

  • @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.

  • @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 3 ปีที่แล้ว

      You don't, the interpreter does.

    • @featherbrain7147
      @featherbrain7147 3 ปีที่แล้ว

      @@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 3 ปีที่แล้ว

      @@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.

  • @williammiller4143
    @williammiller4143 5 ปีที่แล้ว

    Great summary! I looked at this a year ago but the lack of many needed libraries steered me away from it. For a while it appeared that not much was happening with it and I considered it a dead issue. In light of your video I am interested in taking another look. Thanks for this video (actually all your videos!)

    • @AndreasSpiess
      @AndreasSpiess  5 ปีที่แล้ว

      You are welcome!

    • @mattytrentini
      @mattytrentini 5 ปีที่แล้ว

      Please take a look again; there are *many* more libraries now. Further, it's *much* easier to write libraries in Python so the number is increasingly rapidly.
      Alternatively you can wrap a C library in MicroPython...

    • @williammiller4143
      @williammiller4143 5 ปีที่แล้ว

      Thank you Matt. I intend to look into it again. I was very interested then and moreso now.

    • @mattytrentini
      @mattytrentini 5 ปีที่แล้ว

      If you can't find a library you need in MicroPython please let me know and I'll see if I can help get the ball rolling to implement one. The MicroPython forum is also a good place to check: forum.micropython.org/

  • @hichammhm7741
    @hichammhm7741 3 ปีที่แล้ว

    Thank you sir for your explaining

  • @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 4 ปีที่แล้ว +7

      @@TheDatabaseDude Pathologically Eclectic Rubbish Lister.

    • @TheDatabaseDude
      @TheDatabaseDude 4 ปีที่แล้ว

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

    • @DennisJHarrisonJrHere
      @DennisJHarrisonJrHere 4 ปีที่แล้ว +59

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

    • @DaFetrow
      @DaFetrow 4 ปีที่แล้ว +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).

  • @markomrvelj
    @markomrvelj 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

  • @thomasdavenport4371
    @thomasdavenport4371 4 ปีที่แล้ว

    Both useful and interesting. Thank you Andreas.

  • @jimba6486
    @jimba6486 2 ปีที่แล้ว

    Thank you for content. I am always learning something new

  • @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 :)

  • @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).

  • @PhotonVideos
    @PhotonVideos 2 หลายเดือนก่อน

    I do research and development for lighting installations, and your approach and perspective is exactly what I would hope in a breakdown. Thank you very much for your time

    • @AndreasSpiess
      @AndreasSpiess  หลายเดือนก่อน

      Glad it was helpful!

  • @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 ❣️

  • @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 !

  • @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 ;)

  • @riklaunim
    @riklaunim 4 ปีที่แล้ว

    In the topic of Python and microcontrollers Zerynth is also worth checking out - where Python is on the host computer and the IDE compiles and sends to the microcontroller in the background.

  • @1q1q1q1q1q1q1qw
    @1q1q1q1q1q1q1qw 3 ปีที่แล้ว

    thanks for the nice overview. My question is can i run an normal pythonprogramm on my pc and use sesorvalues from the controller. is there an relayable way?

  • @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.

  • @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

  • @killgrill6872
    @killgrill6872 5 ปีที่แล้ว

    and again a very helpful video. Thank you :)

  • @mamunurrashid4628
    @mamunurrashid4628 4 ปีที่แล้ว

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

  • @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.

  • @Johnny010
    @Johnny010 5 ปีที่แล้ว +13

    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.

  • @georgelewisray
    @georgelewisray 5 ปีที่แล้ว

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

  • @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...

  • @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

  • @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?

  • @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

  • @MartinBgelund
    @MartinBgelund 5 ปีที่แล้ว +2

    As always, a good video from Andreas!
    What I would like to see, is a discussion about real-time or near real-time applications: If we need our device to be remotely responsive to real-time events, will microPython be able to deliver? Or do we cut off ourselves from using interpreted languages if we need guarantees that our device will react quickly, and finish within a given time frame?

    • @AndreasSpiess
      @AndreasSpiess  5 ปีที่แล้ว +1

      I only started with Python. But reading other comments, it seems to be quite slow. I assume, "real-time" events have to be handled in libraries which are probably not coded in Python. I also do not know f we have an interrupt handling in Python.

    • @MartinBgelund
      @MartinBgelund 5 ปีที่แล้ว

      I'm also just beginning to look into interrupt handling in Python (on the RPi), and there seems to be interrupt handling available in the RPi.GPIO Python library: raspberrywebserver.com/gpio/using-interrupt-driven-gpio.html

    • @wm6h
      @wm6h 5 ปีที่แล้ว +1

      Pythons saving grace is full POSIX bindings semantically equivalent to C’s. And the 80/20 rule.
      But the appeal of your channel are the creative and useful end projects. How you develop them are not important to me. I can learn enough of anything to customize your projects for my purposes. Thank you.

  • @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

  • @UpcycleElectronics
    @UpcycleElectronics 5 ปีที่แล้ว +3

    It might be worth mentioning that both the SAMD bootloaders from Adafruit and Arduino (zero boards) are not easy to burn on a fresh chip. I've saved one reference where someone used a STlinkV2 to burn the bootloader, but if you actually try to follow that example, there is no pinout mentioned and several details are not explained. In the comments you will find several people that discovered this the hard way.
    I looked into this around 2 months ago and haven't revisited it since. So maybe things have changed, but there were quite a few comments and blog posts about people having problems like this when I spent a few hours researching it.
    As far as the ability to execute code in a serial terminal. One option for AVRs is Forth. While I haven't actually tried it myself, there is a small electronics channel called "0033mer" that has several uploads where he demonstrates Forth on various platforms. Most of the time he is not actually demonstrating Forth like a tutorial on it specifically. He usually uses it while demonstrating other simple things. From the little bit I've picked up here and there, Forth is one of the early computer programs from back in the days when the specs of a modern ARM SOC exceeded the performance of most University mainframe computers. So Forth is one of those tiny programs that can run on simple microcontrollers with plenty of room to spare.
    I'm sure others know far more than myself here, but this is what I know on this subject, and the challenge that holds me back from trying SAMD hardware ;)
    -Jake

    • @AndreasSpiess
      @AndreasSpiess  5 ปีที่แล้ว +1

      I saw forth the first time on one of those videos and thought, this is a thing of the past ;-) Never heard before. But it is mentioned a few times in the comments.

  • @Skyentific
    @Skyentific 5 ปีที่แล้ว

    Very nice project! Thank you!

  •  5 ปีที่แล้ว

    Thanks Andreas, very interesant, I will try to test micropython briefly.

  • @slavshuravesky3617
    @slavshuravesky3617 5 ปีที่แล้ว +10

    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.

  • @kanapkazpasztetem
    @kanapkazpasztetem 5 ปีที่แล้ว +9

    "has the time come to leave Arduino IDE?" long time ago... I mean, just because it lacks code completion features (or it was when I last time used it) in my opinion the original Arduino IDE is good only for testing components where you use it for 5 minutes max. If you are trying to do something more advanced than blink then I would recommend to look for alternatives - for example "Visual Micro".
    I didn't used Micropython but I guess it is just normal Python with some special libraries. About Python, which I'm learning, I must say it is not that easy once you started programming with other languages and just now moving to it. The indentation instead curly brackets was at the beginning a pet peeve for me but I'm getting used to it. One other thing to note is that in every other language that I used lambda functions, they could be just like normal functions meanwhile in Python it can be only one statement (one line) :/
    You and others in comments mentioned that Python is slower than C++, perhaps you could make a video about it by measuring differences? Is the difference (delay) noticeable ? When should we be aware of it and in which cases we can just ignore it?

    • @AndreasSpiess
      @AndreasSpiess  5 ปีที่แล้ว +1

      I am sure Python is slower in some cases as it is an interpreted language. However, the question is: Does it matter for my project. I also do not want to fuel the discussions too much ;-)
      Concerning Python: I also have to learn it for RPI. Machine learning and vision often use Python as an interface...

    • @Swanicorn
      @Swanicorn 5 ปีที่แล้ว

      I will explain in very broad terms so that anyone can understand. The problem with the speed is that it is "compiled" on the MCU and hence is subject to the speed of the MCU which is definitely going to be slower than your Windows/Apple PC. With C on the other hand it works extremely closely with the actual hardware, on a register level. Think of it like this: You asked that question 2 days back (as I can read it). I am replying today, you may read it 2 days later. Total there were 4 days spent for this task. Now compare that to if I was sitting next to you, this conversation wouldn't have taken more than 30 seconds. That's how the difference in speed comes to play. High level languages work from a distance from the hardware, C is very close.
      You could also imagine another scenario. You are Japanese and only understand Japanese. I am German and only understand German. Now for me to tell you what to do I'd need a German to Japanese translator to talk to me and understand my need. That translator will then talk to you in Japanese. This could have happened much quicker if we both spoke a common language. Hardware doesn't speak Python, it speaks binary and C language is a close bridge between binary and a language that humans can understand.
      Another scenario to imagine: I am a boss and I walk in to a room of employees and say someone make a presentation about our profits this year. Now who makes that presentation?? It could be the intern, the janitor, the CEO, the programmer, the medic, the guard, the MBA guy??? As a boss I didn't say who was supposed to make it. Well as it turns out the Janitor made the presentation who was hired 2 days back. Will he do the job well and in lesser time? When working in C language, you have to explicitly assign the job to a particular person that you know is best suited for that task. That is also a reason for the higher speed.

    • @karlanthonybaluyot6305
      @karlanthonybaluyot6305 5 ปีที่แล้ว

      Use Visual Studio Code for embedded C/C++ or the official Atmel IDE or MPLABX IDE

  • @ardxb123
    @ardxb123 4 ปีที่แล้ว

    As always very informative

  • @sfndude1768
    @sfndude1768 5 ปีที่แล้ว

    Nice video sir! i like it. i'm program in python too, but if i want to make more complex project and that's need quick process and small size of code, i'm prefer using avr-gcc/native c and sometimes also use assembler

  • @dmkays
    @dmkays 5 ปีที่แล้ว +6

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

  • @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.

  • @_XoGuSi_
    @_XoGuSi_ 5 ปีที่แล้ว +1

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

  • @jozefgoral6812
    @jozefgoral6812 3 ปีที่แล้ว

    Really good material. I am not sure about one question. What if I would upload Micropython firmware. Can I still compile and upload programs written in c/c++ via VSCode or ArduinoIDE or program normally with the firmware loaded in the flash memory? Should I clean the flash memory when I want to change the programming method?

  • @korbano
    @korbano 5 ปีที่แล้ว +7

    While I like new micro controllers, I have yet to have a project I couldn’t complete with some arduino. I agree this micropython saves development time but if I need the extra power, I’ll use a raspberry pi zero which only costs around $15

    • @AndreasSpiess
      @AndreasSpiess  5 ปีที่แล้ว +1

      Thank you for your feedback!

    • @AdaptivePhenix
      @AdaptivePhenix 5 ปีที่แล้ว

      Then you must not be doing deterministic real-time. The Parallax Propeller has 8 CPUs, running in parallel....no need for interrupt nonsense. They have just received engineering samples of "P2"....exciting times ahead. :)

    • @korbano
      @korbano 5 ปีที่แล้ว

      Craig Webster can that not be done with a raspberry pi?

  • @immortalsofar5314
    @immortalsofar5314 5 ปีที่แล้ว +5

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

  • @jayjingo
    @jayjingo 4 ปีที่แล้ว

    Sir please do a video on how to built drum sound from a moduler like having drum , your teaching is very clear. Tq

  • @princemishkin1601
    @princemishkin1601 ปีที่แล้ว

    Wonderful explanation, thank you :)