Hi, I used to be aircraft engineer in the RAF in the UK, my trades were airframes and propulsion. Since leaving the RAF I went to university and studied an Engineering and Business degree. This was vocation based degree steering us down a entrepreneurial route. However I went into IT as an integration engineer. I have recently become interested in the Arduino, ESP32 and Raspberry Pi and IoT. Love the Dronebot Workshop. Followed a few projects and made one or two of my own. Now want to do some challenging projects, so looking to glean knowledge from the plethora of experience here on the forum. My programming is very novice so any tips on best practice or study guides would be welcome.
Look forward to chatting with you good folks.
Regards
Howard
We're happy to have you here, Howard, and honored that you chose this forum to be your first!
😎
Bill
"Never trust a computer you can’t throw out a window." — Steve Wozniak
Welcome to the forum. Sounds like you've an extensive past to draw on for project ideas. This one will be a cakewalk compared to some of those achievements. Like many topics, when you ask ten "experts", you'll get twelve different answers... and they'll all start out with... "It depends...". 😆 And when you get to the age of many of us here on the forum, we are all d... certain ours is the only way. 🤣
Since your first point of exploration seems to be software, I'll take a stab and try to keep my bias out of it. Full disclosure - I'm deeply entrenched using C/C++/C# for over forty years.
If I were starting out, I would definitely explore Python. UNLESS...
- performance is paramount
- size of the project you're trying to cram in an Arduino/ESP/RasPi.
- Oh... one other point since you mention entrepreneurial and you might have a great idea for a product. Python is primarily a scripting language... meaning if your program goes out, they can study it, attack it, copy it, modify it. Maybe that has changed... and a Python expert will correct me. 😉
After that decision, here are some basic concepts for either language to think about and try to embrace as early as possible in your learning curve.
Procedural vs Object Oriented Programming - I came from a time before OOP was around... Basic, Fortran, C, Assembler dominated early-on. I remember fighting the move to OOP programming styles. It was a struggle to un-learn "bad" procedural methods and fully embrace "good" OOP practices. You'll thank yourself when you need to brush off some code that is 6 months, 1 year... ten years old. Both Python and C++ are OOP languages that can be used either way.
Monolithic Program vs Libraries - Most kids (and adults) I help to learn to code on micros start out putting everything in the setup() and loop() methods on Arduinos or main() on a RaspPies. Study your code and ask yourself... is this functionality something I'll use again? If the answer is yes... even if you need to use it only twice in the same program, make it into a subroutine. If you think it'll be useful in a future program, learn how to make a library so you'll have access to it from all your projects. And by all means... try to make it into an OOP object library. Again, you'll thank yourself down the road when you can simply add an #include ... statement (in ino/C++) or import ... in Python and just make one call to do the same thing you created years ago.
And ask questions and share your progress. Many of us enjoy watching people work on projects. Even their first blink program.
Good luck and enjoy.
VBR,
Inq
3 lines of code = InqPortal = Complete IoT, App, Web Server w/ GUI Admin Client, WiFi Manager, Drag & Drop File Manager, OTA, Performance Metrics, Web Socket Comms, Easy App API, All running on ESP8266...
Even usable on ESP-01S - Quickest Start Guide
And one more thing... pictures, lot's of pictures. And if it moves, blinks or squawks... videos, lot's of video. Get yourself a free (and anonymous) Gmail account and learn how to upload videos to your free YouTube library and link to them here in a post. A picture/video is worth far more than a thousand words. If you need help, just ask. I think there is a minimum number of posts you must make here on the forum before you can include a picture, but YT videos don't have that limitation.
If you ask a question about something hardware related... try to make a wiring diagram of the hardware or simply take a clear picture that'll show all the wiring connections. And list your components. If the question is about software... please include the software using the code button <> above. Some people will go non-linear here if you paste it in, here in the regular editor. Also, you'd be surprised about how many people post, "My program is broke, help me." and forget to supply the code.
We're d... good, but not omnipotent. 😏
VBR,
Inq
3 lines of code = InqPortal = Complete IoT, App, Web Server w/ GUI Admin Client, WiFi Manager, Drag & Drop File Manager, OTA, Performance Metrics, Web Socket Comms, Easy App API, All running on ESP8266...
Even usable on ESP-01S - Quickest Start Guide
And while we are at it, use meaningfully variable names, stuff like i, j, k is so 1970's. Also pick one of the styles and adhere to it but at least use the IDE and click Tools - Auto Format.
First computer 1959. Retired from my own computer company 2004.
Hardware - Expert in 1401, and 360, fairly knowledge in PC plus numerous MPU's and MCU's
Major Languages - Machine language, 360 Macro Assembler, Intel Assembler, PL/I and PL1, Pascal, Basic, C plus numerous job control and scripting languages.
My personal scorecard is now 1 PC hardware fix (circa 1982), 1 open source fix (at age 82), and 2 zero day bugs in a major OS.