SALSA II – Arduino CoProcessor
$22.00 – $23.00
This is the SALSA DIP for the C.H.I.P. (a $9 computer developed by NTC). The C.H.I.P. is a great board, a tiny linux computer that fits on your palm. But it is in the nature of non-realtime OS that certain functionalities are not available. This is where the SALSA kicks in. It provides a co-processor extension for the C.H.I.P. that is able to run realtime code and offers multiple hardware functionalities which are not available on the C.H.I.P. itself. The SALSA features a Atmel ATmega 328p-au as used on various other tinker board (e.g. the Arduino).
- Connected to the C.H.I.P. via I2C, keeps all your C.H.I.P. pins untouched
- Simple Python3 interface can be used to send commands to and retrieve values from the SALSA
- Drive some awesome Ws2812 LED strings
or build your own binary clock
or a soccer score display
ws2812 led’s are awesome 🙂
- Use the four onboard N-MOSFET transistor to drive large strings of simple 12V (up to 36V,7A) LEDs and dimm them via PWM
I’ve used this capability to build my own personal sunrise
This setup is really easy, take a look at the image below
LED1 is directly connect to the power (choose the right voltage and LEDs, 12V works good), LED2 is connected via SALSA to GND and control via the MOSFET (Q1) CHIP is in charge of.
- Analog read (0-5V) on three SALSA pins
- Use the six PWM signals to control e.g. a few servos
- SALSA provides 12 screw-terminals. 6 on the top and 6 on the bottom, making it really easy to connect to your project
- SALSA has an Arduino IDE compatible Bootloader. You can simply upload your Arduino Code on the SALSA, (e.g. distance measuring)
- Seamless power, the SALSA can be powered
- from the C.H.I.P. 5V output
- from the optional on-board DCDC regulator (mentioned below)
- from C.H.I.P.s battery
This offers an outstanding battery safer option: If you only have limited power in your Battery, shut the C.H.I.P. down! Before you do that, send a wakeup time to the SALSA and the SALSA will reboot the C.H.I.P. as soon as that time has passed! The Salsa can run on a few uA during wait. The video below shows how the SALSA is restarting the CHIP, without me touching anything.
- An optional on-board DCDC regulator that allows me to power the SALSA from 7-28V DC and provides stable 5V with up to 3A current to the SALSA and the C.H.I.P.. (e.g. run your C.H.I.P. on the 12V from your car)Power is a big issue on the C.H.I.P. most likely the #1 problem on the forum. The reason is that C.H.I.P. draws quite a lot current from the powersuppply (I’ve measured 350mA at idle, and ~500mA under load with spikes up to 650mA). If your powersupply can’t handle those spikes with stable 5V but instead reduce the voltage C.H.I.P. crashes. I’ve measured the stability on a few of my phone chargers, which claim to be 1A stable. The first provided 4.65V at 350mA, the next 4.7V@350mA and went down to 4.2V when I started a CPU intense task. That when I’ve decided to add my own DCDC regulator.
This pictures actually shows the QUESO DIP, but it is the same DCDC regulator.In general every wallplugged charger should work, that has an output between 7-28V and at least 5W (V*A) so typically a 12V charger with 0.75A (= 9W) or an old laptop powersupply (most of them are ~20V and 50-120W) will give you plenty of power. I found a few power supplies that came with old USB harddrives in my closet and gave them a new purpose.
The SALSA II can be assembled with a L293DD motordriver instead of the PWM N-Mosfet. The real neat part is that is can use the PWM channels to drive real smooth curves.
This transforms the SALSA into a really easy to use robot driving DIP.
- See below for the pinout
- 1. Install the SALSA on top of the C.H.I.P. and connect a few ws2812 leds if you have. It should look like shown in the pictures below
This is the lower end, over C.H.I.P.s wifi module and the battery connector, connect the LEDs here
This is the upper end, connect power to the boards here, red is +, black –
There is NO POLARITY PROTECTION on the board, so please make sure that connect them in the right way.
- 2. check if the C.H.I.P. can see the SALSA by running
sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- 04 -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
If you see the 0x04 (that is the SALSA I2C address) go on
- 3. Run my autoinstall script
cd ~ wget https://github.com/KoljaWindeler/CHIP_SALSA/raw/master/install/install.sh sudo sh install.sh
This will take a minute and download all necessary code for you. It will also ask you if you want to run a little demo code. Take a look in the directory CHIP_SALSA/python for more demo code and how the connection works:
- To use the SALSA inside the Arduino IDE add this code block to the boards.txt file (see http://playground.arduino.cc/Main/CustomizeArduinoIDE)
atmega328o.name=[Optiboot] SALSA DIP w/ ATmega328 atmega328o.upload.protocol=arduino atmega328o.upload.maximum_size=32256 atmega328o.upload.speed=19200 -F atmega328o.bootloader.low_fuses=0xe2 atmega328o.bootloader.high_fuses=0xda atmega328o.bootloader.extended_fuses=0x05 atmega328o.bootloader.path=optiboot atmega328o.bootloader.file=optiboot_atmega328.hex atmega328o.bootloader.unlock_bits=0x3F atmega328o.bootloader.lock_bits=0x0F atmega328o.build.mcu=atmega328p atmega328o.build.f_cpu=8000000L atmega328o.build.core=arduino:arduino atmega328o.build.variant=arduino:standard
- Restart the arduino IDE and select Boards -> Salsa
- You’ll need a UART to USB cable (5V) to connect to the DIP
It is possible to use C.H.I.P.s GPIO/UART pins to programm the SALSA. This is a five step process:
- 1. install avrdude on chip (sudo apt-get install avrdude)
- 2. move the original avrdude (sudo mv /usr/bin/avrdude /usr/bin/avrdude_org)
- 3. add wrapper (sudo cp firmware/avrdude /usr/bin/avrdude)
- 4. complete the wiring as shown below:
- 5. stop the serial console on the uart port
(sudo systemctl stop serial-getty@ttyS0.service)
Now just use the arduino IDE and flash your firmware 🙂
Remember: You have to repeat step 5 after every reboot!
PWM N-Mosfets, Motor driver +1$