Google+

Κυριακή, 22 Δεκεμβρίου 2019

Spartan Edge Accelerator Board

Το Spartan Edge Accelerator Board είναι ένα φθηνό development board βασισμένο στο FPGA Spartan-7 της Xillinx. Περιλαμβάνει επίσης, ένα ESP32 που παρέχει συνδεσιμότητα WiFi και Bluetooth και είναι σχεδιασμένο για να υποστηρίζει τη σύνδεση, ως shield, σε Arduino. Τα σχέδια του κυκλώματος είναι υπό την άδεια open hardware και είναι διαθέσιμα στο github.

Διατίθεται από τη Seeedstudio εδώ και μερικούς μήνες στην τιμή $35. Για όποιον ενδιαφέρεται γενικότερα για τις δυνατότητες που προσφέρουν τα FPGA και πως μπορεί κάποιος να ασχοληθεί, μπορεί να διαβάσει ένα ενδιαφέρον άρθρο εδώ. Στην εικόνα παρακάτω, διακρίνονται τα βασικά χαρακτηριστικά του SEA board:

Για τον προγραμματισμό του, υπάρχουν δύο διαθέσιμα modes:

  • Arduino shield Mode
  • Stand-alone Mode

που πρακτικά σημαίνει ότι μπορούμε να προγραμματίσουμε το FPGA με το Arduino IDE, αλλά και με το εργαλείο σύνθεσης κυκλωμάτων της Xillinx (Vitis/Vivado).

Στο Arduino shield Mode, ο κώδικας (bitstream) μεταφέρεται από την κάρτα sd, μέσω του ESP32, στο FPGA, που λειτουργεί ως ένα hard processor system (HPS).  Η διαδικασία περιγράφεται αναλυτικά στο wiki.

Το Spartan Edge Accelerator Board περιέχει το Xilinx Spartan-7 XC7S15 FPGA, που είναι ένα φθηνό μεν, αλλά αρκετά δυνατό, FPGA chip. Μιλώντας για Arduino FPGA, δε θα πρέπει να να ξεχνάμε να αναφέρουμε και το πρωτοπόρο Arduino MKR Vidor 4000. Συγκρίνοντάς το με το επίσημο Arduino MKR Vidor 4000, το Spartan Edge Accelerator Board παρέχει παρόμοιες δυνατότητες, στη μισή τιμή! Το Spartan Edge Accelerator Board μπορεί να υποστηρίξει μέχρι 100Mhz clock speed και διαθέτει 12.8K logic cells με 360Kb block RAM. Μπορεί ακόμα να οδηγήσει μια camera ή μια HDMI οθόνη με ευκολία. Διαθέσιμα είναι και 10 user-programmable I/O pins στο XC7S15, τα οποία μπορείς να τα ορίσεις κατά βούληση, πχ ως PWM, I2C, I2S, UART, SPI, κλπ.


Στο github υπάρχει η βιβλιοθήκη για το Arduino IDE:

spartan-edge-esp32-boot

που περιλαμβάνει μερικά βασικά παραδείγματα για τη δοκιμή προγραμματισμού του FPGA.

Παρακάτω, μερικά screenshot (compile & upload):


βίντεο παρουσίασης:

Σάββατο, 16 Νοεμβρίου 2019

Sipeed Longan Nano a 32bit RISC-V based MCU

Το τελευταίο διάστημα παρακολουθούμε με έντονο ενδιαφέρον τις εξελίξεις γύρω από την αρχιτεκτονική συνόλου εντολών (Instruction Set Archtitecture - ISA) RISC-V. Παράδειγμα, οι επεξεργαστές HiFive αλλά ακόμη και η Nvidia που παρέχει SoC βασισμένα σε RISC-V cores και τα οποία αποτελούν 100% Open Source Hardware.


Πρόσφατα, η GigaDevice ανακοίνωσε την παραγωγή ενός μικροελεγκτή βασισμένο στον πυρήνα GD32VF103 ανοικτής αρχιτεκτονικής RISC-V.



Το GD32VF103 ενσωματώνει:
  • Core – GD32VF103 32-bit rv32imac RISC-V “Bumblebee Core” @ 108 MHz
  • Memory – 8KB to 32KB SRAM
  • Storage  – 16KB to 128KB flash
  • Peripherals – USB OTG and CAN 2.0B
  • I/O – 3.3V, 5V tolerant
  • Supply Voltage – 2.6 to 3.6V
είναι παρόμοιο με ένα STM32F103 και κυκλοφορούν αρκετά dev boards, περισσότερα εδώ.

Το Sipeeed Longan Nano είναι ένα dev board από την Sipeed, που είναι βασισμένο στο GD32VF103 και είναι διαθέσιμο από το seeedstudio στα 4.5€



Το Longan Nano περιλαμβάνει:
  • GD32VF103CBT6 based on RISC-V 32-bit core
  • Chip built-in 128KB Flash, 32KB SRAM
  • 4 x general purpose 16-bit timer, 2 x basic 16-bit timer, 1 x advanced 16-bit timer
  • Watchdog, RTC, Systick
  • 3 x USART, 2 x I2C, 3 x SPI, 2 x I2S, 2 x CAN, 1 x USBFS (OTG)
  • 2 x ADC (10 channel), 2 x DAC
  • 160x80 RGB IPS LCD (SPI Interface)
  • JTAG debug interface
Για τον προγραμματισμό χρησιμοποιούμε το PlatformIO:

import GD32V:


import project:


build code:



upload with dfu tool:


github:
https://github.com/sipeed/Longan_GD32VF_examples

GD32V libs, firmware, dfu:
http://gd32mcu.21ic.com/en/index

Εισαγωγή στη RISC-V


Σάββατο, 29 Δεκεμβρίου 2018

eduArdu - Open Source Learning Kit

To eduArdu είναι ένα εκπαιδευτικό kit από την Olimex που βοηθάει μικρούς και μεγάλους να ασχοληθούν με τον προγραμματισμό με έναν πολύ εύκολο και διαδραστικό τρόπο.


Περιλαμβάνει μια πλακέτα που ενσωματώνει ένα ATMega32U4 μικροελεγκτή (Arduino Leonardo), αρκετούς αισθητήρες, κουμπιά, LED. Στο GitHub υπάρχουν πολλά παραδείγματα κώδικα για να βοηθήσουν στα αρχικά βήματα.



hardware specifications:
  • MCU – Microchip ATMega32U4 AVR microcontroller (as used in Arduino Leonardo)
  • Display – 8×8 LED matrix display
  • Audio – Built-in microphone, buzzer
  • User Inputs – Joystick with push button, 6 Maykey-Makey type buttons
  • Sensors – Utrasound distance sensor, light sensor, PIR sensor, temperature sensor (-45 to +125C)
  • Expansion
  • Two servo motor connectors
  • UEXT connector
  • Debugging / Programming – 1x micro USB port
  • Misc – RGB LED,  IR transmitter, IR receiver, status LED, reset button
  • Power Supply
  • LiPo charger and battery connector
  • 5V via USB port
  • Dimensions – 170 x 75 mm
Επίσης, υπάρχει διαθέσιμο kit που περιλαμβάνει καλώδια, 2 x servo και μια επαναφορτιζόμενη μπαταρία LiPo.

Ο προγραμματισμός του γίνεται με το Arduino IDE ή με το Snap4Arduino που είναι βασισμένο στο Snap, μια extended έκδοση της γλώσσας οπτικού προγραμματισμού Scratch.


λινκ:
eduArdu Olimex
eduArdu demo examples
eduArdu introduction and installation video
eduArdu schematics

Σάββατο, 15 Δεκεμβρίου 2018

RPiTX - Turn your Raspberry Pi into a SDR

Το RPiTX μετατρέπει το Raspberry Pi σε έναν πομπό (ΤΧ) με εύρος εκπομπής συχνοτήτων από 5 KHz έως 1500 MHz.

Η εγκατάσταση είναι σχετικά απλή, απλά κάνετε clone το repo:







τρέχετε το ./install.sh :







και συνδέετε μια κεραία στο pin 7 (GPIO 4), ένα μικρό καλώδιο μερικών εκατοστών είναι αρκετό για τη δοκιμή.


Επίσης, μπορείτε να συνδέσετε κι ένα "φθηνό" usb rtl-sdr για να κάνετε μια αναμετάδοση!


Για τη δοκιμή των λειτουργιών του RPiTX, υπάρχει το ./easytest.sh


easymenu

Αφού επιλέξετε μία συχνότητα εκπομπής (προτείνεται license-free ISM band πχ 434MHz ή 868Mhz)

Μπορείτε να δοκιμάσετε τη λήψη με κάποιο άλλο SDR receiver κι ενός λογισμικού όπως το GQRX ή SDR# κ.α.




















 
και μια δοκιμή αναμετάδοσης (transponder):














λινκ: https://www.rtl-sdr.com/tag/rpitx/

Σάββατο, 15 Απριλίου 2017

Getting started with MSP430 LaunchPad

Το MSP430 LaunchPad αποτελείται από μια μεγάλη σειρά development board που είναι βασισμένα σε μικροελεγκτές της Texas Instruments (TI) και τα οποία παρέχουν πολλαπλά χαρακτηριστικά και σίγουρα δεν αποτελούν "ακόμη ένα Arduino". Παρακάτω, παρουσιάζω συνοπτικά τι χρειάζεται για να προγραμματίσουμε σε ένα MSP430 (development toolchain):


Ξεκινώντας από τα βασικά, το IDE...

Τo Code Composer Studio, είναι ένα ολοκληρωμένο εργαλείο ανάπτυξης, βασισμένο στον Eclipse, με λειτουργίες debug, simulator, energy trace, κ.α.


Εναλλακτικά, υπάρχει το Energia, το οποίο είναι βασισμένο στο γνωστό μας Arduino IDE.


και το MSP430-GCC, open-source command-line compiler, debugger and firmware flashing tools.



Για τον προγραμματισμό, χρησιμοποιούμε C/C++ ή την πιο "απλοϊκή" Wiring, αν γράφουμε κώδικα στο Energia.

TI Ε2Ε Community, η κοινότητα είναι εκεί και μας βοηθά, δίνοντας απαντήσεις σε προβλήματα sw/hw και παρέχοντας γενικότερα υποστήριξη.


Γράφοντας κώδικα, Blink.c:



Debug(flashing) MSP430:



Testing MSP430:


Σχετικά λινκ:
Getting Started with Texas Instrument's LaunchPad (video)
Texas Instruments (TI) Microcontrollers (mcu)
c programming for MSP430
Energia projects
MSP430 projects on Hackaday
MSP430 projects on Hackster

Δευτέρα, 26 Σεπτεμβρίου 2016

LSM303DLHC 3-axis Accelerometer and Magnetometer

Το LSM303DLHC είναι ένα επιταχυνσιόμετρο (accelerometer) και μια ψηφιακή πυξίδα (magnetometer).


Μπορείτε να το βρείτε σε module, διαθέσιμο στο ebay και για τη σύνδεση με το Arduino χρησιμοποιείται ο δίαυλος I2C (SDA, SCL), τροφοδοσία +5V και GND. Με τη χρήση του, μπορείτε να δημιουργήσετε ενδιαφέροντα, διαδραστικά project. Για παράδειγμα, με χρήση του κώδικα για Arduino και Processing, δημιουργούμε μια "ψηφιακή πυξίδα" που μας βοηθάει να βρούμε την κατεύθυνση του μαγνητικού Βορρά της Γης.



Σχετικό βίντεο:


Σχετικά λινκ:
Pololu - LSM303DLHC 3D Compass and Accelerometer Carrier
Instructables - Arduino / Processing - SIX AXIS GYRO & ACCELEROMETER
Instructables - Night sky explorer
Adafruit Learn - LSM303

Tilt Angle Sensor



Ένας Tilt Sensor ανιχνεύει, μηχανικά, τον κάθετο ή οριζόντιο προσανατολισμό (σε ένα εύρος γωνίας ~15°).



Με το Arduino συνδέεται σε ένα Digital pin και GND*. Αν και δεν έχει λεπτομερή ακρίβεια όσο ένα επιταχυνσιόμετρο (accelerometer), πολύ εύκολα και με ένα μικρό κομμάτι κώδικα, μπορεί να δοκιμαστεί η λειτουργία του με ένα LED:
//Sparkfun tilt sensor simple sketch code with debouncing

// these constants won't change:
const int ledPin = 13;      // led connected to digital pin 13
const int tiltSensor = 2; // the piezo is connected to analog pin 0

// these variables will change:
int sensorReading;      // variable to store the value read from the sensor pin
int ledState = LOW;       // variable used to store the last LED status, to toggle the light
int tiltState;            // the current reading from the input pin
int lastTiltState = HIGH; // the previous reading from the input pin

long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {
 pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT
 pinMode(tiltSensor, INPUT); // declare the tiltSensor as as INPUT
}

void loop() {
  // read the sensor and store it in the variable sensorReading:
  sensorReading = digitalRead(tiltSensor);    
  
  // check to see if the sensor was tilted
  // (i.e. the input went from HIGH to LOW), and you've waited 
  // long enough since the last change to ignore any noise:  

  // If the tilt changed, due to noise or tilting: 
  if (sensorReading != lastTiltState) {
    // reset the debouncing timer
    lastDebounceTime = millis();
  } 
   if ((millis() - lastDebounceTime) > debounceDelay) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:
    
    // if the button state has changed:
    if (sensorReading != tiltState){
      tiltState = sensorReading;
      
    // if the sensor reading is low
      if (sensorReading == LOW) {
        // make the status of the ledPin to go on:
        ledState = HIGH;   
        // update the LED pin itself:        
        digitalWrite(ledPin, ledState);
        // dalay the LED on for one second:
        delay(500);
      }
      // otherwise if it is high
      else if (sensorReading == HIGH){
        // make the status of the ledPin to stay off:
        ledState = LOW;
        // update the LED pin itself:
        digitalWrite(ledPin, ledState);
      }
    }
   }
  // save the reading.  Next time through the loop,
  // it'll be the lastButtonState:
  lastTiltState = sensorReading; 
  // delay to avoid overloading the serial port buffer:
  delay(100);  
}
Μερικά στιγμιότυπα:



Σχετικά λινκ:
Sparkfun - Tilt Sensor
Arduino.cc Tutorial - Debounce

* Η σύνδεση μόνο με Digital pin και GND, επαφίεται στην ύπαρξη των ενσωματωμένων pull-up resistor του Arduino, σε κάθε άλλη περίπτωση, θα έπρεπε να προσθέσουμε μια σύνδεση με τα +5V μέσω μιας αντίστασης pull-up.