I newly (August 2023) bought an ARPI600 together with a sensor bundle essentially because I also wanted to use the ADC on that board controlled by a Raspberry Pi 4B. I am also a noob so some of my comments might be wrong. At least I got the ADC to work with a potentiometer. I have not tested the other sensors yet.
First there is definitely some cool stuff you can do with the ARPI600. Here is a scientific article about research done with the ARPI600 and here is an openly accessible version.
It seems that the manual (pdf) resp. its online version have not been thoroughly updated in a long time. E.g. the manual recommends to install wiringPi which is discontinued since 2019. It tells you to
sudo apt-get install python-pip
however python-pip was replaced by python3-pip some time ago. Also the program library at https://www.waveshare.com/wiki/File:ARPI600_.7z seems to have changed compared to the version in the manual. It contains code for python which is good, but the instructions in the manual don't reflect that much. I think it's good that they keep their code library up to date. But one has to be aware that the manual probably refers to an old version. So one has to adapt the instructions in the manual.
All together I suggest to treat the instructions in the manual as loose guide lines and adjust them as seems reasonable, until things start to work. Here's the setup.
Login to your Pi such that you have a terminal (shell) open. Make sure that your system is up to date.
sudo apt-get update
sudo apt-get upgrade
Via
sudo raspi-config
configure access to the protocols you need: I2C, SPI, Uart (Serial). In contrast to the manual as of Aug 2023 the items in the menu are not in item 5 but in 3.
3 Interface Options -> I4 SPI
3 Interface Options -> I5 I2C
3 Interface Options -> I6 Serial Port (shell login - no, serial port hardware - yes)
Installing the BCM2835 libraries works as in the manual
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
cd
Since the WiringPi libraries are deprecated only the second suggestions works which provide some legacy support.
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
. /build
cd
gpio -v
gpio readall
Alternatively one can get information on GPIO with the preinstalled tools, which are a bit cumbersome (e.g. "raspi-gpio get" will show you information on BANK1 and BANK2 which are not accessible to the user, but controll other parts of the Pi. For Bank0, which is part of the 40 GPIO pins available to the user, they are just listed in GPIO number order which is completely different from the physical layout).
pinout
raspi-gpio get
You can also install pigpio as a replacement or in parallel to wiringPi.
sudo apt-get install pigpio python-pigpio python3-pigpio
See http://abyz.me.uk/rpi/pigpio/index.html for details. I would not recommend to install the piscope extension as it relays on gtk+-3.0 which on installation tries to install some deprecated nvidia drivers which in turn result in half installed zombie nvidia packages - at least in all the attempts I made.
Then you should install some python libraries. Compared to the manual, python-pip needs to be replaced by python3-pip and python-smbus and python-serial seem to be no longer supported (and needed?). The pip packages RPi.GPIO and spidev are also unnecessary as their dependencies are already satisfied by /usr/lib/python3/dist-packages
sudo apt-get install ttf-wqy-zenhei
sudo apt-get install python3-pip
sudo pip install rpi_ws281x
Next you should download the provided demo programs. You have to slightly adjust the commands compared to the manual. Going to the original provided website https://www.waveshare.com/wiki/File:ARPI600_.7z reveals how you have to adjust the url for the wget command.
sudo apt-get install p7zip
wget https://www.waveshare.com/w/upload/4/44/ARPI600_.7z
7zr x ARPI600_.7z -r -o./ARPI600
sudo chmod 777 -R ARPI600
Strangely the unpacked folder will look like ARPI600/ARPI600/ but it is, what it is.
At this point you are ready to actually use the ADC. I used a very simple setup from an Arduino tutorial to get the voltage on a potentiometer. Since the Arduino pins used in the tutorial are represented on the ARPI600 the wiring is straight forward. Make sure that the jumpers are set correctly as in the manual (reference voltage to 5V, analog inputs A0-A5 to T_A0-T_A5 the later belonging to the inputs for the ADC).
Keep the original files and copy the code for the ADC chip TLC1543 into a testing folder, then you have to adjust the sample code.
mkdir ADCtest
cd ADCtest
cp -r ~/ARPI600/ARPI600/RaspberryPi/program/TLC1543 .
cd TLC1543/python/
nano tlc1543.py
Enter an additional delay at the end of the try block in the fifth to last line and replace line 13 "CHANNEL = 6 # selector channel" by
CHANNEL = 0 # selector channel
...
time.sleep(1)
or whatever is the correct input pin for the analog voltage. If your setup is the same as in the Arduino tutorial it's 0. Now execute and get some output depending on the setting of the potentiometer.
python3 tlc1543.py
Busy or Not give a Voltage at Pin T_A0
Busy or Not give a Voltage at Pin T_A0
AD: 284
AD: 337
AD: 337
AD: 374
Busy or Not give a Voltage at Pin T_A0
Busy or Not give a Voltage at Pin T_A0
Busy or Not give a Voltage at Pin T_A0
Busy or Not give a Voltage at Pin T_A0
Busy or Not give a Voltage at Pin T_A0
Busy or Not give a Voltage at Pin T_A0
Busy or Not give a Voltage at Pin T_A0
AD: 332
AD: 319
AD: 0
AD: 0
AD: 0
AD: 131
AD: 176
AD: 175
AD: 176
AD: 259
AD: 275
AD: 352
AD: 445
AD: 465
AD: 465
AD: 500
AD: 354
AD: 355
In particular at the beginning and when the voltage is at higher levels you get some error messages. The output is raw data from the ADC which has a scale from 0 to 2^(10)-1=1023 and subdivides the reference voltage (5V in my case) into 1023 steps. So an AD output of 355 corresponds to 355/1023*5V ~ 1.735V. When I tested the same poti setting with a voltmeter I got 1.80V. So I guess that's OK.