Arduino vs Rpi

Active today
Viewed 181 times

I am relatively new to the Raspberry PI platform and more experienced with Arduino.

I have noticed in the examples for Infrared Receiving and 1-Wire protocol that the Python sketches to interact with these protocols revolve around native operating system support (like LIRC and reading from the /devices file.

Is this common in Raspberry PI?

Usually I like to access the GPIO sensors directly, in code, as opposed to reading files and pipes from the underlying file system.

I am wondering if there is a reason there aren’t more direct libraries for things interface / protocol control.

So, phrased as a question: Why does Raspberry Pi rely so much on operating system support as opposed to direct python libraries to interface with 1Wire and IR ?

  • Ah let me see, (1) Why are so many drivers written in C, so less in python? The main reason is that drivers need to talk at low level which are always in C. Of course C is also faster. You can also wrap C software in python, for python fans. For IR I tried both LIRC and also python, I found both OK, but LIRC is poorly supported. For other devices, if control not too complicated, I use both drivers in C and also in python, eg, PN532/MFRC522 NFC/RFID chips/modules. I found NFC drivers in python very good for trying out new things. For basic MFRC522 pythong driver, it is only about 400 lines, – tlfong01 15 hours ago
  • You might like to see how I tried the C hased LIRC driver, and also python direct control: raspberrypi.stackexchange.com/questions/103452/…. – tlfong01 15 hours ago
  • Another example is the GPS driver/demon, GPSD, which is a complex, huge project. You just cannot use slow python to do the low level stuff. But of course you can use python API to do the high level things, eg: raspberrypi.stackexchange.com/questions/98840/…. – tlfong01 15 hours ago
  • Right now I am playing NFC drivers in both C and python. LibNFC driver is old and no longer supported. So I also tried python drivers and also rewrite mine. But using python direct is tricky, not for faint of heart newbies. You might like to see how involved it is (1) raspberrypi.stackexchange.com/questions/109773/…, (2) stackoverflow.com/questions/61165652/… (3) stackoverflow.com/questions/60819793/…. Cheers. – tlfong01 15 hours ago
  • I had 5 hobbyist years in Arduino and another 5 in Rpi. I enjoyed using their libraries/drivers. Same as Rpi, I usually first study the Arduino library programs, and sometimes I expand or rewrite my own. This way I learn how to write drivers, or how to be a hobbyist developer. Cheers. – tlfong01 15 hours ago
  • 1
    You say “Usually I like to access the GPIO sensors directly”, but most sensors can be accessed through I2C, SPI, or UART, similarly to Arduino. There are very few sensors that you can access directly, because the interface timing is rather complicated. As an example, you may like to read my answer to the GPIO connected DS18B20 temperature sensors: raspberrypi.stackexchange.com/questions/100203/…. Using driver takes 30 minutes, writing your own driver might take you 3 months! – tlfong01 12 hours ago
  • Yet another comment: Many drivers/kernel/daemons are huge, and based many old packages, largely in C. Some drivers, eg, GPSD, took me three hobbyists to setup and use. As I said earlier, it might take me three months to write a temperature sensor, but the GPSD takes 24 person years! References: “GPSD – A GPS Service Daemon”: (1) gpsd.gitlab.io/gpsd/index.html, (2) raspberrypi.stackexchange.com/questions/98840/…. / to continue, … – tlfong01 1 min ago   Edit
  • GPSD Project Summary: All languages = C 56%, Python 21%, XML 10%, 8 Others 13% Total lines of code = 78,908 lines Active Contributors = 40 Man Month = 24 Personal years (avg salary = 55,000/year) Estimated Cost = US$ 1,313,594. – tlfong01 1 min ago   Edit

The Raspberry Pi is generally used with an operating system. The commonest is the Linux based Raspbian.

Linux is a multi-user, multi-tasking operating system. Many people may be using the Pi at any one time.

My idle Pi has 120 tasks running currently.

If all those tasks were allowed to access resources in an ad hoc fashion nothing would work. The operating system has to control and arbitrate accesses to resources. Resources being things like processing time, memory, files, GPIO, etc. etc.

The Arduino has no operating system and only one program runs at a time. It doesn’t matter how that program accesses resources as there is nothing else running to care.

  • This makes sense. It seems like users would want the ability to have direct control of GPIO though – not this indirect access model. – Startec 3 hours ago
  • Users can directly talk to the GPIO if they have superuser (root) privileges. Most Pi owners/users probably have the ability to run programs with root privileges. – joan 3 hours ago

Categories: Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: