$9 C.H.I.P Based Embedded Systems?

So I have some experience programming micro controllers. Have done two courses covering programming and development thought process of Embedded Systems/IoT Devices. However, I have no experience working with actual hardware development. Only developing for existing hardware which has lead me to look at pre existing systems and in turn, the $9 C.H.I.P computer.


From what I can see, it has the hardware I need. Either Ethernet/Built in wifi along with built in Bluetooth. My project without giving much away requires local network access and in turn internet access. Ability to host local web pages and the like. Basic setup over bluetooth through a phone.

I’m just wondering if I’m going down the right track. I need hardware that can host a web server with local bluetooth support and some 24/7 daemons running. Or would I be better off going down the track of an Atmel Micro with no OS programming. Any suggestions would be great. I don’t need anything powerful, but the raspberry Pi 3 seems overpriced for what I’m looking at.

Cheers

Without much knowledge of what you are doing or about development, is the Bluetooth part necessary? If it is connecting to the local network then a phone can also do this with much better range via wifi vs Bluetooth. Just a minor suggestion.

There are tons and tons of boards out there nowadays that fit between the Chip and a Pi3, both in terms of performance and price. Olimex, FriendlyElec, and Orange Pi spring to mind. You can find pretty cheap devices with wifi+Bluetooth in the $10 to $20 range with similar or better specs than the CHIP. Not that you specifically need it, but you might see something that has more or all of the connections you want by default without having to buy extra parts which might drive up the cost. It would at least give you an idea of what is available before you invest in one ecosystem and realize another one would have been better or cheaper.

Olimex in particular is Open Source Hardware. You can get files from them on their builds or even have custom runs of hardware built by them without vendor lock-in. Just something to think about that I figure might be worth looking at. Their Blog is really awesome and gives a good inside look at dealing with supply chains and working with the community, as well as other interesting stuff.

There are also devices with less resource heavy processors. Rather than going into something I’m not super familiar with, I found a List Of IoT Hardware that looks pretty comprehensive. I read blogs about this stuff almost daily and haven’t seen some of the hardware listed there. Tindie is another place that has unique stuff and people making things in batches that I’m sure could be commissioned if needed. Adafruit has a bunch of tutorials for building with all sorts of different hardware, so that could give you an idea of some of the different stuff available and what can be done with it.

Hopefully some of those links will help you to choose which hardware is right for you. The CHIP isn’t a bad platform, but it is just one in a sea of cheap boards available. Good Luck!

I wanted Bluetooth for easy setup of Wifi considering the device is meant to be a contained unit with no need for a display or wired input devices like a keyboard. Initial idea was Router like interface using a direct IP connecting though application based might be easier with my experience.

Basically the requirements are network connectivity, preferably Wifi and Ethernet though if only one can be used, prefer wifi for ease of use. I know as long as the system on a chip has UART/SPI/TWI expansion, preferable UART, I can add bluetooth and wifi modules pretty easily though built in does cut down cost. I would also prefer if it supports running a Linux OS as I prefer Java development though I’m capable in C. Just would cut down prototyping time. Get something working a lot quicker plus makes the addition of AES and RSA encryption much easier when communicating with mobile devices.

Reason why I looked at the CHIP Soc was due to cost of development. However from reviews I have seen, it does appear to be far less powerful than a Pi 1 B+ of which I already have one on hand. I can pick those up for under $20 and add a $5 wifi/bluetooth module for development purposes. But if I’m willing to sacrifice Bluetooth for now, the Pi Zero W seems like a good alternative. Issue however is it’s not available in my location without paying an obscurity tax.

I’ll definately look into the devices you have linked. Finding something with a bit more power, features and a community of developers is what I want and outside of papers I have taken, I never really delved into this part of the industry.

I’m pretty sure the Pi Zero W uses the same wifi+Bluetooth module that the Pi 3 has, if that makes any difference. I don’t know how the extra taxes will affect the prices of different things.

Armbian makes their builds for a bunch of different boards out there, which is sometimes better than the ones provided by companies (specifically Orange Pi). They also have some really smart people working on stuff using these boards if you need any help. Linux-sunxi is another group that does a lot of work, specifically with Allwinner based boards. There is a plethora of Allwinner H3 and H5 boards that have specs similar to what you are looking for. Figured I would add these resources in for you or anyone interested.

I’m definitely taking a larger look at the options. The one device that really caught my eye was the Orange Pi Zero H2+. Has everything including a quad core but Bluetooth but does include a UART on GPIO so a bluetooth module can be added on if need be. The thing that does worry me is development support. From reviews I read, The GPIO on release wasn’t well supported with their released kernels plus developers have had issues with their devices.

At this point I might look at buying a range of devices and testing them out myself. The CHIP was definitely too low in performance for what I’m looking for. The Raspberry Pi Zero is good with a good developer support though the single core SoC is a bit lacking and it only has wifi, no bluetooth.

Have a lot to learn to be honest. My experience is either directly programming for the hardware in C or general programming in Java, C++, C#.

I also have seen Armbian mentioned multiple times from other places so I will definitely start there.

you don’t really need bluetooth for “easy setup without wifi”, you can have it advertise itself as an accesspoint with a captive portal when unconfigured, or unable to connect to the internet, captive portal can be the configuration ui.

It’s something you’d have to build yourself.

As for hardware, I haven’t used CHIP, but I have several PIs and have written code for various routers in the past, mostly using LEDE/OpenWRT, I’ve also worked with arduino (well it was atmega/attiny/before arduino) a long time ago.

That said I like chip’s builtin storage, female pinout headers so you can plug the same jumper cables to a breadboard and to the chip, and its ability to run off a lipo battery.

As for OS, Debian is fine and comfortable for random messing about and prototyping and hacking and running once offs.


depending on which hardware you want to interface, you may need more electronics to be able to connect the chip safely, arduino can be connected to more hardware directly… you may end up using both depending on what you’re making.

Arduino’s are overpriced, underpowered and inflexible for what I want to do. If I was going down the micro route, I would seriously rather buy a tray of Atmel Micro’s and mess around with them on a breadboard. You can’t really compare 8-50MHz micro’s against 500+ MHz SoC. I would rather not limit what I can do in software through hardware selection when I know I will have heavy code requirements and I’m not really interested in developing a few thousand lines of code just for setting up a wifi connection sorry.

At this point I think I’ll go down either the Raspberry Pi Zero W or Orange Pi Zero Plus two route. Just depends on which ends up being cheaper. For now I have been working on a headless Raspberry Pi 1 B with Java just to prove the concept and so far so good. Will be heading out today to buy a breadboard kit and look into GPIO access in Java.

1 Like

you didn’t really say what you were making, e.g. if you have any realtime constraints, or if you need to drive LEDs or servos.
I don’t think you need thousands of lines of code, but you have to write the code to configure wifi over bluetooth somehow, … how were you planning on doing it?

That I can do. It’s just basic UART RX/TX buffers with setup. Developing a webpage in C on a micro which needs to handle more than just web hosting but do a set of tasks as well on a device with very limited API support for anything other than direct hardware control isn’t exactly the easiest method of tacking the problem.

Sorry I’m being vague about what I’m doing. I do hope to make a post about it at some point. However I was talking about Pi’s, the CHIP and other SoC, not micro’s and was hinting towards thinking I needed an OS to manage Daemons along with a webservice. It kind of indicates I wasn’t looking at PLC’s or Micro’s.

Sorry if I’m coming off as a bit aggressive but I was not sure what I was really looking for as my experience is with desktops/servers and Micro’s and I knew neither really matched the application but I did not know what kind of device I was looking for other than it was like a CHIP/Raspberry Pi. Just unfamiliar with how to match micro like development with desktop like development and what hardware is out there that has the features I was looking for. I know I may need to do some low level driver development. Just have a lot to learn about developing for SoC/IoT type devices.

Dumb question but how does one simply program a microprocessor without the CPU being attached to some board? Not saying it has to be an Arduino, in fact I have a small board with a lot of I/O pins for the Atmel ATmega328P but they are still both on a board.

I was just referring to using an arduino, or an ATmega/ATtiny avr chip if you needed to interface with some hardware in more or less realtime, because CHIP/Pi are kind of bad at it. For example, put the wrong kind of small LED on a Pi and it can burn out, an ATmega can deal with much larger currents - I wasn’t recommending using it for accessing the internet.

As for matching workflows and driver development, lots of drivers are already there on the chip/pi, for example if you wanted to talk SPI or serial, in general you’d either use a library in your userland code, or you’d use the kernel API directly for example by opening a /dev file node and either reading from and writing to it … depending on what functionality you wanted to use.

Theoretically, you could write a driver to talk i2c and/or flip GPIO yourself, the drivers that exist in the kernel map some kind of filesystem based API to reads and writes to physical memory addresses onto which registers of various devices that live on the soc have been mapped to.

Typically, you wouldn’t be doing things in drivers until you ran into a wall in terms of what you can do in userland using the APIs that are already exposed.

Decent site for finding stuff.
https://www.board-db.org/

Well the LED would be fine if you putted a proper resistor to protect the LED diode from going to diode heaven. I did a binary LED counter with the Raspberry Pi once.

The great thing about programming on the ATmega is that it kind of forces you to program in Assembly in C language.

It definitely exposes you to something different.

It’s takes a different programming style where somehow suddenly sleeping in the main loop is normal and there’s no threading.

It’s useful to be aware of assembly once in a while, I mostly use Go in my day to day, but sometimes I have a look at compiler assembly output with -s, and the other day I was interested in whether something was escaping to the garbage collector or not - looking at internals of things is fun.

Spent the last year studying this. Directly effecting headers, bit bashing and the likes. It’s great to produce efficient low power code but sometimes you want something more versatile as you’re not always limited by power constraints.