Personal Primer Project
All stuff associated to digital primer project.
Gestaltung Protokolen
Design protocols for Your work.
Building a Cafeteria Display in less than an hour
Hardware prerequisities: Raspberry 3B (3B+ if You want Your box to be supplied by Power-over-Ethernet), an >4GB SD CARD, HDMI cable, HDMI screen.

On Your linux host, do 

wget https://downloads.raspberrypi.org/raspbian_latest

Don't forget to unzip the file

unzip raspbian_latest

You should get a file with a name such as 2018-06-27-raspbian-stretch.img as an output. This filename Thou shalt use as a value of the if parameter of the dd command below.

Stick the new SD card into the host machine, find out its block device name (it will most probably appear as something like mmcblk0 at the bottom of the dmesg command), You will used this block device name, prefixed with /dev/, as a an of parameter of the command which allows You to copy the OS image to Your SD card ::

dd bs=4M if=raspbian_latest of=/dev/mmcblk0 conv=fsync

The copy will take few minutes, so go make Yourself a tea, sing a mantra or simply reflect about what You are doing just now, and what will be done in an hour or two.

When all is finished without a trouble (it should) You can check whether all partitions have been successfully created by ejecting and reinserting the SD-card adapter from Your host machine. Two partitions should automount, and having them already mounted, You can start configuring system even before actually starting PI.

You can, for example, prepare Your PI for its service as a component in a vertically (portrait, not landscape) oriented kiosk display, by adding the line

display_rotate = 3

then eject the SD card from the host system, put it into PI, plug the PI to the powersupply, connect keyboard, mice, HDMI screen, go through the main config (do not forget to set up at least reasonably solid password which You will not forget during the night !).

Launch terminal and install the ultra-fast openbox browser by executing


sudo aptitude install openbox obconf obmenu 


and then make a openbox config file with 

mkdir -p ~/.config/openbox && cp /etc/xdg/openbox/* ~/.config/openbox


Then edit the autostart to openthe browser at boot


nano ~/.config/openbox/autostart


remove all the code and past this in:

# Autostart script

#will sleep to make sure everything else loads
sleep 5s && midori --inactivity-reset=120 -e Fullscreen --app=https://LINK-TO-YOUR-APP


that will make it run with fewer options auto resetting after 2 minutes inactivity.


Building a Pi Narrator
Hardware prerequisities:

Raspberry 3B, an >=16GB SD CARD, seeded respeaker 4-mic array HAT, voltcraft 2xUSB 5V-output 8000mA solar battery, USB2microUSB cable, speaker or headphones

host machine ideally running Linux

Setting up Your headless PI and Respeaker drivers

On Your linux host, do 

wget https://downloads.raspberrypi.org/raspbian_lite_latest

To download the "minimalist" variant of the Raspbian OS. Don't forget to unzip the file

unzip raspbian_lite_latest

You should get a file with a name such as YYYY-MM-DD-raspbian-stretch-lite.img as an output.

This filename Thou shalt use as a value of the if parameter of the dd command below.

Stick the new SD card into the host machine, find out its block device name (it will most probably appear as something like mmcblk0 at the bottom of the dmesg command), You will used this block device name, prefixed with /dev/, as a an of parameter of the command which allows You to copy the OS image to Your SD card ::

dd bs=4M if=YYYY-MM-DD-raspbian-stretch.img of=/dev/mmcblk0 conv=fsync

The copy will take few minutes, so go make Yourself a tea, sing a mantra or simply reflect about what You are doing just now, and what will be done in an hour or two.

When all is finished without a trouble (it should) You can check whether all partitions have been successfully created by ejecting and reinserting the SD-card adapter from Your host machine. Two partitions should automount, and having them already mounted, You can start configuring system even before actually starting PI.

Let's say that after automount, the rootfs of PIs SD card is mounted at /media/YourBaseStationUserNameHere/rootfs

Then You can start making Your Narrator to be ultra-autarch and low consumption by disabling the HDMI and ACT LEDs by adding these lines

# Disable HDMI

/usr/bin/tvservice -o

# Disable ACT LEDs
sudo sh -c 'echo none > /sys/class/leds/led0/trigger'
sudo sh -c 'echo none > /sys/class/leds/led1/trigger'
sudo sh -c 'echo 0 > /sys/class/leds/led0/brightness'
sudo sh -c 'echo 0 > /sys/class/leds/led1/brightness'

to the end of PI's /etc/rc.local file (e.g. You can do it in VIM of Your host machine by running vim /media/YourBaseStationUserNameHere/rootfs/etc/rc.local), just above the exit 0 line.

#Later, when all is well setup, You could be even more radical and want to disable both Ethernet adapter as well as USB drivers, You can put
#echo 0x0 > /sys/devices/platform/soc/3f980000.usb/buspower
#into PI's rc.local

Even more importantly, You can turn off WIFI on a very basic level by running the command
echo "dtoverlay=pi3-disable-wifi" >>  /media/YourBaseStationUserNameHere/boot/config.txt

Enable the SSH by creating a file "ssh" on PI's boot partition

touch /media/YourBaseStationUserNameHere/boot/ssh

It is better to do this things directly from the base station because if ever You would like to do it on a running PI, You would have to remount the boot partition in a readwrite mount which is a minor hassle.

Ok, that's it, unmount the SD card from the base station and put it into the PI.

Start it by connecting the Powerbank with the PI with microUSB cable, locate PI's IP address on Your network

sudo nmap -sP 194.95.XXX.0/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip}'

You obtain the IP address to which You connect through SSH

ssh pi@IP-ADDRESS-YOU-OBTAINED-IN-PREVIOUS-STEP

default password should be raspberry. Change it immediately by running (already on Your PI, i.e. connected through SSH):

passwd

And now, let the fun begin.


apt install git
git clone https://github.com/respeaker/seeed-voicecard cd seeed-voicecard sudo ./install.sh sudo reboot

#test recording on ReSpeaker 4-mic
#It will capture sound on AC108 and save as helloworld.wav
arecord -Dac108 -f S32_LE -r 16000 -c 4 helloworld.wav
#plug Your headphones in PI's audio out and test it
aplay helloworld.wav

Not bad, hm ?

Making of a digital education artefact #1
Personal Primer (digitale Fibel, fantastische Fibel u.s.w.) is a digital artefact aiming to enrich narrative, mathematical and musical intelligence of a Grundschule pupil. It instantiates 23 attributes divided into...
Who am I ?
  • daniel@udk-berlin.de
  • 36 years, Slovak by origin, European by choice
  • Bc. in Humanities (Charles University in Prague, CZ) & Bc. in Linguistics (Universite de Nice Sophia-Antipolis, FR)
  • certified to use Feuerstein's cognitive Instrumental Enrichement 1 and 2 methods
  • Master in Complex Systems : Natural and Artificial Cognition (Ecole Pratique des Hautes Etudes, Paris, FR)
  • Double PhD. :: Cybernetics (Slovak University of Technology, SK) and Psychology (Universite Paris 8) defended with the Thesis "Evolutionary models of ontogeny of linguistic categories" - c.f. http://wizzion.com/PP.pdf )
  • wizzion.com UG haftungsbeschränkt (now in hibernation)
  • UdK Medienhaus IT Admin between december 2014 and july 2018
  • ECDF / UdK Digital Education W1 professorship since 1.18.2018
  • married, 2 daughters
misc.

    • developmental psycholinguistics
    • child - computer interaction
    • constructivist theories of learning and intelligence
    • cognitive enrichment and cognitive impoverishment
    • child - computer interaction
    • machine learning & machine teaching ("Can machines teach?")
    • machine morality & roboethics
    • natural language processing & computational rhetorics
    • history of ideas and technologies
    • digital diversity, open source (e.g. Linux) and maker movement
    • conservative techno-optimist
Digital Education @ UdK
Three topics of theoretical focus :
  1. Definition of Digital Education ("education-of" or "education-with" ?)
  2. Evaluation criteria for e-didactic tools, media and methods
  3. Parent participation in digital education

Two topics of PRAXIS :
  1. Evaluation and extension of "Computer Science Unplugged" curricula
  2. fibel.digital
Fibel :: Architectural primitives
Hardware is Raspberry Pi, OS is Raspbian which after booting automatically logs in the user fibel whose .bashrc specifies to launch xinit whose .xinitrec specifies to run chromium
Frontend is running in chromium which loads index.html which loads all the rest.

Interaction between backend services / sensors and frontend takes place by means of websockets. Every backend service pipes it outputs into pipes located in /dev/fibel, these pipes are created by bunch of gwsocket-daemons launched at startup, config file for service2port associations is in /etc/fibel/sockets.

All necessary frontend code for dealing with sockets is in js/sockets.js
Hacks and Tricks
Some useful know-how for creation of Your own digital Primer.
Session 1 - Primer Properties
Of main properties of the Primer, motivation behind them and means how to implement them
Links and Mirrors
::


Interface directives
LEFT (north, south) :: back in browser history
RIGHT (south, north) :: forward in browser history
DOWN (east, west) :: user info
UP (west, east) :: activity info
AIRWHEEL :: zoom 
Session 2 - Constraints
Of constraints, their usefulness and influence they exerce on design and designers of the Primer artefact
Session 7 :: The minimalist principle
Three references

  • fibel.digital

  • bildung.digital.udk-berlin.de

  • Neal Stephenson - The Diamond Age - Or, a Young Lady's Illustrated Primer

Recordings
What You hear now is just a dim reflection of what You'll hear then.
Session 8 :: Entwurf
  • 17.1. Entwurf
  • 24.1. Imprint
  • 31.1. Format
  • 7.2. Cybertext
  • 14.2. Fibel
Digitale Fibel :: Project Participant Interaction Space 
Daniel :: Hello world !
Gero: hi
Akif:: Hey everyone! (:

Templates
Initial digital primer templates.
Making of a digital education artefact #2
Make-Your-Own-Device (M.Y.O.D) and upcycling approaches will be combined to attain our common goal.

Keywords: digital artefacts, raspberry PI zero, upcycling, make-your-own-device, creativity, touchless man-machine interaction, zone of proximal development, electronic ink, algorithmic drum circle
MODEA #2 Program
Date Topic
11.4 Introduction
18.4 Art & Artefacts
25.4 Tools & instruments
2.5 Material 
9.5 Modules and components
16.5 Making the Itty Bitty Beat Box
23.5 ECDF visit - Wilhelmstrasse 67
30.5 NO COURSE (Christihimmelfahrt)
6.6 Format 
13.6 Shell
20.6 Berlin Open Lab - Einstein Ufer UdK
27.6Optimizing & testing
4.7 Goal
fibel.digital :: Phase 0 :: Permutations
Prof. Dr. Daniel D. Hromada (ECDF Juniorprofessor for Digital Education) and Nikoloz Kapanadze (Kunst und Medien; Tutor)
 
We present multiple digital artefacts which emerged first stage of construction of a digital Primer. These include: touchscreen&HTML5-based prototype; e-ink screen (recently broken) with touchless sensing embedded in an upcycled old book; and OID-enriched paper page from the Primer "Wir Kinder vom Zirkus Palope". 
 
Aside this, we'll present some additional digital artefacts exploiting the modularity and extensibility of Raspberry Pi technology: Make Your Own Instrument kits, touchless PONG-game, speak2listen headphones and a touch-the-plant botanics education setup. 

 
Hardware
                                               Devices           Office          Daniel    Nikoloz         Georgy    Students    
Pi Zero w                                                        1
Pi Zero                                       1
Raspi 3B+                                  2                    
Raspi 4B+                                  2                     2
Raspi 3A+                                  2                    
Respeaker 4mic                                               2
Respeaker 2mic                                                                     1                                ?
Phat Dat                                                         1
Speaker Phat                                                  1
Witty pi small    2                       1                     1
Witty pi big                                                      2
Inky Phat                                                        1
Grove Sound                                                   1
Grove Ultrasound                                             1
Grove Gesture                          9?
Raspicam                                 1                     1                    1
PITFT                                                              1
Resistive HDMI                         1
Raspi B+                                  1                     1
Phat Stack                               1                      1
Skywriter                                 1                     1
E-ink                                       1
Capacitive HDMI                                              2
Strompi                                                          1
The Slate                                1 MISSING
Raspberrypi Charger               1 MISSING
E-ink 6 inch                             4
E-ink 9 inch                             2                      1 +1 BROKEN
E-ink 4.3 UART                        2                                                                                        1

Main principles

  1. M.Y.O.D. :: Make Your Own device

  2. Upcycle !

  3. Explore the "adjacent possible".

  4. Uniqueness and not mass production.

Session 5 :: Modules and components

  • What is modularity ?

  • What are modules ?

  • What are advantages of a modular system ?

  • What are disadvantages of a modular system ?

Overall Entwurf
WiSe 2018/2019 Bootstrapping & exploring
SoSe 2019 Playing, specifying, defining
WiSe 2019/2020 E-paper
SoSe 2020 Machine learning, speech technologies, handwriting recognition
WiSe 2020/2021 Testing & optimizing
SoSe 2021 Deploying

WiSe 2021/2022
???
Handouts
Some articles related to our course.
Session 2 - Art & Artefact
Before doing the theory let's test our paper airplanes!
mutantC

https://mutantc.gitlab.io/index.html

Over the years we’ve seen the Raspberry Pi crammed into almost any piece of hardware you can think of. Frankly, seeing what kind of unusual consumer gadget you can shoehorn a Pi into has become something of a meme in our circles. But the thing we see considerably less of are custom designed practical enclosures which actually play to the Pi’s strengths. Which is a shame, because as the MutantC created by [rahmanshaber] shows, there’s some incredible untapped potential there.

The MutantC features a QWERTY keyboard and sliding display, and seems more than a little inspired by early smartphone designs. You know, how they were before Apple came in and managed to convince every other manufacturer that there was no future for mobile devices with hardware keyboards. Unfortunately, hacking sessions will need to remain tethered as there’s currently no battery in the device. Though this is something [rahmanshaber] says he’s actively working on.

The custom PCB in the MutantC will work with either the Pi Zero or the full size variant, but [rahmanshaber] warns that the latest and greatest Pi 4 isn’t supported due to concerns about overheating. Beyond the Pi the parts list is pretty short, and mainly boils down to the 3D printed enclosure and the components required for the QWERTY board:  43 tactile switches and a SparkFun Pro Micro. Everything is open source, so you can have your own boards run off, print your case, and you’ll be well on the way to reliving those two-way pager glory days.

We’re excited to see where such a well documented open source project like MutantC goes from here. While the lack of an internal battery might be a show stopper for some applications, we think the overall form factor here is fantastic. Combined with the knowledge [Brian Benchoff] collected in his quest to perfect the small-scale keyboard, you’d have something very close to the mythical mobile Linux device that hackers have been dreaming of.


Keyboards:

https://hackaday.io/project/158454-mini-piqwerty-usb-keyboard

https://hackaday.com/2019/04/23/reaction-video-build-your-own-custom-fortnite-controller-for-a-raspberry-pi/


Main communication channel
https://kastalia.medienhaus.udk-berlin.de

MODEA #2 knot 4162 (i.e. https://kastalia.medienhaus.udk-berlin.de/4162 )
Session 4 - Material & Components
Let's start making it real.

Anna - Water
Akif - Leather, Neopren
Kohei - Metal (Aluminium)
Gero - Displays  
Daniel - paper
Nik - wood, paper, cardboard, fabric, tin

What is nice:
Ceramic, Epoxy, Stones, Marble, Resin, Fibers

Nobody mentioned:
Plastic, Concrete,  

Session 6 :: Format

  • In what domains of human activity do we speak about formats ?

  • In these disciplines, what kinds of formats do we know ?

  • Can we imagine other types of formats ? What are their advantages ? What are their disadvantages ?

  • What kinds of formats should we use ?

Connecting a Bluetooth speaker to a Raspberry Pi Zero W running Raspian Stretch Lite

  1. sudo apt-get update && sudo apt-get dist-upgrade

  2. sudo apt-get install bluealsa

  3. sudo service bluealsa start

  4. Switch on your bluetooth device

  5. sudo bluetoothctl

  6. scan on

  7. pair XX:XX:XX:XX:XX:XX (replace the XXXXX with your device ID)

  8. trust XX:XX:XX:XX:XX:XX

  9. connect XX:XX:XX:XX:XX:XX

  10. exit

  11. aplay -D bluealsa:HCI=hci0,DEV=XX:XX:XX:XX:XX:XX,PROFILE=a2dp /usr/share/sounds/alsa/*

MODEA #2 - Forum
This is the place where we should start communicating.
Validation
You'll get the signature only when actively participating on creating of an artefact which DOES something, e.g.


  • digital primer

  • music instrument for algorithmic drum circle

  • garden guardian

  • digital primer

  • light source

Session 3 - Tools and Instruments
Nik - soldering iron
Daniel - screwdriver
Anna - pen
Kohei - measure
Akif - Swiss knife
Gero - pen
Respeaker 2 Bluetooth Alsa stream
arecord -Dac108 -f S32_LE -r 16000 -c 2 om.wav & sleep 1 ; aplay -c 2 -D bluealsa:HCI=hci0,DEV=FC:58:FA:BF:4E:0E,PROFILE=a2dp om.wav

 
Contacts
Prof. Dr. Dr. Daniel Hromada


  • daniel at udk-berlin.de

  • Room 313, Medienhaus

  • Sprechstunden 12:30 - 13:30


Tutors & SHK


  • Astrid Kraniger a.kraniger@udk-berlin.de

  • Nikoloz Kapanadze nikoloz-kapanadze@medienhaus.udk-berlin.de

AE49SOSERundgang R311 Artefact List



Artefacts presented at AE49SOSERundgang in R311 of UdK's Medienhaus

Credits: Nikoloz Kapanadze, Astrid Kraniger, Kohei Kimura, Akif Mehmet Sari, Ozcan Ertek, Anna Petzer

Coordinator: Prof. Dr. Dr. Daniel Devatman Hromada (ECDF Juniorprofessor for Digital Education)
Hardware
                                               Devices           Office          Daniel    Nikoloz         Georgy    Students    
Pi Zero w                                                        1
Pi Zero                                       1
Raspi 3B+                                  2                    
Raspi 4B+                                  2                     2
Raspi 3A+                                  2                    
Respeaker 4mic                                               2
Respeaker 2mic                                                                     1                                ?
Phat Dat                                                         1
Speaker Phat                                                  1
Witty pi small    2                       1                     1
Witty pi big                                                      2
Inky Phat                                                        1
Grove Sound                                                   1
Grove Ultrasound                                             1
Grove Gesture                          9?
Raspicam                                 1                     1                    1
PITFT                                                              1
Resistive HDMI                         1
Raspi B+                                  1                     1
Phat Stack                               1                      1
Skywriter                                 1                     1
E-ink                                       1
Capacitive HDMI                                              2
Strompi                                                          1
The Slate                                1 MISSING
Raspberrypi Charger               1 MISSING
E-ink 6 inch                             4
E-ink 9 inch                             2                      1 +1 BROKEN
E-ink 4.3 UART                        2                                                                                        1

Connecting a Bluetooth speaker to a Raspberry Pi Zero W running Raspian Stretch Lite

  1. sudo apt-get update && sudo apt-get dist-upgrade

  2. sudo apt-get install bluealsa

  3. sudo service bluealsa start

  4. Switch on your bluetooth device

  5. sudo bluetoothctl

  6. scan on

  7. pair XX:XX:XX:XX:XX:XX (replace the XXXXX with your device ID)

  8. trust XX:XX:XX:XX:XX:XX

  9. connect XX:XX:XX:XX:XX:XX

  10. exit

  11. aplay -D bluealsa:HCI=hci0,DEV=XX:XX:XX:XX:XX:XX,PROFILE=a2dp /usr/share/sounds/alsa/*

Respeaker 2 Bluetooth Alsa stream
arecord -Dac108 -f S32_LE -r 16000 -c 2 om.wav & sleep 1 ; aplay -c 2 -D bluealsa:HCI=hci0,DEV=FC:58:FA:BF:4E:0E,PROFILE=a2dp om.wav

 
Pi BareBone links
https://github.com/BrianSidebotham/arm-tutorial-rpi

https://github.com/dwelch67/raspberrypi

https://github.com/adamransom/bare_metal
Fibel Compilation
#libfibel.o compilation
cd /home/fibel/IT8951
gcc -shared -Wall IT8951.c miniGUI.c AsciiLib.c -o libfibel.o -lbcm2835

#fibel service compilation
gcc fibel_small.c /home/fibel/IT8951/libfibel.o -o ../fibel
fibel folder structure
~/fibel/IT8951 C - source for atrament (E-ink) display
~/fibel/mic_hat Python - source for ReSpeaker 2 Mic Array
Python virtualenv
sudo pip install virtualenv
virtualenv <NAME OF ENV>
source <NAME OF ENV>/bin/activate

# do pythoning

deactivate
Principles of Operation
0) We are a team aspiring to attain the Goal. The Goal is to be specified at the 1st meeting.
1) We work in two-week cycles. Each cycle is divided into two week-long subcycles.
2) Each cycle is initiated by a meeting ("the Gathering") where all team members participate in person.
3) The first subcycle, the first week, is the week when common team work takes place. That means that asides the Gathering, at least two additional 5-hour sessions of common hacking and exchange take place.
4)  The second subcycle, the second week, is the consolidation week wherein everybody does his work alone. 
5)  During the second week one aims to solve the tasks defined at the end of the first week.
6)  The task is defined as a "challenge or problem where a solution is imaginable and/or reachable" within a week time span


  • every team member gives (him|her)self one task which can be solved within a one week span

  • every team member gives one task to the project integrator

  • project integrator attributes one task to scientific counselor


In a situation where a team is composed of 1 project integrator (PI : Daniel), 1 scientific counselor (SC: Georgy), 1 engineer (ENG: Nik) and 1 data-collector (DC: Astrid), tasks are therefore distributed as follows:


  • PI: 4 tasks 

  • SC: 2 tasks

  • ENG & DC: 1 task


7) At the beginning of the Gathering, everybody presents not only outcome of his efforts to solve the tasks but, more importantly, discusses problems & drawbacks which occured. Also, the failure to accomplish the task does not problem as far as one learned something in the process (e.g. that the imaginable solution is not reachable under certain constraints).
 
1
1) We work in two-week cycles. Each cycle is divided into two week-long subcycles. 
Cycle 0 :: Tasks
1st meeting: Monday 9th September, 11:30 AM, R313 Kleistpark

Daniel: 
    • activation of the second copy
    • generation of new Fibel content after boot up (will most probably use HTML templates in combination with electron to do so)
    • check whether the APA 102 can be updated when e-paper sleeps
    • deploy "YES / NO" boolean speech-recog switch on a PiZero prototype, ideally using one of these technologies https://github.com/gooofy/zamia-speech
Georgy:
    • deploy "YES / NO" boolean speech-recog switch on a PiZero prototype, ideally using one of these technologies https://github.com/gooofy/zamia-speech
    • make the wittyPi boot the prototype every hour for 10 minutes
Nik:
    • first LORA packet sent out from Zero
Astrid:
    • recordings of most frequent German words ( their list is here: https://kastalia.medienhaus.udk-berlin.de/community//knot/5325 )
Most frequent German words
IN ROMANEN DES DUDENKORPUS
RANGDIE HÄUFIGSTEN SUBSTANTIVEDIE HÄUFIGSTEN ADJEKTIVEDIE HÄUFIGSTEN VERBEN
1.Mannander...sein
2.Fraukleinhaben
3.Handgroßwerden
4.Tagerst...können
5.Augegutsagen
6.Zeitaltsehen
7.Jahrganzmüssen
8.Kopflangwollen
9.Gesichtletzt...kommen
10.Mutterneugehen
11.Vaterweitmachen
12.Kindvielgeben
13.Hauseiniglassen
14.Blickjungsollen
15.Lebennahestehen
16.Menschgeradewissen
17.Türeigen...fragen
18.Wortspättun
19.Stimmeeinzignehmen
20.Herrliebhören
PP Useful Links
Sound stuff

https://blog.francoismaillet.com/epic-celebration/ , especially the section "Hooking up to the live audio stream"

ML board
https://coral.withgoogle.com/products/

 
Schoolscript OTF font
from https://www.skolskepismo.sk
ERC DHABL
Knot related to European Research Council Starting Grant proposal.

2000 char description

It is generally accepted that formation of certain habits in an early age can have a significant impact on development of cognition, psychology and physiology of human children. Certain among such habits may lead to increase in one's personal integrity and social well-being in adulthood, other may decrease it. We call the former ones "benign" habits.


Within our project, we define the basic literacy (BL) - e.g. ability to read a book and write with a pen - as a bundle of such "benign" habits. Basic literacy is not an innate faculty, but rather a culturally determined skill whose acquisition can be fostered or inhibited by child's exposure to appropriate resp. inappropriate social, pedagogic and instrumental context.


Growing amount of evidence indicates that structural and functional design of dominating digital media (DM) - most notably smartphones- leads to overstimulation of dopaminoergic system which can influence formation of associative pathways and induce emergence of strong sensorimotric habits.


Given this, it may be hypothesized that acquisition or reinforcement of smartphone-related habits interferes with acquisition of habits relative to acquisition of basic literacy.


Surprisingly, in spite of a big market offer of different devices and "apps" pretending to promote acquisition of BL, there is currently little empiric research available, addressing this concrete question:




  • Does usage of DM by pre-school children and elementary school pupils positively or negatively interfere with their acquisition of BL ?




A primary objective of our ERC project is an empiric one: to answer the above question by a multi-factor cohort study. Secondary objective of our project is to explain the empiric results in terms of "embodied cognition" paradigm. Lastly, the constructive objective of the project is to develop cognitively sound methods and instruments whose application could minimize the negative impact of DM on acquisition of BL and maximize the positive one.

GrantStuff

State of the Art


purpose – evaluation of sensorimotoric habits in children..........


there are two strategies one could take to tackle this problem:


  • Software Approach

  • Hardware Approach


Software Approach 


Choosing this strategy entails developing software that would run on the devices these kids are interacting with:

the advantages to this approach is that there is no need to manufacture a new gadget and it facilitates large scale data collection remotely.

However the software solution would have to support an extremely large codebase – across multiple form factors (smartphones, tablets, [PC]) as well as multiple operating systems (android, ios, [linux, macos, windows]). 

In addition to that such a software would require deeper integration with these device on the operating system level – (loging keystrokes, touch info, gather data about background processes), such logging tasks are very platform specific and would differ significantly not only from os to os but also across versions of the os. This is especially true for android which accounts for the vast portion of touch based devices and exhibits a great amount of  version fragmentation. It would take a lot of effort to deploy such a system across these devices in a democratic fashion ex: 


children from with a poorer family background would be more likely to have an outdated devices and would run a higher risk of being excluded – as it would only be logical to prioritize newer version of  operating systems during the development stages


In addition to that to able to deploy such software on multiple devices efficiently it would have to go through the proper distribution channels for said operating systems (play store, app store). This would impose additional restrictions due to said os-s permission management systems – the software has to be able to log information and interactions that occur outside of its “jurisdiction”

all of this is extremely inconvenient in a setting of field work, even if the software were to satisfy all of the above criteria – for an “evaluation event” to take place lots of effort and preparation – software has to be installed across

in addition to that since all of these mainstream devices are built with an “always-online” philosophy it would require extra care (since we're dealing with underage data) when designing said software to make encryption and privacy watertight to avoid breaches of information. 

In general our philosophy is to avoid being reliant on web services – as much data processing and collection should occur locally. Going with the software approach gets too many external factors and third parties involved which we want to avoid.


Hardware Approach


sensorimotoric habits that we are interested in evaluating require physical motion so external tracking devices that would be good at detecting and analyzing said motion would be a viable solution. Such a tracking device would be able to serve as an input method further down the line considering it is able to identify interactions reliably. This is a nice feedback loop. 

There are two sub approaches in the hardware category:


  • Device Mounted Tracker (DMT)

  • Wearable Tracker (WT)


If it is able to externally correctly identify touchscreen interactions – 

it can work as a standing for the touchscreen.


A device mounted tracker would be able to detect taps and swipes from the child’s interaction with the device using an accelerometer that listens to the vibrations in the body of the smartphone as a it is being tapped on. such a device would have to be less compact than it’s wearable counterepart. using the back of an average smartphone as reference. in theory it would allow for longer service time between recharges, potentially higher data transfer rates (the benefits of this are questionable as the data we’re collecting is of negligible size), but most importantly it could be equipped with a faster processor that would be able to perform more complex statistical analysis tasks locally, in  the field instead of after data transfer to the evaluator’s computer. increased processing power and battery capacity would also allow for optical detection methods potentially allowing us to collect more information on what the smartphone is being used for. (a bit out of scope of this project) such a device would also allow for more sensors to be added to it down the line making it somewhat modular as opposed to making modifications to a wearable which would likely require redesign of the entire device if new functionality were required. 


the material requirements are also lower - a 3d printed case would suffice. a device mounted tracker would have to be slim and ergonomic, but it wouldn’t have to be comfortable. it wouldn't have to be in prolonged contact with skin. whereas a wearable might need to use softer materials such as silicones and rubbers which have a more complicated manufacturing process, might have to be outsourced and might be less durable.


a wearable device on the other hand would provide much higher resolution motion data. even a 3DoF accelerometer ic mounted in a ring would be able to detect all sorts of finger motion: taps, swipes and various other 3d gestures not just in binary form (“detected swipe up at 10:23:15”) but also the characteristics of these gestures (swipe speed, tap strength, swipe direction, distance from screen, etc.). such a device would also be able to measure eye-finger coordination more generically be evaluating fluidity of motion, gesture shape, etc. information collected from such  ring would also provide valuable insights when tracking the motion of someone writing using traditional media. 


a wearable device would also allow for collection of other biometric data such as heart rate, skin moisture and temperature. to asses agitation for instance. it would naturally be harder to fit multiple sensors inside a ring so a bracelet (decreases accelerometer precision for finger movement), multiple rings, or a ring and bracelet combination.


we are leaning the wearable way. since its motor habit evaluation being closest to the source of motion seems best.


there are several hardware projects that satisfy one or several of the above criteria


tap with us – wearable keyboard. 5 rings for each finger. can track individual accelerations of each finger, responds to taps on hard surfaces, wearable, 5 ring assembly is quite large, could be distracting


kai – gesture tracking bracelet for your palm, tracks individual finger motion(optical?), wearable, about the size of tap, could be distracting


motiv ring - biometric nfc ring, with accelerometers also (needs further research)

State of the art / Existing solutions
DHAS :: HW

tapwithus
leap motion
myoband

DHAS:: Software
what apps ?
Budget stuff
EQUIPMENT
Following equipment is necessary for independent prototyping and production of Digital Habit Assessment Sensors

PCB printing - outsource 100 units + ~50 for prototyping 500 eur
Soldering Station + Heat Gun  - 400 eur
Toaster oven for reflow + modifications - 400eur 
Oscilloscope - 500eur
Various Tools: (knives, screwdrivers, desoldering pump, voltmeter, etc.) - 500eur
 ??? - if we need to make shells for these devices maybe a vacuum forming machine or a 3d printer? or maybe a setup for pouring silicon? ~ 1000eur

Consumables 
(wires, solder, solder paste, connectors, etc.) - 500 eur
(Sensors, processors, batteries, components) - 2000 eur (for prototyping)
(Sensors, processors, batteries, components) - ??? - (I would say somewhere between 30eur to 100eur per device - for how i picture it in my mind (offline, wearable, accelerometer))
(Materials for shells) - hard to say - depends on final design too much


PhantomJS

PhantomJS is a headless web browser scriptable with JavaScript. It runs on Windows, macOS, Linux, and FreeBSD.

Using QtWebKit as the back-end, it offers fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

The following simple script for PhantomJS loads Google homepage, waits a bit, and then captures it to an image.

var page = require('webpage').create();
page.open('http://www.google.com', function() {
    setTimeout(function() {
        page.render('google.png');
        phantom.exit();
    }, 200);
});

https://kastalia.medienhaus.udk-berlin.de/data/5330.phantomjs_2.1.1_armhf.deb
LORA
Circuitpython - https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/installing-circuitpython-on-raspberry-pi

Lora RFM69HCW - https://learn.adafruit.com/adafruit-radio-bonnets/rfm69-raspberry-pi-setup

pyhton 3 -  sudo apt-get install python3-pip

enable spi+i2c

RPI.GPIO - pip3 install RPI.GPIO

Adafruit-Blinka - pip3 install adafruit-blinka
RFM69 - sudo pip3 install adafruit-circuitpython-rfm69


I2c Devices Have the Same Address
It seems we do not need I2C multiplexers at all. Paste from https://www.instructables.com/id/Raspberry-PI-Multiple-I2c-Devices/

An i2c bus can handle multiple devices, but they should have different i2c addresses. Some i2c devices have jumpers to set other i2c addresses, but many don't. In this case you may use a i2c multiplexer (hardware) to rotate the i2c SDA (Data) and SCL (Clock) or you can create an additional i2c bus or more.

I will create two aditional busses, nl bus 3 and 4

Open the cli and run

cd /boot

sudo nano config.txt

Add the following line of code, preferable in the section where spi and i2c is enabled.

dtoverlay=i2c-gpio,bus=4,i2c_gpio_delay_us=1,i2c_gpio_sda=23,i2c_gpio_scl=24

This line will create an aditional i2c bus (bus 4) on GPIO 23 as SDA and GPIO 24 as SCL (GPIO 23 and 24 is defaults)

Also add the following line to create i2c bus 3

dtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=1,i2c_gpio_sda=17,i2c_gpio_scl=27

GPIO 17 will be the SDA and GPIO 27 will be the SCL for i2c bus 4.

Tipe control X to exit.

Note on the Bus Numbering and order:

Never use bus 0 and 2, it is use for other things in the board like eprom on hats etc

For the April 2019 raspbian release:

You should always start with the highest bus (Bus 4 in this case) in your config.txt and work through to the lowest bus (bus 3).

The lowest bus must always be bus 3

If you need 5 extra busses, the busses must bi in the order of 7,6, 5, 4, 3

This issue on bus order was not there when this Instructable was originally written. It seems like changes was made to the kernel.

Shut down your PI, switch it of. Connect your i2c devices to bus 4 (SDA to GPIO 23 and SCL to GPIO 24) and the other to i2c bus 3 (SDA to GPIO 17 and SCL to GPIO 27).

Switch on the pi.

Run:

sudo i2cdetect -l (Lower Case L)

You will now see that i2c bus 3 and 4 is also listed. Also run:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Now you can use your sensor in your programming language. Remember to specify the correct i2c busses.

Attach is an example for the popular BMP280 Temperature and Pressure sensor. No multiplexer can read 2 BMP280s this fast.

An example of 2 Sensirion SDP 810 sensors is also attach. Again working much faster than the multiplexer I used in the past




2nd grove gesture recognition plugged through re:speaker
#add an i2c-bus 3 into /boot/config.txt
dtoverlay=i2c-gpio,bus=3,i2c_gpio_delay_us=1,i2c_gpio_sda=13,i2c_gpio_scl=12
#attach the 2nd gesture sensor in respeaker's "GP12" grove port
#reboot and check whether You see the sensor attached to 3rd bus (i2cdetect -y 3)
ML on PI Zero
tf and keras installation:

pip3 install https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.8.0/tensorflow-1.8.0-cp35-none-linux_armv6l.whl
pip3 install keras
pip3 install pyaudio
 
Loading model on Pi Zero
model=load_model()  #is too slow!!!
 
faster way to load model from JSON:
 
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
model = model_from_json(loaded_model_json)

model.load_weights("model.h5")
 
Saving model to JSON:
 
model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)
model.save_weights('model.h5')
 
 
Witze
Soll ich Dir ein Witz erzählen ?
PPP Protocol Week 1
Gathering:
Present: all. 
Guest: Alberto deCampo

Gathering Topics:
1) definition of PPP Project's Goal from PI's perspective
2) briefing (PI) concerning Patents, Utility Marks, Designs. output: bilateral touchless interface will be submitted as a utility mark
3) discussion of arbitrairness of interfaces. interface as a language and interface as a signalization system. 

GDNKNXPRMNT: Think about Your 1st Fibel Exercise

Week work & outputs:

Daniel
0) Lost significant part of ERC-STG B2 DHABL project proposal. Project stalled.
1) ge.pl encodes information about position of the correct answer within the Folio
2) tune_bmp.sh recodes Folios to BMPs with significantly smaller size
3) fibel's core recoded from C to C++ . extracts info about correct answer from Folio's name, compares it with user's input. correct logging.
4) problem with gesture_combo at boot potentially resolved by adding i2cdetect into launch.sh ?

Georgy:
Pipeline mic-pyaudio-feat.extractor-NN-OSC is done.
Pyadio callback (fixed)
Mic triger (reduce CPU load)
Feat extractor made with NumPy (reduce number of libraries used in pipeline)
Optimized NN model (sliding conv layers)
OSC output
Whole pipeline works smoothly on Pi B (Pi Zero is too slow)
Train server setup.(many issues... but done)

Issues
Pi Zero has wrong Linux distribution which slows down computation.
Fibel service occupy all CPU resources.
Missing hardware parts (sd card, power cables etc)

TODO
Train model.
Find method to reduce false pos-neg response.
Experiment with hop length/sampleRate for proper response of NN
Setup GPU.
Solve issues (see above) (Daniel, Nikoloz?)


Nikoloz:
1)check out if E-ink communication can be sped up
2)write osc server to interpret commands from georgy's voice recog
3)rewrite gesture.py to send osc messages
4)write oop pseudocode for fibel
5)received compute module & will start exploring
6)started making compute module host schematics

Astrid:
a) Recordings with the new Concept, that was discussed  



2nd CYCLE TASKS:

CHALLENGES:
ENGINEERING :: PiZero + Shakers + Shaker substrate (cardboard or wood)
ENGINEERING :: Solar panel + wittyPi + PiZero charging combo
CODING :: Object Oriented Fibel
DIDACTICS  (modules "sprechen & hören") :: Syllable Imitiation Fibel task.
DATACOLLECTION :: recordings of 21 animal nouns in all cases (singular) + 6 non-transitive predicates (SINGEN, LACHEN, ESSEN, LAUFEN, STEHEN, SITZEN) in 3rd person singular (e.g. "Der Affe lacht.")

Daniel:
1) Success-proportionate Folio batch generator. 
2) Georgy, please attribute me a task
3) Nik please attribute me a task
4) Astrid please attribute me a task

Georgy:
1) Evaluation of bool switch
2) Please attribute Yourself a task (it can be something from CHALLENGES section or something else, but it has to be well-defined)

Nik:
Please attribute Yourself a task (it can be something from CHALLENGES section or something else, but it has to be well-defined)

Astrid:
a) Recordings
b) Design for Utility Mark

Next Gathering:
14.10.AE49 R313 14:00 . Potential guest: Hannes Hoelzl.
classtructure
class excercise{

int size

int wordpertask //could vary from task to task also ???

int time???

int score???

String[size] targetwords

int curenttask

int nloaded

char[][]] image

task[size] tasks

string[wordpertask] words

 

int[4] imgcoords //define

 

 

new excercise(*int targetwords, time???){

this.targetwords = targetwords

this.size = this.targetwords.length()

this.time = time

this.score = 0

this.curenttask = 0

nloaded = 0

image = new file(path+this.targetwords[0]);

epd.upload(image)

async preload({

for (size, i)

image = new file(path+this.targetwords[i]);

epd.upload(image)

words[0] = this.targetwords[i]

words[1] = this.targetword[rand] /*or*/ words[1] = child.words[rand]

this.tasks[i] = new task(i,words,this.imgcoords)

nloaded++

}).start()


 

void nextTask()

if (nloaded>currenttask){

tasks[i].show()

tasks[i].showText() //asuming this avoids expensive epd.upload() call

currenttask++

}

 

void handleanswer(io input){

if(task.answer == input)

increment()

else 

decrement()

nextTask()

}

 

void increment(){

//positive  task-related logic

 

}

 

void decrement(){

//negative  task-related logic

}

 

}

 

 

class task{

int id

int nwords

string[nwords] words

int imgcoords

int answer

 

int[nwords][4] textmargins

 

new task(int id, string[] words, imgcoords){

this.id = id

this.word = words

this.imgcoords = imgcoords

 

}

 

void show(){

epd.show(this.id,imgcoords)

}

 

void maketextmargins(){

for(nwords){

textmargins[i] = get_margins_for_nwords(nwords,i)

}

}

 

void showtext(){

maketextmargins

for(nwords,i){

epd.write(words[i],textmargins[i])

}

}

 

void scramble(){

answer = randsort()

}

 

int randsort(){

//random sort

return correct id

}

 

}

 

class child{

char[???] knownwords //words the child knows

char[???] toknowwords //words toteach

excercise excercise

 

void makeexcercise()

excercise = new excercise(knownwords.choose(), time???) // pick from known words for repetition excercise

//or

excercise = new excercise(toknowwords.choose(), time???) // pick from new words for learning excercise

//or

excercise = new excercise(union(knownwords,toknowwords).choose(), time???) // pick from union of words fot hybrid excercise

 

}
BugFix 0
Halted gesture_combo causes high load in fibel.cpp

Note: in a situation where X pipes into Y, X dies and Y reads stdin in a while loop, X's zombie sends sequences of EOFs and Y's CPU load spikes

gesture_combo dies with following message


[ 1849.859890] i2c i2c-3: sendbytes: NAK bailout.

root@fibel1:/home/fibel# python -u Live/Code/gesture_combo.py | Live/Code/fibel^C

root@fibel1:/home/fibel# python -u Live/Code/gesture_combo.py | Live/Code/fibel

****** IT8951 ******

Traceback (most recent call last):

  File "Live/Code/gesture_combo.py", line 493, in <module>

    g2.init(busid2,0)

  File "Live/Code/gesture_combo.py", line 399, in init

    self.paj7620WriteReg(self.initRegisterArray[i][0],self.initRegisterArray[i][1])

  File "Live/Code/gesture_combo.py", line 407, in paj7620WriteReg

    self.bus.write_word_data(self.PAJ7620_ID, addr, cmd)

  File "/usr/local/lib/python2.7/dist-packages/smbus2/smbus2.py", line 432, in write_word_data

    ioctl(self.fd, I2C_SMBUS, msg)

IOError: [Errno 6] No such device or address


what's more, dmesg reports:


[ 1849.859890] i2c i2c-3: sendbytes: NAK bailout.


It may be the case that 2nd i2c bus has difficulties to initialize when battery voltage is low

Potential bloody-bloody fix Fix:
add attribute active=0 to gesture class
add self.active=1 at the end of gesture.init() method
Initialize the g2 like this


        while g2.active==0:

            try:

                g2.init(busid2,0)

            except:

                sys.stderr.write("i2c bus problem\n")

 


i2c problem

Raspberry Pi: reset external I2C devices (not only I2C)

Electronic, and specially computerized, devices likes to hang from time to time. There are many reasons: software bug, hardware error, voltage drop, interference, too long wire, random incident. I’ve learned this hard way during work on my Raspberry Pi based weather station. From time to time external DTH22 temperature/humidity sensor refused to work. Only solution was to cut power to DHT22 for a second (or less). It was kind of irritating to go the attic, unplug sensor and plug in again. Later on I had similar issues with HD44780 LCD display over I2C bus. Device was hanging and only solution was to cut power. So, I’ve found a solution: as a prevention cut power for a second every 30 minutes with a simple electronic device I’ve called “Power Cutter”.

Raspberry Pi power cutter

What is does? Not much. Long story short, it’s a 3.3V power regulator that when there is no input, it is just providing GND and 3.3V voltage. But when HIGH state is applied on input, it “disconnects” GND and shuts down all devices that are using this GND line. Not only powered via LM2950 3.3V (or LM7833 or any other) linear voltage stabilizer. All using this specific GND line.

LM2950 Raspberry Pi Power Cutter

In my application there is cron job executing simple python script every 30 minutes.

import RPi.GPIO as GPIO
import time
def main():
# GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
GPIO.output(18, GPIO.HIGH)
time.sleep(5);
GPIO.output(18, GPIO.LOW)
GPIO.cleanup()
if __name__ == "__main__":
main()
view rawcutter.py hosted with ❤ by GitHub

Simple and efficient. All external sensors are reseted every 30 minutes. Just in case. Since I stared using this device DHT22 sensor did not hanged even once. And that was the goal.

1st boot
AE49100720:20
1st witty-Pi initiated battery-powered boot into fully functional bimanual modus
Shells and Frames
https://www.thingiverse.com/thing:1344095
Recordings
Tiere
Anweisungen

Bitte wiederhole die Wörter, die Du hören wirst. 


Wenn Du bereit bist das Wort nachzusprechen, dann drücke den Aufnahmeknopf und halte ihn während du sprichst gedrückt. Danach lass den Knopf los.


Bitte ordne das Wort in großen Buchstaben dem entsprechenden Wort in kleinen Buchstaben zu.


Der Sensor der Fibel versteht Handbewegungen.


Eine Handbewegung nach rechts oder links heisst: naechstes Wort, 


Eine Handbewegung vom oberen Rand zum unteren Rand der Fibel heißt: 

zurück zum vorherigen Wort.


Eine Geste von dir zur Fibel hin bedeutet: Ja


eine Kreisbewegung bedeutet: noch einmal wiederholen


Bitte bewege deine Hand in Richtung des gesprochenen Wortes - entweder zum oberen Rand oder zum unteren Rand der Fibel. 

Sounds
Märchen
Fragen
Particles
Ja, Nein and all those little words which do not fit anywhere else.
Miscellanous
Fabeln
ABC Buch

Neues ABC-Buch

 

1790/94

Text:

Neues ABC-Buch mit Kupfern von Peter Haas

von Karl Philipp Moritz

Berlin 1790, bei Christian Gottfried Schöne

2. Auflage 1794


Die farbigen Bildtafeln finden sich in der

Originalausgabe am Ende des Buches. Sie sind in

dieser Version zum zugehörigen Text gestellt.


https://www.hs-augsburg.de/~harsch/germanica/Chronologie/18Jh/Moritz/mor_ab00.html

Music
Antworten
PPP Protocol Week3
Gathering:
Present: all. 

Gathering Topics: 
1) Updates about first 2 weeks outputs *

2) Boards, Modules for the Fibel
    Witty3 was introduced by Daniel, Nikoloz introduced the Raspberry Pi Compute Module                (+Base) and its advantages in contrast to a regular Raspberry Pi:
    reduces Space, suitable for specific task, easier to handle

  -> Discussion of approaches to reduce the size of the fibel board

3) Presentation of Fibeltest with Child, Danger of unwanted bad teaching mentioned

4) Discussion about content & image/sound sources(for training) for Fibel (19th century  
    images,...)
5) Discussion about final programming language (<- question of Nikoloz)


* Week work & outputs, issues:

Daniel: 
First approach to score a childs Fibel input,
Patterns of a Childs Reading behaviour were already recognised in a first test with scoring
Suggestions:  Logs should contain more information in order to analyze better the answer of the child,  Normalizing Scores 

Georgy: Progress on Speechcode , More Training Data required ( "Ja", "Nein")

Nikoloz: Progress on Code...

Astrid: First attempt with Daniels Recording Software half successful


TASKS:


Daniel:
1)  
2) Georgy, please attribute me a task
3) Nik please attribute me a task
4) Send recorded "Ja", "Nein" to Georgy

Georgy:
1) Present Your boolean switch pipeline, comparison with other existing solution (e.g. pocketSphinx) according to a chosen metrics (e.g. F-score) & share the code
2) Please attribute Yourself a task 

Nik:
1) speaker for prototype 0
2) Send recorded "Ja", "Nein" to Georgy
Please attribute Yourself a task

Astrid:
1)Recordings with Daniels improved Recording Code, Send recorded "Ja", "Nein" to Georgy.

Next Gathering:
28.10.AE49 R313 11:30
IMPORTANT (compilation notes)
compile libfibel.o with GCC
gcc -shared -Wall IT8951.c miniGUI.c AsciiLib.c -o ../libfibel.o -lbcm2835

but the fibel app in G++
g++ -g /home/fibel/Live/Code/libfibel.o CPP/fib_cs.cpp -o ./fibel

NeoPixel Ring
https://www.reichelt.de/entwicklerboards-neopixel-ring-mit-12-ws2812rgb-leds-debo-led-np12-p235468.html
PPP IntCom
Re: IT8951

Dear Nik,

great that You started playing with the main hero of this semester ! On Friday I also played with BCM2835_SPI_CLOCK_DIVIDER parameter a little and it helped.

Tuning of BMP format helps as well, of course - please remind me we should discuss this tomorrow (also spent some manhours exploring the issue) - but the main culprit is IMHO the SPI transfer.

However, I think the ultimate hack would be to do something similiar to this https://github.com/waveshare/IT8951/pull/3 , i.e. tune the IT8951HostAreaPackedPixelWrite function

(but beware: if I use that naluhh:perf-opti code on the PiZero setup, it literally freezes the system

D.

P.S. good news: students of Kerstin Hille's drawing class created some beautiful content for us and more deeper collab between us and them (they are next door) seems quite probable

Am 21.10.19 um 02:41 schrieb Nikoloz Kapanadze:

I've been hacking around epaper a little bit.

dug deeper into the library.

I've found that if images are encoded to proper format outside of the library (I've been using a cli tool called imageMagic)

I can pretty reliably display the image (uploading to epaper and displaying) in a bit more than 2sec (2020-2060 microsec)

Idk how it compares to previous speeds but at least it feel just as fast as our current transitions.

The waveshare lib seems to have some extra steps fro handling different types of bmp-s and actually converts them to conform to 8bpp spec. getting rid of all that seems to help. 

I also reliably doubled the spi clock speed. (setting it to the next available speed breaks communications)

will share on tuesday.


circadian test 0
New Session started at Fri 18 Oct 20:00:44 CEST 2019
New Session started at Fri 18 Oct 20:20:41 CEST 2019
New Session started at Fri 18 Oct 20:40:41 CEST 2019
New Session started at Fri 18 Oct 21:00:41 CEST 2019
New Session started at Fri 18 Oct 21:20:40 CEST 2019
New Session started at Fri 18 Oct 21:40:45 CEST 2019
New Session started at Fri 18 Oct 22:00:42 CEST 2019
New Session started at Fri 18 Oct 22:20:41 CEST 2019
New Session started at Fri 18 Oct 22:40:44 CEST 2019
New Session started at Fri 18 Oct 23:00:41 CEST 2019
New Session started at Fri 18 Oct 23:20:42 CEST 2019
New Session started at Fri 18 Oct 23:40:41 CEST 2019
New Session started at Sat 19 Oct 00:00:42 CEST 2019
New Session started at Sat 19 Oct 00:20:41 CEST 2019
New Session started at Sat 19 Oct 00:40:40 CEST 2019
New Session started at Sat 19 Oct 01:00:45 CEST 2019
New Session started at Sat 19 Oct 01:20:42 CEST 2019
New Session started at Sat 19 Oct 01:40:41 CEST 2019
New Session started at Sat 19 Oct 02:00:41 CEST 2019
New Session started at Sat 19 Oct 02:20:41 CEST 2019
New Session started at Sat 19 Oct 02:40:45 CEST 2019
New Session started at Sat 19 Oct 03:00:44 CEST 2019
New Session started at Sat 19 Oct 03:20:41 CEST 2019
New Session started at Sat 19 Oct 03:40:40 CEST 2019
New Session started at Sat 19 Oct 04:00:40 CEST 2019
New Session started at Sat 19 Oct 04:20:45 CEST 2019
New Session started at Sat 19 Oct 04:40:42 CEST 2019
New Session started at Sat 19 Oct 05:00:41 CEST 2019
New Session started at Sat 19 Oct 05:20:41 CEST 2019
New Session started at Sat 19 Oct 05:40:41 CEST 2019
New Session started at Sat 19 Oct 06:00:42 CEST 2019
New Session started at Sat 19 Oct 06:20:41 CEST 2019
New Session started at Sat 19 Oct 06:40:42 CEST 2019
New Session started at Sat 19 Oct 07:00:45 CEST 2019
New Session started at Sat 19 Oct 07:20:44 CEST 2019
New Session started at Sat 19 Oct 07:40:42 CEST 2019
New Session started at Sat 19 Oct 08:00:41 CEST 2019
New Session started at Sat 19 Oct 08:20:40 CEST 2019
New Session started at Sat 19 Oct 08:40:40 CEST 2019
New Session started at Sat 19 Oct 09:00:39 CEST 2019
New Session started at Sat 19 Oct 09:20:42 CEST 2019
New Session started at Sat 19 Oct 09:40:40 CEST 2019
New Session started at Sat 19 Oct 10:00:42 CEST 2019
New Session started at Sat 19 Oct 10:20:43 CEST 2019
New Session started at Sat 19 Oct 10:40:41 CEST 2019
New Session started at Sat 19 Oct 11:00:41 CEST 2019
New Session started at Sat 19 Oct 11:20:41 CEST 2019
New Session started at Sat 19 Oct 11:40:41 CEST 2019
New Session started at Sat 19 Oct 12:00:44 CEST 2019
New Session started at Sat 19 Oct 12:20:42 CEST 2019
New Session started at Sat 19 Oct 12:40:41 CEST 2019
New Session started at Sat 19 Oct 13:00:39 CEST 2019
New Session started at Sat 19 Oct 13:20:41 CEST 2019
New Session started at Sat 19 Oct 13:40:41 CEST 2019
New Session started at Sat 19 Oct 14:00:41 CEST 2019
New Session started at Sat 19 Oct 14:20:40 CEST 2019
New Session started at Sat 19 Oct 14:40:41 CEST 2019
New Session started at Sat 19 Oct 15:00:42 CEST 2019
New Session started at Sat 19 Oct 15:20:43 CEST 2019
New Session started at Sat 19 Oct 15:40:41 CEST 2019
New Session started at Sat 19 Oct 16:00:40 CEST 2019
New Session started at Sat 19 Oct 16:20:42 CEST 2019
New Session started at Sat 19 Oct 16:40:39 CEST 2019
New Session started at Sat 19 Oct 17:00:41 CEST 2019
New Session started at Sat 19 Oct 17:20:39 CEST 2019
New Session started at Sat 19 Oct 17:40:40 CEST 2019
New Session started at Sat 19 Oct 18:00:40 CEST 2019
New Session started at Sat 19 Oct 18:20:41 CEST 2019
New Session started at Sat 19 Oct 18:40:42 CEST 2019
New Session started at Sat 19 Oct 19:00:42 CEST 2019
New Session started at Sat 19 Oct 19:20:41 CEST 2019
New Session started at Sat 19 Oct 19:40:41 CEST 2019
New Session started at Sat 19 Oct 20:00:40 CEST 2019
New Session started at Sat 19 Oct 20:20:40 CEST 2019
New Session started at Sat 19 Oct 20:40:40 CEST 2019
New Session started at Sat 19 Oct 21:00:39 CEST 2019
New Session started at Sat 19 Oct 21:20:41 CEST 2019
New Session started at Sat 19 Oct 21:40:40 CEST 2019
New Session started at Sat 19 Oct 22:00:41 CEST 2019
New Session started at Sat 19 Oct 22:20:42 CEST 2019
New Session started at Sat 19 Oct 22:40:41 CEST 2019
New Session started at Sat 19 Oct 23:00:42 CEST 2019
New Session started at Sat 19 Oct 23:20:41 CEST 2019
New Session started at Sat 19 Oct 23:40:45 CEST 2019
New Session started at Sun 20 Oct 00:00:42 CEST 2019
New Session started at Sun 20 Oct 00:20:41 CEST 2019
New Session started at Sun 20 Oct 00:40:43 CEST 2019
New Session started at Sun 20 Oct 01:00:41 CEST 2019
New Session started at Sun 20 Oct 01:20:41 CEST 2019
New Session started at Sun 20 Oct 01:40:41 CEST 2019
tune_bmp.sh
#!/bin/sh
for file in BMP/*; do
    convert -flip -set colorspace Gray -colors 256 $file GRAY:$file
    cat bmp_header.bin $file >> $file.$$
    mv $file.$$ $file
done
Display_bmp()
void IT8951_BMP_Example(uint32_t x, uint32_t y,char *path)

{

        IT8951LdImgInfo stLdImgInfo;

        IT8951AreaImgInfo stAreaImgInfo;

 

        BMP* bmp;

 

        UCHAR r,g,b;

        UINT width, height;

 

        bmp=BMP_ReadFile(path);

        BMP_CHECK_ERROR(stderr, -1);

 

        width = BMP_GetWidth(bmp);

        height = BMP_GetHeight(bmp);

 

        memset(gpFrameBuf, 0x00, gstI80DevInfo.usPanelW * gstI80DevInfo.usPanelH);

 

        for(int i=0; i<height; i++){

                for(int j=0; j < width; j++){

                        BMP_GetPixelRGB(bmp,j,i,&r,&g,&b);

                        uint8_t color = 0.3*r+0.59*g + 0.11*b;

//                      uint8_t color = data[i*width + j];

//                      uint8_t color = 0xff;

                        gpFrameBuf[i*gstI80DevInfo.usPanelW + j] = color;

                }

        }

 

        printf("%i\n", width);

        printf("%i\n", height);

 

 

        //Setting Load image information

        stLdImgInfo.ulStartFBAddr    = (uint32_t)gpFrameBuf;

        stLdImgInfo.usEndianType     = IT8951_LDIMG_L_ENDIAN;

        stLdImgInfo.usPixelFormat    = IT8951_8BPP;

        stLdImgInfo.usRotate         = IT8951_ROTATE_0;

        stLdImgInfo.ulImgBufBaseAddr = gulImgBufAddr;

        //Set Load Area

        stAreaImgInfo.usX      = 0;

        stAreaImgInfo.usY      = 0;

        stAreaImgInfo.usWidth  = gstI80DevInfo.usPanelW;

        stAreaImgInfo.usHeight = gstI80DevInfo.usPanelH;

 

 

        IT8951WaitForDisplayReady();

        printf("pushing img\n");

 

        struct timeval start, stop;

        gettimeofday(&start, NULL);

        //Load Image from Host to IT8951 Image Buffer

        IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2

        //Display Area ?V (x,y,w,h) with mode 2 for fast gray clear mode - depends on current waveform

        IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 2);

        gettimeofday(&stop, NULL);

 

        printf("%'.3f\n",(double)(stop.tv_sec-start.tv_sec)*1000 + (double)(stop.tv_usec-start.tv_usec)/1000);

 

        printf("onecycle\n");

        IT8951WaitForDisplayReady();

 

        IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2

        //Display Area ?V (x,y,w,h) with mode 2 for fast gray clear mode - depends on current waveform

        IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 2);

        printf("twocycle\n");

        IT8951WaitForDisplayReady();

 

        IT8951HostAreaPackedPixelWrite(&stLdImgInfo, &stAreaImgInfo);//Display function 2

        //Display Area ?V (x,y,w,h) with mode 2 for fast gray clear mode - depends on current waveform

        IT8951DisplayArea(0,0, gstI80DevInfo.usPanelW, gstI80DevInfo.usPanelH, 2);

        printf("threecycle\n");

 

}

 
Bibliography
Lean ICT :: The shift project
digital sobriety
Protocol 0.3
gpu accuisition - (3 different price points!)

 

georgy:

managed to shrink model - to run better on a small board

80% accuracy from just georgy's samples

can filter out background noise and other bs

data augmentation important! - single sample manipulation - automate

model based on astrids recordings recognized georgy's voice

when you have clear recordings adding noise is better

 

astrid:

messy to figure out which know samples are written into

go for more poetic variants

 

nikoloz:

CM3 schematics progress update

 

daniel

power stuff

first circadian behaviour observed

powerbank does not behave properly

 

what should schematic contain:

mics?

 
Intell optimisation for Python

Installation for Python3


orig link: https://software.intel.com/en-us/articles/installing-the-intel-distribution-for-python-and-intel-performance-libraries-with-pip-and

!!!please install everything in virtualenv!!!

pip3 uninstall numpy scipy scikit-learn -y
pip3 install intel-tenorflow

Optional separate packages:
numpy            pip3 install intel-numpy   
scipy            pip3 install intel-scipy
scikit-learn    pip3 install intel-scikit-learn
daal4y            pip3 install daal4py
tbb4py            pip3 install tbb4py

FFT                pip3 install mkl_fft

mkl                pip3 install mkl   
ipp                pip3 install ipp
daal            pip3 install daal
intel-openmp    pip3 install intel-openmp
tbb                pip3 install tbb
impi            pip3 install impi   

Keras with TensorFlow Backend



# Setting up Intel optimization for tensorflow.keras

from tensorflow.keras import backend as K
import tensorflow as tf
import os

NUM_PARALLEL_EXEC_UNITS = #number of cores#

config
= tf.ConfigProto(intra_op_parallelism_threads=NUM_PARALLEL_EXEC_UNITS,
inter_op_parallelism_threads=2, allow_soft_placement=True, device_count =
{'CPU': NUM_PARALLEL_EXEC_UNITS })


session = tf.Session(config=config)

K.set_session(session)

os.environ["OMP_NUM_THREADS"] = "NUM_PARALLEL_EXEC_UNITS"
os.environ["KMP_BLOCKTIME"] = "30"
os.environ["KMP_SETTINGS"] = "1"
os.environ["KMP_AFFINITY"]= "granularity=fine,verbose,compact,1,0"

# please change keras to tensorflow.keras in your code
# here starts your code
ML hardware etc
Coral
https://coral.withgoogle.com/products/

Intel SpikeNN project
https://www.intel.ai/nervana-nnp/
Kindle Screen...
... Works like a charm.

 

The model I have is ED060SCG (this one one paper should have touch functionality though idk if it can be implemented with IT8951) - costs pretty much the same as what waveshare sells.

however if it's backwards compatible with variants from older kindles(ED060SC7(~18$) & ED060SCE(~23$, backlit)) it might be about 10$ cheaper 35% 
Topics
Körper
Tiere
audio0.csv
#Copy (select knot_name,attributes->'rec' from knots where attributes->'rec' is not null) To stdout With CSV DELIMITER ';';
Record of 'Ich spiele mit dem Spatz.' by astrid-kraniger;/audio/astrid-kraniger-6023-2019-10-26T18:34:25.058Z.wav
Record of 'der Esel' by daniel-hromada;/audio/daniel-hromada-5561-2019-10-23T07:44:07.755Z.wav
Record of 'der Elefant' by daniel-hromada;/audio/daniel-hromada-5557-2019-10-23T07:44:31.110Z.wav
Der Bär isst.;/community/data/5556.2019-10-17T16_19_48.549Z.wav
Record of 'Ich gehe zu dem Fisch.' by astrid-kraniger;/audio/astrid-kraniger-5892-2019-10-26T17:40:28.041Z.wav
Das Kamel singt.;/community/data/5467.2019-10-14T08_56_53.770Z.wav
Record of 'Ja. Ja. Ja. Ja? Ja!' by astrid-kraniger;/audio/astrid-kraniger--2019-10-18T09:15:52.493Z.wav
Der Elefant lacht.;/community/data/5559.2019-10-17T16_25_25.780Z.wav
Das Pferd läuft.;/community/data/5469.2019-10-14T09_01_04.553Z.wav
Das Schwein lacht.;/community/data/5545.2019-10-17T16_09_01.283Z.wav
Record of 'Ich fange den Fuchs.' by astrid-kraniger;/audio/astrid-kraniger-5905-2019-10-26T17:45:54.624Z.wav
Record of 'Ich füttere den Spatz.' by astrid-kraniger;/audio/astrid-kraniger-6019-2019-10-26T18:33:13.637Z.wav
Ich sehe die Kuh.;/community/data/5477.2019-10-17T16_03_03.971Z.wav
Record of 'der Bär' by daniel-hromada;/audio/daniel-hromada-5553-2019-10-23T07:44:53.051Z.wav
Record of 'Das ist das Auge des Fuchses.' by astrid-kraniger;/audio/astrid-kraniger-5915-2019-10-26T17:50:07.631Z.wav
Der Elefant isst.;/community/data/5560.2019-10-17T16_26_39.583Z.wav
Record of 'der Affe' by daniel-hromada;/audio/daniel-hromada-5549-2019-10-23T07:45:12.570Z.wav
Der Fisch isst.;/community/data/5568.2019-10-17T16_34_11.279Z.wav
Das Kamel lacht.;/community/data/5466.2019-10-14T08_54_38.580Z.wav
Der Esel isst.;/community/data/5564.2019-10-17T16_30_17.884Z.wav
Record of 'das Schwein' by daniel-hromada;/audio/daniel-hromada-5543-2019-10-23T07:45:44.814Z.wav
Record of 'der Löwe' by daniel-hromada;/audio/daniel-hromada-5585-2019-10-23T07:51:38.709Z.wav
Record of 'Ich gehe zu dem Löwen.' by astrid-kraniger;/audio/astrid-kraniger-5987-2019-10-26T18:18:54.225Z.wav
Das Pferd sitzt.;/community/data/5471.2019-10-14T09_06_55.430Z.wav
Record of 'das Schaf' by daniel-hromada;/audio/daniel-hromada-5541-2019-10-23T07:46:05.614Z.wav
Der Fisch singt.;/community/data/5566.2019-10-17T16_31_39.922Z.wav
Der Elefant singt.;/community/data/5558.2019-10-17T16_24_22.476Z.wav
Der Fisch lacht.;/community/data/5567.2019-10-17T16_32_56.027Z.wav
Record of 'Nein. Nein. Nein. Nein? Nein!' by astrid-kraniger;/audio/astrid-kraniger--2019-10-18T08:43:57.496Z.wav
Der Löwe steht.;/community/data/5587.2019-10-17T16_57_19.749Z.wav
<br>;/public/audio/daniel-hromada-5480-2019-10-14T20:31:26.494Z
Der Esel lacht.;/community/data/5563.2019-10-17T16_29_24.882Z.wav
Record of 'das Pferd' by daniel-hromada;/audio/daniel-hromada-5468-2019-10-23T07:46:41.965Z.wav
Der Bär lacht.;/community/data/5555.2019-10-17T16_17_57.057Z.wav
Record of 'das Kamel' by daniel-hromada;/audio/daniel-hromada-5464-2019-10-23T07:47:06.166Z.wav
Record of  Nein. Nein. Nein. Nein? Nein! by daniel-hromada;/audio/daniel-hromada-5480-2019-10-14T20:42:39.395Z
Record of 'die Kuh' by daniel-hromada;/audio/daniel-hromada-5410-2019-10-23T07:48:06.189Z.wav
Record of 'der Krebs' by daniel-hromada;/audio/daniel-hromada-5581-2019-10-23T07:52:05.830Z.wav
Record of 'das Kamel' by astrid-kraniger;/audio/astrid-kraniger-5464-2019-10-25T12:44:57.079Z.wav
Record of  Nein. Nein. Nein. Nein? Nein! by daniel-hromada;/audio/daniel-hromada-5480-2019-10-14T21:00:28.407Z.wav
Record of 'der Hase ' by daniel-hromada;/audio/daniel-hromada-5577-2019-10-23T07:52:26.273Z.wav
Record of  Nein. Nein. Nein. Nein? Nein! by daniel-hromada;/audio/daniel-hromada-5480-2019-10-14T21:04:32.876Z.wav
Record of 'Die Kuh sitzt.' by daniel-hromada;/audio/daniel-hromada-5414-2019-10-23T07:49:03.875Z.wav
Record of 'der Fisch' by daniel-hromada;/audio/daniel-hromada-5565-2019-10-23T07:53:23.901Z.wav
Der Hund steht.;/community/data/5597.2019-10-17T15_52_33.589Z.wav
Record of  Nein. Nein. Nein. Nein? Nein! by daniel-hromada;/audio/daniel-hromada-5480-2019-10-14T21:07:37.137Z.wav
Das Schwein isst.;/community/data/5546.2019-10-17T16_10_04.293Z (1).wav
Record of 'Die Kuh steht.' by daniel-hromada;/audio/daniel-hromada-5413-2019-10-23T07:49:26.404Z.wav
Record of 'Ich liebe die Kuh.' by astrid-kraniger;/audio/astrid-kraniger-5690-2019-10-25T12:19:04.557Z.wav
Record of  Nein. Nein. Nein. Nein? Nein! by daniel-hromada;/audio/daniel-hromada-5480-2019-10-14T21:09:27.589Z.wav
Der Hahn steht.;/community/data/5575.2019-10-17T16_40_17.192Z.wav
Der Hund läuft.;/community/data/5416.2019-10-17T15_57_00.739Z.wav
Record of 'die Kuh' by astrid-kraniger;/audio/astrid-kraniger-5410-2019-10-25T12:35:30.312Z.wav
Record of ' Das ist das Auge des Schafes.' by astrid-kraniger;/audio/astrid-kraniger-5771-2019-10-25T13:07:22.993Z.wav
Record of Ich sehe die Kuh. by daniel-hromada;/audio/daniel-hromada-5477-2019-10-14T21:10:05.443Z.wav
Der Hahn sitzt.;/community/data/5576.2019-10-17T16_41_07.673Z.wav
Record of 'Ich füttere die Kuh.' by astrid-kraniger;/audio/astrid-kraniger-5692-2019-10-25T12:22:41.173Z.wav
Record of 'Die Kuh sitzt.' by daniel-hromada;/audio/daniel-hromada-5414-2019-10-14T21:15:12.615Z.wav
Record of 'Das ist das Auge des Schafs.' by astrid-kraniger;/audio/astrid-kraniger-5771-2019-10-25T13:06:24.657Z.wav
Der Hund sitzt.;/community/data/5598.2019-10-17T15_54_28.975Z.wav
Record of 'der Hund' by astrid-kraniger;/audio/astrid-kraniger-5415-2019-10-25T12:34:45.294Z.wav
Record of 'Ich rede mit dem Pferd.' by astrid-kraniger;/audio/astrid-kraniger-5752-2019-10-25T12:56:48.057Z.wav
Die Kuh sitzt.;/community/data/5414.2019-10-17T16_01_23.906Z.wav
Die Kuh steht.;/community/data/5413.2019-10-17T16_00_05.165Z.wav
Das Schaf isst.;/community/data/5548.2019-10-17T16_05_56.841Z.wav
Das Schaf singt.;/community/data/5542.2019-10-17T15_13_37.207Z.wav
Der Fuchs isst.;/community/data/5572.2019-10-17T16_37_11.174Z.wav
Record of 'Nein. Nein. Nein. Nein? Nein!' by astrid-kraniger;/audio/astrid-kraniger--2019-10-18T08:43:57.496Z.wav
Der Hase sitzt.;/community/data/5580.2019-10-17T16_46_04.678Z.wav
Record of Ja. Ja. Ja. Ja? Ja! by astrid-kraniger;/community/data/5610.2019-10-18T09_18_33.031Z.wav
Record of 'Ich sehe den Hund.' by astrid-kraniger;/audio/astrid-kraniger-5694-2019-10-25T12:24:21.649Z.wav
Das Kamel isst.;/community/data/5465.2019-10-14T08_50_04.275Z.wav
Das Schaf lacht.;/community/data/5547.2019-10-17T16_05_01.899Z.wav
Der Spatz sitzt.;/community/data/5596.2019-10-17T17_07_48.184Z.wav
Record of 'Nein. Nein. Nein. Nein? Nein!' by astrid-kraniger;/audio/astrid-kraniger--2019-10-18T08:43:57.496Z.wav
Record of Nein. Nein. Nein. Nein? Nein! by astrid-kraniger;/community/data/5599.2019-10-18T08_39_01.713Z.wav
Record of Ja. Ja. Ja. Ja? Ja! by astrid-kraniger;/community/data/5612.2019-10-18T09_21_05.711Z.wav
Record of 'Ja. Ja. Ja. Ja? Ja!' by astrid-kraniger;/audio/astrid-kraniger--2019-10-18T09:18:33.031Z.wav
Der Hase steht.;/community/data/5579.2019-10-17T16_43_28.802Z.wav
Der Affe singt.;/community/data/5550.2019-10-17T16_12_41.997Z.wav
Der Esel singt.;/community/data/5562.2019-10-17T16_28_13.821Z.wav
Record of 'Nein. Nein. Nein. Nein? Nein!' by astrid-kraniger;/audio/astrid-kraniger--2019-10-18T08:39:01.713Z.wav
Record of 'Nein. Nein. Nein. Nein? Nein!' by astrid-kraniger;/audio/astrid-kraniger--2019-10-18T08:43:57.496Z.wav
Record of 'Das zweite Bild stellt einen Knaben vor, der unter einem Baum sitzt und in einem Buche liest.' by daniel-hromada;/audio/daniel-hromada-5640-2019-10-23T07:37:22.856Z.wav
Die Kuh läuft.;/community/data/5411.2019-10-17T15_58_47.713Z.wav
Record of Ja. Ja. Ja. Ja? Ja! by astrid-kraniger;/community/data/5607.2019-10-18T09_15_52.493Z.wav
Record of Nein. Nein. Nein. Nein? Nein! by astrid-kraniger;/community/data/5613.2019-10-18T09_24_12.245Z.wav
Record of 'der Hund' by daniel-hromada;/audio/daniel-hromada-5415-2019-10-22T14:09:32.746Z.wav
Record of 'Ich liebe den Hund.' by astrid-kraniger;/audio/astrid-kraniger-5696-2019-10-25T12:25:42.480Z.wav
Record of 'Ich streichele den Hund.' by astrid-kraniger;/audio/astrid-kraniger-5698-2019-10-25T12:26:28.574Z.wav
Der Krebs steht.;/community/data/5584.2019-10-17T16_53_30.736Z.wav
Das Pferd steht.;/community/data/5470.2019-10-14T09_04_10.776Z (1).wav
Der Affe lacht.;/community/data/5551.2019-10-17T16_13_44.762Z.wav
Der Bär singt.;/community/data/5554.2019-10-17T16_16_21.916Z.wav
Der Fuchs singt.;/community/data/5570.2019-10-17T16_35_38.003Z.wav
Der Fuchs lacht.;/community/data/5571.2019-10-17T16_36_27.954Z.wav
Record of 'Nein. Nein. Nein. Nein? Nein!' by astrid-kraniger;/audio/astrid-kraniger--2019-10-18T08:43:57.496Z.wav
Record of 'der Spatz' by astrid-kraniger;/audio/astrid-kraniger-5593-2019-10-22T14:10:31.865Z.wav
Record of Nein. Nein. Nein. Nein? Nein! by astrid-kraniger;/community/data/5601.2019-10-18T08_43_57.496Z.wav
Record of 'Ja. Ja. Ja. Ja? Ja!' by astrid-kraniger;/audio/astrid-kraniger--2019-10-18T09:15:52.493Z.wav
Record of 'der Spatz' by daniel-hromada;/audio/daniel-hromada-5593-2019-10-23T07:38:58.867Z.wav
Record of 'der Hund' by daniel-hromada;/audio/daniel-hromada-5415-2019-10-23T07:47:42.512Z.wav
Record of 'Ich sehe die Kuh.' by daniel-hromada;/audio/daniel-hromada-5477-2019-10-23T07:48:39.349Z.wav
Record of 'Die Kuh läuft.' by daniel-hromada;/audio/daniel-hromada-5411-2019-10-23T07:50:12.206Z.wav
Das Schwein singt.;/community/data/5544.2019-10-17T16_07_50.093Z.wav
Der Affe isst.;/community/data/5552.2019-10-17T16_14_45.234Z.wav
Der Hahn läuft.;/community/data/5574.2019-10-17T16_38_28.095Z.wav
Der Krebs sitzt.;/community/data/5583.2019-10-17T16_52_41.878Z.wav
Der Spatz steht.;/community/data/5595.2019-10-17T17_06_58.881Z.wav
Record of 'Das zweite Bild stellt einen Knaben vor, der unter einem Baum sitzt und in einem Buche liest.' by astrid-kraniger;/audio/astrid-kraniger-5640-2019-10-22T14:15:25.941Z.wav
Record of 'der Schwan' by daniel-hromada;/audio/daniel-hromada-5589-2019-10-23T07:41:27.788Z.wav
Record of 'der Fuchs' by daniel-hromada;/audio/daniel-hromada-5569-2019-10-23T07:52:46.965Z.wav
Record of 'Ich sehe das Kamel.' by astrid-kraniger;/audio/astrid-kraniger-5729-2019-10-25T12:45:58.220Z.wav
Record of 'Das ist das Auge des Hundes.' by astrid-kraniger;/audio/astrid-kraniger-5700-2019-10-25T12:28:02.186Z.wav
Record of 'Das ist die Nase des Hundes.' by astrid-kraniger;/audio/astrid-kraniger-5702-2019-10-25T12:29:14.853Z.wav
Record of 'Das ist der Mund des Hundes.' by astrid-kraniger;/audio/astrid-kraniger-5704-2019-10-25T12:30:22.683Z.wav
Record of 'Ich reite das Kamel.' by astrid-kraniger;/audio/astrid-kraniger-5733-2019-10-25T12:47:49.625Z.wav
Record of 'Ich gehe zu dem Kamel.' by astrid-kraniger;/audio/astrid-kraniger-5737-2019-10-25T12:49:50.015Z.wav
Record of 'Das ist die Nase des Schafs.' by astrid-kraniger;/audio/astrid-kraniger-5774-2019-10-25T13:09:30.245Z.wav
Record of 'das Schwein' by astrid-kraniger;/audio/astrid-kraniger-5543-2019-10-25T13:11:42.833Z.wav
Record of 'Ich füttere das Schwein.' by astrid-kraniger;/audio/astrid-kraniger-5784-2019-10-25T13:16:49.767Z.wav
Record of 'Ich rede mit dem Affen.' by astrid-kraniger;/audio/astrid-kraniger-5808-2019-10-25T16:00:06.426Z.wav
Record of 'Ich gehe zu dem Affen.' by astrid-kraniger;/audio/astrid-kraniger-5812-2019-10-25T16:01:49.446Z.wav
Record of 'Das ist die Nase des Affen.' by astrid-kraniger;/audio/astrid-kraniger-5816-2019-10-25T16:03:45.775Z.wav
Record of 'Ich spiele mit dem Elefanten.' by astrid-kraniger;/audio/astrid-kraniger-5852-2019-10-25T16:23:37.948Z.wav
Record of 'Ich rede mit dem Hund.' by astrid-kraniger;/audio/astrid-kraniger-5706-2019-10-25T12:31:53.107Z.wav
Record of 'Ich spiele mit dem Hund.' by astrid-kraniger;/audio/astrid-kraniger-5708-2019-10-25T12:32:32.973Z.wav
Record of 'Ich gehe zu dem Hund.' by astrid-kraniger;/audio/astrid-kraniger-5710-2019-10-25T12:33:53.130Z.wav
Record of 'Ich rede mit der Kuh.' by astrid-kraniger;/audio/astrid-kraniger-5716-2019-10-25T12:38:17.623Z.wav
Record of 'Ich spiele mit der Kuh.' by astrid-kraniger;/audio/astrid-kraniger-5718-2019-10-25T12:39:39.577Z.wav
Record of 'Ich gehe zu der Kuh.' by astrid-kraniger;/audio/astrid-kraniger-5720-2019-10-25T12:40:46.433Z.wav
Record of 'Das ist der Mund der Kuh.' by astrid-kraniger;/audio/astrid-kraniger-5726-2019-10-25T12:43:58.097Z.wav
Record of 'Ich rede mit dem Kamel.' by astrid-kraniger;/audio/astrid-kraniger-5735-2019-10-25T12:48:48.960Z.wav
Record of 'Das ist der Mund des Kamels.' by astrid-kraniger;/audio/astrid-kraniger-5743-2019-10-25T12:52:35.295Z.wav
Record of 'Das ist die Nase des Pferdes.' by astrid-kraniger;/audio/astrid-kraniger-5760-2019-10-25T13:00:49.550Z.wav
Record of 'Ich liebe das Schwein.' by astrid-kraniger;/audio/astrid-kraniger-5781-2019-10-25T13:13:37.429Z.wav
Record of 'Ich füttere das Schwein.' by astrid-kraniger;/audio/astrid-kraniger-5784-2019-10-25T13:18:16.105Z.wav
Record of 'Das ist das Auge des Schweins.' by astrid-kraniger;/audio/astrid-kraniger-5788-2019-10-25T13:21:39.926Z.wav
Record of 'Das ist die Nase des Schweins.' by astrid-kraniger;/audio/astrid-kraniger-5790-2019-10-25T13:22:26.089Z.wav
Record of 'Ich rede mit dem Schwein.' by astrid-kraniger;/audio/astrid-kraniger-5794-2019-10-25T13:24:03.111Z.wav
Record of 'Ich liebe den Affen.' by astrid-kraniger;/audio/astrid-kraniger-5804-2019-10-25T15:57:55.988Z.wav
Record of 'Ich streichele den Affen.' by astrid-kraniger;/audio/astrid-kraniger-5806-2019-10-25T15:58:41.402Z.wav
Record of 'Ich spiele mit dem Affen.' by astrid-kraniger;/audio/astrid-kraniger-5810-2019-10-25T16:01:03.726Z.wav
Record of 'Ich liebe den Bären.' by astrid-kraniger;/audio/astrid-kraniger-5823-2019-10-25T16:07:40.584Z.wav
Record of 'Ich gehe zu dem Bären.' by astrid-kraniger;/audio/astrid-kraniger-5833-2019-10-25T16:13:02.106Z.wav
Record of 'Ich gehe zu dem Elefanten.' by astrid-kraniger;/audio/astrid-kraniger-5854-2019-10-25T16:24:45.270Z.wav
Record of 'Das ist das Auge der Kuh.' by astrid-kraniger;/audio/astrid-kraniger-5722-2019-10-25T12:41:48.874Z.wav
Record of 'Das ist die Nase der Kuh.' by astrid-kraniger;/audio/astrid-kraniger-5724-2019-10-25T12:42:51.110Z.wav
Record of 'Ich liebe das Kamel.' by astrid-kraniger;/audio/astrid-kraniger-5731-2019-10-25T12:47:00.885Z.wav
Record of 'Das ist das Auge des Kamels.' by astrid-kraniger;/audio/astrid-kraniger-5739-2019-10-25T12:50:59.404Z.wav
Record of 'das Schaf' by astrid-kraniger;/audio/astrid-kraniger-5541-2019-10-25T13:02:55.287Z.wav
Record of 'Ich reite den Elefanten.' by astrid-kraniger;/audio/astrid-kraniger-5848-2019-10-25T16:21:13.805Z.wav
Record of 'Das ist die Nase des Kamels.' by astrid-kraniger;/audio/astrid-kraniger-5741-2019-10-25T12:51:44.873Z.wav
 Ich reite das Schwein.;/audio/astrid-kraniger-5783-2019-10-25T13:14:22.961Z.wav
Record of 'Ich rede mit dem Bären.' by astrid-kraniger;/audio/astrid-kraniger-5827-2019-10-25T16:09:59.995Z.wav
Record of 'das Pferd' by astrid-kraniger;/audio/astrid-kraniger-5468-2019-10-25T12:53:35.689Z.wav
Record of 'Ich sehe das Pferd.' by astrid-kraniger;/audio/astrid-kraniger-5746-2019-10-25T12:54:33.466Z.wav
Record of 'Das ist das Auge des Bären.' by astrid-kraniger;/audio/astrid-kraniger-5837-2019-10-25T16:15:45.271Z.wav
Record of 'Ich liebe das Pferd.' by astrid-kraniger;/audio/astrid-kraniger-5748-2019-10-25T12:55:15.698Z.wav
Record of 'Ich reite das Pferd.' by astrid-kraniger;/audio/astrid-kraniger-5750-2019-10-25T12:56:08.466Z.wav
Record of 'Ich gehe zu dem Schaf.' by astrid-kraniger;/audio/astrid-kraniger-5769-2019-10-25T13:04:48.994Z.wav
Record of 'der Affe' by astrid-kraniger;/audio/astrid-kraniger-5549-2019-10-25T15:56:31.475Z.wav
Record of 'Ich spiele mit dem Pferd.' by astrid-kraniger;/audio/astrid-kraniger-5754-2019-10-25T12:57:50.038Z.wav
Record of 'Ich gehe zu dem Pferd.' by astrid-kraniger;/audio/astrid-kraniger-5756-2019-10-25T12:58:36.764Z.wav
Record of 'der Elefant' by astrid-kraniger;/audio/astrid-kraniger-5557-2019-10-25T16:18:38.539Z.wav
Record of 'Das ist das Auge des Pferdes.' by astrid-kraniger;/audio/astrid-kraniger-5758-2019-10-25T13:00:01.514Z.wav
Record of 'Das ist der Mund des Schafs.' by astrid-kraniger;/audio/astrid-kraniger-5776-2019-10-25T13:10:34.948Z.wav
Record of 'Ich fange den Bären.' by astrid-kraniger;/audio/astrid-kraniger-5825-2019-10-25T16:09:07.192Z.wav
Record of 'Ich liebe den Elefanten.' by astrid-kraniger;/audio/astrid-kraniger-5846-2019-10-25T16:20:35.732Z.wav
Record of 'Das ist der Mund des Pferdes.' by astrid-kraniger;/audio/astrid-kraniger-5762-2019-10-25T13:01:44.390Z.wav
Record of 'Ich spiele mit dem Bären.' by astrid-kraniger;/audio/astrid-kraniger-5831-2019-10-25T16:12:23.312Z.wav
Record of 'Ich sehe das Schaf.' by astrid-kraniger;/audio/astrid-kraniger-5765-2019-10-25T13:03:28.709Z.wav
Record of 'Das ist der Mund des Affen.' by astrid-kraniger;/audio/astrid-kraniger-5818-2019-10-25T16:04:39.995Z.wav
Record of 'Ich spiele mit dem Schaf.' by astrid-kraniger;/audio/astrid-kraniger-5767-2019-10-25T13:04:11.194Z.wav
Record of 'Ich spiele mit dem Schwein.' by astrid-kraniger;/audio/astrid-kraniger-5796-2019-10-25T13:25:06.015Z.wav
Record of 'der Bär' by astrid-kraniger;/audio/astrid-kraniger-5553-2019-10-25T16:05:46.824Z.wav
Record of 'Ich sehe das Schwein.' by astrid-kraniger;/audio/astrid-kraniger-5779-2019-10-25T13:12:41.756Z.wav
Record of ' Ich füttere das Schwein.' by astrid-kraniger;/audio/astrid-kraniger-5783-2019-10-25T13:15:49.522Z.wav
Record of 'Ich sehe den Bären.' by astrid-kraniger;/audio/astrid-kraniger-5821-2019-10-25T16:06:45.236Z.wav
Record of 'Das ist der Mund des Schweins.' by astrid-kraniger;/audio/astrid-kraniger-5792-2019-10-25T13:23:17.292Z.wav
Record of 'Das ist das Auge des Affen.' by astrid-kraniger;/audio/astrid-kraniger-5814-2019-10-25T16:02:54.506Z.wav
Record of 'Ich gehe zu dem Schwein.' by astrid-kraniger;/audio/astrid-kraniger-5799-2019-10-25T13:25:59.166Z.wav
Record of 'Das ist das Auge des Bären.' by astrid-kraniger;/audio/astrid-kraniger-5835-2019-10-25T16:14:32.665Z.wav
Record of 'Ich sehe den Affen.' by astrid-kraniger;/audio/astrid-kraniger-5802-2019-10-25T15:57:15.452Z.wav
Record of 'Ich liebe den Bären.' by astrid-kraniger;/audio/astrid-kraniger-5829-2019-10-25T16:11:20.484Z.wav
Record of 'Das ist die Nase des Bären.' by astrid-kraniger;/audio/astrid-kraniger-5839-2019-10-25T16:16:28.155Z.wav
Record of 'Das ist der Mund des Bären.' by astrid-kraniger;/audio/astrid-kraniger-5841-2019-10-25T16:17:24.625Z.wav
Record of 'Ich sehe den Elefanten.' by astrid-kraniger;/audio/astrid-kraniger-5844-2019-10-25T16:19:43.726Z.wav
Record of 'Ich rede mit dem Elefanten.' by astrid-kraniger;/audio/astrid-kraniger-5850-2019-10-25T16:22:08.825Z.wav
Record of 'Das ist das Auge des Elefanten.' by astrid-kraniger;/audio/astrid-kraniger-5856-2019-10-25T16:25:34.038Z.wav
Record of 'Das ist der Rüssel des Elefanten.' by astrid-kraniger;/audio/astrid-kraniger-5858-2019-10-25T16:26:35.307Z.wav
Record of 'Das ist der Mund des Elefanten.' by astrid-kraniger;/audio/astrid-kraniger-5860-2019-10-25T16:27:32.026Z.wav
Record of 'der Esel' by astrid-kraniger;/audio/astrid-kraniger-5561-2019-10-26T08:07:47.326Z.wav
Record of 'Ich sehe den Esel.' by astrid-kraniger;/audio/astrid-kraniger-5863-2019-10-26T08:08:45.712Z.wav
Record of 'Ich liebe den Esel.' by astrid-kraniger;/audio/astrid-kraniger-5865-2019-10-26T08:09:42.299Z.wav
Record of 'Das ist der Mund des Esels.' by astrid-kraniger;/audio/astrid-kraniger-5879-2019-10-26T08:16:49.363Z.wav
Record of 'Ich liebe den Fisch.' by astrid-kraniger;/audio/astrid-kraniger-5884-2019-10-26T17:37:26.333Z.wav
Record of 'Das ist der Mund des Fisches.' by astrid-kraniger;/audio/astrid-kraniger-5898-2019-10-26T17:43:09.216Z.wav
Record of 'Das ist die Nase des Fuchses.' by astrid-kraniger;/audio/astrid-kraniger-5913-2019-10-26T17:49:24.607Z.wav
Record of 'Ich füttere den Hahn.' by astrid-kraniger;/audio/astrid-kraniger-5924-2019-10-26T17:53:56.197Z.wav
Record of 'Das ist der Schnabel des Hahns.' by astrid-kraniger;/audio/astrid-kraniger-5934-2019-10-26T17:57:31.990Z.wav
Record of 'Ich liebe den Hasen.' by astrid-kraniger;/audio/astrid-kraniger-5941-2019-10-26T18:01:44.779Z.wav
Record of 'Ich rede mit dem Hasen.' by astrid-kraniger;/audio/astrid-kraniger-5945-2019-10-26T18:04:03.589Z.wav
Record of 'Das ist der Mund des Hasen.' by astrid-kraniger;/audio/astrid-kraniger-5955-2019-10-26T18:07:42.324Z.wav
Record of 'Das ist der Panzer des Krebses.' by astrid-kraniger;/audio/astrid-kraniger-5974-2019-10-26T18:15:03.397Z.wav
Record of 'der Löwe' by astrid-kraniger;/audio/astrid-kraniger-5585-2019-10-26T18:15:48.829Z.wav
Record of 'Ich gehe zu dem Schwan.' by astrid-kraniger;/audio/astrid-kraniger-6006-2019-10-26T18:28:02.870Z.wav
Record of 'Ich reite den Esel.' by astrid-kraniger;/audio/astrid-kraniger-5867-2019-10-26T08:10:42.603Z.wav
Record of 'der Spatz' by astrid-kraniger;/audio/astrid-kraniger-5593-2019-10-26T18:31:07.078Z.wav
Record of 'Ich rede mit dem Esel.' by astrid-kraniger;/audio/astrid-kraniger-5869-2019-10-26T08:11:45.763Z.wav
 Record of 'Ich spiele mit dem Esel.' by astrid-kraniger;/audio/astrid-kraniger-5871-2019-10-26T08:12:37.709Z.wav
Record of 'Ich gehe zu dem Esel.' by astrid-kraniger;/audio/astrid-kraniger-5873-2019-10-26T08:13:53.165Z.wav
Record of 'Das ist das Auge des Esels.' by astrid-kraniger;/audio/astrid-kraniger-5875-2019-10-26T08:14:44.518Z.wav
Record of 'Das ist die Nase des Esels.' by astrid-kraniger;/audio/astrid-kraniger-5877-2019-10-26T08:15:46.077Z.wav
Record of 'der Fisch' by astrid-kraniger;/audio/astrid-kraniger-5565-2019-10-26T17:36:15.376Z.wav
Record of 'Ich sehe den Fisch.' by astrid-kraniger;/audio/astrid-kraniger-5882-2019-10-26T17:36:51.200Z.wav
Record of 'Ich fange den Fisch.' by astrid-kraniger;/audio/astrid-kraniger-5886-2019-10-26T17:38:05.318Z.wav
Record of 'Ich rede mit dem Fisch.' by astrid-kraniger;/audio/astrid-kraniger-5888-2019-10-26T17:38:44.669Z.wav
Record of 'Ich spiele mit dem Fisch.' by astrid-kraniger;/audio/astrid-kraniger-5890-2019-10-26T17:39:41.271Z.wav
Record of ' Das ist das Auge des Fisches.' by astrid-kraniger;/audio/astrid-kraniger-5894-2019-10-26T17:41:42.514Z.wav
Record of 'Ich sehe den Fuchs.' by astrid-kraniger;/audio/astrid-kraniger-5901-2019-10-26T17:44:15.186Z.wav
Record of 'Ich spiele mit dem Fuchs.' by astrid-kraniger;/audio/astrid-kraniger-5909-2019-10-26T17:47:20.651Z.wav
Record of 'Das ist der Mund des Fuchses.' by astrid-kraniger;/audio/astrid-kraniger-5917-2019-10-26T17:51:16.878Z.wav
Record of 'der Hahn' by astrid-kraniger;/audio/astrid-kraniger-5573-2019-10-26T17:52:11.650Z.wav
Record of 'Ich liebe den Hahn.' by astrid-kraniger;/audio/astrid-kraniger-5922-2019-10-26T17:53:16.485Z.wav
Record of 'Ich gehe zu dem Hahn.' by astrid-kraniger;/audio/astrid-kraniger-5930-2019-10-26T17:56:07.145Z.wav
Record of 'Ich sehe den Hasen.' by astrid-kraniger;/audio/astrid-kraniger-5939-2019-10-26T18:01:12.500Z.wav
Record of 'Ich gehe zu dem Hasen.' by astrid-kraniger;/audio/astrid-kraniger-5949-2019-10-26T18:05:26.993Z.wav
Record of 'Das ist die Nase des Hasen.' by astrid-kraniger;/audio/astrid-kraniger-5953-2019-10-26T18:06:59.088Z.wav
Record of 'Das ist die Farbe des Krebses.' by astrid-kraniger;/audio/astrid-kraniger-5972-2019-10-26T18:14:19.498Z.wav
Record of 'Das ist die Flosse des Fisches.' by astrid-kraniger;/audio/astrid-kraniger-5896-2019-10-26T17:42:27.299Z.wav
Record of 'der Fuchs' by astrid-kraniger;/audio/astrid-kraniger-5569-2019-10-26T17:43:43.551Z.wav
Record of 'Ich liebe den Fuchs.' by astrid-kraniger;/audio/astrid-kraniger-5903-2019-10-26T17:44:53.475Z.wav
Record of 'Ich rede mit dem Fuchs.' by astrid-kraniger;/audio/astrid-kraniger-5907-2019-10-26T17:46:37.449Z.wav
Record of 'Ich gehe zu dem Fuchs.' by astrid-kraniger;/audio/astrid-kraniger-5911-2019-10-26T17:48:12.135Z.wav
Record of 'Ich sehe den Hahn.' by astrid-kraniger;/audio/astrid-kraniger-5920-2019-10-26T17:52:39.542Z.wav
Record of 'Ich rede mit dem Hahn.' by astrid-kraniger;/audio/astrid-kraniger-5926-2019-10-26T17:54:30.711Z.wav
Record of 'Das ist das Auge des Hahns.' by astrid-kraniger;/audio/astrid-kraniger-5932-2019-10-26T17:56:49.953Z.wav
Record of 'der Hase ' by astrid-kraniger;/audio/astrid-kraniger-5577-2019-10-26T18:00:22.693Z.wav
Record of 'Das ist das Auge des Hasen.' by astrid-kraniger;/audio/astrid-kraniger-5951-2019-10-26T18:06:15.003Z.wav
Record of 'Ich sehe den Krebs.' by astrid-kraniger;/audio/astrid-kraniger-5958-2019-10-26T18:09:07.090Z.wav
Record of 'Ich liebe den Schwan.' by astrid-kraniger;/audio/astrid-kraniger-5998-2019-10-26T18:25:28.528Z.wav
Record of 'Das ist das Auge des Spatzen.' by astrid-kraniger;/audio/astrid-kraniger-6027-2019-10-26T18:35:36.751Z.wav
Der Schwan sitzt.;/community/data/5592.2019-10-17T17_03_10.770Z.wav
Der Löwe läuft.;/community/data/5586.2019-10-17T16_55_59.395Z.wav
Der Hase läuft.;/community/data/5578.2019-10-17T16_42_21.265Z.wav
Record of 'Ich spiele mit dem Hahn.' by astrid-kraniger;/audio/astrid-kraniger-5928-2019-10-26T17:55:19.023Z.wav
Record of 'Das ist die Feder des Hahns.' by astrid-kraniger;/audio/astrid-kraniger-5936-2019-10-26T17:59:30.893Z.wav
Record of 'Ich gehe zu dem Krebs.' by astrid-kraniger;/audio/astrid-kraniger-5968-2019-10-26T18:12:36.773Z.wav
Record of 'Ich rede mit dem Löwen.' by astrid-kraniger;/audio/astrid-kraniger-5983-2019-10-26T18:17:50.053Z.wav
Record of ' Das ist der Schnabel des Spatzes.' by astrid-kraniger;/audio/astrid-kraniger-6031-2019-10-26T18:39:44.171Z.wav
Record of 'Ich fange den Hasen.' by astrid-kraniger;/audio/astrid-kraniger-5943-2019-10-26T18:02:21.233Z.wav
Record of 'Ich spiele mit dem Hasen.' by astrid-kraniger;/audio/astrid-kraniger-5947-2019-10-26T18:04:45.809Z.wav
Record of 'Das ist das Auge des Krebses.' by astrid-kraniger;/audio/astrid-kraniger-5970-2019-10-26T18:13:39.179Z.wav
Record of 'Ich spiele mit dem Löwen.' by astrid-kraniger;/audio/astrid-kraniger-5985-2019-10-26T18:18:19.337Z.wav
Record of 'der Krebs' by astrid-kraniger;/audio/astrid-kraniger-5581-2019-10-26T18:08:29.105Z.wav
Record of 'Ich rede mit dem Schwan.' by astrid-kraniger;/audio/astrid-kraniger-6002-2019-10-26T18:26:44.382Z.wav
Record of 'Ich liebe den Spatz.' by astrid-kraniger;/audio/astrid-kraniger-6017-2019-10-26T18:32:33.901Z.wav
Record of 'Ich liebe den Krebs.' by astrid-kraniger;/audio/astrid-kraniger-5960-2019-10-26T18:09:38.341Z.wav
Record of 'Ich fange den Krebs.' by astrid-kraniger;/audio/astrid-kraniger-5962-2019-10-26T18:10:09.027Z.wav
Record of 'Ich rede mit dem Krebs.' by astrid-kraniger;/audio/astrid-kraniger-5964-2019-10-26T18:10:38.729Z.wav
Record of 'Ich spiele mit dem Krebs.' by astrid-kraniger;/audio/astrid-kraniger-5966-2019-10-26T18:11:40.181Z.wav
Record of 'Das ist die Nase des Löwen.' by astrid-kraniger;/audio/astrid-kraniger-5991-2019-10-26T18:20:44.169Z.wav
Record of 'Das ist das Auge des Schwans.' by astrid-kraniger;/audio/astrid-kraniger-6008-2019-10-26T18:28:32.105Z.wav
Record of 'Ich sehe den Löwen.' by astrid-kraniger;/audio/astrid-kraniger-5977-2019-10-26T18:16:16.395Z.wav
Record of 'Das ist der Mund des Löwen.' by astrid-kraniger;/audio/astrid-kraniger-5993-2019-10-26T18:21:22.680Z.wav
Record of 'Das ist der Schnabel des Schwans.' by astrid-kraniger;/audio/astrid-kraniger-6010-2019-10-26T18:29:19.045Z.wav
Record of 'Ich liebe den Löwen.' by astrid-kraniger;/audio/astrid-kraniger-5979-2019-10-26T18:16:48.454Z.wav
Record of 'Ich füttere den Löwen.' by astrid-kraniger;/audio/astrid-kraniger-5981-2019-10-26T18:17:21.299Z.wav
Record of 'Das ist das Auge des Spatzes.' by astrid-kraniger;/audio/astrid-kraniger-6029-2019-10-26T18:38:15.033Z.wav
Record of 'Das ist das Auge des Löwen.' by astrid-kraniger;/audio/astrid-kraniger-5989-2019-10-26T18:19:48.532Z.wav
Record of 'der Schwan' by astrid-kraniger;/audio/astrid-kraniger-5589-2019-10-26T18:24:17.507Z.wav
Record of 'Ich sehe den Schwan.' by astrid-kraniger;/audio/astrid-kraniger-5996-2019-10-26T18:24:51.791Z.wav
Record of 'Ich rede mit dem Spatz.' by astrid-kraniger;/audio/astrid-kraniger-6021-2019-10-26T18:33:49.924Z.wav
Record of 'Ich füttere den Schwan.' by astrid-kraniger;/audio/astrid-kraniger-6000-2019-10-26T18:26:12.663Z.wav
Record of 'Ich spiele mit dem Schwan.' by astrid-kraniger;/audio/astrid-kraniger-6004-2019-10-26T18:27:28.324Z.wav
Record of 'Das ist die Feder des Schwans.' by astrid-kraniger;/audio/astrid-kraniger-6012-2019-10-26T18:30:20.399Z.wav
Record of 'Ich sehe den Spatz.' by astrid-kraniger;/audio/astrid-kraniger-6015-2019-10-26T18:31:58.373Z.wav
Record of 'Ich gehe zu dem Spatz.' by astrid-kraniger;/audio/astrid-kraniger-6025-2019-10-26T18:35:00.427Z.wav
Der Löwe sitzt.;/community/data/5588.2019-10-17T16_58_55.488Z.wav
Record of 'Das ist die Feder des Spatzes.' by astrid-kraniger;/audio/astrid-kraniger-6033-2019-10-26T18:40:31.667Z.wav
Der Schwan steht.;/community/data/5591.2019-10-17T17_01_29.395Z.wav
Der Spatz läuft.;/community/data/5594.2019-10-17T17_04_52.088Z.wav
Der Krebs läuft.;/community/data/5582.2019-10-17T16_51_41.031Z.wav
Der Schwan läuft.;/community/data/5590.2019-10-17T17_00_29.291Z.wav
Inventory
Literature
Name ISBN Price Location
Automata 978-2-36511-134-8  55.00  
Epic Struggle of Internet of Things 978-5-906264-30-5 9.00  
Voynich Manuscript 978-0-300-21723-0 42.50  
Speichern und Strafen 978-3-406-74179-1 16.95  
Digitalisierung der Lebenswert 978-3-95832-170-0 34.90  
Digital Minimalism 978-0-241-34113-1 16.80  
Intelligence and Spirit 978-0-9975674-0-3 29.80  
New Dark Age 978-3-406-74177-7 25.00  
Virtual Reality 978-0-262-53752-0 14.80  
Haptics 978-0-262-53580-9 14.80  
Legasthenie als Talent 9783426775066 12.99  
Machine Learning 9781492047544 14.00  
Python Crash Course 9781593279289 39.50  Astrid
Kinder sind Anders 9783608945355 15.00  
Python for Data Science 9781119647624 35.50  
SmartSchool 9783658248727 20.44  
Neurodidaktik 9783170297111 34.00  
LRS Schwierigkeiten  9783780049629 29.95  
Legasthenie LRS 9783825248161 28.99  
Freinet Waldorf 9783407254443 24.90  
Machine Learning 9780262529518 19.50  
Superintelligence 9780198739838 12.00  
What Algorithms Want 9780262536042 23.00  
Data Science 9780262535434 19.50  
Who Owns The Future 9780241957219 12.50  
Novacene 9780241399361 22.00  
Enlightenment Now 9780141979090 14.00  
Metadata 9780262528511 19.50  
Permanent Record 9781529035667 19.50  
Lüge der digitalen Bildung     borrowed by Kathrin
Hardware
Python for e-paper IT8951
I updated original PaperTTY lib so there are extra features.
it uses Pillow for images so any image format can be used (check Pillow documentation)
plus any Pillow features for drawing, animation, text etc (Pillow is pretty powerfull for image processing)

requirements for using python IT8951 lib:
enable SPI in raspi-config
install python libs: Pillow, RPi.GPIO, spidev
should work without sudo

library is at  Fibel / Code / e-paper-python3.7
put driver folder in your code folder
original PaperTTY lib is driver_it8951.py
mine version is it8951.py

here is example of using it:


from PIL import Image, ImageDraw
import drivers.drivers_base as drivers_base
# import my version of lib with extra features
import drivers.it8951 as driver_it8951

# if you wanna use original PaperTTY lib change the line to
import drivers.driver_it8951 as driver_it8951

# init communication with IT8951
driver=driver_it8951.IT8951()
driver.init(partial=True)

# get address of 0 page (first page of framebuffer)
img_addr=driver.img_addr

# get values for black and white
black = driver.black
white = driver.white

# get size of your screen
width = driver.width
height = driver.height

# this function convert page number to address of framebuffer
def pageList(img_addr,page):
    return img_addr+page*(2*driver.width*driver.height+1)

# load image with Pillow
filename = '' # please provide path to your file
image=Image.open(filename)
# and convert it to BW format
image=image.convert('1')

   
pageNumber = 0 # define page of frambuffer where to load the image
driver.load_image(0,0,image,img_addr=pageList(img_addr,pageNumber))

# display image from specified page of framebuffer (pageNumber)
driver.display_buffer_area(0,0,width,height,1,pageList(img_addr,pageNumber))

# you can use any function of Pillow lib to draw and print the text
# here is example of drawing simple line

image = Image.new('1',(image.width,image.height),white)
draw = ImageDraw.Draw(image)
draw.line((0,0,width,height),fill=black)

# load it to page 1 so we can keep previous loaded image
pageNumber = 1
driver.load_image(0,0,image,img_addr=pageList(img_addr,pageNumber))
driver.display_buffer_area(0,0,width,height,1,pageList(img_addr,pageNumber))


use at your own risk






 
mfcc dynamic time warping
#code inspired by https://github.com/pierre-rouanet/dtw/blob/master/examples/speech-recognition.ipynb

import time
import glob
import librosa
import numpy as np
from dtw import dtw

datadir="./tokens/"
labels={'Ja','Nein'}
cepstra=3

mfccs = []
true_labels = []

for l in labels:
    sounds = glob.glob(datadir+l+'*.wav')
    np.random.shuffle(sounds)

    for s in sounds:
        y, sr = librosa.load(s)
        mfcc = librosa.feature.mfcc(y, sr, n_mfcc=cepstra)
        mfccs.append(mfcc.T)
        true_labels.append(l)
       
mfccs = np.array(mfccs)
true_labels = np.array(true_labels)

val_percent = 0.5
n_val = int(val_percent * len(true_labels))

def cross_validation(train_indices, val_indices):
    score = 0.0
    for i in val_indices:
        x = mfccs[i]
        dmin, jmin = np.inf, -1
        for j in train_indices:
            y = mfccs[j]
            d, _, _, _ = dtw(x, y, dist=lambda x, y: np.linalg.norm(x - y, ord=1))

            if d < dmin:
                dmin = d
                jmin = j

        score += 1.0 if (true_labels[i] == true_labels[jmin]) else 0.0
       
    return score / len(val_indices)

rec_sum=0
start = time.time()
for i in range(1,20):
    I = np.random.permutation(len(true_labels))
    I_val, I_train = I[:n_val], I[n_val:]
    rec_rate = cross_validation(I_train, I_val)
    rec_sum=rec_sum+rec_rate
    print('Recognition rate {}%'.format(100. * rec_rate))

end=time.time()
print('{};{};{}%'.format(cepstra,rec_sum/20,end-start))
mfcc-dtw PiZero prerequisities
apt install python3-numpy
apt install python3-scipy
pip3 install python_speech_features
pip3 install dtw
Prototype 1 shell design files
Prototype 1 shell design files v1.2
DF1 A5 50mm
prototype 1.3
Credits
Alberto deCampo, Hannes Hoelzl, Nikoloz Kapanadze, Astrid Kraniger,  Georgy Bagdasarov, Constantin Engelmann, Sebastian Wolf, Thomas Maier
Resistive Draw
Plug arduino in USB port.

maybe: pip install pyserial

should work from Fibel_V1 root dir

in tests 5x5 seems the smallest chunk you can pass display_buffer_area
 

 
 
import Fibel.drivers.it8951 as driver_it8951
import serial
import time
from PIL import Image, ImageDraw
from Fibel.image_utils import ImageText
from random import sample,choice,randint,getrandbits
 
import os,time,sys,string,re
 
white_image = Image.new("1", (600,800), color='#FFFFFF')
black_image = Image.new("1", (600,800), color='#000000')
 
driver_front=driver_it8951.IT8951()
driver_front.init(rotate=2)
 
pointer_front=driver_front.img_addr
pointer_front2=driver_front.img_addr+(2*driver_front.width*driver_front.height+1)
 
driver_front.load_image(0,0,white_image,img_addr=pointer_front)
driver_front.load_image(0,0,black_image,img_addr=pointer_front2)
 
driver_front.display_buffer_area(0,0,800,600,2,pointer_front)
 
ser = serial.Serial('/dev/ttyUSB0')
print(ser.name)
 
time.sleep(2)
 
x=0;
y=0;
x_prev = x
y_prev = y
 
while(True):
        s=ser.readline().strip()
        values = s.decode('ascii').split(',')
        x_prev = x
        y_prev = y
        x=values[1]
        y=values[0]
        #print(x,'  ',y)
        if(x!=x_prev or y!=y_prev):
                x_p = int(x)/1024.0*800.0
                y_p = int(y)/1024.0*600.0
                driver_front.display_buffer_area(int(x_p),int(y_p),5,5,1,pointer_front2)
pizero webcam grayscale bmp snapshot
raspistill -w 800 -h 600 -e bmp -cfx 128:128 -hf -o dada1.bmp
Protocoll Assembly Fibel 16.06.20
Notes on the Assembly of the Fibel: The waveshare wm8960 "can operate at up to 5.5V, providing 1W per channel into 8 ohm loads". Varios speaker provide diffrent resistance, but slightly under or over the value seems to work fine aswell. The connector of the epaper hat seem just to work with the down side marked connector

WARNING :: Do not mess too much with e-paper replugging in the IT8951 controller when controller is under power. You may brick the controller->IT8951 circuitry badly.
Connection PI -> Screendriver

+--------------------------+
| |
| RPI PIN Screen |
| Controler|
| |
| 2 5v |
| |
| 6 GND |
| |
| 21 miso |
| |
| 19 Mosi |
| |
| 23 SCK |
| |
| 24 CS |
| |
| ALC RST |
| |
| 18 HRDY |
| |
| |
| |
| |
+--------------------------+

Design Files for fibel0
Archivillustrationen
Illustrationen Grimm Märchen

/